информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Где водятся OGRыПортрет посетителяСетевые кракеры и правда о деле Левина
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / theory
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
проблемы с RSA (Cryptlib, который Copyright Peter Gutmann) 25.09.02 16:29  
Автор: ggg <ggg> Статус: Elderman
<"чистая" ссылка>
может я чего то не понимаю, но оно у меня глючит

1) генерирую пару ключей (rsaGenerateKey(); 512 бит)

2) в цикле:
а) генерирую случайные данные (512 бит)
б) шифрую (rsaEncrypt())
в) расшифровываю (rsaDecrypt())
г) сравниваю с тем что было

примерно в 5% случаев результат не совпадает

как такое может быть?


...щас буду пробовать с другой библиотекой
доктор, меня все игнорируют... 26.09.02 12:33  
Автор: ggg <ggg> Статус: Elderman
<"чистая" ссылка>
...следующий !


разобрался
шифруемое число должно быть меньше n (n=p*q)
т.е. шифровать можно не 512 бит, а только 511

нигде в описаниях RSA я такого ограничения не встречал
в OpenSSL та же фигня. в Crypto++ всё работает 25.09.02 21:40  
Автор: ggg <ggg> Статус: Elderman
<"чистая" ссылка>
наверно проблема где то в библиотеке BIGNUM
опять сам с собой разговариваю :) 25.09.02 21:51  
Автор: ggg <ggg> Статус: Elderman
<"чистая" ссылка>
хоть бы кто выразил свои мысли
вдруг что умное появится

ведь обе эти библиотеки очень известны, неужели и правда в них глюк
или это я что то не понимаю
может это кто-нибудь знает... 26.09.02 00:25  
Автор: ggg <ggg> Статус: Elderman
<"чистая" ссылка>
в Crypto++ есть ограничение на размер шифруемого блока (гораздо меньше размера ключей, например не 512 бит, а 22 байта)
и шифруемые данные дополняются другими данными

когда я попытался напрямую засунуть свой блок, то получился эффект как и в cryptlib & openssl (не всегда правильно расшифровывались данные)

разве на вход RSA (в качестве шифруемого текста) можно подавать не любое число ?
я нигде в описаниях RSA не видел ничего об этом
а версии бибок какие? 27.09.02 22:36  
Автор: vaborg <Israel Vaborg> Статус: Elderman
<"чистая" ссылка>
всё свежее 28.09.02 22:24  
Автор: ggg <ggg> Статус: Elderman
<"чистая" ссылка>
я уже разобрался
дело не в реализации

просто шифровать надо не, например, 512 бит, а 511

я потом проверил - глюки были как раз когда превышалось значение n
в обычной реализации все эти библиотеки это или обрабатывают или возвращают ошибку
просто я расковырял их - мне нужен был только RSA - вот они и стали слегка по другому работать :)

почему на один бит меньше - я точно не знаю
я не шарю в этом
но это довольно логично, что после шифрования количество информации не может увеличиваться
а так как число-шифр может быть меньше 2^512-1, то и шифровать надо с запасом меньшее число
Все просто 03.10.02 09:46  
Автор: NickP Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> почему на один бит меньше - я точно не знаю
> я не шарю в этом

Элементарно, Ватсон! Шифрование/дешифрование RSA представляет
собой возведение данных в степень по модулю q. Соответственно если
число превышает q, оно просто обрезается.
Все просто 03.10.02 12:50  
Автор: ggg <ggg> Статус: Elderman
<"чистая" ссылка>
правильно ли я понимаю, что M^e mod n значит, что M возводится в степнь e, а потом обрезается по n ?

если да, то при возведении M в степень, оно же может стать гораздо больше n, даже если сначала было меньше
т.е. в любом случае оно будет обрезаться
Все просто 03.10.02 17:49  
Автор: NickP Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> правильно ли я понимаю, что M^e mod n значит, что M
> возводится в степнь e, а потом обрезается по n ?

Правильно.

> если да, то при возведении M в степень, оно же может стать
> гораздо больше n, даже если сначала было меньше
> т.е. в любом случае оно будет обрезаться

Так-то оно конечно так, но алгоритм на этом и построен. Проблемма не
в том, что он не может обработать число большее n, проблемма в том,
что _на выходе_ не может получиться число больше чем n.
Но если ты например точно знаешь, что шифровалось число большее n,
и после расшифровки к результату просто добавишь n, то должно
получиться то число которое ты шифровал.
дошло :) спасибо 03.10.02 19:35  
Автор: ggg <ggg> Статус: Elderman
<"чистая" ссылка>
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach