Элемент цифровой схемы может, конечно, пребывать краткие периоды времени в промежуточном состоянии переключения между двумя этими базовыми возможностями. Однако он никогда не должен оставаться балансирующим и неопределённым в том, каким путём следует двигаться дальше. Такого рода неопределённостей всегда стараются избегать, поскольку они вносят задержки в работу схемы и даже способны порождать сбои в работе системы.
Однако в конструкции нового генератора случайных чисел такое тяготение к балансированию стало не дефектом, а особенностью схемы. Можно сказать, что данная схема делает своей главной фишкой так называемый феномен «метастабильности» – обычно крайне нежелательный эффект при конструировании логических схем, использующих более одной тактовой частоты. Цифровой же генератор, созданный командой Intel, устроен таким образом, что здесь результатом метастабильности является в буквальном смысле каждый бит на выходе схемы.
Обычно выход с цифрового устройства принято брать в тот момент, когда он устоялся на определённом значении, будь это ноль или единица. А метастабильность – это то, что происходит, когда показание напряжения берётся во время перехода, так что бит пойман где-то в промежутке между нулём и единицей. В конечном счёте такой бит непременно перейдёт в одно из этих двух базовых состояний, однако нет способа предсказать, в каком именно он окажется.
Исследователи Intel умышленно стали снимать сигнал во время именно таких переходов, а кроме того, они усиливают эту случайность ещё больше, с помощью петли обратной связи настраивая метастабильность таким образом, чтобы бит падал в состояние 1 или 0 с примерно равной вероятностью. Превращая, по сути дела, данный процесс в электронный эквивалент подбрасывания монеты.
Конструктивно весь этот трюк реализован на основе пары инверторов (элементов схемы, у которых выходной сигнал противоположен сигналу на входе), циклически подсоединённых друг к другу, и двух довольно странно подключённых к инверторам транзисторов. Из-за этой «нелогичной» схемы подключения данная система в каждом такте работы на кратчайшее время подвисает между двумя своими базовыми состояниями — 0 и 1.
В идеальном мире такое неопределённое состояние системы теоретически могло бы длиться вечность. Однако в мире реальном даже самый минимальный всплеск теплового шума – какая-нибудь случайная атомная вибрация – внутри схемы обязательно подтолкнёт это симметричное, но крайне нестабильное состояние в одно или другое из стабильных состояний системы.
Иными словами, и здесь исход состояния для этой неопределённой ситуации в цифровой схеме определяется физически случайными свойствами теплового шума. По сути всё, что для этого потребовалось, – это подсоединить два дополнительных транзистора к часам, которые регулярно включают и выключают пару инверторов. Всякий раз, когда тактовые часы тикают, эта схема порождает один случайный бит. А коль скоро в современном микропроцессоре часы тикают с частотой порядка 3 гигагерц, генератор способен выдавать 3 миллиарда случайных битов в секунду.
Теоретически отсюда можно сделать вывод, что процессор имеет возможность просто снимать выходные биты от этой зашиты в него на аппаратном уровне схемы RNG, сразу подавать их в криптографическое приложение и считать свою задачу выполненной. В реальности, однако, эти биты случайны не до такой высокой степени, какую хотелось бы иметь в надёжной криптографии. Грубый поток битов, выходящих из базовой схемы – независимо от того, насколько она хороша, – всё равно может иметь нежелательные статистические сдвиги и корреляции.
А цель конструкторов Intel ставилась так, чтобы построить систему, которая генерирует не просто чисто случайные, а «высококачественные случайные числа», совместимые с общепринятыми криптографическими стандартами. В первую очередь, с критериями NIST SP800-90 Национального института стандартов и технологий США, соответствие которым гарантирует выдачу соответствующего сертификата, а значит, и повсеместное признание схемы в качестве надёжной криптотехнологии.
Чтобы гарантировать высокое качество случайных чисел, порождаемых новым DRNG, в Intel разработали специальный трёхэтапный процесс генерации. Помимо базовой аппаратной схемы (первый этап), данный процесс также предусматривает «кондиционер» (второй этап) и псевдослучайный генератор чисел (заключительный третий этап). В совокупности же вся эта конструкция получила кодовое наименование Bull Mountain.
Не вдаваясь в глубокие технические подробности, можно описать работу двух дополнительных этапов следующим образом.