RSA

Материал из OpenWiki
Перейти к навигацииПерейти к поиску

RSA - система шифрования с открытым ключом, разработанная в 1977-ом году Рональдом Ривестом, Ади Шамиром и Максом Адлеманом. Название ее состоит из первых букв фамилий этих изобретателей. До изобретения асимметричного шифрования с открытым ключом в области криптографии применялось исключительно симметричное шифрование с секретным ключом. Этот ключ нужно было предварительно как-то передать своему партнеру по связи, причем сделать это нужно было каким-то безопасным способом, и именно с этим всегда возникали большие проблемы. Дело в том, что по умолчанию любой канал открытой связи считается ненадежным, следовательно, воспользоваться им для передачи этого ключа шифрования было нельзя.

Метод RSA произвел революцию в криптографии. Он позволил передавать ключи по открытому каналу. В то время как ранее все алгоритмы шифрования были симметричными (шифрование и расшифрование производилось одним и тем же ключом), алгоритм RSA является несимметричным: шифрование производится одним ключом, а расшифрование - другим. Типичная схема шифросвязи методом RSA выглядит следующим образом. Каждый из партнеров имеет по два ключа (открытый и закрытый). В начале сеанса связи каждый из участников сеанса посылает партнеру свой открытый ключ. В процессе сеанса каждый из участников шифрует передаваемую им информацию открытым ключом партнера, а поступающую ему информацию расшифровывает своим закрытым ключом.

Почему же информация, зашифрованная открытым ключом, может быть расшифрована парным ему закрытым? Это связано с тем, как создаются эти ключи. Алгоритм RSA основан на законах математики вычисления по модулю. Эти вычисления заключаются в возведении натуральных чисел в степень и вычислении остатка от деления результата этого возведения на некое натуральное число (модуль). При этом оказывается, что если результат этой операции опять возвести в некую другую степень и вычислить остаток от деления на то же самое число (модуль), что и в первом случае, то мы получим изначальное число - то, которое возводилось в степень на первом этапе (первый этап можно считать шифрованием, а второй - расшифрованием).

Степени, в которые возводятся числа, называются экспонентами (открытой и закрытой). Открытый ключ представляет собой пару чисел - открытая экспонента и модуль, а закрытый ключ состоит из закрытой экспоненты и того же модуля. Модуль является произведением двух больших простых чисел. Проблема взлома алгоритма RSA заключается в разложении модуля на эти сомножители (зная сомножители, можно по открытому ключу элементарно вычислить закрытый). Чем больше по величине эти простые числа, тем сложнее взломать RSA. Качество ключа RSA (в плане устойчивости к взлому) измеряется в битах (то есть, имеет значение, насколько большое число он из себя представляет). На практике в настоящее время используются ключи длиной 512, 1024 и 2048 бит. С удлинением ключа, однако, падает скорость работы алгоритма, поскольку для каждой операции (шифрования и расшифрования) требуется лавинообразно больше тактов процессора. По этой причине размер ключа в каждом конкретном случае выбирается по принципу разумной достаточности (с учетом своих материальных возможностей - чем более мощной техникой располагает потребитель, тем более надежную связь по RSA он способен себе обеспечить).

Как правило, открытая экспонента выбирается достаточно произвольно (обычно для этого используется сравнительно небольшое простое число), а закрытая вычисляется на основании выбранной открытой экспоненты и модуля по расширенному алгоритму Евклида. Суть этого этапа заключается в том, что открытая и закрытая экспоненты являются мультипликативно обратными числами по модулю функции Эйлера (то есть, их произведение по этому модулю равно единице) для пары простых чисел, произведение которых равно модулю открытого и закрытого ключа (функция Эйлера равна произведению этих чисел после предварительного уменьшения каждого из них на единицу).

Следует отметить, что классический способ использования RSA, описанный выше (с предварительным обменом открытыми ключами между партерами по незащищенной линии связи), уязвим к взлому по методу Man-In-The-Middle (человек посередине). Заключается он в том, что если злоумышленник способен перехватывать и подменять пакеты данных в канале связи, то он может подменить открытые ключи участников связи своим собственным открытым ключом и в дальнейшем расшифровывать весь обмен информацией своим же закрытым ключом. Причем так, что легальные партнеры по связи даже ничего при этом не заметят, поскольку он будет дублировать им всю информацию, шифруя ее предварительно перехваченными (у легальных участников) их собственными открытыми ключами.

Для предотвращения этого вида атак создаются специальные авторитетные серверы, на которых размещаются открытые ключи партнеров по связи. Это позволяет застраховаться от подобного рода атак (подмены легальных открытых ключей фейковыми). Однако даже такой подход не исключает опасности разложения злоумышленниками модуля RSA на простые сомножители (что хоть практически и очень сложно, но чисто теоретически реализовать все же возможно). Попытка исключить и такую (пусть даже крайне маловероятную) возможность взлома системы шифросвязи была впервые предпринята в Extra Systems Cypher Net, в которой не только закрытые, но и открытые ключи нигде не публикуются и ни по каким открытым каналам связи никуда не передаются, благодаря чему ее авторам удалось в 2024-м году построить промышленную криптографическую систему, которую никому невозможно взломать даже теоретически.