Форум программистов, компьютерный форум, киберфорум
Криптография
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9

RSA шифрование. Как правильно?

28.06.2015, 20:27. Показов 2885. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Сначала немного о грустном (можно не читать).
Кликните здесь для просмотра всего текста
Как-то было у меня такое задание:

Было перехвачено зашифрованное сообщение. По данным разведки в нем содержится два слова: пароль и отзыв на русском языке для доступа на секретный объект. Также из открытых источников было установлено, что для шифрования использовался алгоритм RSA с открытым ключом (e, n).
Из других источников стало известно о наличии уязвимости в генераторе случайных простых чисел, используемом в момент создания криптосистемы. А именно, из-за ошибки в ПО генератора при задании параметров шифра были выбраны не слишком далекие друг от друга простые числа.
Используя эту информацию, необходимо взломать криптографическую систему RSA, найти секретный ключ и расшифровать сообщение.
Публичный ключ и зашифрованное сообщение:
(e, n) = (7, 1384229008335999500787886773947516718775 458375276829134498757)

1736164314502319024768, 1781594144997124173696, 1637563138325435542097, 1804688569158695124992, 1626909883459371532288, 34359738368, 1828039120816690000000, 1680776328907480889853, 1816331681783800622529, 1626909883459371532288, 1736164314502319024768
В задании, видимо, предлагалось найти числа p и q, которые дадут нам такой публичный ключ. И найдя эти числа, можно было бы получить приватный ключ и расшифровать сообщение.

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

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

А сделал я намного проще. В перехваченном сообщении длина шифруемого блока равнялась 2 байтам (один символ в юникоде). Зная публичный ключ, почему бы не зашифровать им все доступные комбинации (а их всего 2^16=65535) и потом, сравнивать уже зашифрованные блоки?

Таким образом сообщение было расшифровано: "кобра тесак".

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


Допустим есть ключ длиной 256 бит. Какой максимальной длинны можно зашифровать сообщение этим ключом? Сколько байт рекомендуется отводить для случайных чисел? (Например, есть сообщение "hello\0" длиной 6 байт, остальное будет занимать случайные числа?)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.06.2015, 20:27
Ответы с готовыми решениями:

XOR шифрование. Как правильно?
Недавно прочитал одну статью (Тривиальное шифрование во вредоносных файлах / Блог компании «Лаборатория Касперского» / Хабрахабр), где...

Шифрование RSA. Зашифровать ФИО этим методом (Звонов Сергей Александрович)
Помогите пожалуйста написать хотя бы листинг программы! блок-схему и принт - скрины попробую найти сам.

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

4
653 / 161 / 64
Регистрация: 08.04.2015
Сообщений: 412
29.06.2015, 05:28
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
Нет, я сначала попытался взломать сообщение по предложенному алгоритму, и даже сделал программу многопоточной чтобы быстрее вёлся перебор. Но спустя пару часов ожидания мне это надоело.
А готовую тулзу взять? MSIEVE всего-то 20 секунд понадобилось, чтобы это число факторизовать.

Цитата Сообщение от Рыжий Лис Посмотреть сообщение
А сделал я намного проще. В перехваченном сообщении длина шифруемого блока равнялась 2 байтам (один символ в юникоде). Зная публичный ключ, почему бы не зашифровать им все доступные комбинации (а их всего 2^16=65535) и потом, сравнивать уже зашифрованные блоки?
А почему бы просто не извлечь корень 7-ой степени из каждого числа? Очевидно, что остаток от деления не требуется.
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
29.06.2015, 08:24  [ТС]
Вопрос другой. Как правильно зашифровать сообщение.

Допустим есть ключ длиной 256 бит и сообщение длиной несколько КБ. На блоки какого размера разбивать данное сообщение?
0
653 / 161 / 64
Регистрация: 08.04.2015
Сообщений: 412
29.06.2015, 16:47
Сообщения - это числа от 0 до n-1. Исходя из этого и разбивать. При длинном ключе шифровать короткие блоки неэффективно + криптостойкость падает, сами же пример привели.
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
29.06.2015, 18:32  [ТС]
Если уж цитировать википедию:
Данная схема на практике не используется по причине того, что она не является практически надежной (semantically secured). Действительно, односторонняя функция E(m) является детерминированной — при одних и тех же значениях входных параметров (ключа и сообщения) выдает одинаковый результат —, а это значит, что не выполняется необходимое условие практической (семантической) надежности шифра.
Возьмём, кусочек из готовой библиотеки:
Python
1
2
    key_bytes = common.bit_size(pub_key.n) // 8
    blocksize = key_bytes - 11 # keep space for PKCS#1 padding
Размер блока вычисляется как длина ключа в байтах минус 11. А эти 11 байт заполняются случайными данными.

Возможно в RFC 3447 есть ответ на интересующий меня вопрос.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.06.2015, 18:32
Помогаю со студенческими работами здесь

Не понимаю, как работает RSA
Здравствуйте. Такая проблема. Я знаю математический принцип, как работает RSA. Отрытым ключом являются одно число e , а также n. Однако,...

Как написать шифрование RSA на python без import RSA
Нужнен код без использование RSA библиотеки. Буду блогодарен!

Как поменять результат шифрование \ Метод шифрование RSA
Здравствуйте! Прошу помощи! В просторах интернета нашла одну статью в которой реализован метод шифрования RSA. Решила его опробовать, но...

RSA-шифрование. Зависает при больших числах P и Q. Как исправить?
Есть программа на C#, которая шифрует текст методом RSA. Но преподаватель требует в качестве P и Q использовать числа в несколько...

Как в php правильно считывать rsa/pem файлы?
Добрый день, Следуя данной инструкции php.net/manual/ru/function.openssl-pkcs12-read.php , создал файл egov/exapmle.pem с таким...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru