Детерминированное генерирование криптографически безопасных ключей и

Предпосылки

Я разрабатываю систему, которая позволяет разрабатывать схемы динамической аутентификации для пользователя статического веб-контента. Мотивация состоит в том, чтобы предварительно сгенерировать большие объемы сложного для создания, но конфиденциального веб-контента, а затем использовать его статически с аутентификацией на основе файлов cookie (встраивание обратимо зашифрованной информации), принудительно принудительно выполняемой веб-сервером. Использование примитива шифрования в режиме AEAD.

Проблема

Мне нужно сгенерировать IVEC и ключи, действительные в течение определенного периода времени, скажем, одну неделю (текущая-действительная пара). и что прошлые IVEC / Ключи также действительны в течение, скажем, 2 недель (исторически действительные), и любые данные, зашифрованные с помощью исторически действительных секретов, будут просто повторно зашифрованы с помощью текущего действительного IVEC / КЛЮЧА.

Что мне нужно, так это детерминированный CSPRNG, который заполняет случайное число и парольную фразу и может создавать индексированные 64-битные или 128-битные блоки чисел. Если я использую число недель после «1 января 1970 года» в качестве одного из элементов индекса моего гипотетического CSPRNG, я смогу построить систему, которая автоматически меняет ключи с течением времени.

Подход, который я рассматриваю

Сейчас я не вижу такой функциональности в cryptopp, или теперь я достаточно хорошо знаю терминологию, и поскольку cryptopp является самой продвинутой из библиотек шифрования, у меня нет уверенность, я найду другой. Итак, если я не могу найти там реализации, я должен попробовать свою собственную. Будет ли создание статической строковой структуры из объединенных данных и последующее ее хеширование (как показано ниже) сработает?

RIPEMD160 (RandomPreGeneratedFixedNonce: PassPhrase: UInt64SinceEpoch: 128BitBlockIndexNumber);

Примечание. Номера блоков будут назначены и имеют обычную структуру, поэтому, например, для 128-битного дайджеста первые 64-битные блоки блока 0 будут для ivec и весь элемент 1 для 128-битного ключа.

Это разумный подход (- например, криптографически безопасный)?

- edit: post accept comment -

После некоторого размышления я решил объединить то, что я изначально считал парольной фразой и одноразовым кодом / солью, в 16-байтовый (криптографически стойкий) ключ и использовать эти методы изложены в PKCS # 5 для получения нескольких ключей, основанных на времени. В соли нет необходимости, так как парольные фразы не используются.

12
задан Hassan Syed 8 December 2010 в 15:32
поделиться