В течение многих лет действительно случайные числа в масштабе были неуловимы.
Нет, это 100% реклама. Генерация случайных чисел проста. Для этого существует множество известных техник. «Масштаб» не является проблемой в отношении количества случайных чисел, потому что «настоящая» случайность нужна только для того, чтобы запустить криптографически безопасный генератор псевдослучайных чисел (CSPRNG). Вывод CSPRNG неотличим от истинно случайного.
Мой первый вопрос: каковы трудности, связанные с генерацией истинных случайных чисел? Стоимость, практические аспекты, такие как энергопотребление?
Одна из трудностей со случайной генерацией заключается в том, что для нее требуется специальное оборудование, которое стоит значительную долю цента для массового производства. Это касается устройств, цена которых составляет порядка цента за единицу. В настоящее время эта трудность в значительной степени решена: цена снизилась по сравнению с тем, что было примерно десять лет назад, и многие дешевые микроконтроллеры включают в себя TRNG.
Между прочим, генерация случайных чисел за счет джиттера процессора и памяти — хорошо известный метод, который нельзя использовать в очень дешевых устройствах, потому что они слишком медленные и стабильные. И это не очень полезный метод на больших устройствах, потому что для них дополнительные затраты на выделенный TRNG незначительны. Например, все современные процессоры ПК и смартфонов включают в себя выделенный TRNG.
Энергопотребление не является большой проблемой, поскольку TRNG должен работать только в течение очень короткого промежутка времени. Задержка может быть проблемой при загрузке процессора.
Как разработчик встроенных систем, который мало что знает о том, как работает аппаратное обеспечение (моя работа строго связана с программным и системным уровнями), улучшения, которые я хотел бы видеть в аппаратной случайной генерации, должны быть дешевле для массового производства. (чтобы они были на каждом устройстве), чтобы иметь меньшую задержку и быть более устойчивым к возмущениям окружающей среды (например, колебаниям температуры и мощности).
Но на практике самая большая проблема со случайной генерацией кроется не в железе. Именно в программной экосистеме возникают проблемы с соединением всех этапов между проектированием аппаратного обеспечения и проектированием приложения. Проблема заключается в операционных системах и интерфейсах языков программирования, где получить небезопасные случайные числа легко, но получить безопасные случайные числа сложно. Проблема заключается в неправильно настроенных системах и приложениях, которые прошли функциональные тесты, но не прошли надлежащую проверку безопасности.
Второй вопрос: Что и кто может быть арбитром истинной случайности? т. е. кто решает, что это конкретное число действительно случайно сгенерировано?
Поскольку вы не можете сказать, насколько случайно число, глядя на число, вы должны посмотреть на процесс, с помощью которого число генерируется.