Дополнение (криптография): различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
Нет описания правки
Нет описания правки
Строка 26: Строка 26:
... | 1011 1001 1101 0100 0010 011'''1 0000 0000''' |
... | 1011 1001 1101 0100 0010 011'''1 0000 0000''' |


Это дополнение является первым шагом двухступенчатой схемы дополнения, использующейся во многих хэш-функциях в том числе [[MD5]] и [[:en:russia|SHA]].
Это дополнение является первым шагом двухступенчатой схемы дополнения, использующейся во многих хеш-функциях в том числе [[MD5]] и [[:en:russia|SHA]].


==== Дополнение байтами ====
==== Дополнение байтами ====

Версия от 08:04, 9 декабря 2015

В криптографии дополнение(англ. padding) имеет различные применения.

Классическая криптография

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

Многие классические шифры используют в качестве открытого текста конкретные шаблоны (например, квадраты, прямоугольники, и т.д.), и если открытый текст не подходит под шаблон, то часто необходимо дополнять его символами, чтобы заполнить шаблон. Использование ничего не значащих символов в данном случае также усложняет работу криптоаналитика.

Известным примером классического дополнения, которое вызвало большое недоразумение является "the world wonders".

Симметричная криптография

Хеш-функции

Большинство современных Криптографических хеш-функций обрабатывают сообщения в блоках фиксированной длины; но все, кроме самых первых хеш-функций в какой-то мере включают в себя схему дополнения. Многие схемы дополнения основаны на добавлении предсказуемых данных в последний блок. Например, дополнение может быть получено от общей длины сообщения. Этот вид дополнения обычно применяется к хеш-алгоритмам, основанным на структуре Меркла-Дамгарда.

Режим шифрования

Electronic codebook (ECB) и cipher-block-chaining (CBC) - примеры режимов шифрования. Режимы шифрования для алгоритмов с симметричным ключом требуют,чтобы длина сообщения была кратна размеру блока, поэтому сообщение, возможно, необходимо дополнить, чтобы привести его к необходимой длине.

Недостатком дополнения является то, что оно делает текст уязвимым к padding oracle attack. Данная атака позволяет злоумышленнику получить знания о передаваемом сообщении не атакуя блочный шифр примитивно, её можно избежать, если убедиться, что атакующий не может получить никаких знаний об удалении добавленных байтов. Это может быть достигнуто путем проверки кода аутентификации сообщений (MAC) или цифровой подписи перед удалением байтов заполнения.

Дополнение битами

Дополнение битами может быть применено к сообщению любой длины. Сообщение дополняется одним единичным битом ('1') и некоторым количеством нулевых битов ('0'). Количество добавленных нулевых битов зависит от границы блока до которой необходимо дополнить сообщение. В битных терминах это "1000 ... 0000". Этот метод может быть использован для дополнения сообщений с любым числом битов, абсолютно не обязательно чтобы они составляли целое число байт. Например, сообщение состоящее из 23 бит дополняется 9 битами, чтобы заполнить 32-битовый блок:

... | 1011 1001 1101 0100 0010 0111 0000 0000 |

Это дополнение является первым шагом двухступенчатой схемы дополнения, использующейся во многих хеш-функциях в том числе MD5 и SHA.

Дополнение байтами

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

ANSI X.923

В ANSI X.923 байты дополняются нулями и последний байт определяет границу дополнения или количество добавленных байтов. Пример: В следующем примере блок имеет размер 8 байтов, и требуется дополнение 4 байтами.

... | DD DD DD DD DD DD DD DD | DD DD DD DD 00 00 00 04 |
ISO 10126

В ISO 10126 [2][3] дополнение должно быть заполнено случайными байтами, а последний байт должен показывать количество добавленных байтов. Пример: В следующем примере блок имеет размер 8 байтов, и требуется дополнение 4 байтами.

... | DD DD DD DD DD DD DD DD | DD DD DD DD 81 A6 23 04 |
PKCS7

PKCS#7 описано в RFC 5652.

Дополнение в целых байтах. Значение каждого байта равно числу добавленных байтов, т.е. добавляется N байт со значением N. Число добавленных байтов зависит от границы блока, до которого необходимо расширить сообщение. Дополнение будет одним из:

01
02 02
03 03 03
04 04 04 04
05 05 05 05 05
etc.

Данный метод дополнения (также как и два предыдущих) хорошо определен только если N меньше чем 256.

Пример: Пример: В следующем примере блок имеет размер 8 байтов, и требуется дополнение 4 байтами

... | DD DD DD DD DD DD DD DD | DD DD DD DD 04 04 04 04 |
ISO/IEC 7816-4

ISO/IEC 7816-4:2005[4] идентичен схеме дополнения битами, примененной к тексту, состоящему из N байтов. На практике это значит, что первый дополнительный байт обязательно имеет значение '80', а за ним следует, если это необходимо, от 0 до N-1 байтов '00' до тех пор пока не будет достигнута граница блока. ISO/IEC 7816-4 является стандартом связи для смарт-карт и сам по себе не содержит каких-либо криптографических спецификаций.

Пример: Пример: В следующем примере блок имеет размер 8 байтов, и требуется дополнение 4 байтами

... | DD DD DD DD DD DD DD DD | DD DD DD DD 80 00 00 00 |

Следующий пример показывает дополнение только одним байтом:

... | DD DD DD DD DD DD DD DD | DD DD DD DD DD DD DD 80 |

Дополнение нулями

Все байты, которыми необходимо дополнить, заполняются нулями. Схема дополнения нулями не признана стандартом, хотя он описан как метод дополнения 1 для хеш-функций и MAC в ISO/IEC 10118-1[5] and ISO/IEC 9797-1.[6]

Пример: Пример: В следующем примере блок имеет размер 8 байтов, и требуется дополнение 4 байтами

... | DD DD DD DD DD DD DD DD | DD DD DD DD 00 00 00 00 |

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

Криптография с открытым ключом

В криптографии с открытым ключом дополнение это способ приготовления сообщения для шифрования или подписи следующими схемами: PKCS#1 v1.5, OAEP, PSS, PSSR, IEEE P1363 EMSA2 and EMSA5. Современная форма дополнения для асимметричных примитивов применяется с алгоритму RSA, когда он используется для шифрования ограниченного количества байт.

Операция называется "Дополнение", потому что изначально случайный материал просто добавляется к сообщению. Эта форма дополнения не является безопасной и поэтому больше не применяется.

Анализ трафика

Даже если используются совершенные криптографические процедуры, злоумышленник может получить знания о количестве трафика, который был создан. Злоумышленник не может конкретно знать, что Алиса и Боб передавали, но может знать, что сообщение передавалось и насколько долго это было. В некоторых ситуациях это может быть очень плохо. Например, когда страны организуют секретное нападение на другую страну: этого может быть достаточно, чтобы предупредить эту страну, давая ей знать, что происходит много тайной деятельности.

В качестве другого примера, при шифровании потоков Voice Over IP, которые используют кодирование с попеременной битовой скоростью, число битов в единицу времени не скрыто, и это может служить для предположения голосовой фразы.[7]

Дополнение сообщения помогает сделать анализ трафика сложнее. Как правило, случайные биты добавляется к концу сообщения с указанием сколько таких битов всего.

References

  1. Gordon Welchman, The Hut Six Story: Breaking the Enigma Codes, p. 78.
  2. ISO catalog, ISO 10126-1:1991
  3. ISO catalog, ISO 10126-2:1991
  4. ISO catalog, ISO/IEC 7816-4:2005
  5. [|http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=31143 ISO/IEC 10118-1:2000 Information technology – Security techniques – Hash-functions – Part 1: General]
  6. [|http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=30656 ISO/IEC 9797-1:1999 Information technology – Security techniques – Message Authentication Codes (MACs) – Part 1: Mechanisms using a block cipher]
  7. Uncovering Spoken Phrases in Encrypted Voice over IP Conversations