Криптирането на RSA е система, която решава онова, което някога беше един от най-големите проблеми в криптографията: Как можете да изпратите на някого кодирано съобщение без да имате възможност предварително да споделяте кода с тях?
Тази статия ще ви научи на всичко, което трябва да знаете как е разработено RSA криптирането, как работи, математиката зад него, за какво се използва както и някои от най-големите проблеми със сигурността, с които се сблъсква. Научаването на RSA ще ви даде някои основни знания, които ви помагат да разберете колко части от нашия онлайн живот са защитени.
Какво е RSA криптиране?
Да речем, че искате да разкажете на приятеля си тайна. Ако сте точно до тях, можете просто да го прошепнете. Ако сте на противоположните страни на страната, това очевидно няма да работи. Можете да го запишете и да им изпратите поща или да използвате телефона, но всеки от тези канали за комуникация е несигурен и всеки с достатъчно силна мотивация лесно би могъл да прихване съобщението.
Ако тайната е била достатъчно важна, не бихте рискували да я запишете нормално – шпиони или служител на поща може да ви търси по пощата. По същия начин, някой може да чука телефона ви без ваше знание и да регистрира всяко едно ваше повикване.
Едно решение за предотвратяване на подслушването на достъп до съдържанието на съобщението е да криптирайте го. Това основно означава да добавите код към съобщението, което го променя в объркана каша. Ако вашият код е достатъчно сложен, единствените хора, които ще имат достъп до оригиналното съобщение, са тези, които имат достъп до кода.
Ако преди това сте имали възможност да споделите кода с приятеля си, тогава всеки от вас може да изпрати криптирано съобщение по всяко време, знаейки, че вие двамата сте единствените, които имат възможност да четат съдържанието на съобщението. Но какво ще стане, ако не сте имали шанс да споделите кода предварително?
Това е един от основните проблеми на криптографията, който беше разгледан от схеми за криптиране с публичен ключ (известни също като асиметрично криптиране) като RSA.
При RSA криптиране съобщенията се криптират с код, наречен a публичен ключ, които могат да се споделят открито. Поради някои различни математически свойства на алгоритъма на RSA, след като съобщението е криптирано с публичния ключ, то може да бъде декриптирано само с друг ключ, известен като частния ключ. Всеки потребител на RSA има двойка ключове, състояща се от техните публични и частни ключове. Както подсказва името, частният ключ трябва да се пази в тайна.
Схемите за криптиране на публичния ключ се различават от криптиране на симетричен ключ, при което както криптирането, така и декриптирането използват един и същ частен ключ. Тези различия правят криптирането на публичните ключове като RSA полезно за комуникация в ситуации, в които предварително не е имало възможност за безопасно разпространение на ключове..
Алгоритмите на симетричните ключове имат свои собствени приложения, като криптиране на данни за лична употреба или когато има сигурни канали, чрез които частните ключове могат да бъдат споделяни.
Вижте също: Криптография с публичен ключ
Къде се използва RSA криптиране?
RSA криптиране често се използва в комбинация с други схеми за криптиране, или за цифрови подписи което може да докаже автентичността и целостта на съобщението. Обикновено не се използва за криптиране на цели съобщения или файлове, тъй като е по-малко ефективен и по-тежък от ресурси от криптирането на симетричен ключ.
За да направим нещата по-ефективни, файлът обикновено ще бъде кодиран с алгоритъм на симетричен ключ и след това симетричният ключ ще бъде кодиран с RSA криптиране. При този процес само субект, който има достъп до частния ключ на RSA, ще може да декриптира симетричния ключ.
Без да има достъп до симетричния ключ, оригиналният файл не може да бъде дешифриран. Този метод може да се използва за запазване на съобщенията и файловете в безопасност, без да отнема твърде много време или да изразходва твърде много изчислителни ресурси.
RSA криптирането може да се използва в редица различни системи. Може да се реализира в OpenSSL, wolfCrypt, cryptlib и редица други криптографски библиотеки.
Като една от първите широко използвани схеми за криптиране с публичен ключ, RSA постави основите на голяма част от нашите сигурни комуникации. Беше традиционно използван в TLS и беше също така оригиналният алгоритъм, използван при PGP криптиране. RSA все още се наблюдава в редица уеб браузъри, имейл, VPN, чат и други комуникационни канали.
RSA също често се използва за осъществяване на сигурни връзки между VPN клиенти и VPN сървъри. При протоколи като OpenVPN, TLS ръкостисканията могат да използват алгоритъма на RSA за обмен на ключове и установяване на защитен канал.
Фонът на RSA криптирането
Както споменахме в началото на тази статия, преди криптирането с публичен ключ беше предизвикателство да се комуникира сигурно, ако преди това не е имало възможност за безопасна размяна на ключове. Ако не е имало възможност за споделяне на кода преди време или защитен канал, по който могат да се разпространяват ключовете, няма начин да се комуникира, без заплахата от врагове да могат да прихванат и да получат достъп до съдържанието на съобщението.
Едва през 70-те нещата наистина започнаха да се променят. Първото голямо развитие към това, което днес наричаме криптография с публичен ключ, беше публикувано в началото на десетилетието от Джеймс Х. Елис. Елис не можа да намери начин да реализира работата си, но беше разширен от неговия колега Клифърд Кокс, за да стане това, което сега знаем като RSA криптиране.
Последната част от пъзела е това, което сега наричаме Дифи-Хелман обмен на ключове. Малкълм Дж. Уилямсън, друг колега, измисли схема, която позволява на две страни да споделят ключ за криптиране, дори ако каналът се наблюдава от противници.
Цялата тази работа беше предприета в разузнавателната агенция на Обединеното кралство, Щаб на правителствените комуникации (GCHQ), която държаха откритието класифицирано. Отчасти поради технологичните ограничения, GCHQ не можеше да види криптография с публичен ключ по това време, така че разработката седеше безшумно на рафта, събирайки прах. Едва през 1997 г. работата е разсекретена и първоначалните изобретатели на RSA са признати.
Няколко години по-късно подобни понятия започват да се развиват в публичната сфера. Ралф Меркле създаде ранна форма на криптография с публичен ключ, което повлия на Уитфийлд Дифи и Мартин Хелман при проектирането на обмена на ключове Дифи-Хелман.
Идеите на Дифи и Хелман липсваха един важен аспект, който ще превърне работата им в основата на криптографията с публичен ключ. Това беше а еднопосочна функция, която би била трудна за инвертиране. През 1977г, Рон Ривест, Ади Шамир и Леонард Адлеман, чиито имена формират съкращението на RSA, излязоха с решение след година труд по проблема.
Учените, базирани на MIT, направиха своя пробив след парти на Пасха през 1977 г. След нощ на пиене, Ривест се прибра вкъщи, но вместо да спи, прекара вечерта трескаво, пишейки документ, който формализира идеята му за необходимата еднопосочна функция.
Идеята е патентована през 1983 г. от MIT, но чак в ранните дни на интернет алгоритъмът RSA започна да приема широко приложение като важен инструмент за сигурност.
Как работи RSA криптирането?
Следващото ще бъде малко опростяване, защото твърде много читатели вероятно са били белязани от учителя си по математика в гимназията. За да не допуснем твърде много математиката, ще бъдем опростяване на някои понятия и използване на много по-малки числа. В действителност, RSA криптирането използва прости числа, които са много по-големи по големина и има няколко други сложности.
Има няколко различни концепции, с които ще трябва да се обърнете, преди да можем да обясним как всичко се вписва заедно. Те включват функции за капандури, генериране на грундове, томиентната функция на Carmichael и отделните процеси, участващи в изчисляване на публичните и частните ключове използван в процесите на криптиране и декриптиране.
Функции на капана на вратата
RSA криптирането работи при условие, че алгоритъмът е лесно да се изчисли в една посока, но почти невъзможно в обратна посока. Например, ако ви казаха, че 701,111 е продукт на две прости числа, бихте ли успели да разберете какви са тези две числа?
Дори и с калкулатор или компютър, повечето от нас не биха имали идея откъде да започнат, камо ли да можем да разберем отговора. Но ако преобърнем нещата, става много по-лесно. Какво е резултатът от:
907 x 773
Ако бяхте достатъчно отегчени, щяхте да успеете да изтръгнете телефона си или може би да го изчислите в главата си, за да откриете, че отговорът е споменатият по-горе 701,111. Тези 907 и 773 са основните числа, които отговарят на първия ни въпрос, който ни показва, че някои уравнения могат да бъдат лесно да разберем по един начин, но на пръв поглед невъзможни.
Друг интересен аспект на това уравнение е, че е лесно да разберете едно от основните числа, ако вече имате другото, както и продукта. Ако ви кажат, че 701,111 е резултат от 907, умножено по друго просто число, можете да го разберете другото простичко със следното уравнение:
701,111 ÷ 907 = 773
Тъй като връзката между тези числа е проста за изчисляване в една посока, но невероятно твърда в обратна посока, уравнението е известно като функция на капана на вратата. Имайте предвид, че докато горният пример е трудно за хората да разберат, компютрите могат да извършат операцията в тривиално количество време.
Поради това RSA използва много по-големи числа. Размерът на прайметата в истинска RSA реализация варира, но в 2048-битовия RSA те ще се съберат, за да направят ключове, дълги 617 цифри. За да ви помогнем да го визуализирате, ключ е числото от този размер:
99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
Генериране на праймери
Споменатите по-горе функции на вратата на капана формират основата за функционирането на схемите за криптиране на публичните и частните ключове. Свойствата им позволяват споделяне на публични ключове, без да застрашават съобщението или разкриват частния ключ. Те също така позволяват криптиране на данните с един ключ по начин, който може да бъде декриптиран само от другия ключ от двойката.
Първата стъпка за криптиране на съобщение с RSA е да генерирайте ключовете. За да направим това, имаме нужда две прости числа (р и р) които са избрани с тест за първичност. Тестът за първичност е алгоритъм, който ефективно намира прости числа, като тест за първичност на Рабин-Милър.
Основните числа в RSA трябва да бъдат много големи и също така сравнително далечни. Малките или по-близо един до друг са много по-лесни за напукване. Въпреки това, нашият пример ще използва по-малки числа, за да улесни нещата и да изчислите нещата.
Нека да кажем, че тестът за първичност ни дава основните числа, които използвахме по-горе, 907 и 773. Следващата стъпка е да открием модула (н), използвайки следната формула:
н = р х р
Където р = 907 и р = 773
Следователно:
н = 907 х 773
н = 701,111
Тотисната функция на Carmichael
Щом имаме н, ние използваме Тотинг функция на Carmichael:
λ(н) = НОК (р – 1, р – 1)
Ако мина доста време, откакто попаднахте на учебниците по математика, горното може да изглежда малко ужасяващо. Можете да прескочите тази част и просто да се доверите, че математиката работи, в противен случай се придържайте към нас за още няколко изчисления. Всичко ще бъде обяснено възможно най-подробно, за да ви помогне да заобикаляте основните положения.
За тези, които не знаят, λ (п) представлява тотала на Кармикел н, докато НОК означава най-ниското общо кратно, което е най-ниското число и от двете р и р може да се раздели на. Има няколко различни начина да разберете това, но най-лесният е да се доверите на онлайн калкулатор, който да направи уравнението вместо вас. Така че нека да поставим нашите числа в уравнението:
λ(701111) = НОК (907 – 1, 773 – 1)
λ(701111) = НОК (906, 772)
Използвайки калкулатора, свързан по-горе, това ни дава:
λ(701111) = 349 716
Генериране на публичния ключ
Сега, когато вече сме в крайна сметка от нашите най-големи числа, това е време да разберем нашия публичен ключ. Под RSA, публичните ключове са съставени от просто число д, както и н. Броя д може да бъде всичко между 1 и стойността за λ(н), което в нашия пример е 349 716.
Тъй като публичният ключ се споделя открито, той не е толкова важен за д да е произволно число. На практика, д обикновено е настроен на 65537, защото когато се избират много по-големи числа на случаен принцип, това прави криптирането много по-малко ефективно. За днешния пример ще запазим числата малки, за да направим изчисленията ефикасни. Да речем:
д = 11
Нашите окончателни криптирани данни се наричат шифротекст (° С). Ние го извличаме от нашето просто текстово съобщение (m), като приложите публичния ключ със следната формула:
° С = mд мод n
Вече сме измислили д и ние знаем н също. Единственото, което трябва да обясним, е моден. Това е малко от дълбочината на тази статия, но се отнася до a модулна работа, което по същество означава остатъкът, останал, когато разделите едната страна на другата. Например:
10 моден 3 = 1
Това е така, защото 3 влиза в 10 три пъти, с остатък от 1.
Обратно към нашето уравнение. За да сме нещата прости, нека кажем това съобщението (m), които искаме да криптираме и пазим в тайна е само едно число, 4. Нека включим всичко:
° С = mд моден н
° С = 411 моден 701111
° С = 4,194,304 моден 701111
Отново, за да направим модулна работа лесно, ще използваме онлайн калкулатор, но вие сте добре дошли да го разберете сами. Въвеждайки 4,194,304 в онлайн калкулатора, той ни дава:
с = 688,749
Ето защо, когато използваме RSA за криптиране на нашето съобщение, 4, с нашия публичен ключ, той ни дава шифротекст от 688 749. Предишните стъпки може да са ви се стрували прекалено математически тежки, но е важно да повторите какво всъщност се е случило.
Имахме съобщение от 4, което искахме да запазим в тайна. Приложихме публичен ключ към него, който ни даде криптиран резултат от 688 749. Сега, когато е криптиран, можем безопасно да изпратим номера 688 749 на собственика на двойката ключове. Те са единственият човек, който ще може да го декриптира с личния си ключ. Когато го дешифрират, те ще видят съобщението, което наистина изпращаме, 4.
Генериране на частния ключ
При RSA криптиране, след като данните или съобщението са превърнати в шифротекст с публичен ключ, той може да бъде декриптиран само от частния ключ от същата двойка ключове. Частните ключове се състоят от д и н. Вече знаем н, и за намиране се използва следното уравнение д:
д = 1 /д мод λ(н)
В Генериране на публичния ключ раздел по-горе, това вече решихме в нашия пример, д би било равно 11. По същия начин знаем това λ(н) се равнява на 349 716 от предишната ни работа под Тотисната функция на Carmichael. Нещата стават малко по-сложни, когато се натъкнем на този раздел от формулата:
1 /д моден
Това уравнение може да изглежда, че иска да разделите 1 на 11, но това не е така. Вместо това, това просто символизира, че трябва да изчислим модулна обратна на д (което в случая е 11) и λ(н) (което в случая е 349 716).
Това по същество означава това вместо да извършваме стандартна модулна операция, вместо това ще използваме обратната. Това обикновено се среща с разширения евклидов алгоритъм, но това е малко извън обхвата на тази статия, така че просто ще изневеряваме и ще използваме онлайн калкулатор. Сега, когато разбираме всичко, което се случва, нека включим нашата информация във формулата:
д = 1 /11 моден 349716
За да извършите тази операция, просто въведете 11 (или всяка стойност, която може да имате д ако се опитвате да направите това със собствен пример), където пише цяло число и 349 716 (или всяка стойност, която може да имате за λ(н) ако се опитвате да направите това със собствен пример), където се казва Modulo в онлайн калкулатора, който беше свързан по-горе. Ако сте го направили правилно, трябва да получите резултат, когато:
д = 254, 339
Сега, когато имаме стойността за д, можем да дешифрираме съобщения, които бяха шифровани с нашия публичен ключ, като използваме следната формула:
m = ° Сд мод n
Сега можем да се върнем към шифротекста, който кодирахме под Генериране на частния ключ секция. Когато шифровахме съобщението с публичния ключ, то ни даде стойност за ° С от 688 749. От горе знаем това д равна на 254,339. Ние също знаем това н равен на 701,111. Това ни дава:
m = 688 749254339 моден 701111.
Както може би сте забелязали, опитът да вземете число до 254,339-та мощност може да е малко за повечето нормални калкулатори. Вместо това ще използваме онлайн калкулатор за декриптиране на RSA. Ако искате да използвате друг метод, ще приложите правомощията както обикновено и ще извършите операцията по модула по същия начин, както ние направихме в Генериране на публичния ключ раздел.
В калкулатора, свързан по-горе, въведете 701,111, където пише Модул на доставка: N, 254 399, където пише Ключ за декриптиране: D, и 688 749, където пише Съобщение с шифротекст в числова форма, както е показано по-долу:
След като въведете данните, натиснете Разкодирай, която ще постави числата чрез формулата за декриптиране, която беше изброена по-горе. Това ще ви даде оригиналното съобщение в полето по-долу. Ако сте направили всичко правилно, трябва да получите отговор на 4, което беше оригиналното съобщение, което кодирахме с нашия публичен ключ.
Как работи RSA криптирането на практика
Горепосочените секции трябва да ви дадат разумна представа как работи математиката зад криптирането на публичния ключ. Може да е малко объркващо, но дори и тези, които не са разбрали тънкостите на уравненията, може да се надяваме, че ще ви отнемат важна информация за процеса.
В стъпките, изброени по-горе, показахме как две субекти могат да комуникират сигурно, без предварително да споделят код. Първо, всеки от тях трябва създават свои собствени двойки ключове и споделяйте публичния ключ един с друг. Двете субекти трябва да пазят своите секретни ключове в тайна, за да останат сигурни комуникациите им.
След като подателят разполага с публичния ключ на получателя си, той може да го използва, за да криптира данните, които иска да запази. След като бъде кодиран с публичен ключ, той може да бъде дешифриран само от частния ключ от същата двойка ключове. Дори същият публичен ключ не може да се използва за декриптиране на данните. Това се дължи на свойствата на функции на вратата за капани които споменахме по-горе.
Когато получателят получи криптираното съобщение, той използва своя личен ключ за достъп до данните. Ако получателят иска да върне комуникациите по сигурен начин, след това те могат да кодират съобщението си с публичния ключ на партията, с която общуват. Отново, след като е шифрована с публичния ключ, единственият начин за достъп до информацията е чрез съответстващия частен ключ.
По този начин, RSA криптирането може да се използва от неизвестни досега страни за сигурно изпращане на данни помежду си. От тази основа бяха изградени значителни части от комуникационните канали, които използваме в нашия онлайн живот.
Как са по-сложни съобщения криптирани с RSA?
В нашия пример много опростихме нещата, за да го разберем по-лесно, поради което само шифровахме съобщение от „4”. Да можеш да шифроваш числото 4 не изглежда особено полезно, така че може би се чудиш как можете да шифровате по-сложен набор от данни, като симетричен ключ (който е най-често използваната RSA) или дори съобщение.
Някои хора могат да се смутят от това как ключ като „n38cb29fkbjh138g7fqijnf3kaj84f8b9f…“ или съобщение като „купи ми сандвич“ може да бъде криптиран от алгоритъм като RSA, който се занимава с числа, а не с букви. Реалността е, че цялата информация, която нашите компютри обработват, се съхранява в двоични (1 и 0) и използваме стандарти за кодиране като ASCII или Unicode да ги представя по начини, които хората могат да разберат (букви).
Това означава, че ключове като „n38cb29fkbjh138g7fqijnf3kaj84f8b9f…“ и съобщения като „купи ми сандвич“ вече съществуват като номера, които лесно могат да бъдат изчислени в алгоритъма на RSA. Числата, с които те са представени, са много по-големи и по-трудни за управление, поради което предпочитаме да се занимаваме с буквено-цифрови знаци, а не с купчина двоични.
Ако искаш криптиране на по-дълъг сесиен ключ или по-сложно съобщение с RSA, това просто ще включва много по-голям брой.
подложка
Когато се реализира RSA, той използва нещо наречено подплънки, за да се предотврати редица атаки. За да обясним как работи това, ще започнем с пример. Да речем, че изпращате кодирано съобщение до приятел:
Скъпи Карън,
Надявам се, че си добре. Утре ли вечеряме?
Искрено Ваш,
Джеймс
Нека да кажем, че сте кодирали съобщението по прост начин, от промяна на всяка буква в тази, която я следва в азбуката. Това ще промени съобщението на:
Efbs Lbsfo,
J ipqf zpv bsf xfmm. Bsf xf tujmm ibwjoh ejoofs upnpsspx?
Zpvst tjodfsfmz,
Kbnft
Ако враговете ви прихванат това писмо, има трик, който биха могли да използват, за да изпробват кода. Те биха могли погледнете формата на писмото си и се опитайте да отгатнете какво може да каже съобщението. Те знаят, че хората обикновено започват писмата си с “Здравей”, “Здравей”, “Скъпи” или с редица други конвенции.
Ако се опитат да приложат „Здравей“ или „Здравей“ като първа дума, те ще видят, че няма да отговаря на броя знаци. След това те могат да опитат „Скъпи“. Приляга, но това не означава непременно нищо. Нападателите просто щяха да го опитат и да видят къде ги е довел. Така че те биха сменили буквите „e“, „f“, „b“ и „s“ съответно с „d“, „e“, „a“ и „r“. Това ще им даде:
Скъпи Ласео,
J ipqe zpv са xemm. Xe tujmm iawjoh djooes upnpsspx?
Zpvrt tjoderemz,
Kanet
Все още изглежда доста объркващо, така че нападателите може да се опитат да разгледат някои други условности, например как сключваме писмата си. Хората често добавят „От“ или „С уважение“ в края, но нито едно от тях не отговаря на формата. Вместо това нападателите могат да изпробват „Искрено твои“ и да заменят другите букви, за да видят къде ги стига. Чрез промяна на “z”, “p”, “v”, “t”, “j” “o”, “d” и “m” с “y”, “o”, “u”, “s”, ” i ”,“ n ”,“ c ”и“ l ”съответно, те ще получат:
Скъпи Ласен,
Аз съм ти xell. Има ли xe tuill iawinh dinnes uonossox?
Искрено Ваш,
Kanet
След тази модификация изглежда, че нападателите започват да стигат някъде. Те са намерили думите „аз“, „ти“ и „са“, в допълнение към думите, които съставляват първоначалните им предположения.
Виждайки, че думите са в правилен граматичен ред, нападателите могат да бъдат доста уверени, че се насочват в правилната посока. Досега те вероятно също са разбрали, че кодът включва всяка буква да бъде променена на тази, която го следва в азбуката. След като осъзнаят това, лесно превеждат останалите и четат оригиналното съобщение.
Горният пример беше просто обикновен код, но както виждате, структурата на съобщението може да даде на атакуващите улики за съдържанието му. Разбира се, че беше трудно да разберем съобщението само от неговата структура и бяха нужни някакви образовани предположения, но трябва да имате предвид, че компютрите се справят много по-добре, отколкото ние. Това означава, че те могат да бъдат използвани за намиране на много по-сложни кодове за много по-кратко време, на базата на улики, които идват от структурата и други елементи.
Ако структурата може да доведе до пропукване на код и разкриване на съдържанието на съобщението, тогава ни е необходим някакъв начин да скрием структурата, за да запазим съобщението сигурно. Това ни довежда до подложка.
Когато съобщението е подплатено, добавят се рандомизирани данни, за да се скрият оригиналните улики за форматиране, които могат да доведат до нарушаване на криптирано съобщение. С RSA нещата са малко по-сложни, тъй като криптиран ключ няма очевидното форматиране на писмо, което ни помогна да ни даде улики в горния ни пример.
Въпреки това противниците могат да използват редица атаки, за да използват математическите свойства на кода и да разбиват криптирани данни. Поради тази заплаха, реализациите на RSA използват схеми за подплънки като OAEP за вграждане на допълнителни данни в съобщението. Добавянето на това подплънки преди кодирането на съобщението прави RSA много по-сигурен.
Подписване на съобщения
RSA може да се използва за повече от просто криптиране на данни. Свойствата му го правят и полезна система потвърждавайки, че съобщението е изпратено от образуванието, което твърди, че го е изпратило, както и доказва, че съобщението не е променено или подправено.
Когато някой иска да докаже автентичността на своето съобщение, той може да изчисли a хашиш (функция, която взема данни с произволен размер и ги превръща в стойност с фиксирана дължина) на обикновения текст, след което го подписва с техния частен ключ. Те подпишете хеша, като приложите същата формула, която се използва при декриптирането (m = cд мод n). След като съобщението е подписано, те изпращат този цифров подпис на получателя заедно с него.
Ако получател получи съобщение с цифров подпис, той може да използва подпис, за да проверите дали съобщението е подписано автентично от личния ключ на лицето, което твърди, че го е изпратило. Те също така могат да видят дали съобщението е променено от нападателите след изпращане.
За да провери цифровия подпис, получателят първо използва същата хеш функция, за да намери хеш стойността на полученото съобщение. Тогава получателят прилага публичен ключ на изпращача към цифровия подпис, използвайки формулата за криптиране (c = mд мод н), да им даде хеш на цифровия подпис.
от сравнявайки хеша на съобщението, което е получено заедно с хеша от шифрования цифров подпис, получателят може да каже дали съобщението е автентично. Ако двете стойности са еднакви, съобщението не е променено от момента на подписването му от оригиналния подател. Ако съобщението беше променено дори от един символ, хеш стойността щеше да бъде напълно различна.
Сигурност на RSA & нападки
Подобно на повечето криптосистеми, сигурността на RSA зависи от това как се прилага и използва. Важен фактор е размерът на ключа. Най- колкото по-голям е броят на битовете в даден ключ (по същество колко е дълъг ключът), толкова по-трудно е да пробиете атаки като грубо форсиране и факторинг.
Тъй като асиметричните ключови алгоритми като RSA могат да бъдат разбити чрез цялостна факторизация, докато симетричните ключови алгоритми като AES не могат, ключовете RSA трябва да бъдат много по-дълги, за да се постигне същото ниво на сигурност.
В момента на най-големият размер на ключовете, който е взето предвид, е дълъг 768 бита. Това беше направено от екип от учени за период от две години, използвайки стотици машини.
Тъй като факторингът е завършен до края на 2009 г. и изчислителната мощност е нараснала значително след това време, може да се предположи, че опит с подобен интензитет сега може да фактор много по-голям RSA ключ.
Въпреки това, времето и ресурсите, необходими за този вид атака, го извеждат извън обсега на повечето хакери и в царството на националните държави. Най-добрата дължина на ключа, която ще използвате, ще зависи от вашия индивидуален модел на заплаха. Националният институт за стандарти и технологии препоръчва минимален размер на ключ от 2048-битов, но се използват и 4096-битови клавиши в някои ситуации, когато нивото на заплаха е по-високо.
Факторингът е само един от начините, по които RSA може да бъде разбит. Редица други атаки имат потенциал да разрушат криптирането с по-малко количество ресурси, но те зависят от внедряването и други фактори, а не непременно самата RSA. Някои от тях включват:
Случайни ли са примите?
Някои реализации на RSA използват слаби генератори на произволни числа, за да измислят прайметата. Ако тези числа не са достатъчно случайни, нападателите много по-лесно ги фактурират и нарушават криптирането. Този проблем може да се избегне с помощта на криптографски сигурен генератор на псевдослучайни числа.
Лошо генериране на ключове
RSA ключовете трябва да попаднат в определени параметри, за да бъдат сигурни. Ако прайметата р и р са твърде близо един до друг, ключът лесно може да бъде открит. По същия начин и числото д който представлява част от частния ключ, не може да бъде твърде малък. Ниската стойност улеснява решаването. Важно е тези номера да са с достатъчна дължина, за да запазите ключа си.
Атаки на странични канали
Това е тип атака, която не нарушава RSA директно, а вместо това използва информация от нейното внедряване, за да даде на нападателите намеци за процеса на криптиране. Тези атаки могат да включват неща като анализ на количеството мощност, което се използва, или анализ на клоновия прогноз, който използва измервания на времето за изпълнение, за да открие частния ключ.
Друг вид атака на страничен канал е известна като атака на синхронизация. Ако нападателят има възможност да измерва времето за декриптиране на компютъра на тяхната цел за няколко различни криптирани съобщения, тази информация може да направи възможно нападателят да установи личния ключ на целта.
Повечето реализации на RSA избягват тази атака чрез добавяне на еднократна стойност по време на процеса на криптиране, което премахва тази корелация. Този процес се нарича криптографско ослепяване.
Безопасно ли е RSA криптирането за бъдещето?
Добрата новина е, че RSA се счита за безопасен за използване, въпреки тези възможни атаки. Предпочитанието е това тя трябва да бъде приложена правилно и да се използва ключ, който попада в правилните параметри. Както току-що обсъдихме, реализациите, които не използват подплънки, неправомерни праймери или други уязвимости, не могат да се считат за безопасни.
Ако искате да използвате RSA криптиране, уверете се, че използвате ключ от поне 1024 бита. Тези с по-висока заплаха модели трябва да се придържат към ключове от 2048 или 4096 бита, ако искат да използват RSA с увереност. Стига да сте наясно със слабостите, които има RSA и да ги използвате правилно, трябва да се чувствате сигурни да използвате RSA за споделяне на ключове и други подобни задачи, които изискват криптиране с публичен ключ.
Вижте също: Обяснени общи типове криптиране
на цели документи или големи файлове, поради неговата по-бавна скорост на криптиране в сравнение с алгоритмите на симетричните ключове. Вместо това, RSA се използва за криптиране на малки съобщения, като пароли или ключове за достъп, както и за сигурността на електронната поща и онлайн транзакции. Фонът на RSA криптирането RSA криптирането е създадено през 1977 г. от Рон Райвест, Ади Шамир и Леонард Адлеман. Името на алгоритъма идва от първите букви на фамилиите на тези трима учени. RSA е първата схема за криптиране с публичен ключ, която е била публикувана и популяризирана. Как работи RSA криптирането? RSA криптирането използва математически функции, за да генерира двойка ключове – публичен и частен. Публичният ключ се използва за криптиране на съобщения, а частният ключ се използва за декриптиране на тези съобщения. Функции на капана на вратата RSA криптирането използва функции на капана на вратата, които са математически функции, които са лесни за изпълнение в една посока, но трудни за обратно изпълнение. Това означава, че е лесно да се изчисли произведението на две прости числа, но е трудно да се намерят тези прости числа, ако знаете само произведението им. Генериране на праймери RSA криптирането изисква генериране на две големи прости числа, които се умножават за да се получи публичният ключ. Тези прости числа са толкова големи, че е много трудно да се намерят, като се използват обичайни методи за факторизация. Тотисната функция на Carmichael RSA криптирането използва тотисната функция на Carmichael, която е функция, която дава минималното число, което удовлетворява определени условия. Тази функция се използва за генериране на публичния ключ. Генериране на публичния ключ RSA криптирането изисква генериране на публичен ключ, който се състои от две числа – едно, което е произведението на две големи прости числа, и друго, което е едно от тези прости числа, избрано така, че да удовлетворява определени математически условия. Генериране на частния ключ RSA криптирането изисква генериране на частен ключ, който се използва за декриптиране на съобщения, криптирани с публичния ключ. Частният ключ се генерира от двата големи прости числа,
на цели документи или големи файлове, поради големите размери на ключовете, които са необходими за това. Вместо това, RSA се използва за криптиране на малки съобщения, като пароли или криптографски ключове, които могат да бъдат изпратени по незащитени канали за комуникация. RSA криптирането също се използва във финансовата индустрия, за да се защитят транзакциите и данните на клиентите. Фонът на RSA криптирането RSA криптирането е създадено през 1977 г. от Рон Ривест, Ади Шамир и Леонард Адлеман. Името на алгоритъма идва от първите букви на фамилиите на създателите му. RSA е първата схема за криптиране с публичен ключ, която е била публикувана и популяризирана. Как работи RSA криптирането? RSA криптирането използва математически алгоритми, за да генерира двойка ключове – публичен и частен. Публичният ключ може да бъде споделян от всеки, който иска да изпрати криптирано съобщение до потребителя на RSA. Частният ключ трябва да се пази в тайна и се използва за декриптиране на криптираните съобщения. Функции на капана на вратата RSA криптирането използва функции на капана на вратата, за да генерира публичния и частния ключ. Тези функции са математически алгоритми, които са трудни за обратно изчисляване. Генериране на праймери RSA криптирането изисква генериране на две големи прости числа, наречени праймери. Тези числа са толкова големи, че е много трудно да се факторизират на техните прости множители. Тотисната функция на Carmichael RSA криптирането използва тотисната функция на Carmichael, за да генерира публичния и частния ключ. Тази функция е трудна за обратно изчисляване и е важна за сигурността на RSA криптирането. Генериране на публичния ключ RSA криптирането изисква генериране на публичен ключ, който може да бъде споделян от всеки, който иска да изпрати криптирано съобщение до потребителя на RSA. Публичният ключ се генерира от праймерите и тотисната функция на Carmichael. Генериране на частния ключ RSA криптирането изисква генериране на частен ключ, който се използва за декриптиране на криптираните съобщения. Частният ключ се генерира от публичния ключ и праймерите. Как работи RSA криптирането на практика RSA криптирането на практика