Что особенного в

12

В алгоритме Tiny Encryption :

Различные кратные магической константы используются для предотвращения простых атак, основанных на симметрии раундов. Магическая постоянная, 2654435769 или 9E3779B9 16 , выбрана равной 232/ϕ , где ϕ - золотое сечение.

Какими свойствами обладает 232/ϕ , что делает его полезным в этом контексте?

М.С. Дусти
источник
1
Возможно актуально: en.wikipedia.org/wiki/Nothing_up_my_sleeve_number
Чарльз,

Ответы:

11

AFAIK, такие «волшебные» значения имеют следующие два свойства:

  1. Они как-то уникальны и выглядят случайными.
  2. Они могут участвовать в алгебраических операциях неоднократно; т. е. даже после многократного применения определенной операции (скажем, умножения или возведения в степень) «магическое» значение все еще способно генерировать новые значения.

Вы можете найти аналогичный случай в MD5 . Рассмотрим следующую строку:

k[i] := floor(abs(sin(i + 1)) × (2 pow 32))

Здесь sin(i + 1)предназначен для создания магических ценностей; которые являются уникальными, случайными на вид, и могут работать для многих i. (На самом деле, в iдиапазоне 0,63).

Редактировать: Читая оригинальную статью о ЧАЕ , каждый понимает, что ответ, данный "Стивеном Стадницким", является правильным. Обратите внимание, что волшебная константа - это имя delta:

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

Поскольку используется только 32 кратных дельты (по одному на каждый раунд), не удивительно, что алгоритм не очень чувствителен к какой-либо конкретной дельте. (См. Ответ Стивена Стадницкого для получения дополнительной информации.)

Редактировать 2: Между прочим, MD4 использует квадратные корни 2 (0x5a827999) и 3 (0x6ed9eba1) в качестве «магических» констант в своих операциях. Раздел 5.4.4 книги « Сетевая безопасность: частное общение в публичном мире» хорошо объясняет это:

Чтобы показать, что разработчики не выбрали дьявольское значение константы, константа основана на квадратном корне из 2.

Это объяснение совпадает с замечанием, высказанным ниже в комментарии Жиля.

М.С. Дусти
источник
Звучит разумно. Тогда 2 ^ 32 / pi или 2 ^ 32 / sqrt (2) сработали бы так же хорошо?
@Tim: Думаю, что так, но важно дважды проверить новые магические числа в контексте внутренних операций TEA.
MS Dousti
5
Кроме того, причина выбора математической константы, такой как 2 ^ 32 / phi, а не случайно сгенерированного значения с приемлемыми свойствами, заключается в том, чтобы дать уверенность, что это значение не выбрано для дополнительных нераскрытых свойств - значение бэкдора ,
Жиль "ТАК - перестань быть злым"
2
@ Жиль, действительно, по этой причине их даже называют «ничего у меня в рукаве», см. En.wikipedia.org/wiki/Nothing_up_my_sleeve_number
Хенно Брандсма
12

φnφφ{nφ}{nα}α

Cπ=232/π=1367130551(355Cπ)mod232=41157n | ( n C φ )Cφ=232/φ=2654435769n n = 28657 X n X n + k k 2 32|(nCφ)mod232|216n=28657XnXn+kk; по большей части, тем не менее, это фольклорная чёрная магия, основанная больше на интуиции, что «маленькие кратные этого числа, будучи маленьким модом будут плохими», чем на каких-либо конкретных теоретических результатах.232

Стивен Стадницки
источник
1
Sadeq: «mod 1» относится к дробной части кратных - в этом случае они будут [.62, .24, .85, .47, .09, .71, .33, .94, .56,. 18]. Эквидистрибуция в пределе означает, что любой подинтервал [a, b] of [0, 1] содержит ожидаемую пропорцию (ba) этих значений; в то время как оказывается, что дробные части кратных любого иррационального числа равномерно распределены на [0, 1], те из золотого сечения приближаются к тому, что распределение даже быстрее, чем любое другое число; они не слипаются на единичном интервале.
Стивен Стадницки
8
π113π{(n+113)π}{nπ}
8
это очень аккуратное свойство золотого сечения
Суреш Венкат
2
Спасибо за отличное описание. Это было действительно здорово! Есть ли у вас какие-либо комментарии k[i], как определено в MD5? (См. Мой ответ выше.)
MS Dousti
2
sin(nx)xaiΣaik[i]=0