Я хочу выяснить, достигают ли два метода, показанные ниже, одинакового уровня энтропии.
Для этого первого безопасного метода 32-байтовый / 256-битный ключ и 12-байтовый / 96-битный одноразовый номер генерируются с использованием JavaScript Web Crypto API, который гарантированно генерирует криптостойкие случайные значения.
Поэтому мы можем подтвердить, что ключ и одноразовый номер содержат максимальную энтропию для их соответствующие размеры.
function generateSecureKeyNoncePair() {
const keyBytes = new Uint8Array(32); // Buffer for random values
crypto.getRandomValues(keyBytes);
const nonceBytes = new Uint8Array(12); // Buffer for random values
crypto.getRandomValues(nonceBytes);
return {
keyBytes,
nonceBytes
};
}
const { keyBytes, nonceBytes } = generateSecureKeyNoncePair();
console.log(keyBytes);
console.log(nonceBytes);
Далее, вдохновленные https://developer.blockchaincommons.com/bytewords/, у нас есть еще одна функция, которая выбирает 11 четырехбуквенных слов из списка слов и разрезает первые 8 слов для ключа и оставшиеся 3 слова для nonce.
Причина список слов из 256 четырехбуквенных слов заключается в том, что эти слова можно преобразовать в Uint8Array, а затем Uint8Array можно преобразовать в Uint32Array, который можно использовать в состоянии ChaCha20.
Мой вопрос: независимо от того, насколько удобна для пользователя эта функция, я наивен, предполагая, что она достигает того же уровня энтропии, что и первая функция? Я спрашиваю, потому что не могу не думать, что список слов содержит слова, являющиеся частью английского алфавита, состоящего всего из 26 букв, в отличие от Uint8Array, заполняемого функцией crypto.getRandomValues() длиной 256 байт.
Я хочу выяснить, достигают ли два метода, показанные ниже, одинакового уровня энтропии. Для этого первого безопасного метода 32-байтовый / 256-битный ключ и 12-байтовый / 96-битный одноразовый номер генерируются с использованием JavaScript Web Crypto API, который гарантированно генерирует криптостойкие случайные значения. Поэтому мы можем подтвердить, что ключ и одноразовый номер содержат максимальную энтропию для их соответствующие размеры.
[code]function generateSecureKeyNoncePair() {
const keyBytes = new Uint8Array(32); // Buffer for random values crypto.getRandomValues(keyBytes);
const nonceBytes = new Uint8Array(12); // Buffer for random values crypto.getRandomValues(nonceBytes);
Далее, вдохновленные https://developer.blockchaincommons.com/bytewords/, у нас есть еще одна функция, которая выбирает 11 четырехбуквенных слов из списка слов и разрезает первые 8 слов для ключа и оставшиеся 3 слова для nonce. Причина список слов из 256 четырехбуквенных слов заключается в том, что эти слова можно преобразовать в Uint8Array, а затем Uint8Array можно преобразовать в Uint32Array, который можно использовать в состоянии ChaCha20.
Мой вопрос: независимо от того, насколько удобна для пользователя эта функция, [b]я наивен, предполагая[/b], что она достигает того же уровня энтропии, что и первая функция? Я спрашиваю, потому что не могу не думать, что список слов содержит слова, являющиеся частью английского алфавита, состоящего всего из 26 букв, в отличие от Uint8Array, заполняемого функцией crypto.getRandomValues() длиной 256 байт.