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

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[непроверенная версия][отпатрулированная версия]
Содержимое удалено Содержимое добавлено
м бот: добавление заголовков в сноски; исправление двойных сносок, см. ЧаВо
Нет описания правки
 
(не показано 27 промежуточных версий 10 участников)
Строка 1: Строка 1:
{{значения|Дополнение}}
В криптографии '''дополнение'''({{lang-en|padding}}) относится к числу различных применений.
'''Дополнение''' ({{lang-en|padding}}) в [[Криптография|криптографии]] — добавление ничего не значащих данных к зашифровываемой информации, нацеленное на повышение [[Криптостойкость|криптостойкости]]. Различные техники дополнения применялись в [[История криптографии|классической криптографии]] {{Переход|#Классическая криптография}}, обширное применение техники дополнений нашли в компьютерных системах шифрования.


== Классическая криптография ==
== Классическая криптография ==
Официальные сообщения часто начинаются и заканчиваются предсказуемо: ''Мой дорогой посол, С уважением'' и др. Основное применение дополнения к классическими шифрами заключается в предотвращении использования этой предсказуемости при криптоанализе для нахождения [[Атака на основе открытых текстов|известного текста]],<ref>[[:en:russia|Gordon Welchman]], ''The Hut Six Story: Breaking the Enigma Codes'', p. 78.</ref> и взлома шифрования. Случайная длина дополнения также не даёт знать криптоаналитику точную длину открытого текста.
Официальные сообщения часто начинаются и заканчиваются предсказуемо, например, «''С уважением, …''». Основная цель применения дополнения к классическими шифрами — лишить [[криптоаналитик]]а возможности использовать такую предсказуемость при [[криптоанализ]]е [[Атака на основе открытых текстов|известного текста]]<ref>[[Уэлшман, Гордон|Гордон Уэлшман]], ''The Hut Six Story: Breaking the Enigma Codes'', p. 78.</ref>. Случайная длина дополнения также не позволяет криптоаналитику узнать точную длину сообщения.


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

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


== Симметричная криптография ==
== Симметричная криптография ==
{{main|Симметричные криптосистемы}}


=== Хеш-функции ===
=== Хеш-функции ===
Большинство современных [[Криптографическая_хеш-функция|Криптографических хеш-функций]] обрабатывают сообщения в блоках фиксированной длины; но все, кроме самых первых хеш-функций в какой-то мере включают в себя схему дополнения.
Большинство современных [[Криптографическая хеш-функция|криптографических хеш-функций]] обрабатывают сообщения в блоках фиксированной длины, и практически все в какой-то мере используют в себе схему дополнения.

Многие схемы дополнения основаны на добавлении предсказуемых данных в последний блок. Например, дополнение может быть получено от общей длины сообщения. Этот вид дополнения обычно применяется к хеш-алгоритмам, основанным на [[Структура Меркла — Дамгарда|структуре Меркла-Дамгарда]].
Многие схемы дополнения основаны на добавлении определённых данных в последний блок. Например, дополнение может быть получено исходя из общей длины сообщения. Такой вид дополнения обычно применяется к хеш-алгоритмам, основанным на [[Структура Меркла — Дамгора|структуре Меркла — Дамгора]].


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


Недостатком дополнения является то, что оно делает текст уязвимым к [[:en:Russia|padding oracle attack]]. Padding oracle attack позволяет злоумышленнику получить знания о передаваемом сообщении не атакуя блочный шифр примитивно. Атаку padding oracle attack можно избежать, если убедиться, что атакующий не может получить никаких знаний об удалении добавленных байтов. Это может быть достигнуто путем проверки кода аутентификации сообщений (MAC) или цифровой подписи перед удалением байтов заполнения.
Недостатком дополнения является то, что оно делает текст уязвимым для {{iw|Атака Оракула|атакам Оракула|en|Padding oracle attack}}. Данная атака позволяет злоумышленнику получить знания о передаваемом сообщении, не атакуя блочный шифр примитивно; этой атаки можно избежать, если убедиться, что атакующий не может получить никаких знаний об удалении добавленных байтов. Это может быть достигнуто путём проверки кода аутентификации сообщений (MAC) или цифровой подписи перед удалением байтов заполнения.


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


... | 1011 1001 1101 0100 0010 011'''1 0000 0000''' |
| 1011 1001 1101 0100 0010 011'''1 0000 0000''' |


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


==== Дополнение байтами ====
==== Дополнение байтами ====
Строка 33: Строка 34:
===== ANSI X.923 =====
===== ANSI X.923 =====
В ANSI X.923 байты дополняются нулями и последний байт определяет границу дополнения или количество добавленных байтов.
В ANSI X.923 байты дополняются нулями и последний байт определяет границу дополнения или количество добавленных байтов.

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


Строка 38: Строка 40:


===== ISO 10126 =====
===== ISO 10126 =====
В ISO 10126<ref>{{Cite web |url=http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=18113 |title=ISO catalog, ''ISO 10126-1:1991'' |access-date=2015-12-08 |archive-date=2016-04-09 |archive-url=https://web.archive.org/web/20160409083333/http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=18113 |deadlink=no }}</ref><ref>{{Cite web |url=http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=18114 |title=ISO catalog, ''ISO 10126-2:1991'' |access-date=2015-12-08 |archive-date=2016-04-09 |archive-url=https://web.archive.org/web/20160409083338/http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=18114 |deadlink=no }}</ref> дополнение должно быть заполнено случайными байтами, а последний байт должен показывать количество добавленных байтов.


В ISO 10126 <ref>[http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=18113 ISO catalog, ''ISO 10126-1:1991'']</ref><ref>[http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=18114 ISO catalog, ''ISO 10126-2:1991'']</ref> дополнение должно быть заполнено случайными байтами, а последний байт должен показывать количество добавленных байтов.
Пример: В следующем примере блок имеет размер 8 байтов, и требуется дополнение 4 байтами.
Пример: В следующем примере блок имеет размер 8 байтов, и требуется дополнение 4 байтами.


Строка 45: Строка 47:


===== PKCS7 =====
===== PKCS7 =====
[[PKCS|PKCS#7]] описано в RFC 5652.


Дополнение в целых байтах. Значение каждого байта равно числу добавленных байтов, то есть добавляется ''N'' байт со значением ''N''. Число добавленных байтов зависит от границы блока, до которого необходимо расширить сообщение.
[[PKCS|PKCS#7]] описано в [http://tools.ietf.org/html/rfc5652#section-6.3 RFC 5652].

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


Строка 58: Строка 59:
etc.
etc.


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


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


... | DD DD DD DD DD DD DD DD | DD DD DD DD '''04 04 04 04''' |
... | DD DD DD DD DD DD DD DD | DD DD DD DD '''04 04 04 04''' |


===== ISO/IEC 7816-4 =====
===== ISO/IEC 7816-4 =====
[[ISO/IEC 7816]]-4:2005<ref>{{Cite web |url=http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=36134 |title=ISO catalog, ''ISO/IEC 7816-4:2005'' |access-date=2015-12-08 |archive-date=2016-03-04 |archive-url=https://web.archive.org/web/20160304071317/http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=36134 |deadlink=no }}</ref> идентичен схеме дополнения битами, примененной к тексту, состоящему из N байтов. На практике это значит, что первый дополнительный байт обязательно имеет значение '80', а за ним следует, если это необходимо, от 0 до N-1 байтов '00' до тех пор, пока не будет достигнута граница блока. ISO/IEC 7816-4 является стандартом связи для смарт-карт и сам по себе не содержит каких-либо криптографических спецификаций.


Пример: В следующем примере блок имеет размер 8 байтов, и требуется дополнение 4 байтами
[[ISO/IEC 7816]]-4:2005<ref>[http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=36134 ISO catalog, ''ISO/IEC 7816-4:2005'']</ref> идентичен схеме дополнения битами, примененной к тексту, состоящему из 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 '''80 00 00 00''' |
Строка 77: Строка 77:


=== Дополнение нулями ===
=== Дополнение нулями ===
Все байты, которыми необходимо дополнить, заполняются нулями. Схема дополнения нулями не признана стандартом, хотя она описана как метод дополнения 1 для хеш-функций и MAC в ISO/IEC 10118-1<ref>{{Cite web |url=http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=31143 |title=ISO/IEC 10118-1:2000 ''Information technology — Security techniques — Hash-functions — Part 1: General'' |access-date=2015-12-08 |archive-date=2016-04-18 |archive-url=https://web.archive.org/web/20160418143720/http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=31143 |deadlink=no }}</ref> и [[ISO/IEC 9797-1]].<ref>{{Cite web |url=http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=30656 |title=ISO/IEC 9797-1:1999 ''Information technology — Security techniques — Message Authentication Codes (MACs) — Part 1: Mechanisms using a block cipher'' |access-date=2015-12-08 |archive-date=2016-04-09 |archive-url=https://web.archive.org/web/20160409083413/http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=30656 |deadlink=no }}</ref>


Пример: В следующем примере блок имеет размер 8 байтов, и требуется дополнение 4 байтами
Все байты, которыми необходимо дополнить, заполняются нулями. Схема дополнения нулями не признана стандартом, хотя он описан как метод дополнения 1 для хеш-функций и MAC в ISO/IEC 10118-1<ref>[|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'']</ref> and [[:en:Russia|ISO/IEC 9797-1]].<ref>[|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'']</ref>

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


... | DD DD DD DD DD DD DD DD | DD DD DD DD '''00 00 00 00''' |
... | DD DD DD DD DD DD DD DD | DD DD DD DD '''00 00 00 00''' |
Строка 87: Строка 86:


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


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

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


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

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


В качестве другого примера, при шифровании потоков [[VOIP|Voice Over IP]], которые используют кодирование с попеременной битовой скоростью, число битов в единицу времени не скрыто, и это может служить для предположения голосовой фразы.<ref>[http://portal.acm.org/citation.cfm?doid=1880022.1880029 Uncovering Spoken Phrases in Encrypted Voice over IP Conversations<!-- Заголовок добавлен ботом -->]</ref>
В качестве другого примера, при шифровании потоков [[VOIP|Voice Over IP]], которые используют кодирование с попеременной битовой скоростью, число битов в единицу времени не скрыто, и это может служить для предположения голосовой фразы.<ref>[http://portal.acm.org/citation.cfm?doid=1880022.1880029 Uncovering Spoken Phrases in Encrypted Voice over IP Conversations<!-- Заголовок добавлен ботом -->]</ref>


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


== См. также ==
==References==
* [[Соль (криптография)]]
{{Reflist|30em}}
* [[Заимствование шифротекста]]


== Примечания ==
{{примечания|2}}
{{вс}}
{{Криптография}}
{{Криптография}}
{{изолированная статья}}


[[Категория:Криптография]]
[[Категория:Криптография]]

Текущая версия от 16:14, 31 июля 2024

Дополнение (англ. padding) в криптографии — добавление ничего не значащих данных к зашифровываемой информации, нацеленное на повышение криптостойкости. Различные техники дополнения применялись в классической криптографии , обширное применение техники дополнений нашли в компьютерных системах шифрования.

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

[править | править код]

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

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

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

[править | править код]

Хеш-функции

[править | править код]

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

Многие схемы дополнения основаны на добавлении определённых данных в последний блок. Например, дополнение может быть получено исходя из общей длины сообщения. Такой вид дополнения обычно применяется к хеш-алгоритмам, основанным на структуре Меркла — Дамгора.

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

[править | править код]

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

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

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

[править | править код]

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

… | 1011 1001 1101 0100 0010 0111 0000 0000 |

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

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

[править | править код]

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

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

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

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

В ISO 10126[2][3] дополнение должно быть заполнено случайными байтами, а последний байт должен показывать количество добавленных байтов.

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

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

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: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] и 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, OAEP, PSS, PSSR, IEEE P1363 EMSA2 и EMSA5. Современная форма дополнения для асимметричных примитивов применяется с алгоритму RSA, когда он используется для шифрования ограниченного количества байт.

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

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

[править | править код]

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

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

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

Примечания

[править | править код]
  1. Гордон Уэлшман, The Hut Six Story: Breaking the Enigma Codes, p. 78.
  2. ISO catalog, ISO 10126-1:1991. Дата обращения: 8 декабря 2015. Архивировано 9 апреля 2016 года.
  3. ISO catalog, ISO 10126-2:1991. Дата обращения: 8 декабря 2015. Архивировано 9 апреля 2016 года.
  4. ISO catalog, ISO/IEC 7816-4:2005. Дата обращения: 8 декабря 2015. Архивировано 4 марта 2016 года.
  5. ISO/IEC 10118-1:2000 Information technology — Security techniques — Hash-functions — Part 1: General. Дата обращения: 8 декабря 2015. Архивировано 18 апреля 2016 года.
  6. ISO/IEC 9797-1:1999 Information technology — Security techniques — Message Authentication Codes (MACs) — Part 1: Mechanisms using a block cipher. Дата обращения: 8 декабря 2015. Архивировано 9 апреля 2016 года.
  7. Uncovering Spoken Phrases in Encrypted Voice over IP Conversations