Совершенно случайная одноразовая прокладка для шифрования

StackOverflow https://stackoverflow.com/questions/4672348

Вопрос

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

Есть ли существующий, надежный инструмент или библиотека, которую я могу использовать для этого?

Это было полезно?

Решение

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

Другие советы

В большинстве современных операционных систем есть Криптографически-защитный псевдолупольный генератор номеров.

Например, у Windows есть Cryptgenrandom. Анкет Вы можете получить доступ к тому же потоку из .net, используя Rngcryptoserviceprovider учебный класс. Из C ++ вы можете получить доступ к тому же потоку, используя функцию библиотеки Microsoft C ++ rand_s. Анкет Из Python он доступен с помощью функции Урандом (См. Внизу связанной страницы) в модуле ОС.

В отличие от нормальных PRNG, CSPRNG предназначены для прохождения строгих статистических тестов случайности. Они также предназначены для того, чтобы хорошо держаться под серьезной атакой, даже когда их первоначальное или управляемое состояние становится доступным для злоумышленника.

Термин «псевдолуркий», используемый криптографами, может вводить в заблуждение нетехническому читателю. CSPRNG расширяет коллекцию случайных значений, известных как семя, в более длинную последовательность чисел. Эта последовательность воспроизводима, учитывая семя, но для любого хорошего CSPRNG незначительное изменение семян дает совершенно другую последовательность. Следовательно, до тех пор, пока, по крайней мере, какая -то часть семян выбирается через адекватно случайный процесс, злоумышленник не может предсказать полученную последовательность - даже если злоумышленник может влиять на оставшуюся часть семян.

Многочисленные важные системы, начиная от военных коммуникаций до шифрования, которое защищает практически все онлайн-транзакции, полагаются на функционально-эквивалентную безопасность между «криптографически-заселенным псевдолудочным» и «случайным».

РЕДАКТИРОВАТЬ: Если вам повезло работать с диапазоном процессоров Intel Bridge, у вас теперь есть Еще одна очень интересная альтернатива.

Вы не можете генерировать по -настоящему случайные числа алгоритмически - вам нужна помощь в оборудовании. Если вы используете алгоритм, однако безопасный (например, криптографически безопасный PRNG), вы просто создаете шифр потока на основе этого PRNG; Это больше не одноразовая площадка.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top