Най-простите методи за криптиране с частен ключ. Асиметрично криптиране. Как работи

За обмен на съобщения и скриване на съдържание от трети страни се използва криптиране. Използва се там, където се изисква повишено ниво на защита. Има две схеми за криптиране: симетрична и асиметрична.

Какво е криптиране

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

Характеристика на този тип предаване на данни е използването на ключ.

Има три състояния на сигурност:

  • скриване на информация от непознати;
  • предотвратяване на промени;
  • поддържане на целостта на информацията;
  • идентификация на подателя.

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

Има два вида криптиране: симетрично и асиметрично.

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

  • подателят криптира данните;
  • получателят декриптира.

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

Крипто устойчивост

Симетричните и асиметричните системи за криптиране имат характеристика, която е отговорна за трудността при получаване на неоторизиран достъп.

Има 2 основни типа криптографска сила на системата за криптиране.

  • Абсолютно устойчива система не може да бъде разкрита, дори с безкрайно големи изчислителни ресурси. Характеризира се с това, че за всяко съобщение се генерира отделен ключ. Дължината му е равна или по-голяма от дължината на съобщението.
  • В гражданска криптографска система се използват достатъчно силни системи. Такъв алгоритъм е труден за дешифриране, но с наличието на подходящи ресурси става възможен.
  • Сравнение на криптографската сила на някои системи за криптиране

    Максималният размер на RSA ключ е 4096 бита.

    Използва се за криптиране и подпис. Криптографската сила може да бъде описана като 2.7.1028 за 1300-битов ключ. Схемата се използва в много стандарти, принципът на RSA криптиране е един от първите асиметрични алгоритми.

    Размерът на ключа на схемата на ElGamal е RSA - 4096 бита. Използва се както за криптиране, така и за цифров подпис. Криптографската сила на тази система не се различава от RSA със същия размер на ключа.

    Методът DSA използва много по-малък ключ, 1024 бита. Използва се изключително за цифрови подписи.

    Симетрично и асиметрично криптиране

    Тези два вида криптиране се различават по броя на ключовете и нивото на устойчивост на кракване.

    Ако за кодиране и декодиране се използва един ключ, тогава това криптиране е симетрично. Асиметричното криптиране включва използването на един ключ за всеки алгоритъм.

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

    Характеристики на симетричното криптиране

    Симетричната защитна система има следните предимства.

  • Висока скорост и лекота на изпълнение.
  • За да се осигури силата на шифъра, се използва къса дължина на ключа.
  • Недостатъците включват следното:

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

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

    Характеристики на асиметричното криптиране

    Използването на двойка публичен-частен ключ може да се използва като:

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

    Има следните предимства:

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

    Трудно е да се правят промени в такива алгоритми. Система като тази има дълги клавиши. Ако симетричният ключ е 128 бита, тогава ключът RSA е 2304 бита. Поради това скоростта на декриптиране страда - тя е 2-3 пъти по-бавна. Декриптирането изисква големи изчислителни ресурси.

    Има много примери за симетрични и асиметрични системи за криптиране.

    Симетрично криптиране - как изглежда?

    Пример за симетрично криптиране и схема за изпълнение е по-долу.

  • Има двама събеседници, които планират да обменят поверителна информация.
  • Първият събеседник генерира ключ d, алгоритми за криптиране E и декриптиране D. След това той изпраща тази информация на втория събеседник.
  • Съобщението се дешифрира с ключ d.
  • Основният недостатък е невъзможността да се установи автентичността на текста. Ако ключът бъде прихванат, нападателят ще дешифрира секретната информация.

    Има класически методи.

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

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

    "Вълшебният квадрат" е по-сложна структура, която е матрица. Естествените числа са вписани в клетките по такъв начин, че сумата от числата за всяка колона, ред, диагонал да е еднаква. Всяко число съответства на буква в съобщението. Полученият текст се записва в низ чрез сравняване на числа и символи.

    Примери за асиметрично криптиране

    В този случай публичният ключ се изпраща по отворен канал и теоретично може да бъде прихванат от нападатели.

    За разлика от симетричните ключове за криптиране, асиметричните ключове за криптиране са различни. Публичният ключ се използва за криптиране, частният ключ се използва за декриптиране на съобщението. Използването на два ключа решава проблема с прихващането, който беше в симетричния метод. Реализира се по следния начин.

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

  • Шифър на Ел Гамал.
  • RSA

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

    Описано е по следния начин.

  • Избират се две прости числа, например 3 и 7.
  • Изчислява се модулът n - произведение на две числа. Оказва се 21.
  • Изчислява се функцията на Ойлер φ = (p-1) × (q-1) = 2 × 6 = 12.
  • Изчислява се всяко просто e по-малко от φ и просто с φ. Налични опции: 5, 7, 11.
  • Двойка числа e, n (5, 21) е публичен ключ. Сега се изчисляват числата d и n на частния ключ. Числото d удовлетворява условието (d × e) mod φ = 1 и е равно на 17. В резултат на това втората двойка числа 17 и 21 е частен ключ. Шифроването се извършва по следния начин: съобщението се издига на степен e, взема се остатъкът от деленето на n и резултатът трябва да е по-малък от n. Оказва се 10 - ще бъдат кодирани данни. За декодиране e се повишава до степен d и се изчислява остатъкът от деленето на n.

    DSA

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

  • Избор на криптографска хеш функция H (x).
  • Разрядността на простото число q трябва да е равна на стойността на хеш функцията H (x).
  • Избор на такова просто число p, така че p-1 да се дели на q без остатък.
  • Изчисляване на числото g = h (p-1) / q mod p. h трябва да бъде произволно число в диапазона от 1 до p-1.
  • Избира се произволно число k от 0 до q.
  • Изчислява се R = (gk mod p) mod q.
  • Тогава s = k-1 (H (m) + xr)) mod q.
  • Ако r = 0 или s = 0, се избира друго число k.
  • Схема на Ел Гамал

    За цифрови подписи се използва криптиране на ElGamal. Той е продължение на алгоритъма на Дифи-Хелман.

    Когато работите по тази схема, е важно да вземете предвид следната характеристика. Шифроването на El Gamal не е алгоритъм за цифров подпис със същото име. Когато е криптиран, текстът се преобразува в шифър, който е 2 пъти по-дълъг от оригиналното съобщение.

    Ключовете се генерират по следния начин.

  • Избира се произволно просто число p.
  • Числото g трябва да бъде примитивен корен на p.
  • Числото x трябва да бъде по-голямо от 1 и по-малко от p-1. Това ще бъде частният ключ.
  • След това публичният ключ y се изчислява по формулата g ^ x mod p.
  • При криптиране на текста M се избира системният ключ K. Той е по-голям от единица и по-малък от p-1. След това се изчисляват числата a и b, които са шифрован текст, a = g ^ k mod p и b = y ^ k M mod p.

    Днес в експертната общност има много спорове кое е по-добро: симетрично или асиметрично криптиране. В същото време много потребители на глобалната мрежа приемат една или друга гледна точка в пълна степен, без да разбират значението на тези термини. Това от своя страна води до редица проблеми. По-специално, в разработваната система се въвеждат ненужни компоненти или тя остава без адекватно ниво на защита.

    Затова по-долу ще ви кажем какво е симетричнии асиметрично криптиранес прости думи.

    Симетрично криптиране с обикновени думи

    Характеристика на симетричното криптиране е наличието на една парола. По друг начин се нарича още ключ.

    И така, алгоритъмът е следният. Има един вид математически алгоритъм за криптиране. На входа му се дава конкретна парола и текст. На изхода получаваме текста в криптиран вид. За да получите изходния текст, трябва да използвате същата парола, която е била използвана на входа, или различна с алгоритъма за декриптиране.

    Ако погледнем на горната ситуация от различен ъгъл, виждаме, че ако паролата се прехвърли на друго лице, сигурността на системата се нарушава.

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

    Трябва да се отбележи, че въпреки горните нюанси, симетричното криптиране е доста широко разпространено поради два фактора:

    • Лесна за разбиране;
    • Липса на тежко техническо натоварване.

    Асиметрично криптиране с обикновени думи

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

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

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

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

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

    Разлики между симетрично и асиметрично криптиране

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

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

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

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

    Генерирането на пароли в симетричен алгоритъм е много по-лесно за разлика от асиметричните алгоритми.

    заключения

    Имайки предвид горното, можем да заключим, че обхватът на приложение на алгоритмите за криптиране е различен. Следователно, когато се използва симетричен или асиметричен алгоритъм, винаги е необходимо да се вземат предвид условията на конкретен проблем. Включително може да се обмисли възможността за използване на техните хибриди.

  • Изработка на уебсайт,
  • Алгоритми
    • Превод

    Как все пак работи HTTPS? Това е въпрос, с който се боря от няколко дни в моята работна чернова.

    Като уеб разработчик знаех, че използването на HTTPS за защита на потребителски данни е много, много добра идея, но никога не съм имал солидно разбиране за това как всъщност работи HTTPS.

    Как се защитават данните? Как могат клиентът и сървърът да установят защитена връзка, ако някой вече слуша канала си? Какво е сертификат за сигурност и защо трябва да плащам на някого, за да го получа?

    Тръбопровод

    Преди да се потопим в това как работи това, нека поговорим накратко защо е толкова важно да се защитят интернет връзките и от какво защитава HTTPS.

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

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

    Обикновено заявките се изпращат през обикновен HTTP, при който както заявката на клиента, така и отговорът на сървъра се изпращат в чист текст. И има много убедителни причини, поради които HTTP не използва криптиране по подразбиране:

    Това изисква повече изчислителна мощност.
    Прехвърлят се още данни
    Не мога да използвам кеширане

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

    Защита на транспортния слой (TLS)

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

    TLS, наследникът на SSL, е протоколът, който най-често се използва за осигуряване на защитени HTTP връзки (наречени HTTPS). TLS е един слой под HTTP в OSI модела. Обяснявайки на пръсти, това означава, че в процеса на изпълнение на заявка първо се случват всички "неща", свързани с TLS връзката и едва след това всичко, свързано с HTTP връзката.

    TLS е хибридна криптографска система. Това означава, че използва няколко криптографски подхода, които ще обсъдим по-нататък:

    1) Асиметрично криптиране (криптосистема с публичен ключ) за генериране на споделена тайна и удостоверяване (тоест удостоверяване, че сте този, за когото се представяте).
    2) Симетрично криптиране, използващо таен ключ за допълнително криптиране на заявки и отговори.

    Криптосистема с публичен ключ

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

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

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

    Как е възможно? математика!

    Алгоритъм на Дифи - Хелман

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

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

    Малко математика...

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

    Нека Алис и Боб са две страни, разменящи ключове с помощта на алгоритъма DH. Първо се съгласяват по някаква причина корен(обикновено малко число като 2,3 или 5) и много голямо просто число първокласен(повече от 300 цифри). И двете стойности се изпращат в ясен текст по комуникационния канал, без заплаха от компрометиране на връзката.

    Припомнете си, че и Алис, и Боб имат свои собствени частни ключове (повече от 100 цифри), които никога не се предават по комуникационни канали.

    Сместа се предава по комуникационния канал смесполучени от частни ключове, както и от стойности първокласени корен.

    Поради това:
    Сместа на Алис = (корен ^ Тайната на Алис)% първостепенно
    Сместа на Боб = (корен ^ Тайната на Боб)% първичен
    където % е остатъкът от делението

    Така Алис създава своята смес въз основа на одобрените стойности на константите ( корени първокласен), Боб прави същото. След като са получили стойности смеседин друг, те извършват допълнителни математически операции, за да получат частния ключ на сесията. а именно:

    Изчисленията на Алис
    (Сместа на Боб ^ Тайната на Алис)% първостепенно

    Изчисленията на Боб
    (Сместа на Алис ^ Тайната на Боб)% първичен

    Резултатът от тези операции е едно и също число както за Алис, така и за Боб и това число става частен ключ за тази сесия. Моля, имайте предвид, че нито една от страните не е трябвало да изпраща своя частен ключ по комуникационния канал, а полученият таен ключ също не е бил предаден през отворена връзка. Страхотно!

    За тези, които не са толкова разбираеми в математиката, Уикипедия предоставя отлична картина, обясняваща процеса, използвайки смесване на цветове като пример:

    Забележете как първоначалният цвят (жълт) в крайна сметка се превръща в един и същ "смесен" цвят за Боб и Алис. Единственото нещо, което се предава по отворения комуникационен канал, са полусмесени цветове, всъщност безсмислени за всеки, който слуша комуникационния канал.

    Симетрично криптиране

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

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

    Удостоверяване

    Алгоритъмът на Diffie-Hellman позволява на две страни да получат частен таен ключ. Но как и двете страни могат да бъдат сигурни, че наистина си говорят? Все още не сме говорили за удостоверяване.

    Ами ако се обадя на моя приятел, ще извършим обмен на DH-ключ, но изведнъж се оказва, че разговорът ми е бил прихванат и всъщност общувах с някой друг?! Все пак ще мога да общувам безопасно с този човек - никой друг няма да може да ни изслуша - но изобщо няма да е този, с когото мисля, че общувам. Не е много сигурно!

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

    Но всъщност какво представлява този сертификат и как ни осигурява сигурност?

    Сертификати

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

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

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

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

    1. е реален;
    2. има достъп до домейна, за който се опитва да получи сертификат.

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

    Вашият браузър вече е предварително зареден със списък с акредитирани CA. Ако сървърът върне сертификат, който не е подписан от акредитиран CA, тогава ще се появи голямо червено предупреждение. В противен случай всеки може да подпише фалшиви сертификати.

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

    Други неща, които трябва да знаете за сертификатите

    Разширено валидиране
    В допълнение към обикновените сертификати X.509, има сертификати за разширена валидация, които осигуряват по-високо ниво на доверие. С издаването на такъв сертификат CA извършва още повече проверки на лицето, което получава сертификата (обикновено използвайки паспортни данни или сметки).

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

    Обслужване на множество уебсайтове на един сървър
    Тъй като обменът на данни по TLS протокола се извършва дори преди началото на HTTP връзката, могат да възникнат проблеми, ако няколко уебсайта се намират на един и същ уеб сървър на един и същ IP адрес. Маршрутирането на виртуални хостове се извършва от уеб сървъра, но TLS връзката се осъществява дори по-рано. Един сертификат за целия сървър ще се използва при заявка на всеки сайт, разположен на сървъра, което може да причини

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

    Когато се анализира система, в която няколко алгоритма се използват заедно, е обичайно да се оценява сложността на нейното прекъсване чрез сложността на прекъсването на най-слабото звено. В литературата има приблизително съответствие на дължините на ключовете за алгоритъма за симетрично криптиране (атака се извършва чрез изброяване на набора от ключове) и алгоритъма на RSA, които осигуряват сравнима сила. Например, 64-битов симетричен ключ за криптиране съответства приблизително на 512-битов RSA ключ, а 128-битов съответства на RSA ключ, по-дълъг от 2300 бита.

    Хеш функции

    В алгоритмите за генериране на EDS, разгледани в раздел 2.4, дължината на подписа е равна или дори по-голяма от дължината на самото съобщение. Очевидно е неудобно да заверявате голям документ по този начин. Следователно, като правило, не се подписва самото съобщение, а неговият "дайджест" - стойност с фиксирана дължина, в зависимост от съобщението, което се подписва. За да оформите дайджест, използвайте хеш функция(от английското „хеш функция“) – еднопосочна функция, която преобразува низ с произволна дължина в низ с фиксирана дължина. В криптографията се използват хеш функции от 2 класа:

    Безключови хеш функции;

    Хеш функции с ключ.

    Безключови хеш функции

    Безключовите хеш функции се категоризират като слаби и силни. Слаба хеш функцияH (x)отговарящи на следните условия:

    1) аргументът може да бъде битов низ с произволна дължина;

    2) стойност на функцията H (x)трябва да бъде битов низ с фиксирана дължина;

    3) стойност H (x)лесен за изчисляване;

    4) за всеки фиксиран аргумент хизчислително невъзможно да се намери друг x ’xтакъв, че H (x ') = H (x).

    Двойка стойности x ’x: H (x ') = H (x)Наречен сблъсъкхеш функции.

    Силна хеш функциянаречена еднопосочна функция H (x)отговарящи на условия 1) - 3) и последното условие в следната формулировка:

    5) изчислително е невъзможно за всяка двойка стойности x ’xтакъв

    Какво H (x ') = H (x).

    Всяка силна хеш функция отговаря на изискванията за слаба, обратното обикновено не е вярно. За да илюстрирате разликата в трудността при намиране на сблъсъци между слаба и силна хеш функция, помислете за атака, използваща парадокса за рождения ден 1. Нека фиксираме стойността на аргумента х, и ще повторим произволно x ’xтърси ситуация, в която H (x ') = H (x).Ако приемем, че хеш стойностите са равномерно разпределени и броят на възможните стойности H (x)равно на н, тогава имате нужда средно аритметичногруба сила н/ 2 опции, но ако изобщо искаме да намерим някакъв сблъсък, тогава проблемът се оказва по-прост: с вероятност от 0,63, за да определим необходимата двойка стойности, трябва да опитаме ннастроики.

    За да сведат до минимум разходите за създаване на криптографски хеш функции, разработчиците често използват един от съществуващите алгоритми за криптиране. Нека бъде E (m, k)обозначава криптиране на съобщението мна ключа к, а v 0Е началният вектор. Представете си кеширано съобщение Мкато последователност от блокове m 1, ..., m tи ще ги използваме като кръгли ключове. Тогава H (m)се изчислява, както следва:

    SHA-1 алгоритъм

    Алгоритъмът за защитен хеш (SHA) е разработен в Съединените щати като част от Secure Hash Standard (SHS), публикуван през 1993 г. Но в него бяха открити уязвимости, което доведе до необходимостта от модифициране на алгоритъма. Две години по-късно беше публикувана нова версия, SHA-1, която стана широко разпространена днес.

    Получавайки съобщение с произволна дължина, по-малка от 2 64 бита на входа, SHA-1 генерира 160-битово изходно съобщение (дайджест). Първо съобщението, което трябва да се преобразува Мдопълнен до кратно на 512 бита. Попълвателят се формира по следния начин: 1 се добавя към края на трансформираното съобщение, след това толкова нули, колкото са необходими, за да се получи съобщение, което е с 64 бита по-кратко от кратно на 512, и след това 64-битово представяне на дължината на оригиналното съобщение е добавено. Например, ако съобщението е дълго 800 бита, тогава 801-вият бит = 1, тогава добавяме нули до 960 бита, след което числото „800“ се записва в останалите 64 бита, в резултат на което сме хеширали 1024-битово съобщение. Общата схема на преобразуване е показана на фигура 2.18. Преди започване на преобразувания се инициализират пет 32-битови променливи:

    А= 0x67452301; Б= 0xEFCDAB89; ° С= 0x98BADCFE; д= 0x10325476; Е= 0xC3D2E1F0.

    Тези стойности също се присвояват на променливи. а 0, b 0, c 0, d 0, д 0... Трансформацията се извършва върху 512-битов блок съобщения в 80 кръга. В процеса на преобразуване се използват следните нелинейни функции f t:

    f t (X, Y, Z) = (X Y) ((X) Z)за T=0…19;

    f t (X, Y, Z) = X Y Zза T= 20 ... 39 и T=60…79;

    f t (X, Y, Z) = (X Y) (X Z) (Y Z)за T=40…59.

    Фигура 2.18 - Схема на кръг на алгоритъма SHA-1

    Процесът на преобразуване използва четири константи:

    К т= 0x5A827999 за T=0…19;

    К т= 0x6ED9EBA1 за T=20…39;

    К т= 0x8F1BBCDC за T=40…59;

    К т= 0xCA62C1D6 за T=60…79.

    Обозначението "<<< X» – циклический сдвиг влево на X разрядов, «+» – сложение по модулю 2 32 .

    След преобразуване на следващия 512-битов блок, получените стойности а,б,° С,д,дсумирайте със стойности А,Б,° С,д,Есъответно и започва обработката на следващия блок (или получената стойност под формата на конкатенация а,б,° С,д,дсе изпраща на изхода, ако обработеният блок е бил последният).

    По този начин изходът е 160-битов дайджест на оригиналното съобщение.

    Хеш функции с ключ

    Хеш функция с ключнаречена еднопосочна функция H (k, x)със следните свойства:

    Аргумент хфункции H (k, x)може да бъде бит низ с произволна дължина;

    Стойността на функцията трябва да бъде битов низ с фиксирана дължина;

    С всякакви данни ки хлесен за изчисляване H (k, x);

    За всеки хби трябвало да е почти невъзможно да се изчисли

    H (k, x),без да знам к;

    Трябва да е почти невъзможно да се определи к, дори с голям брой известни двойки (x, H (k, x))или изчислете от тази информация H (k, x ')за x ’x.

    Тези функции често се наричат Кодове за удостоверяване

    съобщения(на английски "Message Authentication Code", съкратено MAC).

    Изявление на предизвикателството за сигурността

    Симетрична схема за криптиране

    Формално симетрична схема за криптиране може да бъде описана по следния начин:

    SE = (K, E, D) , където

    • К - алгоритъм за генериране на ключове K,
    • E (M, K) = C - алгоритъм за криптиране на обикновен текст на ключ K, резултатът от който е шифрован текст C,
    • D (C, K) = M - алгоритъм за дешифриране на шифров текст C на ключа K, резултатът от който е откритият текст M

    Процесът на изпращане на съобщения може да бъде описан по следния начин:

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

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

    Най-важният компонент на схемата за симетрично криптиране е алгоритъмът за криптиране, който тя използва. В момента се разграничават алгоритмите за блоково и поточно криптиране:

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

    На практика линията между алгоритмите за блоково и поточно криптиране е доста размита (поточен шифър може лесно да се създаде на базата на блоков шифър, например GOST 28147-89 в гама режим).

    Схемите за криптиране, използвани в блоковите шифри, също се наричат ​​режими на криптиране.

    Някои от схемите за симетрично криптиране са:

    1. (ЕЦБ) Електронна книга с кодове
      • (ECB CTS
    2. (CBC) Верига на шифрова блокова верига Режим на свързване на шифров блок
      • (CBC CTS) Кражба на шифрован текст
      1. () Блокова верига Режим на блокова верига
      2. (CBC $) Верига на шифровани блокове със случаен IV (вектор за инициализация) Верижна верига на блокове със случаен вектор за инициализация
      3. (CBCC) шифрова блокова верига с контролна сума
      4. (PCBC) разпространение на шифрова блокова верига
      5. (CBCPD) шифрова блокова верига на разликата в отворения текст
    3. (CFB) Режим на обратна връзка с шифрован текст
    4. (OFB) Режим на обратна връзка на изхода
    5. (OFBNLF) изходна обратна връзка с нелинейна функция Режим на нелинеен изходен обратна връзка
    6. (PBC) Верига на блокове с отворен текст. Верига на блокове с отворен текст
    7. (PFB) обратна връзка с отворен текст Режим на обратна връзка с отворен текст
    8. (CTR) Режим на брояча
    9. Множествено криптиране
      1. Двойна
        • Метод на Дейвис-Прайс
      2. Троен
        • Веригата на Touchman
        • Схема с три ключа

    Криптографски примитиви и/или протоколи

    Криптографската сила на схемите за симетрично криптиране зависи почти изцяло от използвания в тях симетричен алгоритъм за криптиране. Като правило, когато се анализира силата на симетричен (един ключов) алгоритъм, се приема, че се използва най-простата схема за криптиране - ECB. Използването на други схеми може да подобри някои свойства на алгоритъма, в определени случаи, но не и обратното.

    За да гарантирате надеждността на алгоритмите за симетрично криптиране, трябва:

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

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

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

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

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

    Практически приложения на криптографски конструкции, особености на тяхното изпълнение (Практически въпроси)

    Практическото приложение на схемите за криптиране може да се види в много области от нашия живот, например схемата ECB се използва за криптиране на ключове, схемите CBC и CFB се използват за удостоверяване на данни, схемата CFB се използва и за криптиране на отделни знаци. Схемата OFB често се използва в канали с високи смущения (например сателитни комуникационни системи). Схемата за криптиране на PCBC използва протоколи Kerberos v4 и WASTE