Сообщение зашифрованное открытым ключом получателя может быть расшифровано только с помощью

Обновлено: 04.07.2024

Случаи из опыта разработки различных WEB проектов. Интересные факты, статьи, впечатления. Программирование и все о нем в сфере WEB.

Ладно, я понимаю, знать все тонкости реализации асимметричного шифрования нужно далеко не всем. Но общий принцип работы, я считаю, должен знать каждый, кто как-либо связан с компьютерами.

Немного истории

Конечно ключ можно передавать по другому каналу связи. Но криптография рассматривает все незащищенные каналы связи как небезопасные. То есть передача ключа Бобу по телефону, например, считается небезопасной так, как ничто не мешает Еве прослушивать и телефон в том числе.

Немножко реальной жизни

Прежде чем изучать какой либо алгоритм, нужно представить как он работает. И самый простой способ — это сравнить его с работой чего-то в реальности.

И вот начинает казаться что обмен ключами является неизбежной частью шифрования — или все-таки нет?

Представим другую картину. Распишу пошагово:

Вернемся к криптографии

Вернемся к математике

Что такое односторонняя функция? К примеру есть функция удвоение, т.е удвоить(4)=8, она двухсторонняя, т.к. из результата 8 легко получить исходное значение 4. Односторонняя функция — та функция после применения которой практически невозможно получить исходное значение. К примеру смешивание желтой и синей краски — пример односторонней функции. Смешать их легко, а вот получить обратно исходные компоненты — невозможно. Одна из таких функций в математике — вычисление по модулю.

За основу алгоритма Хеллман предложил функцию Y x (mod P). Обратное преобразование для такой функции очень сложно, и можно сказать что, по сути, заключается в полном переборе исходных значений.

К примеру вам сказали, что 5 x (mod 7) = 2, попробуйте найдите x, а? Нашли? А теперь представьте что за Y и P взяты числа порядка 10 300 .

Кстати сказать, для повышения стойкости, число P должно являться простым числом, а Y — являться первообразным корнем по модулю P. Но так как мы все же пытаемся понять теорию, то смысла заморачиваться на этом я не вижу.

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

И вот однажды Хеллмана осенило и он смог разработать рабочий алгоритм обмена ключами. Для работы по этому алгоритму нужно выполнять шаги на обоих сторонах, поэтому я зарисую это в таблице:

Алиса Боб
Этап 1 Оба участника договариваются о значениях Y и P для общей односторонней функции. Эта информация не является секретной. Допустим были выбраны значения 7 и 11. Общая функция будет выглядеть следующим образом: 7 x (mod 11)
Этап 2 Алиса выбирает случайное число, например 3, хранит его в секрете, обозначим его как число A Боб выбирает случайное число, например 6, хранит его в секрете, обозначим его как число B
Этап 3 Алиса подставляет число A в общую функцию и вычисляет результат 7 3 (mod 11) = 343 (mod 11) = 2, обозначает результат этого вычисления как число a Боб подставляет число B в общую функцию и вычисляет результат 7 6 (mod 11) = 117649 (mod 11) = 4, обозначает результат этого вычисления как число b
Этап 4 Алиса передает число a Бобу Боб передает число b Алисе
Этап 5 Алиса получает b от Боба, и вычисляет значение b A (mod 11) = 4 3 (mod 11) = 64 (mod 11) = 9 Боб получает a от Алисы, и вычисляет значение a B (mod 11) = 2 6 (mod 11) = 64 (mod 11) = 9
Этап 6 Оба участника в итоге получили число 9. Это и будет являться ключом.

Магия? Не спорю, с первого взгляда непонятно. Но после вчитывания и вдумывания в эту таблицу становится понятно как это работает. Впрочем если понятно не стало, то пролистайте до конца главы, там я выложил поясняющее видео.

Причем обратите внимание, что для получения ключа в конечной формуле, любому человеку нужно иметь три значения:

Но секретные числа по каналу не передаются! Еве не получится восстановить ключ, не имея чьего-нибудь секретного числа. Почему — я писал выше, данная функция является односторонней. Попробуйте решите уравнение 4 x (mod 11) = 2 y (mod 11) найдя x и y.

Чтобы было понятнее, как работает схема Хеллмана, представьте шифр, в котором в качестве ключа каким-то образом используется цвет:

Допустим вначале, что у всех, включая Алису, Боба и Еву, имеется трехлитровая банка, в которую налит один литр желтой краски. Если Алиса и Боб хотят договориться о секретном ключе, они добавляют в свои банки по одному литру своей собственной секретной краски.

Алиса может добавить краску фиолетового оттенка, а Боб — малинового. После этого каждый из них посылает свою банку с перемешанным содержимым другому.

И наконец, Алиса берет смесь Боба и подливает в нее один литр своей секретной краски, а Боб берет смесь Алисы и добавляет в нее один литр своей секретной краски. Краска в обеих банках теперь станет одного цвета, поскольку в каждой находится по одному литру желтой, фиолетовой и малиновой краски.

Именно этот цвет, полученный при добавлении дважды в банки красок, и будет использоваться как ключ. Алиса понятия не имеет, какую краску добавил Боб, а Боб также не представляет, какую краску налила Алиса, но оба они достигли одного и того же результата.

Между тем Ева в ярости. Даже если она и сумеет перехватить банки с промежуточным продуктом, ей не удастся определить конечный цвет, который и будет согласованным ключом. Ева может видеть цвет краски, полученной при перемешивании желтой краски и секретной краски Алисы в банке, отправленной Бобу, и она может видеть цвет краски, полученной при перемешивании желтой краски и секретной краски Боба в банке, отправленной Алисе, но чтобы найти ключ, ей, на самом деле, необходимо знать цвета исходных секретных красок Алисы и Боба. Однако, рассматривая банки с перемешанными красками, Ева не сможет определить секретные краски Алисы и Боба. Даже если она возьмет образец одной из смешанных красок, ей не удастся разделить ее на исходные краски, чтобы найти секретную, поскольку смешивание краски является односторонней функцией.

Все равно непонятно? Тогда смотрим видео:

Что же, надеюсь, вы поняли, что существует вполне реальный способ безопасного обмена ключами. Но прошу заметить, назвать этот алгоритм асимметричным шифром пока нельзя, так как по сути это всего лишь алгоритм обмена ключами.

Асимметричное шифрование

Есть несколько алгоритмов реализующих асимметричное шифрование. Самый известный из них — RSA. Расписывать его я не вижу смысла, так как понять как он работает с ходу все равно не получится, да и лучше чем написано на википедии я написать все равно не смогу.

Заключение

Что же, надеюсь что, поняв как работает асимметричное шифрование изнутри, вы станете больше ему доверять и соответственно чаще пользоваться SSL =)

Использовались материалы из книги Сингх Саймон — Книга шифров. Кстати, самая лучшая книга для тех кто хочет хотя бы чуточку разбираться в криптографии. Всем советую прочитать.

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


Понимание основополагающих принципов криптографии с открытым ключом поможет вам в успешном применении данных инструментов. Есть то, на что шифрование с открытым ключом способно, и то, чего оно не может. И важно понять, когда и как, вам, возможно, понадобится его использовать.

Что делает шифрование
? Anchor link

Схема работы шифрования при отправлении тайного послания:

Симметричное шифрование
: история передачи тайного послания с помощью одного ключа Anchor link




Шифр Цезаря является слабой формой симметричного шифрования. Однако со времён Юлия Цезаря шифрование существенно эволюционировало. С помощью математики и компьютеров мы имеем возможность сгенерировать ключ, который будет намного длиннее и который намного сложнее угадать. Существенное развитие симметричного шифрования сказалось и на широком его применении.

Как Сезар и Юлия могут решить эту проблему?


Допустим, Юлия и Сезар узнали о криптографии с открытым ключом. Злоумышленник просто не сможет подслушать или перехватить передачу ключа расшифровывания, потому что Сезару и Юлии не нужно обмениваться ключом расшифровывания. При использовании шифрования с открытым ключом ключи шифрования и расшифровывания - разные.

Шифрование с открытым ключом
: сказание о двух ключах Anchor link

Давайте внимательнее рассмотрим ситуацию. Каким образом отправитель передаст получателю симметричный ключ шифрования , исключая возможность того, что злоумышленник может подслушать и эту беседу тоже? В частности, если отправитель и получатель находятся вдали друг от друга, но хотели бы общаться без посторонних?


Юлия и Сезар не против того, чтобы посредники знали, что они общаются, но хотели бы оставить содержание своего общения в тайне.





Другая проблема: если злоумышленник
захочет выдать себя за вашего собеседника? Anchor link


В нашем примере с Юлией и Сезаром посредники постоянно способны получать метаданные.




К счастью, использование шифрования с открытым ключом способно предотвратить атаку посредника.

Приложения, использующие сквозное шифрование , также могут проверять отпечатки ключей, хотя и существуют некоторые вариации в названиях и способах реализации. В некоторых случаях необходимо очень внимательно прочитать каждый символ отпечатка, убедившись в том, что отпечаток на вашем экране совпадает с тем, что собеседник видит на своём. Другим способом проверки отпечатка является сканирование QR-кода с экрана телефона собеседника для подтверждения ключа его устройства. В приведённом ниже примере Юлия и Сезар могут встретиться лично, чтобы проверить отпечатки ключей своих телефонов, отсканировав QR-коды друг друга.


В данном примере Сезар отправляет отпечаток своего открытого ключа Юлии с помощью смартфона, используя при этом другое приложение со сквозным шифрованием.



Не забудьте подписаться! Anchor link

Повторим: использование шифрования с открытым ключом Anchor link

Если другим людям известен ваш открытый ключ:

Если вы знаете чей-то открытый ключ:

Для правительственных служб стало обыденной практикой получение закрытых ключей определённых людей (путём изъятия компьютеров или установки на них вредоносных программ с использованием физического доступа или фишинговых атак). Это полностью нивелирует все ваши усилия по защите конфиденциальности с помощью шифрования. Это похоже на то, что вы установили на входную дверь замок, который невозможно взломать. Однако на улице ваш ключ выкрали из кармана, скопировали его и незаметно вернули обратно в ваш карман. Таким образом злоумышленники получили возможность проникать в ваш дом, даже не взламывая замок, а вы можете этого и не заметить.


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

Обзор шифрования (криптографии) с открытым ключом и конкретный пример: PGP
. Anchor link

PGP является протоколом, использующим как симметричную криптографию, так и криптографию с открытым ключом (асимметричную). Использование сквозного шифрования, реализованного в PGP, позволит вам подробно изучить методы применения шифрования с открытым ключом.

Чем являются эти ключи? И как они связаны друг с другом? Anchor link



Мы собираемся изучить процесс создания ключей в широко используемом алгоритме шифрования с открытым ключом, который называется RSA (Rivest-Shamir-Adleman). Алгоритм RSA часто используется для создания пар ключей для PGP-шифрования электронной почты.



Открытый и закрытый ключи генерируются одновременно и связываются вместе. Оба ключа основаны на одних и тех же громадных простых числах, держащихся в секрете. Закрытый ключ — это представление двух таких чисел, вычисленное посредством определённого алгоритма. А открытый ключ – это произведение тех же двух чисел, которые использовались для создания закрытого ключа. Что удивительно, так это то, что очень трудно выяснить, какие именно два больших простых числа создали конкретный открытый ключ.


Поиск двух первоначальных простых чисел называется факторизацией; и она является весьма сложной и трудоёмкой задачей для компьютерных систем, чем и пользуются некоторые варианты шифрования с открытым ключом. Современная криптография позволяет использовать случайно выбранные, абсурдно гигантские простые числа, которые трудно угадать как людям, так и компьютерам.

Напоминаем: для использования шифрования с открытым ключом отправителю и получателю необходимы открытые ключи друг друга.

Можно представить себе это иначе: открытый ключ и закрытый ключ связаны друг с другом как символ инь-янь. Они сплетены в единое целое.


Открытым ключом можно как свободно обмениваться, так и искать его. Вы можете разослать его кому угодно. Вы можете разместить открытый ключ в социальных сетях, если вас не смущает публичное оглашение адреса вашей электронной почты. Также вы можете разместить его на своём личном сайте. Вы можете свободно публиковать открытые ключи.

Как работает PGP Anchor link

Если из всего сказанного в данном руководстве нужно было бы выделить что-то одно, то это была бы фраза: храните свой закрытый ключ в надёжном месте и защитите его длинной парольной фразой.

Метаданные
. На что неспособно шифрование с открытым ключом Anchor link

Теперь, когда вы узнали о шифровании с открытым ключом, попробуйте использовать один из инструментов сквозного шифрования, например Signal для iOS или Android.

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

Как Работает Криптография с Открытым Ключом?

Поскольку алгоритмы асимметричного шифрования генерируют пары ключей, которые математически связаны, длина этих ключей намного больше, чем те, которые используются в симметричной криптографии. Эти более длинные - обычно от 1024 до 2048 битов - чрезвычайно затрудняют вычисление закрытого ключа из его открытого аналога. Один из наиболее распространенных алгоритмов асимметричного шифрования, используемый сегодня, известен как RSA. В схеме RSA ключи генерируются с использованием модуля, который получается с помощью умножения двух чисел (часто двух больших простых чисел). В основном, модуль генерирует два ключа (один открытый, который может быть общим, и другой закрытый, который должен храниться в секрете). Алгоритм RSA был впервые описан в 1977 году Ривестом, Шамиром и Адлеманом (следовательно, RSA) и остается основной составляющей криптографических систем с открытым ключом.

PKC как Инструмент Шифрования

Использование Цифровых Подписей

Ограничения

Применение Криптографии с Открытым Ключом

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

PKC также занимает видное место в технологиях блокчейн и криптовалют. При создании нового криптовалютного кошелька, генерируется пара ключей (открытый и закрытый ключ). Публичный адрес генерируется с использованием открытого ключа и может безопасно передаваться другим. C другой стороны используется закрытый ключ для создания цифровых подписей и проверки транзакций, и следовательно должен храниться в секрете. Как только транзакция была подтверждена путем валидации хэша, содержащегося в цифровой подписи, эта транзакция может быть добавлена в блокчейн регистр. Данная система проверки цифровой подписи гарантирует, что только лицо, у которого есть закрытый ключ, связанный с соответствующим криптовалютным кошельком, может выводить из него средства. Следует отметить, что асимметричные шифры, используемые в приложениях криптовалюты, отличаются от тех, которые используются в целях компьютерной безопасности. К примеру Bitcoin и Ethereum, используют специальный шифр, известный как Elliptic Curve Digital Signature Algorithm (Алгоритм Цифровой Подписи Эллиптической Кривой, ECDSA) для проверки транзакций.

От компьютерной безопасности до проверки криптовалютных транзакций, криптография с открытым ключом играет важную роль в защите современных цифровых систем. Используя парные открытые и закрытые ключи, алгоритмы асимметричной криптографии решают фундаментальные проблемы безопасности, представленные симметричными шифрами. Хотя PKC используется уже много лет, для него регулярно разрабатываются новые приложения и применения, особенно в блокчейн и криптовалютах.

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


Понимание основополагающих принципов криптографии с открытым ключом поможет вам в успешном применении данных инструментов. Есть то, на что шифрование с открытым ключом способно, и то, чего оно не может. И важно понять, когда и как, вам, возможно, понадобится его использовать.

Что делает шифрование
? Anchor link

Схема работы шифрования при отправлении тайного послания:

Симметричное шифрование
: история передачи тайного послания с помощью одного ключа Anchor link




Шифр Цезаря является слабой формой симметричного шифрования. Однако со времён Юлия Цезаря шифрование существенно эволюционировало. С помощью математики и компьютеров мы имеем возможность сгенерировать ключ, который будет намного длиннее и который намного сложнее угадать. Существенное развитие симметричного шифрования сказалось и на широком его применении.

Как Сезар и Юлия могут решить эту проблему?


Допустим, Юлия и Сезар узнали о криптографии с открытым ключом. Злоумышленник просто не сможет подслушать или перехватить передачу ключа расшифровывания, потому что Сезару и Юлии не нужно обмениваться ключом расшифровывания. При использовании шифрования с открытым ключом ключи шифрования и расшифровывания - разные.

Шифрование с открытым ключом
: сказание о двух ключах Anchor link

Давайте внимательнее рассмотрим ситуацию. Каким образом отправитель передаст получателю симметричный ключ шифрования , исключая возможность того, что злоумышленник может подслушать и эту беседу тоже? В частности, если отправитель и получатель находятся вдали друг от друга, но хотели бы общаться без посторонних?


Юлия и Сезар не против того, чтобы посредники знали, что они общаются, но хотели бы оставить содержание своего общения в тайне.





Другая проблема: если злоумышленник
захочет выдать себя за вашего собеседника? Anchor link


В нашем примере с Юлией и Сезаром посредники постоянно способны получать метаданные.




К счастью, использование шифрования с открытым ключом способно предотвратить атаку посредника.

Приложения, использующие сквозное шифрование , также могут проверять отпечатки ключей, хотя и существуют некоторые вариации в названиях и способах реализации. В некоторых случаях необходимо очень внимательно прочитать каждый символ отпечатка, убедившись в том, что отпечаток на вашем экране совпадает с тем, что собеседник видит на своём. Другим способом проверки отпечатка является сканирование QR-кода с экрана телефона собеседника для подтверждения ключа его устройства. В приведённом ниже примере Юлия и Сезар могут встретиться лично, чтобы проверить отпечатки ключей своих телефонов, отсканировав QR-коды друг друга.


В данном примере Сезар отправляет отпечаток своего открытого ключа Юлии с помощью смартфона, используя при этом другое приложение со сквозным шифрованием.



Не забудьте подписаться! Anchor link

Повторим: использование шифрования с открытым ключом Anchor link

Если другим людям известен ваш открытый ключ:

Если вы знаете чей-то открытый ключ:

Для правительственных служб стало обыденной практикой получение закрытых ключей определённых людей (путём изъятия компьютеров или установки на них вредоносных программ с использованием физического доступа или фишинговых атак). Это полностью нивелирует все ваши усилия по защите конфиденциальности с помощью шифрования. Это похоже на то, что вы установили на входную дверь замок, который невозможно взломать. Однако на улице ваш ключ выкрали из кармана, скопировали его и незаметно вернули обратно в ваш карман. Таким образом злоумышленники получили возможность проникать в ваш дом, даже не взламывая замок, а вы можете этого и не заметить.


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

Обзор шифрования (криптографии) с открытым ключом и конкретный пример: PGP
. Anchor link

PGP является протоколом, использующим как симметричную криптографию, так и криптографию с открытым ключом (асимметричную). Использование сквозного шифрования, реализованного в PGP, позволит вам подробно изучить методы применения шифрования с открытым ключом.

Чем являются эти ключи? И как они связаны друг с другом? Anchor link



Мы собираемся изучить процесс создания ключей в широко используемом алгоритме шифрования с открытым ключом, который называется RSA (Rivest-Shamir-Adleman). Алгоритм RSA часто используется для создания пар ключей для PGP-шифрования электронной почты.



Открытый и закрытый ключи генерируются одновременно и связываются вместе. Оба ключа основаны на одних и тех же громадных простых числах, держащихся в секрете. Закрытый ключ — это представление двух таких чисел, вычисленное посредством определённого алгоритма. А открытый ключ – это произведение тех же двух чисел, которые использовались для создания закрытого ключа. Что удивительно, так это то, что очень трудно выяснить, какие именно два больших простых числа создали конкретный открытый ключ.


Поиск двух первоначальных простых чисел называется факторизацией; и она является весьма сложной и трудоёмкой задачей для компьютерных систем, чем и пользуются некоторые варианты шифрования с открытым ключом. Современная криптография позволяет использовать случайно выбранные, абсурдно гигантские простые числа, которые трудно угадать как людям, так и компьютерам.

Напоминаем: для использования шифрования с открытым ключом отправителю и получателю необходимы открытые ключи друг друга.

Можно представить себе это иначе: открытый ключ и закрытый ключ связаны друг с другом как символ инь-янь. Они сплетены в единое целое.


Открытым ключом можно как свободно обмениваться, так и искать его. Вы можете разослать его кому угодно. Вы можете разместить открытый ключ в социальных сетях, если вас не смущает публичное оглашение адреса вашей электронной почты. Также вы можете разместить его на своём личном сайте. Вы можете свободно публиковать открытые ключи.

Как работает PGP Anchor link

Если из всего сказанного в данном руководстве нужно было бы выделить что-то одно, то это была бы фраза: храните свой закрытый ключ в надёжном месте и защитите его длинной парольной фразой.

Метаданные
. На что неспособно шифрование с открытым ключом Anchor link

Теперь, когда вы узнали о шифровании с открытым ключом, попробуйте использовать один из инструментов сквозного шифрования, например Signal для iOS или Android.

Читайте также: