Рейтинг:1

Всегда ли RSA с двумя модулями имеет MSB, равный единице, и поэтому, когда DER закодирован, имеет префикс 0x00?

флаг ug

Смотря на https://crypto.stackexchange.com/a/30616/16548 и всеми способами, которыми я генерирую ключи RSA (код, SSL), MSB всегда равен 1, и поэтому, когда кодировка DER имеет 0x00 префикс.

Я думаю, что это всегда так, когда длина ключа RSA является степенью двойки (например, 2048 или 4096).

Но вопрос, которым я сейчас задаюсь перед сном: так ли это?

Цитата из ссылки

Обычно мы выбираем размеры модуля RSA, которые являются степенью двойки или небольшими кратными им величинами (1024, 1536, 2048, 3072 и т. д.), и обычно это происходит там.

так как я вот думаю как доказать или как-то это действительно так.

Мне кажется, что длина модуля установлена ​​​​таким образом, а MSB установлен из-за конструкции модуля, и это целое число без знака. Таким образом, 0x00 всегда будет там, и нет необходимости проверять, установлен ли MSB.

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

Рейтинг:1
флаг in

Да всегда так, хотя бы потому, что размер ключа на самом деле равен размеру модуля для RSA.Размеры простых чисел, которые производят модуль, должны быть выбраны так, чтобы размер ключа находился между $[2^{длина-1}, 2^{длина})$. Если это так, то если $len$ кратно 8 тогда у него будет установлен MSB каждого байта.

Это означает, что префикс нулевого байта также будет присутствовать для размера ключа, например. 1792 бита или 1920 бит. Такие размеры иногда используются для встроенных систем / смарт-карт, поскольку общий размер данных ответа составляет 256 байт, поэтому подпись или зашифрованный текст не оставляют места для дополнительных данных или безопасного обмена сообщениями.

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

флаг ug
Действительно хорошее дополнительное объяснение. Спасибо. (Вообще-то перешел к построению доказательств, но думаю пока остановиться и попробовать заняться чем-нибудь другим. :))

Ответить или комментировать

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