Рейтинг:0

Как преобразовать ключ подписи nacl в ключ шифрования (NACL)

флаг us

Из-за предположения о совместной безопасности я хочу использовать одну и ту же пару ключей для подписи (ed22519) и обмена ключами шифрования (x25519).

Как я могу использовать один и тот же открытый ключ для моих nacl.box.keyPair и nacl.sign.keyPair?

Насколько я понимаю, это должно быть возможно, потому что оба находятся на одной кривой.

nacl, кажется, преобразует свой закрытый ключ ed22519, используя эту функцию:

  crypto_hash(d, sk, 32);
  д[0] &= 248;
  д[31] &= 127;
  д[31] |= 64;

Неудачная попытка

const nacl = требуется ('tweetnacl')

семя = nacl.randomBytes (32)

box_keypair = nacl.box.keyPair.fromSecretKey(secretKey)

k = новый Uint8Array(Buffer.concat([box_keypair.publicKey, box_keypair.secretKey]))
sign_keypair = nacl.sign.keyPair.fromSecretKey(k)

msg = nacl.randomBytes(32)
signed_msg = nacl.sign(msg, sign_keypair.secretKey)
verif = nacl.sign.open(signed_msg, sign_keypair.publicKey)
console.log(msg, signed_msg, verif) // ноль
```
kelalaka avatar
флаг in
Это не правильный подход. Ваш ключ подписи имеет длительный срок службы, с другой стороны, ключ x25519 должен генерироваться случайным образом при каждом обмене ключами, чтобы вы могли обмениваться эфемерными ключами, что требуется в TLS 1.3. Если вам действительно нужно, используйте `k` в обоих
dave_thompson_085 avatar
флаг cn
Это не работает И это плохая идея. См. https://crypto.stackexchange.com/questions/22850/why-does-nacl-have-different-keys-for-signing-and-encryption?rq=1 https://crypto.stackexchange.com/questions/ 54353/почему-являются-накл-секретные-ключи-64-байта-для-подписи-но-32-байта-для-бокса?rq=1 https://crypto.stackexchange.com/questions/13077/can-curve25519 -keys-be-used-with-ed25519-keys?noredirect=1&lq=1 https://crypto.stackexchange.com/questions/27866/why-curve25519-for-encryption-but-ed25519-for-signatures

Ответить или комментировать

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