Введение
Числа, используемые криптографами для демонстрации своей честности.
В криптографии числа, "ничего не спрятано в рукаве", – это любые числа, которые по своему построению не вызывают подозрений в отношении скрытых свойств. Они используются при создании криптографических функций, таких как хеши и шифры. Эти алгоритмы часто нуждаются в случайных константах для перемешивания или инициализации. Криптограф может захотеть выбирать эти значения таким образом, чтобы продемонстрировать, что константы не были выбраны с недобросовестной целью, например, для создания лазейки в алгоритме. Таким образом, возникла потребность в более прозрачном способе генерации констант, используемых в криптографии. Выражение "ничего не спрятано в рукаве" связано с фокусниками, которые иногда перед трюком показывают, что у них ничего нет спрятано в рукавах.
In cryptography, nothing up my sleeve numbers are any numbers which, by their construction, are above suspicion of hidden properties. They are used in creating cryptographic functions such as hashes and ciphers. These algorithms often need randomized constants for mixing or initialization purposes. The cryptographer may wish to pick these values in a way that demonstrates the constants were not selected for a nefarious purpose, for example, to create a backdoor to the algorithm. Thus a need was felt for a more transparent way to generate constants used in cryptography. "Nothing up my sleeve" is a phrase associated with magicians, who sometimes preface a magic trick by holding open their sleeves to show they have no objects hidden inside.
Контрпримеры
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.
P 224: bd713447 99d5c7fc dc45b59f a3b9ab8f 6a948bc5. P 256: c49d3608 86e70493 6a6678e1 139d26b7 819f7e90. P 384: a335926a a319a27a 1d00896a 6773a482 7acdac73. Although not directly related, after the backdoor in Dual EC DRBG had been exposed, suspicious aspects of the NIST's P curve constants led to concerns that the NSA had chosen values that gave them an advantage in finding private keys. Since then, many protocols and programs started to use Curve25519 as an alternative to NIST P 256 curve.
Ограничения
Бернштейн и его соавторы показывают, что использование чисел "ничего в рукаве" в качестве начальной точки в сложном процессе генерации криптографических объектов, таких как эллиптические кривые, может оказаться недостаточным для предотвращения внедрения скрытых возможностей (бэкдоров). Например, существует множество кандидатов на кажущиеся безобидными и "неинтересными" простыми математическими константами, такими как π, 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. Если в процедуре выбора объекта достаточно настраиваемых параметров, комбинаторный взрыв гарантирует, что пространство возможных вариантов проектирования и, казалось бы, простых констант может быть достаточно велико, чтобы автоматический поиск по ним позволил создать объект с требуемыми свойствами бэкдора.