JavaScript window.crypto.getRandomValues ​​безопасно использовать для AES? - PullRequest
0 голосов
/ 24 апреля 2020

Безопасно ли window.crypto.getRandomValues использовать в качестве секретного ключа для шифрования AES?

Это мой код для генерации секретного ключа:

        let key = "";
        var array = new Uint32Array(10);
        window.crypto.getRandomValues(array);
        for(let num of array){
          key += num.toString();
        }
        key = key.substring(0, 20);

РЕДАКТИРОВАТЬ Вот ответ

Не используйте getRandomValues ​​() для генерации ключей шифрования. Вместо этого используйте метод generateKey (). Есть несколько причин для этого; например, getRandomValues ​​() не гарантированно работает в безопасном контексте. Не существует минимальной степени энтропии, предписанной спецификацией веб-криптографии. Вместо этого пользовательским агентам настоятельно рекомендуется обеспечивать наилучшую энтропию, которую они могут при генерации случайных чисел, используя четко определенный, эффективный генератор псевдослучайных чисел, встроенный в сам пользовательский агент, но затравленный значениями, взятыми из внешнего источника псевдослучайных чисел, такого как Платформо-специфическая c функция случайных чисел, устройство Unix / dev / urandom или другой источник случайных или псевдослучайных данных.

...