Comentarios de pago cifrados
Resumen de los comentarios de pago cifrados y sus detalles técnicos relacionados con el cifrado simétrico y asimétrico.
Introducción al cifrado de comentarios
Como parte del protocolo de identidad de Celo, se almacena una clave de cifrado pública junto con la dirección de un usuario en el contrato Accounts
.
Tanto el par de claves de dirección como el par de claves de cifrado se derivan de la frase de respaldo. Cuando se envía una transacción, se obtiene la clave de cifrado del destinatario cuando se obtiene su dirección. El comentario se encripta usando un esquema de cifrado híbrido de 128 bits (ECDH en secp256k1 con AES-128-CTR). Este sistema asegura que los comentarios sólo pueden ser leídos por las partes que envían y reciben y que los mensajes serán recuperados cuando se restaure una billetera de su copia de seguridad.
Detalles técnicos del cifrado de comentarios
Una clave de sesión generada aleatoriamente de 128 bits, sk, se genera y se utiliza para cifrar simétricamente el comentario. sk está cifrado asimétricamente al remitente y al destinatario.
Encrypted = ECIES(sk, to=pubSelf) | ECIES(sk, to=pubOther) | AES(ke=sk, km=sk, comment)
Encriptación simétrica (AES-128-CTR)
- Toma la clave de cifrado, ke y clave MAC, km, y los datos para cifrar, texto plano
- Cifrado: AES-128-CTR usando un iv generado aleatoriamente
- Autenticar iv | ciphertext usando HMAC con SHA-256 y km
- Devolver iv | ciphertext | mac
Encriptación asimétrica \(ECIES\)
- Toma datos para encriptar, plaintext, y la clave pública del destinatario, pubKey To
- Genera un par de claves efemeral, ephemPubKey y ephemPrivKey
- Derive 32 bytes del material clave, k, de ECDH entre ephemPrivKey y pubKeyTousing ConcatKDF (especificado como NIST 800-56C Rev 1 One Step KDF) con SHA-256 para H(x)
- La clave de cifrado, ke, es los primeros 128 bits de k
- La tecla MAC, km, es SHA-256 de los 128 bits secundarios de k
- Cifrar el texto plano simétricamente con AES-128-CTR usando ke, km, y un iv aleatorio
- Retorna ephemPubKey | AES-128-CTR-HMAC(ke, km, plaintext) donde la clave pública necesita ser descomprimida (limitación actual con descifrado).