Современное шифрование привязано к генераторам случайных чисел (ГСЧ). И стойкость шифрования данных напрямую зависит от работы ГСЧ, даже в тех схемах, где нет использования временных ключей (сессионных, эфемерных).
При шифровании одного и того же сообщение на выходе должен получаться разный шифротекст. Даже если шифрование сообщения происходит одновременно на совершенно разных устройствах, никак между собой не связанных и не синхронизирующих часы с какой-либо службой.
Это требование стало базовым в криптографии не так давно. И позволило уйти от ситуации, когда раскрытие исходного текста посланий ставило под удар ключи шифрования. Тем самым, имея на руках зашифрованное сообщение и зная исходный текст невозможно упростить взлом ключа шифрования.
Как это работаетОфициальные документы часто содержат в начале более чем стандартный текст. Например, перечисление регалий и ФИО тех, кому текст адресован. Порой настолько длинные и однообразные в повседневной переписке, что догадаться о них не представляет проблемы.
По этой причине, честный и полноценный ГСЧ необходим. Одно из наиболее простых объяснений:
Если используется потоковый шифр или блочный в режиме потокового, то так же есть необходимость инициализации случайным набором данных.
Эти случайные данные становятся частью передаваемого сообщения, но отбрасываются при расшифровывании.
Суть проблемыМахинации с ГСЧ позволяют создавать иллюзию безопасного шифрования у пользователей криптографии. Раскрывая исходный код и показывая как именно работает программа, что никакие ключи нигде не сохраняет и никому не передаёт.
Каждая ОС по-своему решает вопрос сбора и накопления случайных данных, реализуя на свой лад источники энтропии. Один из примеров такой подсистемы хорошо известен и вошёл даже ядра #linux.
Как это решается?Доверять можно лишь использованию аппаратного ГСЧ внутри USB Security Token или специальной PCI-платы вставляемой в компьютер. Вещь очень давно известная и начиналось ещё с ISA-плат.
Основное назначение тоже самое, что и у Security Boot — контроль доверенной загрузки компьютера. После включения плата перехватывает управление и проверяет содержимое файлов на заданных носителях данных (HDD, SSD, NVMe). Аппаратный ГСЧ является лишь дополнительной функциональностью у таких ПАК доверенной загрузки.
Для обывателя же достаточно и аппаратного генератора случайных чисел внутри USB Security Token.