Какой хороший источник энтропии доступен на смартфоне? - PullRequest
4 голосов
/ 22 декабря 2010

Я думаю об этом в контексте , сколько (кБ / с) криптографически безопасной энтропии может быть сгенерировано смартфоном . Для примера приложения: приложение VoIP, которое постоянно генерирует новые ключи шифрования.

Вещи, которые я могу придумать от руки: - камеры - микрофоны - акселерометры - магнитометр - сенсорный экран - уровень сигнала и время для вызовов, WiFi, Bluetooth и т. д.

Очевидно, что каждый из них будет генерировать различное количество сигнала (предсказуемые данные) и шума (требуемая энтропия), но при соответствующем сочетании это должно быть хорошо.


Кроме того, если кто-либо имеет какие-либо оценки количества энтропии, которые различные источники будут производить при нормальных условиях, которые также будут представлять интерес.

1 Ответ

8 голосов
/ 22 декабря 2010

Обычный ответ таков: вам не нужна большая энтропия.128 бит достаточно;как только у вас есть 128 действительно случайных битов, вы можете использовать их в криптографически безопасном генераторе псевдослучайных чисел (PRNG), который будет генерировать столько случайных битов, сколько вам нужно, с высокой скоростью, ограниченной только локальной вычислительной мощностью (насмартфон, пропускная способность PRNG будет в мегабайтах в секунду, а не в килобайтах в секунду.

Непрерывный сбор энтропии является скорее фетишем, чем научной, рациональной потребностью.Некоторые говорят, что получение «истинного» случайного числа защищает вас от любых будущих криптоаналитических нарушений в PRNG;но этот аргумент верен только в том случае, если вы можете получить свежие равномерно случайные биты (чего не происходит на практике: вам нужно применить хеш-функцию для сглаживания собранного «шума») и , если вы используете случайные битынапрямую, а не как ключи в алгоритме шифрования.Более убедительные аргументы в пользу непрерывного сбора энтропии можно привести в отношении хранения семян: страх, что злоумышленник, овладев PRNG, сможет посмотреть на его внутренности, восстановить внутреннее состояние и задним числом угадать случайные биты, которые были ранееизлучается.Хороший PRNG защищает от этого.По крайней мере, вы можете повторно заполнять 128 новыми битами в секунду, что является низким показателем.

При этом, если вам нужна энтропия, камера телефона, вероятно, является лучшим источником для использования, потому что ПЗСДетектор очень чувствителен к тепловыделенному шуму и выдает данные с очень высокой пропускной способностью.Одно изображение базовой камеры телефона легко может содержать данные в мегабайтах, и, даже если телефон находится в холодильнике с пониженной тональностью, у вас все равно будет шум на тысячи бит (только одна тысяча бит означает, что по сравнению смиллион пикселей, 99,9% - «идеальное», что-то нелепое в телефоне за 400 долларов - инженеры NASA не могут сделать это с космическими зондами, которые стоят в миллион раз дороже).

Так что просто сделайте снимок, хэшэто с любой удобной хэш-функцией (например, SHA-256), и вуаля!у вас есть 256 бит энтропии, которые вы используете в PRNG.Если через некоторое время вы действительно нервничаете из-за PRNG, просто сделайте еще один снимок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...