Настоящая статья основана на работе "Initial
SRAM State as a Fingerprint and Source of True Random Numbers for RFID Tags",
написанной Деном Холкомбом. В ней
рассказывается о новом способе генерации
действительно случайных чисел и некоторых
интересных особенностях компьютерного
железа.
Идея использования мета-данных о
стабильности и тепловом шуме в
интегральных схемах не нова. На самом деле
она является основой многих популярных
алгоритмов генерации случайных чисел,
новое в предлагаемом подходе состоит в
технике сбора случайных чисел в памяти
компьютера - сильную случайность с
физической точки зрения можно получить, не
добавляя ни единого транзистора в
существующие схемы. К тому же, можно
получить и побочное преимущество -
определив энтропию, можно надежно и
достоверно определить каждое
индивидуальное устройство.
Новая техника применима к большинству из
современных устройств - начиная от
настольных компьютеров и заканчивая
дешевыми RFID-метками. Причем, что
замечательно, некоторые устройства не
потребуют апргрейда, достаточно будет
только нового софта.
Как это работает?
Как известно, при выключении компьютера
его память теряет всю информацию. Но что
происходит с ней при включении? Ответ на
этот вопрос и принес идею нового генератора
- состояние каждого бита оперативной памяти
перед первой записью в ходе включения,
зависит в основном от того, как транзисторы
были отпечатаны в ходе производства. Все
биты можно разделить на три категории:
- изначально (почти всегда) 0
- изначально 0 или 1
- изначально (почти всегда) 1
Выполнив несколько циклов включения и
собрав определенную статистику о состоянии
банков памяти при включении, компьютер
может создать некий профиль, в котором можно
определить, какой из этих трех случаев
применим к каждому биту. Этот профиль может
служить отпечатком для устройства (fingerprint),
так как он уникален для каждого модуля
памяти. И в то же время, так как мы знаем, как
меняется каждый бит при сбросе питания, его
можно использовать для генерации по-настоящему случайного числа, а не псевдослучайного,
как происходит во множестве алгоритмов.
Алгоритм такой генерации можно найти в
документе, ссылка на который дана выше.
Таким образом, на основе SRAM можно легко
создать новую систему идентификации или
использовать память для генерации
случайных чисел. Это особенно важно для
максимально дешевых устройств - например,
тех же RFID-меток (сейчас идентификаторы
закладываются в метку на стадии
производства при помощи, например, EPROM или
EEPROM, что, соответственно, требует затрат на
производство, да и места на микросхеме для
размещения памяти). Используя описанный
метод, можно без дополнительных модулей и
дешево, практически не изменяя железную
часть, реализовать криптографические
алгоритмы для идентификации или
использовать полученные данные для
генерации действительно случайных чисел.
|