Какова энтропия байтов XORed CSPRNG с низким энтропийным хешем? - PullRequest
0 голосов
/ 27 апреля 2018

Допустим, я взял 256 бит из CSPRNG и предположил, что это совершенно 256 бит энтропии. Назовите этот ранд.

Тогда, скажем, я взял sha256 текстового ASCII-пароля. Назовите этот хэш.

Теперь мы XOR rand и hash. Назовите это смешанным.

Смешанная энтропия меньше энтропии Рэнда?

Если да, то есть ли формула для расчета его энтропии?

Пример ниже: что такое энтропия смешанного в зависимости от ранда и слабого хэша

#!/usr/bin/python3
import hashlib, os

def main():
    rand = int(os.urandom(32).hex(),16)
    weak_hash = int(hashlib.sha256(b'password').digest().hex(),16)
    mixed = ("%064x" % (rand ^ weak_hash))
    print(mixed)

main()

1 Ответ

0 голосов
/ 28 апреля 2018

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

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

Таким образом, вывод (mixed) будет таким же случайным, как CSPRNG, пока CSPRNG не перейдет в ранее обнаруженное состояние. Это должно происходить в основном только в случае сбоя источника энтропии.

...