Лекция 5. Въведение в прил. криптография PDF
Document Details
Uploaded by Deleted User
Технически университет - София
Tags
Summary
This document is a lecture on introductory cryptography, covering basic concepts, cryptographic algorithms, substitution, and transposition. The document is aimed at an undergraduate computer science level audience and pertains to general information security concepts.
Full Transcript
# ВЪВЕДЕНИЕ В ПРИЛОЖНАТА КРИПТОГРАФИЯ ## 1. ОБЩИ СВЕДЕНИЯ И ДЕФИНИЦИИ Основната функция на криптографията е да защити данните срещу неоторизиран достъп или неоторизирано подменяне. Защитните си функции криптографията осъществява чрез идентификация на различните участници в един комуникационен проц...
# ВЪВЕДЕНИЕ В ПРИЛОЖНАТА КРИПТОГРАФИЯ ## 1. ОБЩИ СВЕДЕНИЯ И ДЕФИНИЦИИ Основната функция на криптографията е да защити данните срещу неоторизиран достъп или неоторизирано подменяне. Защитните си функции криптографията осъществява чрез идентификация на различните участници в един комуникационен процес посредством обмяна на сертификати. Всеки сертификат еднозначно верифицира личността на неговия притежател или идентичността на използващия го обект. На Фиг.1. е показана схема на обмен на сертификати. - Потребител А - Сертификат - Internet - Сертификат - Потребител В **Фиг. 1. Схема за обмен на сертификат** Потребител А изпраща през Internet-мрежата своя сертификат до потребител В. Потребител В проверява сертификата на А, и ако установи валидността му, приема, че действително комуникира с А. - **Криптирането** (encryption) - метод за изменение на съобщение или документ по такъв начин, че неговото съдържание да стане неразпознаваемо, за всеки, който не познава метода за изменение. - **Декриптирането** (decryption) - обратна операция на криптирането и представлява трансформиране на криптираните данни в явни. **Криптирането и декриптирането са обекти на науката криптография (cryptography).** Правилото за преобразуване на данни в неразбираеми последователности от символи и тяхното правилно обратно възстановяване се нарича криптографски алгоритъм (cryptographic algorithm). Явен текст (plain text) - оригиналното съобщение преди да бъде обработено с определен криптографски алгоритъм. Криптиран текст (cipher text) - получената символна поредица след криптирането на явния текст. ## 2. СЪЩНОСТ НА КРИПТИРАНЕТО Правилото за обмен на данни и използване на криптографския алгоритъм се нарича криптографски протокол (cryptographic protocol). Съвкупността от криптографски алгоритъм и криптографски протокол се обозначава с понятието криптографска система (cryptosystem). - **Криптографски ключ (key)** - множество от числа или символи което се използва за криптиране или декриптириране на съобщенията. Ключът е секретен, ако по криптографската система е задължително запазването му в тайна (secret key). Ако е известен, се нарича публичен ключ (public key). - **Криптоанализът (cryptanalysis)** - наука занимаваща се с разработката на методи и средства за разкриване на криптографските системи и за оценка на тяхната сигурност. - **Криптология (cryptology)** - обобщена дисциплина, включваща криптографията и криптоанализа. За реализиране на криптографски системи се използват две математически операции - субституция и транспозиция. - **Субституция** - операция, извършваща еднозначно и обратимо съпоставяне на символ (блок от символи) в дадено съобщение с друг символ (блок от символи). - **Криптографските алгоритми**, работещи чрез субституции - се наричат субституционни алгоритми. **Примерна схема на субституция е дадена на Фиг.2.** - (изместване с 5 позиции наляво) - Явен текст - АБВГДЕЖЗИЙ КЛМНОПРСТУФХЦЧШЩЬЪЮЯ - ЩЬЪЮЯАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШ - Секретен текст - (изместване с 5 позиции надясно) - Явен текст (Message) - ПОТРЕБИТЕЛ - Криптиране на текста - КЙНЛАЬГНАЖ - Декриптиране на текста - ПОТРЕБИТЕЛ **Фиг. 2. Субституция** В представената примерна схема за съставяне на съобщенията е използвана българската азбука. На всяка буква се съпоставя пореден номер. Получава се подреждане, дадено в Таблица 1. | А | Б | В | Г | Д | Е | Ж | З | И | Й | К | Л | М | Н | О | П | Р | С | Т | У | Ф | Х | Ц | Ч | Ш | Щ | Ь | Ъ | Ю | Я | |---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---| | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | **Таблица 1** Ако се преномерират буквите е възможно да се получи подредба, дадена в Таблица 2. | Щ | Ь | Ъ | Ю | Я | А | Б | В | Г | Д | Е | Ж | З | И | Й | К | Л | М | Н | О | П | Р | С | Т | У | Ф | Х | Ц | Ч | Ш | |---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---| | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | **Таблица 2** При тази подредба може да се извърши субституция, по следния алгоритъм: - Взема се поредната буква от явния текст на съобщението. - Определя се нейния номер от таблица 1. - За този номер се взема съответния номер от таблица 2. - Изпраща се новата буква, опрделена от номера по стъпка 3. Пример: Трябва да се криптира думата ПОТРЕБИТЕЛ. В таблица 1 номерата на буквите са съответно 16,14,18,17,5,2,9,19,6,12. На тези номера в таблица 2 съответстват буквите КЙНЛАЬГНАЖ. Начинът на подреждане на азбуката във втората таблица (преномерирането) в случая е ключът на субституционния криптографски алгоритъм. **Транспозиция** - еднозначно и обратимо преобразуване на блок от краен брой октети чрез пренареждане (пермутиране) на октетите, извършвано по определен криптографски алгоритъм и с определен ключ. **Криптографските алгоритми**, работещи чрез транспозиции, се наричат транспозиционни алгоритми. При транспозиционните алгоритми символите в открития текст се запазват, т.е.не се маскират, но се променя тяхното местоположение в шифротекста. Пример за транспозиционен алгоритъм е зареждане на една матрица по редове с открит текст с последващо получаване на криптиран текст посредством четене по колони е представен на Фиг. 3. - Матрица 4х 5 - 1 2 3 4 5 - 1 СЪОБЩ - 2 ЕНИЕС - 3 ЪОБЩЕ - 4 НЕСЪ - ЪНОИБЕЩССЕЪНОИБЕЩСЕЪ - 2 - 4 - 1 - 3 - 5 **Фиг. 3. Транспозиция** ## 3. КЛАСИФИКАЦИЯ НА КРИПТОГРАФСКИТЕ АЛГОРИТМИ Криптографските алгоритми се отличават с голямо разнообразие, което затруднява структурирането им в единна класификация. Използват се различни режими на тяхната реализация, включително многократно шифриране с една или няколко независими шифриращи процедури. Целесъобразно е да се определят и да се разглеждат самостоятелно следните два криптографски обекта: - 1. **базов криптографски алгоритъм** (базов шифър); - 2. **режим на реализация на криптографски алгоритъм**. Всеки конкретен криптографски алгоритъм се характеризира с използваните в него един или няколко базови криптографски алгоритми и с избраните режими за тяхната реализация. ## 4. КРИПТОАНАЛИЗ Криптоанализът има за цел декриптиране на части или целия секретен текст, без предварително да е известен ключа, с който е реализирано криптирането. Основната цел на криптоанализа е откриването на секретния ключ. Криптоанализът ползва следните форми на атаки (методи): - 1. **Атака единствено върху секретния текст.** Провежда се само върху криптиран текст, без да е достъпен явния, от който е произлязъл. За да се проведе успешна атака, е необходимо да се получи голям обем от криптираните съобщения, за да може да се търси в тях информация за ключа. - 2. **Атака върху част от секретен текст и кореспондиращ с него явен текст.** Поради по-богатата изходна информация и възможността за по-малко хипотези за ключа, провеждането на тази атака дава по-добри шансове за откриване на секретния ключ. - 3. **Атака с избор на явен текст.** Прилага се в случаите, когато се разполага с криптиращото устройство, но още не е ясно как работи (анализ на черна кутия). Целта е да се разкрие тайната му. При тази атака е възможно предварително да се избере явен текст и да се криптира. След това се търсят зависимости за определяне на ключа посредством съпоставяне на явния текст с криптирания. - 4. **Адаптивна атака с избор на явен текст.** Тя е специален случай на описаната в предходната точка атака. На основата на резултати от анализи на предишни криптирани поредици, при нея може да се променя динамично подлагания на криптиране явен текст. - 5. **Адаптивна атака с избран криптиран текст.** Тя предполага, че провеждащият криптоанализа има на разположение хардуера за декриптиране, но не може да получи директно ключа за декриптиране. За да го открие, анализаторът използва части от прихванат криптиран текст и го подава за декриптиране. Върху получените резултати се строят работни хипотези за възможните стойности на ключа. 1 Търсенето се извършва чрез статистически анализи и хипотези. ## 5. ОСНОВНИ ПРИНЦИПИ НА КРИПТОГРАФИЯТА Основен принцип на криптографията е съхраняването на секретността на ключовете на криптиращите алгоритми и разработването на сигурни методи за тяхната обмяна. Криптографията, като наука се развива в две направления, свързани с подобряване на сигурността на криптиращите системи: - 1. Математическа разработка на нови алгоритми за криптиране; - 2. Намиране на нови ключове с увеличена дължина и сложност. Основни постулати на сигурните криптографски системи са: - Сигурността на системата не зависи от секретността на криптографския алгоритъм, а от секретността на използвания ключ за криптиране/декриптиране на данните; - Сигурната (силната) криптосистема има голямо пространство на ключовете; - Сигурната криптосистема произвежда криптиран текст, който има напълно случайно статистическо разпределение на символите в него и който не подлежи на статистически анализ; - Цената за „разбиване" на алгоритмите за криптиране трябва да е много по-висока от стойността на защитената информация; - Времето, необходимо за разбиване на алгоритмите за криптиране, трябва да е по-дълго от времето, за което криптираната информация представлява интерес. За постигане на „строгост” на криптографските алгоритми съществена роля имат ключовете за криптиране и техните дължини. Един примерен ключ за криптиране с дължина 56 бита има следния вид: 01101011100110011101010100111000111000100100010010101001 Дължината на криптиращия ключ се определя така, че да е защитена от атака с пълно изброяване (комбиниране, brute-force attack) на възможните стойности. Ето някои дължини на ключове и броя на възможните опити за тяхното отгатване по метода на пълното изброяване: - 32 Bit key length ---> 232 = 4.300.000.000 - 40 Bit key length ---> 240 = 1.100.000.000.000 - 56 Bit key length ---> 256 = 72.000.000.000.000.000 - 128 Bit key length---> 2128 = 34.000.000.000.000.000.000.000.000.000.000.000.000.000 За да се разработят добри криптиращи алгоритми е необходимо усилието на много хора, както по синтеза на конкретен алгоритъм, така и за криптоанализ, доказващ неговата сила. Това е една основна причина силните алгоритми за криптиране да се получават в рамките на широка публичност и достъпност за криптоанализ. Както бе отбелязано в т. 3, алгоритмите за криптиране могат да се разделят по отношение на използваните ключове на два типа: - 1. симетрични; - 2. асиметрични. ## 6. СИМЕТРИЧНИ АЛГОРИТМИ ЗА КРИПТИРАНЕ ### 6.1. Определения и класификация Симетричен алгоритъм за криптиране е всеки алгоритъм, който използва един и същи ключ в процеса на криптиране и декриптиране на информацията. На Фиг. 5. е показана работата на такъв алгоритъм. Явният текст се криптира с ключ *Sk*, притежаван от получател *А*. Полученият криптиран текст се предава по линията до получател *В*. След приемането му, *В* го декриптира с помоща на същия ключ *Sk*. Симетричните алгоритми, както вече бе казано в т.3, могат да се разделят на поточни и блокови.. Блоковите алгоритми използват следните техники за реализиране на функциите си: - 1. субституция; - 2. транспозиция; - 3. модулно събиране и умножение; - 4. линейни трансформации. - Явен текст - Криптиране - &%()=?* - H35+# - T165$ - #@0f:! - Декриптиране - Явен текст - Криптиран текст - **A** (Източник) - *Sk* - **B** (Получател) - *Sk* **Фиг.5. Обща схема на симетричен алгоритъм** Основният принцип за криптиране в блоковите шифри се базира на веригата на Фейстел. Блокът с явен текст предварително се разделя на две части *L* (лява част) и *R* (дясна част). Тези две части се обработват в два паралелни клона на алгоритъма. На всеки рунд се криптира половината от подадения за обработка входен блок. Както се вижда от Фиг.5 в края на всеки рунд се извършва размяна на местата на лявата и дясната част от обработвания блок. Величината *Ѵі* се образува чрез прилагане на набор от математически операции (т.нар. ключова спецификация) върху използвания секретен ключ и представлява секретен ключ за криптиране на данните в поредния цикъл (нар. още рундов или циклов подключ). Функция *F* се нарича образуваща и се използва за обработване на блока от данни с изчисления ключ за съответния рунд. Броят на рундовете *K* е от 8 до 32. Увеличението на рундовете значително повишава устойчивостта на всеки блоков шифър срещу криптоанализ. При намиране на слабо място в алгоритъма в повечето случаи е достатъчно да се увеличи количеството на кръговете с 4-8, без да е нужно да се пренаписва самия алгоритъм. Дадената схема е обратима и симетрична. Използваните операции XOR (сума по модул 2), са обратими при повторението си и инверсията на последния обмен на клона прави възможно декодирането на блока с веригата на Фейстел, но с инверсен порядък на параметъра *V₁*. Вижда се, че за обратимостта на веригата на Фейстел няма значение дали броя на кръговете е четен или нечетен. 2Поредица от повтарящи се операции за криптиране, прилагани неколкократно върху блок от битове. - Лява част - Явен текст - Дясна част - *F(V1)* - ... - *F(Vr-2)* - Размяна в последния кръг - Лява част - Дясна част - Криптиран текст **Фиг. 5. Верига на Фейстел** ### 6.2. Режими на работа на блоковите криптографски системи Блоковите криптографски системи се използват в различни режими на работа. Те са дефинирани в стандарти *FIPS 81* (1980 December 2), *ANSI X3.106-1983*. Според този стандарт съществуват четири режима на работа: - 1. Електронна кодова книга (Electronic Code Book - ECB), - 2. Блокова верига (Cipher Block Chaining - CBC), - 3. Криприране с обратна връзка по вход (K-bit Cipher FeedBack -CFB) - 4. Криптиране с обратна връзка по изход (K-bit Output FeedBack - OFB). - Явен текст - Блок 1 - Блок 2 - Блок 3 - Блок 1 - Блок 2 - Блок 3 - Криптиран текст **Фиг. 6. Режим „Електронна кодова книга”** Идентичните блокове явен текст се криптират по един и същ начин. Това е недостатък на този режим, защото може да се използва като основа за криптоанализ. **Режим на блокова верига (Cipher Block Chaining – СВС).** Всеки блок от явния текст се криптира с побитово сумиране по модул две (XOR) с получения в предишната операция криптиран блок (Фиг 7). За да стартира процедурата, се използва инициализиращ (начален) блок от битове. Инициализиращият вектор участва в криптирането на първия блок данни. Резултатът от това криптиране се използва за криптирането на втория блок и се предава по линията. При прихващане на част от съобщението в този режим не е възможно да се декриптира даден блок, защото не е известен текста, който е участвал в неговото криптиране. - Явен текст - Блок 1 - Блок 2 - Блок 3 - Инициализиращ вектор - .... - Блок 1 - Блок 2 - Блок 3 - Криптиран текст **Фиг. 7. Режим на работа в блокова верига.** ### 6.3 Кратко описание на някои симетрични алгоритми **DES (Data Encryption Standard),** съгласно Federal Information Processing Standard (FIPS) 46-1, е алгоритъм за криптиране на данни (DEA), дефиниран в стандарт ANSI X9.32. Разработен е от IBM. DEA, или както по често е наричан DES, е един от най-широко разпространените алгоритми за криптиране и най-често подлаган на криптоанализ. Сертифициран е през 1998. Алгоритъмът е базиран върху верига на Фейстел с 64 битови входящи блокове от данни. Използва ключ с дължина 64 бита. Всеки блок от криптираните данни се обработва в 16 рунда. От 1993 г. алгоритъмът се счита за компрометиран и не е целесъобразно да се използва. В момента DES е заместен от алгоритъм AES (Advanced Encription Standart). **Triple-DES.** В процеса на търсене на заместник на алгоритъм DES е разработен алгоритъм *Triple-DES*. Той криптира всеки входен блок от данни с три различни ключа. Начините, по които се извършва криптирането са: *DES-EEE3*: криптиране, чрез последователно прилагане на три различни ключа за криптиране. *DES-EDE3*: Изпълнение на последователни три операции от тип криптиране-декриптиране-криптиране (encryption - decryption - encryption), като за всяка от тях е използван различен ключ. **Blowfish** е симетричен блоков алгоритъм, който се използва за заместване на DES или IDEA. Има променлива дължина на ключа - от 32 до 448 бита. Разработен е през 1993 г. от Bruce Schneier като свободна и бърза алтернатива на съществуващите до момента алгоритми. Blowfish не e патентован и не подлежи на лицензни такси. **IDEA (International Data Encryption Algorithm)** е разработен от Ascom Tech AG (Switzerland) и публикуван през 1993 г. Има входен 64 битов блок, който се криптира с 128 битов ключ. Процесът на криптиране изисква 8 комплексни рунда. Структурата на алгоритъма е много добра както за хардуерна, така и за софтуерна реализация. **AEC (Advanced Encription Standart)** е съвременният заместник на алгоритъм DES. Данните за криптиране се обработват под формата на 128 битови блокове. Ключовете с които се извършва криптирането, могат да са с дължина 128, 192 и 256 бита. ## 7. АСИМЕТРИЧНИ АЛГОРИТМИ ### 7.1. Общи сведения Асиметричните алгоритми за криптиране (**Public-Key cryptography**) се използват различни ключове за криптиране и декриптиране. Криптиране с публично известен (**Public Key**) и декриптиране със секретен (**Private Key**) ключ. **Конфиденциалността на данните** е свързана с възможността за криптиране на изпращаното съобщение (message) с публичния ключ и невъзможността да бъде декриптирано със същия ключ. Криптирано съобщение може да се прочете единствено от притежателя на секретния ключ. - Явен текст - Криптиране - %&()=?* - H35+# - T165$ - #@0f:! - Декриптиране - Явен текст - *P<sub>KB</sub>* - Криптиран текст - *S<sub>KB</sub>* - **A** (Източник) - **B** (Получател) **Фиг. 8. Схема на асиметричен криптографски алгоритъм** В показаната схема на Фиг.8 източникът А криптира явния текст с публичния ключ (P<sub>KB</sub>) на получателя В и го изпраща по линията. В декриптира полученото съобщение с помощта на собствения си секретен ключ *S<sub>KB</sub>*. Публичният ключ на Ве достъпен за всеки, който иска да му изпрати криптирано съобщение. Тази възможност е основно предимство на асиметричните системи пред симетричните. Липсата на необходимост за предаване на ключ за криптиране по засекретен канал, дава възможност за реализиране на публични криптиращи услуги. Свободната достъпност на публичния ключ, от своя страна, се явява и недостатък по отношение на автентификацията (установяването на самоличността) на изпращащия съобщението, защото може да се ползва от всеки. Този проблем налага допълнително организиране на процедура по автентификация. **Автентификацията** на изпращащия може да се реализира чрез прилагане на публичния и секретния ключ в обратен ред. За криптиране на съобщението изпращащата страна използва собствения си секретен ключ. Получената криптограма се криптира повторно с публичния ключ на получателя. Криптираното съобщение се изпраща по открит комуникационен канал. Получателят на съобщението го декриптира, като прилага собствения си секретен ключ. След това декриптира повторно с публичния ключ на изпращащия и така получава оригиналния явен текст. Публичният ключ на изпращащия е достъпен за свободно ползване. Схемата на работа на асиметричните алгоритми ще бъде илюстрирана с алгоритъм RSA. ### 7.2. RSA (Rivest, Shamir, Aldeman) RSA е класически асиметричен алгоритъм, чиято сигурност се определя от факторизацията на големи прости числа. Сигурността на алгоритъма се базира на следните предпоставки: - много е трудно да се подложи на криптоанализ основата на алгоритъма - факторизацията на големите числа; - сигурността се основава на притежаването на секретен ключ единствено от едно лице - неговия собственик; - секретният ключ не се предава никога по какъвто и да е било канал. Името RSA произлиза от първите букви на създателите на алгоритъма - математиците от Масачузетският Технологичен Институт Ron Rivest, Adi Shamir, и Leonard Adleman. В момента RSA се използва като част от SWIFT (Society for Worldwide Interbank Financial Telecommunications) организация за световна комуникация между банки и финансови организации като стандарт за 4 След като веднъж се криптира дадено съобщение с публичния ключ, то не може да се декриптира с него. 5 Подробности за алгоритъма И приложенията му са достъпни на адрес: http://www.rsasecurity.com/ международен финансов трансфер и е възприет от ANSI X9.31 стандарта за банковата индустрия. Използва се от американските и австралийските банки. Друго приложение на RSA е в Internet-браузърите, както и в устройствата за мрежова комуникация, смарт-картите и методите за електронно разплащане. Виртуални частни мрежи (Virtual Private Networks VPNs). Алгоритъм RSA работи по следния начин: - 1. Генерират се две големи произволни (и различни) прости числа 'р' и 'q'. - 2. Изчислява се n = p.q и (n) = (p-1).(q-1). - 3. Избира се произволно цяло число ‘е', 1 < е <, така че най-големия общ делител на числата ‘е' и ‘’ да е 1. - 4. Намира се цяло число ‘d', такова, че e.d 1 (mod ). - 5. Публичният ключ на лицето А е (n, e), а частния (n,d). Целите числа ‘е' и 'd' при генерацията на ключове в RSA се наричат криптиращи и декриптиращи експоненти, а ‘n' се нарича модул (modulus). Пример (с много малки дължини на числата): - 1. Лицето А избира простите числа р = 2357, q = 2551 и изчислява n = p.q = 6012707 - 2. = (p-1)(q -1) = 6007800. - 3. После А избира е = 3674911 и намира d = 422191 така, че e.d 1 (mod ). Публичният ключ на А е двойката (n = 6012707; e= 3674911), а частният (тайният) му ключ е d = 422191; **Криптиране:** За да се криптира съобщение т = 5234673, потребител Б изчислява числото с = тʻ<sup>mod n</sup> = 5234673<sup>3674911</sup> mod 60127070 = 3650502, което се изпраща на А. **Декриптиране:** За да се декриптира съобщението, А изчислява са mod n = 3650502<sup>422191</sup> mod 6012707 = 5234673. Кои числа ще образуват публичния ключ се избира от създателя на числата. Следователно могат да се публикуват и числата (n,d) като публичен ключ. Тази обратимост дава възможност да се реализира схема за автентификация на изпращащия съобщението (автентификация на изпращащия). Основното предимство на асиметричните алгоритми е възможността за разработване на лесна система за управление на обмена на ключове. След като веднъж се генерират секретните ключове, е необходимо те да бъдат пазени само от едно лице - техния собственик, с което се повишава сигурността на алгоритъма по отношение на атака, насочена към обмена на ключове. Недостатъците на асиметричните алгоритми са свързани с по-бавната скорост на работа. Например за един и същ обем данни, при една и съща опитна конфигурация са получени следните резултати: - бърз от RSA: при хардуерна реализация: IDEA<sup>10</sup> е от 1000 до 10 000 пъти по-бърз от RSA; - В таблица 10.3 е дадено сравнение на симетрични и асиметрични алгоритми [51,56]. | | Симетрични алгоритми | Асиметрични алгоритми | |---|---|---| | **Предимства** | Лесна генерация на ключа; добра производителност за големи обеми от данни; | Не изисква обмен на секретен ключ; използва се една единствена двойка ключове; | | **Недостатъци** | Необходимост от обмен на секретни ключове; необходимост от уникален ключове за всяка двойка партньори; | Лоша производителност; трудна генерация на ключовете; | | **Използват се за** | Криптиране/декриптиране на големи масиви от данни; осигурява конфиденциалност на данните; | Секретен обмен на ключове за симетрични алгоритми; цифрови подписи; интегритет на данните; | ## 8. ХЕШ ФУНКЦИИ ### 8.1. Определения Еднопосочна функция (One-Way Function) - се нарича всяка функция, чието изчисление в права посока е лесно, но е много трудно да се изчисли нейната обратна (реверсна) функция. Хеш функция (One-Way Hash Function) се нарича всяка еднопосочна функция, която взима променлив по дължина блок от входни данни и създава блок от данни с фиксирана дължина. След прилагането на хеш