Криптография/Атака Padding oracle на RSA: различия между версиями

Материал из SecSem Wiki
Перейти к навигации Перейти к поиску
(Новая страница: «==Мультипликативное свойство RSA== Пусть E(M) - функция шифрования, N - модуль, X mod Y - остаток от…»)
 
(Pairing Oracle)
Строка 5: Строка 5:
  
 
==Pairing Oracle==
 
==Pairing Oracle==
Разберем следующи пример: пусть есть сервис по заказу яиц. Но он позваляет заказывать только четное количество яиц. Заказы принимаются в зашифрованном RSA виде. Нужно, имея подлушанный зашифрованный текст C, получить его дешифрованный текст M.
+
Разберем следующи пример: пусть есть сервис по заказу яиц. Но он позваляет заказывать только четное количество яиц. Заказы принимаются в зашифрованном RSA виде. Нужно, имея подслушанный зашифрованный текст C, получить его дешифрованный текст M.
  
 
Атака выглядит следующим образом: пусть M < N. Можно послать сервису заказ на <code>2M mod N</code> яиц (для этого нужно послать <code>(C*2^e) mod N)</code>. Тогда есть два варинта:
 
Атака выглядит следующим образом: пусть M < N. Можно послать сервису заказ на <code>2M mod N</code> яиц (для этого нужно послать <code>(C*2^e) mod N)</code>. Тогда есть два варинта:

Версия 14:59, 2 апреля 2021

Мультипликативное свойство RSA

Пусть E(M) - функция шифрования, N - модуль, X mod Y - остаток от деления X на Y. Тогда:

 E(M1)E(M2) mod N = E(M1M2 mod N)

Данной свойство очевидно выводится из определения функции шифрования E(M).

Pairing Oracle

Разберем следующи пример: пусть есть сервис по заказу яиц. Но он позваляет заказывать только четное количество яиц. Заказы принимаются в зашифрованном RSA виде. Нужно, имея подслушанный зашифрованный текст C, получить его дешифрованный текст M.

Атака выглядит следующим образом: пусть M < N. Можно послать сервису заказ на 2M mod N яиц (для этого нужно послать (C*2^e) mod N). Тогда есть два варинта:

  1. M > N/2, тогда 2M mod N = 2M - N - нечетное число, сервис не принимает заказ
  2. M <= N/2, тогда 2M mod N = 2M - четное число, сервис принимает заказ

Аналогичные суждения можно сделать, домножая C на 2^ie mod N (где i - натуральное число) и, используя метод двоичного поиска, выяснить, чему же равно M.

PKCS#1 v1.5

Согласно этому стандарту, паддинг текста, длина которого недостаточна для шифрования происходит следующим образом: 00023572e4bcc8df4c7e53f931c1d79addcc3d0412db8723e28c84a5f6340d0f95f9836b07907669f2527 eda22e1f80e6e2e4dac062326f5716fca45004c65616b696e672070617269747920616c6c6f777320666f7 22064656372797074696e6720612077686f6c652052534120656e63727970746564206d6573736167650a

0002 - первые два байта определяют тип падинга

3572e4bcc8df4c7e53f931c1d79addcc3d0412db8723e28c84a5f6340d 0f95f9836b07907669f2527eda22e1f80e6e2e4dac062326f5716fca45 - ненулевые случайные байты

00 - сепаратор, после которого идёт собственно сам текст

Атака Блехенбахера

Ссылка на описание атаки

Ссылки