Предимства на асиметричната система за криптиране пред симетричната. Асиметрично криптиране. Как работи? Процесът на криптиране и предаване на съобщение

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

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

Хеш функции

В алгоритмите за генериране на цифров подпис, обсъдени в раздел 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 Algorithm) е разработен в САЩ като част от SHS (Secure Hash Standard), публикуван през 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, б 0, c 0, d 0, e 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 алгоритъм

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

K t=0x5A827999 за T=0…19;

K t=0x6ED9EBA1 за T=20…39;

K t=0x8F1BBCDC за T=40…59;

K t=0xCA62C1D6 за T=60…79.

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

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

Така изходът е 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).

Това е отлично въведение в принципите на криптографията.

Ако се интересувате сериозно от криптография, силно препоръчвам Наръчника по приложна криптография като невероятна справочна работа. Първоначално ще бъде поразително, но е безплатно, така че сега вземете копие :) и когато приключите с AC, прочетете HAC. (Всъщност изданието с твърди корици е много добре направено и много по-лесно за четене от няколкостотин страници лазерно отпечатана хартия; помислете за покупка, ако харесвате външния вид на PDF файловете.)

Симетричното криптиране работи чрез смесване на таен вход със таен ключ по такъв начин, че (а) бързо (б) да не може да изведе входа или ключа от изхода. Подробностите за смесване варират значително, но има блокови шифри и поточни шифри; блоковите шифри работят, като разглеждат входните данни в 8 или 16 или 32 байтови блокове наведнъж и разпръскват входа и ключа в тези блокове. Необходими са различни режими за криптиране на повече данни, отколкото се побират в блоковете, а различните режими на работа могат или не могат да разпределят данни между блоковете.

Симетричните шифри са фантастични за криптиране на масивни данни, 8 до 8 терабайта са най-добрият избор за криптиране на данни.

Асиметричното криптиране работи, като използва много сложни математически проблеми със задни врати, които ви позволяват бързо да разрешите проблема, ако имате малка част от много чувствителни данни. Често срещаните математически проблеми включват разлагане на големи числа и дискретни логаритми. Асиметричните алгоритми работят с фиксиран размер на данните, обикновено 1024-2048 бита за RSA и El Gamal и 384 бита за версиите с елиптична крива на RSA или El Gamal. (Версиите на елиптична крива използват поле, различно от целите числа, за своите изчисления. RSA и El Gamal и подобни системи работят с всяко поле, което дефинира едновременно операция за умножение и събиране, а ECC има различно представяне на това поле, което магически добавя „още“ данни. Това е много умен начин да накарате известните механизми да се поберат в по-малка памет и моето въведение от едно изречение може да не го оправдае.)

Асиметричното криптиране помага за решаването на проблема с разпределението на ключовете, но само: вместо да изискват O(N^2) двойки ключове между всяка двойка, хората, които искат да използват криптография, за да говорят помежду си, изискват O(N) ключове, една публична / частна двойка на човек и всеки просто трябва да познава всички други обществени части. Това все още не е лесна задача, тъй като сложността на x509 е изложена, но механизми като openPGP и OpenSSH имат по-прости модели и механизми, които работят добре за много цели.

Асиметричните шифри обикновено се използват за предаване на сесийни ключове за симетрични шифри. Дори когато се прехвърля само малко количество данни, криптографите обикновено предпочитат да изпратят действителните данни, криптирани със симетричен шифър, и да изпратят ключа, криптиран с асиметрично криптиране. Едно огромно предимство е, че можете да изпратите съобщение до множество получатели и размерът на съобщението ще бъде O (размер на съобщението + 100 * 2048 бита) - можете да шифровате ключа на сесията до всеки от получателите поотделно и да предадете съобщението само веднъж. Голям успех.

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

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

    Как все пак работи 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 цифри), които никога не се предават по комуникационни канали.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Но какво точно е сертификатът и как той ни осигурява сигурност?

    Сертификати

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    • Лесно за разбиране;
    • Без голямо техническо натоварване.

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

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

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

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

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

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

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

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

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

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

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

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

    заключения

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

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

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

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

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

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

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

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

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

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

    • изпращачът криптира данните;
    • получателят дешифрира.

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

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

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

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

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

    Сравнение на криптографската сила на някои системи за криптиране

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

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

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

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

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

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

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

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

    Целта на криптирането определя метода за запазване на поверителността. Едно от първите беше симетричното криптиране; асиметричното криптиране беше изобретено по-късно, за да осигури по-голяма сигурност.

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

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


    Недостатъците включват следното:

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

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

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

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

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

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

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

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

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

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

    Пример за симетрично криптиране и диаграма за внедряване е по-долу.

    1. Има двама събеседници, които планират да обменят поверителна информация.
    2. Първият събеседник генерира ключ d, алгоритми за криптиране E и декриптиране D. След това той изпраща тази информация на втория събеседник.
    3. Съобщението се дешифрира с ключ d.

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

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

    1. Проста и двойна пермутация.
    2. Магически квадрат.
    3. Единична пермутация.

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

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

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

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

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

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

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

    Има такива основни методи за асинхронно криптиране.

    1. Код ElGamal.

    RSA

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

    Описано е така.

    1. Избират се две прости числа, например 3 и 7.
    2. Изчислява се модулът n - произведението на две числа. Това се оказва 21.
    3. Изчислява се функцията на Ойлер φ=(p-1)×(q-1)=2×6=12.
    4. Изчислява се всяко просто число 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) се използва само за цифрово подписване, а не за криптиране. Даденият подпис може да бъде публично проверен. Има два алгоритъма за създаване и проверка на подпис. Това е хеш съобщението, което представлява текста в цифрова форма, който е криптиран. Следователно е избрана сложна хеш функция, за да се избегнат сблъсъци. Изграждането на цифров подпис се състои от следните стъпки.

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

    Схема Ел Гамал

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

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

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

    1. Избрано е произволно просто число p.
    2. Числото g трябва да е първичен корен на p.
    3. Числото x трябва да е по-голямо от 1 и по-малко от p-1. Това ще бъде частният ключ.
    4. След това публичният ключ y се изчислява с помощта на формулата g^x mod p.

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