Стойкость RAS-шифрования

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

Стойкость RAS-шифрования

Сообщение shyub » 08.05.2016 18:11:47

В криптографии существует понятие "Стойкость шифра" - экономические и временные затраты на расшифровку перехваченного сообщения (разумеется, без ключа). Стойкость RAS-ключа длиной 1024 бита оценивается в 1 млн. $США и временными затратами в 1 год. В сети нашёл библиотеку, позволяющую без особых сложностей на Лазарусе осуществлять шифрование (расшифрование) и генерировать ключи любой длины:
Код: Выделить всё
http://www.submanifold.be/triade/GInt/gint.html
. Написал небольшой тестовый пример и некоторые вещи вызывают у меня подозрение в заявленной стойкости данного метода. Дело в том, что при шифровании одного и того же сообщения получается один и тот же код. Т.е. в отличии от других методов ключ в процессе работы себя не модернизирует. Следовательно при перехвате нескольких последовательно переданных сообщений и, особенно, если они относительно большого размера и в них есть какая-то закономерность (заголовок, дата, должность и т.п.), то у заинтересованной стороны возрастают шансы прочитать сообщение. Для этого абсолютно не требуется "взламывать ключ". Выполняется статистический анализ повторяемости знаков (для каждого разговорного языка есть такая статистика).
Хотелось бы услышать мнение форумчан: на сколько можно доверять RAS-шифрованию и обеспечит ли оно защиту коммерческих интересов компании?
shyub
постоялец
 
Сообщения: 112
Зарегистрирован: 25.11.2014 23:15:19

Re: Стойкость RAS-шифрования

Сообщение Снег Север » 08.05.2016 20:58:13

shyub писал(а):Выполняется статистический анализ повторяемости знаков
Для RAS это вам ничего не даст - из-за сложности вычисления обратной функции для преобразования исходных байтов.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 3038
Зарегистрирован: 27.11.2007 16:14:47

Re: Стойкость RAS-шифрования

Сообщение shyub » 08.05.2016 23:50:58

Снег Север, спасибо за ответ!
Меня смущает тот факт, что процедура RSAEncrypt(Открый_текст, Открытый_ключ, Модуль, Буффер_для_зашифрованного_текста); для шифрования сообщений на протяжении какого-то времени использует одни и те же ключевые данные. Если бы для каждого сообщения они обновлялись, то - всё нормально. На сколько я знаком с другими методами, то там либо для каждого сообщения вырабатывается свой ключ, либо в процессе шифрования модернизируется сам ключ и для очередного сообщения он уже другоё, чем был для предыдущего. Собственно это и вызывает недоверие...
shyub
постоялец
 
Сообщения: 112
Зарегистрирован: 25.11.2014 23:15:19

Re: Стойкость RAS-шифрования

Сообщение Снег Север » 09.05.2016 07:34:16

В этом методе шифрования с одним и тем же ключом один и тот же байт исходного сообщения будет преобразован в разные байты зашифрованного, для разных сообщений.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 3038
Зарегистрирован: 27.11.2007 16:14:47

Re: Стойкость RAS-шифрования

Сообщение kazalex » 09.05.2016 11:54:35

kazalex
постоялец
 
Сообщения: 296
Зарегистрирован: 01.06.2012 14:54:10

Re: Стойкость RAS-шифрования

Сообщение resident » 09.05.2016 13:01:20

shyub
Провокатор? :)
Пару дней назад писали открыто данные в файл. Я намекнул про шифрование.
viewtopic.php?f=13&t=11094
Теперь видите ли публичный ключ чего-то там не обеспечивает.

shyub писал(а):для шифрования сообщений на протяжении какого-то времени использует одни и те же ключевые данные

В моем сообщении там вы увидели только половину.

shyub писал(а):на сколько можно доверять RAS-шифрованию

Абсолютно в вашем случае при 1024, ИМХО.

shyub писал(а):обеспечит ли оно защиту коммерческих интересов компании?

shyub писал(а):т.е. какой-нибудь “доброжелатель” может подойти

У вас компьютеры для сбора данных голой жопой выставлены на проходной двор, а вы о какой-то защите в общем говорите.
resident
энтузиаст
 
Сообщения: 605
Зарегистрирован: 13.03.2013 16:58:51

Re: Стойкость RAS-шифрования

Сообщение shyub » 09.05.2016 20:47:01

Абсолютно в вашем случае при 1024

А какая часть ключа должна быть 1024 бита?
Например: формирую 8 случайных 64-х битовых чисел с учётом рекомендаций https://exelab.ru/art/?action=view&id=136, преобразовываю их при помощи FGIntRandom1() в 8 случайных 96 битовых числа. Из 4-х чисел получаю случайное простое p и аналогично q, которые имеют разрядность по 384 бита. Далее получаю n (1568 бит), открытый ключ e (192 бита) и закрытый ключ d (1568 бита).
Так какая часть ключа должна быть 1024 бита?
shyub
постоялец
 
Сообщения: 112
Зарегистрирован: 25.11.2014 23:15:19

Re: Стойкость RAS-шифрования

Сообщение resident » 10.05.2016 00:45:29

Черт его знает, сколько там на самом деле бит, я доверился автору библиотеки, пишет что 1024, значит так и должно быть. Ключи генерируются 15 секунд.
Использовал библиотеку Fundamentals Code Library. Устанавливать ничего не надо, работает сама по себе.
Там есть примеры (внизу модулей) и даже несколько реализаций RSA.

Нужна ли вам эта паранойя с отрытым ключом? Когда я доделал, то понял, что больше никогда. Мало кому известное, мало кем тестированное и как оно себя покажет через месяц или в следующих версиях Лазаруса? У вас вот уже сейчас строки получаются одинаковые. А захотите сменить язык, и ничего не выйдет. Уже гвоздями прибиты к этим библиотекам. Верный вариант - OpenSSL, но его я запустить не смог.

А BlowFish и Base64 уже встроены в Лазарус. От любопытных хватило бы и их. В качестве пароля, например, сегодняшняя дата, если у вас посуточная выгрузка - каждый день новый пароль :) Да и то это никому не надо, я бы сделал постоянный пароль. И не надо мучиться, все решение в одну строчку.
resident
энтузиаст
 
Сообщения: 605
Зарегистрирован: 13.03.2013 16:58:51

Re: Стойкость RAS-шифрования

Сообщение shyub » 10.05.2016 08:53:02

Скачал Fundamentals Code Library https://sourceforge.net/projects/fundementals/files/Fundamentals4/, буду разбираться. Однако во всём русскоязычном сообществе нашёл только 2 упоминания о этой библиотеке: ваше http://freepascal.ru/forum/viewtopic.php?f=1&t=10434&p=87402&hilit=Fundamentals+Code+Library#p87402 и http://forum.ru-board.com/topic.cgi?forum=33&topic=10740&start=260 , где некий Anjin_Kazawa пишет:"Fundamentals Code Library Из того что проверил, генератор примитивов для RSA глючный, в итоге расшифровать, то что зашифровано не возможно. Заставить его нормально работать мне не удалось. tplockbox справился на ура http://tplockbox.sourceforge.net".
Спасибо за совет по поводу BlowFish. Вот ссылка по использованию этого метода в Lazarus-е (на русском языке): http://rucode.3dn.ru/publ/kriptografija/obshhee/lazarus_blowfish/14-1-0-10
shyub
постоялец
 
Сообщения: 112
Зарегистрирован: 25.11.2014 23:15:19

Re: Стойкость RAS-шифрования

Сообщение resident » 10.05.2016 13:25:13

shyub писал(а):где некий Anjin_Kazawa

Вот и нашелся единственный тестер, о чем я и говорю.
А OpenSSL - это вся планета и вереница языков.

shyub писал(а):Вот ссылка по использованию этого метода в Lazarus-е

BlowFish обычный поток шифруется и все.
У него там интересней другое:
"Lazarus - Шифруем и Расшифровываем RSA по средствам OpenSSL"
http://rucode.3dn.ru/publ/lazarus/opens ... l/15-1-0-6
Но у меня так и не получилось запустить.
Код: Выделить всё
procedure DoLoadOpenSSL;
var
  hlib: TLibHandle;
begin
  hlib := LoadLibrary(DLLSSLName + '.so');
  PEM_write_bio_RSAPrivateKey :=
    TPEM_write_bio_RSAPrivateKey(GetProcAddress(hlib, 'PEM_write_bio_RSAPrivateKey'));
  if PEM_write_bio_RSAPrivateKey = nil then
    ShowMessage('');
  PEM_write_bio_RSAPublicKey :=
    TPEM_write_bio_RSAPublicKey(GetProcAddress(hlib, 'PEM_write_bio_RSAPublicKey'));
  if PEM_write_bio_RSAPublicKey = nil then
    ShowMessage('');
end;   

Что это за '.so'? (С ней hlib = 0). У меня Windows, а это наверное для Линукса? Я убрал её, вроде теперь стало hlib = 1899626496. И все равно последующие операторы не проходят и PEM_write_bio_RSAPrivateKey и PEM_write_bio_RSAPublicKey = nil.
resident
энтузиаст
 
Сообщения: 605
Зарегистрирован: 13.03.2013 16:58:51

Re: Стойкость RAS-шифрования

Сообщение pupsik » 10.05.2016 15:34:12

Что это за '.so'?
- '.dll'. Т.е. попробуйте:
Код: Выделить всё
hlib := LoadLibrary(DLLSSLName + '.dll');
pupsik
энтузиаст
 
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13

Re: Стойкость RAS-шифрования

Сообщение shyub » 10.05.2016 17:24:56

Посмотрите вот эту ссылку: https://habrahabr.ru/post/280302/
shyub
постоялец
 
Сообщения: 112
Зарегистрирован: 25.11.2014 23:15:19

Re: Стойкость RAS-шифрования

Сообщение resident » 10.05.2016 18:17:49

shyub писал(а):Посмотрите вот эту ссылку

Посмотрел.
resident
энтузиаст
 
Сообщения: 605
Зарегистрирован: 13.03.2013 16:58:51

Re: Стойкость RAS-шифрования

Сообщение resident » 12.05.2016 18:29:48

shyub
Как ваши эксперименты?

Благодаря Графу, завелся пример от RuCode. :)
И что?
В коде ставлю
Код: Выделить всё
CustomRSA.KeySize := 1024;

и ключи генерятся мгновенно, а такой длины не могут генерироваться мгновенно. Это первое. Второе - почему-то ключи всегда начинаются с одинаковой комбинации букв "MI..".
Сама OpenSSL по-любому работает, а вот эта обертка неизвестно что делает. Да, она кодирует и раскодирует. Только что и как мне неизвестно.

з.ы. Пробовал копировать ключи из файлов ключей Putty в файлы ключей программы - не хочет загружать.
з.з.ы. Не нужен мне этот RSA по большому счету. Но если припрет, то уж буду лучше Fundamentals использовать, так хоть ключи генерятся долго.
з.з.з.ы. Что касается Хабра и статьи, так там Делфи, а на неё у меня денег нет.
resident
энтузиаст
 
Сообщения: 605
Зарегистрирован: 13.03.2013 16:58:51

Re: Стойкость RAS-шифрования

Сообщение runewalsh » 13.05.2016 09:45:31

Почитай про лавинный эффект. Результат шифрования неотличим от шума, никакая статистика повторяемости неприменима.
Аватара пользователя
runewalsh
энтузиаст
 
Сообщения: 579
Зарегистрирован: 27.04.2010 00:15:25

След.

Вернуться в Общее

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7

Рейтинг@Mail.ru