Java за цифрово подписване на документи в уеб


Цифрови подписи и сертификати



страница3/14
Дата14.08.2018
Размер2.83 Mb.
#78668
1   2   3   4   5   6   7   8   9   ...   14

Цифрови подписи и сертификати


При предаването на важни документи по електронен път често се налага да се удостовери по надежден начин кой в действителност е изпращач (автор) на даден документ. Най-разпространеният от подходите за удосто­веряване на произхода на документи и файлове е чрез използването на т. нар. цифров подпис (електронен подпис).

0.1.Цифров подпис


Да разгледаме понятията, свързани с цифровия подпис, сценариите за неговата употреба и алгоритмите за подписване и верификация на подпис.

0.1.1.Основни понятия

Симетрични и несиметрични кодиращи схеми


В света на компютърната криптографията има два вида шифриращи алго­ритмични схеми – симетрични и асиметрични [Johner, 2000
, стр. 5-9].

При симетричните схеми за шифриране се използва един и същ ключ при шифриране и дешифри­ране на информацията. Примери за симетрични шифриращи схеми са алгоритмите за блоков шифър DES, 3DES, IDEA, Blowfish, Rijndael и RC5 и алгоритмите за поточен шифър – RC4 и SEAL.

При асиметричните схеми се използва един ключ за шифрирането на информацията и друг (различен от първия) ключ за дешифрирането. Примери за асиметрични кодиращи схеми са алгоритмите RSA, DSA и ElGamal.

Цифровото подписване на документи използва като математическа основа криптографията, базирана на публични ключове (асиметричните схеми).


Криптография, базирана на публични ключове


Криптографията, базирана на публични ключове (public key crypto­graphy) е математическа наука, която се използва за осигуряване на конфиденци­алност и автентичност при обмяната на информация чрез използването на криптографски алгоритми, работещи с публични и лични ключове. Тези криптографски алгоритми се използват за цифрово подписване на съобще­ния (документи), проверка на цифров подпис, шифриране и дешифриране на съобщения (документи).

Публични и лични ключове


Публичните и личните ключове представляват математически свързана двойка криптографски ключове (public/private key pair). На всеки публичен ключ съответства точно един личен ключ и обратното – на всеки личен ключ съответства точно един публичен ключ. При това от даден публичен ключ не може да се извлече съответният му личен ключ и обратното. Това прави двойките публичен/личен ключ подходящи за шифриране на съоб­щения без да е необходимо двете страни, които обменят информация, да си знаят ключовете една на друга.

За да използва дадено лице криптография с публични ключове, то трябва да притежава двойка публичен ключ и съответен на него личен ключ. Съществуват алгоритми, които могат да генерират такива двойки ключове по случаен начин.


Публичен ключ


Публичният ключ (public key) представлява число (последователност от битове), което обикновено е свързано с дадено лице. Един публичен ключ може да се използва за проверка на цифрови подписи, създадени със съответния му личен ключ, както и за шифриране на документи, които след това могат да бъдат дешифрирани само от притежателя на съответния личен ключ.

Публичните ключове не представляват тайна за никого и обикновено са публично достъпни. Публичният ключ на дадено лице трябва да е известен на всички, с които това лице си комуникира посредством криптография с публични ключове.


Личен ключ


Личният ключ (private key) е число (последователност от битове), известно само на притежателя му. С личния си ключ дадено лице може да подписва документи и да дешифрира документи, шифрирани със съответ­ния на него публичен ключ.

В известна степен личните ключове приличат на добре известните пароли за достъп, които са широкоразпространено средство за автентикация по Интернет. Приликата е в това, че както чрез парола, така и чрез личен ключ, едно лице може да удостоверява самоличността си, т. е. да се автентикира. Освен това, както паролите, така и личните ключове по идея представляват тайна за всички останали, освен за притежателя им.

За разлика от паролите за достъп, личните ключове не са толкова кратки, че да могат да бъдат запомнени на ум и затова за съхранението им трябва да се полагат специални грижи. Ако един личен ключ попадне в лице, което не е негов собственик (бъде откраднат), цялата комуникация, базирана на криптографията с публични ключове, разчитаща на този личен ключ, се компрометира и губи своя смисъл. В такива случаи откраднатият личен ключ трябва да бъде обявен за невалиден и да бъде подменен, за да стане отново възможна сигурната комуникация с лицето, което е било негов собственик.

Криптография и криптоанализ


Математическата наука, която се занимава с изследването на алгоритми и схеми за шифриране и дешифриране на съобщения, се нарича крипто­графия. Науката, която се занимава с анализирането и разбиването на криптограф­ски ключове, кодове и схеми за конфиденци­ална обмяна на съобщения, се нарича криптоанализ.

За сигурността на публичните и личните ключове


За целите на криптографията с публични ключове се използват такива криптографски алгоритми, че практически не е по силите на съвременния криптоанализ и съвременната изчислителна техника да се открие личният ключ на лице, чийто публичен ключ е известен.

В практиката най-често се използват ключове с големина между 128 и 2048 бита, поради което методът на грубата сила (brute force) не може да бъде приложен за отгатването на таен ключ.

Откриването на личен ключ, който съответства на даден публичен ключ, е теоретически възможно, но времето и изчислителната мощ, необходими за целта, правят такива действия безсмислени [Wikipedia-PKC, 2005].

Хеширане и хеш-стойност


Хеш-стойността на едно входно съобщение представлява последовател­ност от битове, обикновено с фиксирана дължина (например 160 или 256 бита), извлечено по някакъв начин от съобщението. Алгоритмите, които изчисляват хеш-стойност, се наричат хеширащи алгоритми.

Криптографски силни хеширащи алгоритми


Съществуват различни хеширащи алгоритми, но само някои от тях са криптографски силни (cryptographically secure hash algorithms). При крип­тографски силните хеширащи алгоритми е изключително трудно (почти невъзможно) по дадена хеш-стойност да се намери входно съобщение, на което тя съответства [Steffen, 1998].

Криптографски силните алгоритми за изчисление на хеш-стойност имат свойството, че при промяна дори само на 1 бит от входното съобщение се получава тотално различна хеш-стойност. Това поведение ги прави изключително устойчиви на криптоаналитични атаки.

Невъзможността за възстановяване на входното съобщение по дадена хеш-стойност е съвсем логична, като се има предвид, че хеш-стойността на едно съобщение може да е със стотици пъти по-малък размер от него самото. Това, обаче, не изключва възможността две напълно различни съобщения да имат една и съща хеш-стойност (колизия), но вероятността това да се случи е много малка.

При криптографски силните хеширащи алгоритми съществуват колизии, но ако дадено (оригинално) съобщение има дадена хеш-стойност, всяко друго съобщение със същата хеш-стойност се различава значително по дължина от оригиналното.

Някои по-известни криптографски алгоритми за хеширане, широко изпол­звани в практиката, са MD4, MD5, RIPEMD160, SHA1, SHA-256 и др.

Цифрово подписване


Цифровото подписване представлява механизъм за удостоверяване на произхода и целостта на информация, предавана по електронен път. При процеса на цифрово подписване на даден документ към него се добавя допълнителна информация, наречена цифров подпис, която се изчислява на базата на съдържанието на този документ и някакъв ключ. На по-късен етап тази допълнителна информация може да се използва за да се провери произходът на подписания документ.

Цифров подпис


Цифровият подпис (цифрова сигнатура) представлява число (последо­вателност от битове), което се изчислява математически при подписването на даден документ (съобщение). Това число зависи от съдържанието на съобщението, от използвания алгоритъм за подписване и от ключа, с който е извършено подписването.

Цифровият подпис позволява на получателя на дадено съобщение да провери истинския му произход и неговата цялостност (интегритет).

При цифровото подписване се използват асиметрични схеми за крипти­ране, като подписът се полага с личния ключ на лицето, което подписва, а проверката на подписа става с неговия публичен ключ. Така ако дадено съобщение бъде подписано от дадено лице, всеки, който има неговия публичен ключ, ще може да провери (верифицира) цифровия подпис.

След като е веднъж подписано, дадено съобщение не може да бъде променяно, защото това автоматично прави невалиден цифровия подпис.

От математическа гледна точка е практически невъзможно един документ да бъде подписан без да е известен личният ключ на лицето, което го подписва. Това се дължи на технологията на цифровия подпис, която съчетава хеширане и шифриране с надеждни алгоритми, устойчиви на криптоаналитични атаки.

0.1.2.Технология на цифровия подпис


Криптографията, базирана на публични ключове осигурява надежден метод за цифрово подписване, при който се използват двойки публични и лични ключове [Johner, 2000, стр. 10-
12
]
.

Полагане на цифров подпис


Едно лице полага цифров подпис под дадено електронно съобщение (символен низ, файл, документ, e-mail и др.) чрез личния си ключ. Технически цифровото подписване на едно съобщение се извършва на две стъпки, както е показано на фигура 1-1:



Фигура 0 1. Цифрово подписване на съобщение

  1. На първата стъпка се изчислява хеш-стойност на съобщението (message digest) по някакъв криптографски силен алгоритъм за хеширане (например MD4, MD5, SHA1 или друг).

  2. На втората стъпка от цифровото подписване получената в първата стъпка хеш-стойност на съобщението се шифрира с личния ключ, с който се извършва подписването. За целта се използва някакъв математически алгоритъм за цифров подпис (digital signature algorithm), който изпол­звайки личния ключ преобразува хеш-стойността в шифрирана хеш-стойност, наричана още цифров подпис. Най-често се използват алгоритмите за цифров подпис RSA (който се основава на теорията на числата), DSA (който се основава на теорията на дискретните логаритми) и ECDSA (който се основава на теорията на елиптичните криви). Полученият цифров подпис обикновено се прикрепя към съобщението в специален формат, за да може да бъде верифициран на по-късен етап, когато това е необходимо.

Верификация на цифров подпис


Цифровият подпис позволява на получателя на дадено подписано съобще­ние да провери истинския му произход и неговата цялостност (интегритет). Процесът на проверка (верификация) на цифров подпис има за цел да установи дали дадено съобщение е било подписано с личния ключ, който съответства на даден публичен ключ.

Проверката на цифров подпис не може да установи дали едно съобщение е подписано от дадено лице. За да проверим дали едно лице е подписало дадено съобщение, е необходимо да се сдобием с истинския публичен ключ на това лице. Това е възможно или чрез получаване на публичния ключ по сигурен път (например на дискета или CD) или с помощта на инфраструктурата на публичния ключ чрез използване на цифрови сертификати. Без да имаме сигурен начин за намиране на истинския публичен ключ на дадено лице не можем да имаме гаранция, че даден документ е подписан наистина от него.

Технически проверката на цифров подпис се извършва на три стъпки, както е показано на фигура 1-2:



Фигура 0 2. Верификация на цифров подпис


  1. На първата стъпка се изчислява хеш-стойността на подписаното съобщение. За изчислението на тази хеш-стойност се използва същият криптографски алгоритъм, който е бил използван при подписването му. Тази хеш-стойност наричаме текуща, защото е получена от текущия вид на съобщението.

  2. На втората стъпка се дешифрира цифровият подпис, който трябва да бъде проверен. Дешифри­рането става с публичния ключ, съответстващ на личния ключ, който е използван при подписването на съобщението, и със същия алгоритъм, който е използван при шифри­рането. В резул­тат се получава оригинал­ната хеш-стойност, която е била изчислена при хеширането на ориги­налното съобщение в първата стъпка от про­цеса на подписването му.

  3. На третата стъпка се сравняват текущата хеш-стойност, получена от първата стъпка и оригиналната хеш-стойност, получена от втората стъпка. Ако двете стойности съвпадат, верифицирането е успешно и доказва, че съобщението е било подписано с личния ключ, съответ­стващ на публичния ключ, с който се извършва верификацията. Ако двете стойности се различават, това означава, че цифровият подпис е невалиден, т.е. верификацията е неуспешна. Има три възможности за получаване на невалиден цифров подпис:

  • Ако цифровият подпис е подправен (не е истински), при дешифри­рането му с публичния ключ няма да се получи оригиналната хеш-стойност на съобщението, а някакво друго число.

  • Ако съобщението е било променяно (подправено) след подписването му, текущата хеш-стойност, изчислена от подправеното съобщение, ще бъде различна от оригиналната хеш-стойност, защото на различ­ни съобщения съответстват различни хеш-стойности.

  • Ако публичният ключ не съответства на личния ключ, който е бил изпол­зван за подписването, оригиналната хеш-стойност, получената от цифровия подпис при дешифрирането с неправилен ключ, няма да е вярната.

Причини за невалиден цифров подпис


Ако верификацията се провали, независимо по коя от трите причини, това доказва само едно: подписът, който се верифицира, не е получен при подписването на съобщението, което се верифицира, с личния ключ, съответстващ на публичния ключ, който се използва за верификацията.

Неуспешната верификация не винаги означава опит за фалшификация на цифров подпис. Понякога верификацията може да се провали защото е използван неправилен публичен ключ. Такава ситуация се получава, когато съобщението не е изпратено от лицето, от което се очаква да пристигне, или системата за проверка на подписи разполага с неправилен публичен ключ за това лице. Възможно е дори едно и също лице да има няколко валидни публични ключа и системата да прави опит за верифици­ране на подписани от това лице съобщения с някой от неговите публични ключове, но не точно с този, който съответства на използвания за подпис­ването личен ключ.

За да се избегнат такива проблеми, често пъти, когато се изпраща подписан документ, освен документът и цифровият му подпис, се изпраща и цифров сертификат на лицето, което е положило този подпис. Цифровите сертификати ще разгледаме в детайли в следващата точка, но засега можем да считаме, че те свързват дадено лице с даден публичен ключ.

При верифика­цията на подписан документ, придружен от цифров сертификат, се използва публичният ключ, съдържащ се в сертификата и ако верификацията е успешна, се счита, че документът е изпратен от лицето, описано в сертификата. Разбира се, преди това трябва да се провери валидността на сертификата.



Каталог: books -> signatures
books -> В обятията на шамбала
books -> Книга се посвещава с благодарност на децата ми. Майка ми и жена ми ме научиха да бъда мъж
books -> Николай Слатински “Надеждата като лабиринт” София, Издателство “виденов & син”, 1993 год
books -> София, Издателство “Българска книжница”, 2004 год. Рецензенти доц д. ик н. Димитър Йончев, проф д-р Нина Дюлгерова Научен редактор проф д-р Петър Иванов
books -> Николай Слатински “Измерения на сигурността” София, Издателство “Парадигма”, 2000 год
books -> Книга 2 щастие и успех предисловие
books -> Превръщане на числа от една бройна система в друга
books -> Тантриското преобразяване
signatures -> Java за цифрово подписване на документи в уеб


Сподели с приятели:
1   2   3   4   5   6   7   8   9   ...   14




©obuch.info 2024
отнасят до администрацията

    Начална страница