Файл rsa чем открыть

Расширение файла RSA

Оглавление

Мы надеемся, что вы найдете на этой странице полезный и ценный ресурс!

1 расширений и 0 псевдонимы, найденных в базе данных

✅ PKCS7 RSA Signature

Другие типы файлов могут также использовать расширение файла .rsa.

По данным Поиск на нашем сайте эти опечатки были наиболее распространенными в прошлом году:

Это возможно, что расширение имени файла указано неправильно?

Мы нашли следующие аналогичные расширений файлов в нашей базе данных:

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

Windows не удается открыть этот файл:

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

Если вы не знаете как настроить сопоставления файлов .rsa, проверьте FAQ.

🔴 Можно ли изменить расширение файлов?

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

Если у вас есть полезная информация о расширение файла .rsa, напишите нам!

Источник

Русские Блоги

Асимметричное шифрование / дешифрование / подпись RSA

Для алгоритмов асимметричного шифрования требуются два ключа: открытый ключ (открытый ключ) и закрытый ключ (закрытый ключ).
Открытый ключ и закрытый ключ представляют собой пару. Если данные подписаны закрытым ключом, только соответствующий открытый ключ может использоваться для проверки подписи; если данные подписаны открытый ключ Шифрование можно расшифровать только с помощью соответствующего закрытого ключа.

Как сгенерировать открытый и закрытый ключи?

Сгенерируйте открытый и закрытый ключи RSA с помощью инструмента openssl (инструмент opnssl можно скачать в Интернете)

Сгенерировать закрытый ключ:
Сгенерировать открытый ключ:

ДЕЙСТВИЕ, если вы не хотите загружать, потому что openssl слишком велик

Мы также можем использовать собственные модули Python для генерации открытых и закрытых ключей не только из-за его мощных функций. Те, которые используются в проекте, обычно генерируются openssl, который не зависит от определенного языка.

Используйте криптографию в Python для генерации открытых и закрытых ключей:

Если вам нужно сохранить, вы можете использовать операции с файлом python:

Запуск операций шифрования и подписи данных

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

Источник

Русские Блоги

Подробное объяснение процесса подписи механизма подписи Android (1)

Перепечатано с: http://blog.csdn.net/jiangwei0910410003/article/details/50402000

Введение

Прежде чем говорить о сигнатурах Android, мы должны знать несколько моментов знания

1. Сводка данных (данные отпечатков пальцев), файл подписи, файл сертификата

2. Подпись инструмента Jarsign и подпись инструмента signapk

3. Связь между файлом хранилища ключей, файлом pk8 и файлом x509.pem

4. Как вручную подписать апк

Четыре пункта знаний, представленные выше, являются основой сегодняшнего введения. Давайте посмотрим на эти вопросы по очереди.

Во-вторых, подготовить знания

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

1. Сводка данных

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

2. Файлы подписи и сертификаты

Файл подписи и сертификат появляются попарно. Они неразделимы, и из исходного кода мы увидим позже, что два файла имеют одно и то же имя, но суффиксное имя отличается.

Файл rsa чем открыть. Смотреть фото Файл rsa чем открыть. Смотреть картинку Файл rsa чем открыть. Картинка про Файл rsa чем открыть. Фото Файл rsa чем открыть

3. инструменты jarsign и signapk

После изучения пунктов знаний о трех файлах в подписи, давайте продолжим рассмотрение двух инструментов для подписи в Android: jarsign и signapk

Вначале легко спутать эти два инструмента, как вы думаете, есть ли разница между ними?

4. Разница между файлом хранилища ключей и файлом pk8, x509.pem

Выше мы узнали, что как jarsign, так и signapk могут использоваться для входа в Android, тогда разница между ними заключается в том, что файлы, используемые при подписании, различаются.

Файл ключей используется, когда инструмент jarsign подписывает

Инструмент Signapk использует файл pk8, x509.pem при подписании

Среди них, когда мы используем инструмент Eclipse для написания программы, когда пакет Debug отсутствует, инструмент jarsign по умолчанию используется для подписи, а в Eclipse есть файл подписи по умолчанию:

Файл rsa чем открыть. Смотреть фото Файл rsa чем открыть. Смотреть картинку Файл rsa чем открыть. Картинка про Файл rsa чем открыть. Фото Файл rsa чем открыть

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

Есть также пункт знания:

Мы видим сводку MD5 и SHA1 выше. Это сводка данных закрытого ключа в файле хранилища ключей. Эта информация также является информацией, которую нам необходимо заполнить при подаче заявки на многие учетные записи платформы разработки.Например, при подаче заявки на карту Baidu, WeChat SDK и т. Д. Вам нужно будет заполнить данные приложения MD5 или SHA1.

5. Вручную подписать пакет Apk

1 «Используйте Keytool и Jarsigner для подписи

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

Файл rsa чем открыть. Смотреть фото Файл rsa чем открыть. Смотреть картинку Файл rsa чем открыть. Картинка про Файл rsa чем открыть. Фото Файл rsa чем открыть

Файл rsa чем открыть. Смотреть фото Файл rsa чем открыть. Смотреть картинку Файл rsa чем открыть. Картинка про Файл rsa чем открыть. Фото Файл rsa чем открыть

Здесь мы можем присвоить собственное имя файлу хранилища ключей, а имя суффикса не имеет значения. После создания файла будут также сгенерированы значения MD5 и SHA1, которые можно не указывать, а значения MD5 и SHA1 файла хранилища ключей можно проверить с помощью команды.

Файл rsa чем открыть. Смотреть фото Файл rsa чем открыть. Смотреть картинку Файл rsa чем открыть. Картинка про Файл rsa чем открыть. Фото Файл rsa чем открыть

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

Здесь мы видим, что Eclipse автоматически подписывает и генерирует файл хранилища ключей, и мы также можем использовать инструмент keytool для генерации файла хранилища ключей. Этот метод доступен онлайн, поэтому я не буду здесь подробно рассказывать. Тогда мы можем использовать jarsign, чтобы подписать пакет apk.

Мы можем вручную создать файл хранилища ключей:

Файл rsa чем открыть. Смотреть фото Файл rsa чем открыть. Смотреть картинку Файл rsa чем открыть. Картинка про Файл rsa чем открыть. Фото Файл rsa чем открыть

Эта команда немного длинная, и есть несколько важных параметров, которые необходимо объяснить:

-alias для определения псевдонима, здесь отладка

Войдите с помощью инструмента jarsigner

Файл rsa чем открыть. Смотреть фото Файл rsa чем открыть. Смотреть картинку Файл rsa чем открыть. Картинка про Файл rsa чем открыть. Фото Файл rsa чем открыть

Таким образом, мы успешно подписали апк.

Проблемы, возникающие в процессе подписания:

1. Проблема в том, что цепочка сертификатов не может быть найдена.

Файл rsa чем открыть. Смотреть фото Файл rsa чем открыть. Смотреть картинку Файл rsa чем открыть. Картинка про Файл rsa чем открыть. Фото Файл rsa чем открыть

Это потому, что последний псевдоним параметра является неправильным псевдонимом хранилища ключей.

2. Ошибка запроса пароля при создании файла хранилища ключей.

Файл rsa чем открыть. Смотреть фото Файл rsa чем открыть. Смотреть картинку Файл rsa чем открыть. Картинка про Файл rsa чем открыть. Фото Файл rsa чем открыть

Причина в том, что в текущем каталоге уже есть debug.ketystore. Если генерируется debug.keystore, будет сообщено об ошибке

3 not Проблема не найти псевдоним

Файл rsa чем открыть. Смотреть фото Файл rsa чем открыть. Смотреть картинку Файл rsa чем открыть. Картинка про Файл rsa чем открыть. Фото Файл rsa чем открыть

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

Примечание: Android позволяет нескольким хранилищам ключей подписывать apkЯ не буду вставлять команду здесь, я создал несколько хранилищ ключей, чтобы подписать АПК:

Файл rsa чем открыть. Смотреть фото Файл rsa чем открыть. Смотреть картинку Файл rsa чем открыть. Картинка про Файл rsa чем открыть. Фото Файл rsa чем открыть

Здесь я также могу заметить, что мы использовали алгоритм DSA при подписании, суффикс имени файла здесь DSA

И имя файла является псевдонимом хранилища ключей

Эй, здесь ясно, как мы используем keytool для генерации хранилища ключей и jarsigner для подписи.

2》 Используйте Signapk для подписи

Давайте посмотрим на инструмент signapk для подписи:

Если вы подпишетесь здесь, вы не будете в демоверсии, здесь нет проблем.

Но вот что требует внимания:Имена трех файлов в папке META-INF в apk после подписи signapk похожи на это, потому что signapk не похож на jarsigner, который будет автоматически использовать псевдоним для имени файла в начале, вот имя CERT, которое записано мертвым. Однако имя файла не влияет. Позже, во время анализа процесса проверки Apk в Android, будет сказано, что файл будет найден только по имени суффикса.

Файл rsa чем открыть. Смотреть фото Файл rsa чем открыть. Смотреть картинку Файл rsa чем открыть. Картинка про Файл rsa чем открыть. Фото Файл rsa чем открыть

3》 В чем разница между двумя методами подписи

Файл rsa чем открыть. Смотреть фото Файл rsa чем открыть. Смотреть картинку Файл rsa чем открыть. Картинка про Файл rsa чем открыть. Фото Файл rsa чем открыть

Итак, здесь мы выяснили разницу и связь между этими двумя инструментами подписи.

В-третьих, проанализируйте механизм процесса подписи в Android

Ниже мы начнем смотреть на механизм подписи и принцип потока в Android с точки зрения исходного кода

Поскольку исходный код jarsigner не найден в сети, но найден исходный код signapk, давайте посмотрим на исходный код signapk:

Местоположение источника:com/android/signapk/sign.java

Посредством вышеуказанной подписи мы видим, что после apk подписи Android будет папка META-INF, в которой будут три файла:

MANIFEST.MF

CERT.RSA

CERT.SF

Давайте посмотрим, для чего нужны эти три файла?

1、MANIFEST.MF

Файл rsa чем открыть. Смотреть фото Файл rsa чем открыть. Смотреть картинку Файл rsa чем открыть. Картинка про Файл rsa чем открыть. Фото Файл rsa чем открыть

Давайте посмотрим на исходный код:

В основной функции мы видим, что нам нужно ввести четыре параметра, а затем мы делаем три вещи:

Посмотрите на метод ввода:

Логика кода все еще очень проста, в основном зависит от смысла цикла:

В дополнение к трем файлам (MANIFEST.MF, CERT.RSA, CERT.SF) другие файлы будут выполнять алгоритм SHA1 для содержимого файла, то есть вычислять сводную информацию о файле, а затем использовать Base64 для кодирования, мы используем инструмент ниже Давайте рассмотрим случай, если это так:

Сначала установите инструмент: HashTab

Тогда есть еще один сайт, который рассчитывает Base64 онлайн:http://tomeko.net/online_tools/hex_to_base64.php?lang=en

Тогда давайте начнем нашу работу по проверке:

Давайте проверим файл AndroidManifest.xml, сначала найдем эту запись в файле MANIFEST.MF и запишем значение SHA1.

Файл rsa чем открыть. Смотреть фото Файл rsa чем открыть. Смотреть картинку Файл rsa чем открыть. Картинка про Файл rsa чем открыть. Фото Файл rsa чем открыть

Затем после установки HashTab найдите файл AndroidManifest.xml, щелкните правой кнопкой мыши и выберите «Hashtab»:

Файл rsa чем открыть. Смотреть фото Файл rsa чем открыть. Смотреть картинку Файл rsa чем открыть. Картинка про Файл rsa чем открыть. Фото Файл rsa чем открыть

Скопируйте значение SHA-1: 9C64812DE7373B201C294101473636A3697FD73C, перейдите на приведенный выше веб-сайт преобразования Base64 и выполните преобразование:

Файл rsa чем открыть. Смотреть фото Файл rsa чем открыть. Смотреть картинку Файл rsa чем открыть. Картинка про Файл rsa чем открыть. Фото Файл rsa чем открыть

Это точно так же, как содержание записи в MANIFEST.MF

Тогда мы знаем из вышеприведенного анализа, что в действительности хранится в MANIFEST.MF:

Перебирайте все записи в нем одну за другой. Если это каталог, пропустите его. Если это файл, используйте алгоритм дайджеста сообщения SHA1 (или SHA256), чтобы извлечь дайджест файла, а затем закодируйте его как значение атрибута «SHA1-Digest» BASE64. Запись в блок в файле MANIFEST.MF. Блок имеет атрибут «Имя», значением которого является путь к файлу в пакете apk.

Примечание. Для лучшего понимания здесь используется шестнадцатеричное представление sha-1 файла AndroidManifest.xml, 9C64812DE7373B201C294101473636A3697FD73C;

Файл rsa чем открыть. Смотреть фото Файл rsa чем открыть. Смотреть картинку Файл rsa чем открыть. Картинка про Файл rsa чем открыть. Фото Файл rsa чем открыть

Возьмите SHA1-дайджест в файле MANIFEST.MF и извлеките nGSBLec3OyAcKUEBRzY2o2l / 1zw =, который является представлением SHA-1 Base64, соответствующим AndroidManifest.xml, и преобразуйте его в шестнадцатеричное 9C64812DE7373B201C294101473636A36973697.

2. Давайте посмотрим на содержимое файла CERT.SF

Файл rsa чем открыть. Смотреть фото Файл rsa чем открыть. Смотреть картинку Файл rsa чем открыть. Картинка про Файл rsa чем открыть. Фото Файл rsa чем открыть

Содержимое здесь аналогично содержимому MANIFEST.MF, давайте посмотрим на код:

Введите метод writeSignatureFile:

Прежде всего, мы видим, что нам нужно создать SHA1 для всего содержимого предыдущего файла MANIFEST.MF и поместить его в поле SHA1-Digest-Manifest:

Файл rsa чем открыть. Смотреть фото Файл rsa чем открыть. Смотреть картинку Файл rsa чем открыть. Картинка про Файл rsa чем открыть. Фото Файл rsa чем открыть

Давайте посмотрим на переменную manifest, которая была только что записана в файл MANIFEST.MF.

Файл rsa чем открыть. Смотреть фото Файл rsa чем открыть. Смотреть картинку Файл rsa чем открыть. Картинка про Файл rsa чем открыть. Фото Файл rsa чем открыть
Мы можем проверить это:

Файл rsa чем открыть. Смотреть фото Файл rsa чем открыть. Смотреть картинку Файл rsa чем открыть. Картинка про Файл rsa чем открыть. Фото Файл rsa чем открыть

Файл rsa чем открыть. Смотреть фото Файл rsa чем открыть. Смотреть картинку Файл rsa чем открыть. Картинка про Файл rsa чем открыть. Фото Файл rsa чем открыть

Видите, это так же, как значение в файле

Файл rsa чем открыть. Смотреть фото Файл rsa чем открыть. Смотреть картинку Файл rsa чем открыть. Картинка про Файл rsa чем открыть. Фото Файл rsa чем открыть

Ниже мы продолжаем смотреть на код, есть цикл:

Здесь мы по-прежнему используем только что переданную переменную mainfest, просматриваем содержимое его записи и затем вычисляем алгоритм SHA в Base64:

Фактически, это сделать SHA для каждой записи в файле MANIFEST.MF, просто сохраните ее и проверьте это на примере:

Используя в качестве примера AndroidManifest.xml, мы копируем и сохраняем записи в файле MANIFEST.MF в текстовый файл:

Файл rsa чем открыть. Смотреть фото Файл rsa чем открыть. Смотреть картинку Файл rsa чем открыть. Картинка про Файл rsa чем открыть. Фото Файл rsa чем открыть
Здесь следует отметить, что после сохранения нам нужно добавить две новые строки, мы можем увидеть логику в коде:

Файл rsa чем открыть. Смотреть фото Файл rsa чем открыть. Смотреть картинку Файл rsa чем открыть. Картинка про Файл rsa чем открыть. Фото Файл rsa чем открыть

Затем мы вычисляем значение SHA документа txt:

Файл rsa чем открыть. Смотреть фото Файл rsa чем открыть. Смотреть картинку Файл rsa чем открыть. Картинка про Файл rsa чем открыть. Фото Файл rsa чем открытьФайл rsa чем открыть. Смотреть фото Файл rsa чем открыть. Смотреть картинку Файл rsa чем открыть. Картинка про Файл rsa чем открыть. Фото Файл rsa чем открыть

Видите, значения, рассчитанные здесь, одинаковы

Файл rsa чем открыть. Смотреть фото Файл rsa чем открыть. Смотреть картинку Файл rsa чем открыть. Картинка про Файл rsa чем открыть. Фото Файл rsa чем открыть

Здесь мы знаем, что делает файл CERT.SF:

1 «Рассчитайте общее значение SHA1 этого файла MANIFEST.MF и после кодирования BASE64 запишите его в значение атрибута» SHA1-Digest-Manifest «основного блока атрибута (в заголовке файла) файла CERT.SF.

3. Наконец, мы смотрим на файл CERT.RSA

Файл rsa чем открыть. Смотреть фото Файл rsa чем открыть. Смотреть картинку Файл rsa чем открыть. Картинка про Файл rsa чем открыть. Фото Файл rsa чем открыть

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

Файл rsa чем открыть. Смотреть фото Файл rsa чем открыть. Смотреть картинку Файл rsa чем открыть. Картинка про Файл rsa чем открыть. Фото Файл rsa чем открыть

Для этой информации вы можете увидеть следующую картину:

Файл rsa чем открыть. Смотреть фото Файл rsa чем открыть. Смотреть картинку Файл rsa чем открыть. Картинка про Файл rsa чем открыть. Фото Файл rsa чем открыть

Давайте посмотрим на код:

Этот файл содержит подпись и сертификат открытого ключа. При создании подписи должен участвовать частный ключ. Сводка информации, используемой в подписи, является содержимым CERT.SF.
Данные подписи будут использоваться в качестве сводки подписи. Функция writeSignatureBlock использует privateKey для шифрования подписи, чтобы сгенерировать подпись, а затем сохранить подпись и сертификат открытого ключа вместе в CERT.RSA.
Последняя подпись, хранящаяся в CERT.RSA, является цифровой подписью CERT.SF. Сигнатура генерируется с использованием privateKey, а алгоритм подписи определяется в publicKey. В то же время publicKey также будет храниться в CERT.RSA, что означает, что CERT.RSA содержит подпись и сертификат, используемый для подписи. И требуют, чтобы этот сертификат был самоподписанным.

4. Почему вы подписываете так?

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

Прежде всего, если вы изменяете какой-либо файл в пакете apk, сводная информация об измененном файле отличается от информации о проверке MANIFEST.MF во время проверки установки apk, поэтому проверка не проходит и программа не может быть успешно установлена.
Во-вторых, если вы вычислите новое итоговое значение для измененного файла, а затем измените соответствующее значение атрибута в файле MANIFEST.MF, то оно должно быть рассчитано в файле CERT.SF. Суммарное значение отличается, и проверка все еще не проходит.
Наконец, если вы все еще не сдаваетесь, продолжите вычислять итоговое значение MANIFEST.MF и соответственно измените значение в CERT.SF, тогда значение цифровой подписи должно быть таким же, как записано в файле CERT.RSA. Не то же самое, все равно не получается.
Итак, можем ли мы продолжать подделывать цифровую подпись? Невозможно, потому что нет личного ключа, соответствующего цифровому сертификату.
Следовательно, если переупаковываемое приложение может быть установлено на устройстве Android, оно должно быть отклонено.

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

V. Знание точек сортировки

1. Значение данных отпечатка пальца, файла подписи и файла сертификата

1》 Отпечаток данных должен сделать алгоритм SHA / MD5 на источнике данных, это значение является уникальным

2 file Технология файлов сигнатур: отпечаток данных + алгоритм RSA

3. Файл сертификата содержит информацию об открытом ключе и другую информацию.

2. Мы понимаем, что есть два способа входа в Android: jarsigner и signapk. Разница между этими двумя способами заключается в следующем:

2 «Имена файлов SF и RSA после подписи jarsigner по умолчанию являются псевдонимом хранилища ключей, а имя файла после подписи signapk является фиксированным: CERT

3. Когда мы запускаем программу Debug в Eclipse, по умолчанию используется jarsigner для подписи, а также используется файл подписи debug.keystore по умолчанию.

4. Файлы хранилища ключей и файлы pk8, x509.pem можно конвертировать между собой.

Источник

Иллюстрация работы RSA на примере

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

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

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

Шаг первый. Подготовка ключей

Я должен проделать предварительные действия: сгенерировать публичный и приватный ключ.

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

Шаг второй. Шифрование

Строго говоря, вам вовсе незачем вычислять огромное число «19 в степени 5». При каждом умножении достаточно вычислять не полное произведение, а только остаток от деления на 21. Но это уже детали реализации вычислений, давайте не будем в них углубляться.

Шаг третий. Расшифровка

Я получил ваши данные ( E=10 ), и у меня имеется закрытый ключ = <17, 21>.

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

Заметьте, никто, кроме меня (даже вы!) не может расшифровать ваше сообщение ( E=10 ), так как ни у кого нет закрытого ключа.

В чём гарантия надёжности шифрования

Постараюсь это показать на примере. Давайте разложим на множители число 360:

Мы на каждом шагу, практически без перебора, получали всё новые и новые множители, легко получив полное разложение 360=2×2×2×3×3×5

Давайте теперь возьмём число 361. Тут нам придётся помучиться.

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

А как это всё работает на практике?

Многие читатели спрашивают, как всё это применяется на практике. Давайте рассмотрим чуть более приближенный к жизни пример. Зашифруем и расшифруем слово «КРОТ», предложенное одним из читателей. А заодно, бегло рассмотрим, какие проблемы при этом встречаются и как они решаются.

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

Оттолкнёмся от пары простых чисел= <17, 19>. Пусть наш открытый ключ будет = <5, 323>, а закрытый = <173, 323>.

Мы готовы к шифрованию. Переведём наше слово в цифровое представление. Мы можем взять просто номера букв в алфавите. У нас получится последовательность чисел: 11, 17, 15, 19.

Мы можем зашифровать каждое из этих чисел открытым ключом = <5, 323>и получить шифровку 197, 272, 2, 304. Эти числа можно передать получателю, обладающему закрытым ключом = <173, 323>и он всё расшифрует.

Немного о сложностях

На самом деле, изложенный способ шифрования очень слаб и никогда не используется. Причина проста — шифрование по буквам. Одна и та же буква будет шифроваться одним и тем же числом. Если злоумышленник перехватит достаточно большое сообщение, он сможет догадаться о его содержимом. Сперва он обратит внимание на частые коды пробелов и разделит шифровку на слова. Потом он заметит однобуквенные слова и догадается, как кодируются буквы «a», «и», «o», «в», «к»… Путём недолгого перебора, он вычислит дополнительные буквы по коротким словам, типа «но», «не», «по». И по более длинным словам без труда восстановит все оставшиеся буквы.

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

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

Последовательность (11, 28, 43, 62) получается «запутанной». Все буквы в ней как бы перемешаны, в том смысле, что на каждый код влияет не одна буква, а все предыдущие.

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

То есть мы можем добавить случайное число в начало и получить (299, 11, 17, 15, 19). После перемешивания получится: 299, 310, 4, 19, 38. После шифрования уже невозможно будет догадаться где была какая буква.

В реальной жизни всё ещё немного сложнее. Блоки, на которые бьётся сообщение длиннее одной буквы. Поэтому, сперва применяются алгоритмы выравнивания, потом алгоритмы разбиения на блоки с перепутыванием, и только потом применяется само RSA-шифрование.

Получатель делает всё в обратном порядке: расшифровывает, «распутывает» блоки и отбрасывает ненужную информацию, добавленную просто для выравнивания (чтобы сообщение можно было разбить на целое число блоков).

Детали и принципы формирования блоков можно почитать тут. Я же в этой заметке хотел рассказать только про RSA. Надесь, удалось.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *