5.8. Утечка информации
101
В режиме CTR нет
проблем с коллизиями. Два ключевых блока никогда
не будут одинаковыми, а равенство блоков открытого или шифрованного тек-
ста не означает ровным счетом ничего. Единственное, что отличает CTR от
идеального поточного шифра, — это отсутствие коллизий ключевых блоков.
Режим OFB хуже, чем CBC или CTR. Пока между блоками ключевого
потока не возникает коллизий, режим OFB приводит к утечке такого же объ-
ема информации, как и режим CTR. Тем не менее, если между ключевыми
блоками режима OFB когда-нибудь возникнет коллизия, она приведет к кол-
лизии всех последующих ключевых блоков. Это катастрофа с точки зрения
безопасности, а также основная причина того, почему CTR предпочтительнее
режима OFB.
5.8.1
Вероятность коллизии
Итак, какова же вероятность того, что два блока шифрованного текста
окажутся равными? Предположим, мы зашифровали
M
блоков открытого
текста. То, как именно они были организованы — в несколько больших со-
общений или в большое количество коротких сообщений, не имеет значения.
Нас интересует только общее количество блоков. Из полученных блоков по
довольно грубой оценке можно сформировать примерно
M
(
M
−
1)
/
2
пар бло-
ков. Вероятность того, что значения блоков в паре совпадут, равна
2
−
n
, где
n
— это размер блока используемого блочного шифра. Итак, ожидаемое ко-
личество пар одинаковых блоков шифрованного текста равняется
M
(
M
−
1)
/
2
n
+1
, что приближается к единице при
M
≈
2
n/
2
. Другими словами, ко-
гда будет зашифровано около
2
n/
2
блоков текста, можно ожидать появления
двух одинаковых блоков шифрованного текста
2
. Если размер блока равен
128 бит, ожидать первого повторения блока шифрованного текста можно, за-
шифровав около
2
64
блоков. Это и есть парадокс задачи о днях рождения,
о котором идет речь в разделе 3.6.6. На сегодняшний момент
2
64
блоков —
это большое количество данных, однако не забывайте, что мы разрабаты-
ваем системы с расчетом на 30 лет службы. Возможно, в будущем кому-то
понадобится шифровать сообщения и такой длины.
Меньшие объемы данных тоже подвергаются риску. Если обработать
2
40
блоков текста (около 16 Тбайт данных), вероятность коллизии блоков шиф-
рованного текста будет равна
2
−
48
. Это действительно очень малая вероят-
ность, но давайте посмотрим на нее с точки зрения злоумышленника. Для
конкретного ключа шифрования он собирает
2
40
блоков шифрованного тек-
ста и проверяет, нет ли среди них повторений. Поскольку вероятность найти
2
В действительности количество блоков, которые следует зашифровать прежде, чем
ожидать первого повторения, близко к
√
π
2
n
−
1
= 2
n/
2
p
π/
2
, однако доказательство этого
факта достаточно громоздко, а в нашей ситуации такой уровень точности не нужен.