Введение

Числа, используемые криптографами для демонстрации своей честности.
В криптографии числа, "ничего не спрятано в рукаве", – это любые числа, которые по своему построению не вызывают подозрений в отношении скрытых свойств. Они используются при создании криптографических функций, таких как хеши и шифры. Эти алгоритмы часто нуждаются в случайных константах для перемешивания или инициализации. Криптограф может захотеть выбирать эти значения таким образом, чтобы продемонстрировать, что константы не были выбраны с недобросовестной целью, например, для создания лазейки в алгоритме. Таким образом, возникла потребность в более прозрачном способе генерации констант, используемых в криптографии. Выражение "ничего не спрятано в рукаве" связано с фокусниками, которые иногда перед трюком показывают, что у них ничего нет спрятано в рукавах.

Контрпримеры

S-блок хеш-функции Стрибог заявлялся как сгенерированный случайным образом, но был подвергнут обратной разработке и доказано, что он сгенерирован алгоритмически с некоторыми "необъяснимыми" уязвимостями. Стандарт шифрования данных (DES) содержит константы, предоставленные АНБ. Оказалось, что они далеки от случайных, но вместо этого сделали алгоритм устойчивым к дифференциальному криптоанализу – методу, который в то время не был публично известен. В сентябре 2013 года газета The New York Times сообщила, что "внутренние служебные записки, обнародованные бывшим подрядчиком АНБ Эдвардом Сноуденом, указывают на то, что АНБ сгенерировало один из генераторов случайных чисел, используемых в стандарте NIST 2006 года – Dual EC DRBG, – который содержит скрытую возможность для АНБ". Кривые P стандартизированы NIST для криптографии на эллиптических кривых. Коэффициенты в этих кривых генерируются путем хеширования необъяснимых случайных начальных значений, таких как: P 224: bd713447 99d5c7fc dc45b59f a3b9ab8f 6a948bc5. P 256: c49d3608 86e70493 6a6678e1 139d26b7 819f7e90. P 384: a335926a a319a27a 1d00896a 6773a482 7acdac73. Хотя прямая связь и не прослеживалась, после обнаружения бэкдора в Dual EC DRBG, вызывающие подозрения особенности констант кривых P NIST вызвали опасения, что АНБ выбрало значения, дающие им преимущество в поиске закрытых ключей. С тех пор многие протоколы и программы стали использовать Curve25519 в качестве альтернативы кривой NIST P 256.

Ограничения

Бернштейн и его соавторы показывают, что использование чисел "ничего в рукаве" в качестве начальной точки в сложном процессе генерации криптографических объектов, таких как эллиптические кривые, может оказаться недостаточным для предотвращения внедрения скрытых возможностей (бэкдоров). Например, существует множество кандидатов на кажущиеся безобидными и "неинтересными" простыми математическими константами, такими как π, e, постоянная Эйлера — Маскерони, √2, √3, √5, √7, log(2), (1 + √5)/2, ζ(3), ζ(5), sin(1), sin(2), cos(1), cos(2), tan(1) или tan(2). Для этих констант также существует несколько различных двоичных представлений на выбор. Если константа используется в качестве случайного зерна, для выбора доступно большое количество кандидатов на хеш-функции, например SHA-1, SHA-256, SHA-384, SHA-512, SHA-512/256, SHA3-256 или SHA3-384. Если в процедуре выбора объекта достаточно настраиваемых параметров, комбинаторный взрыв гарантирует, что пространство возможных вариантов проектирования и, казалось бы, простых констант может быть достаточно велико, чтобы автоматический поиск по ним позволил создать объект с требуемыми свойствами бэкдора.