Ir al contenido

Keypairs y firma

kovra puede custodiar un keypair asimétrico: genera la clave, sella la mitad privada bajo la master key del vault y nunca escribe la clave privada en disco ni la imprime. Se opera a través de kovra — firmando, verificando, cifrando, descifrando — sin que la clave privada salga jamás del vault.

kovra keygen crea la clave y muestra solo la mitad pública. Elegir ed25519 (firma y cifrado) o rsa (solo firma/SSH):

zsh
~ % kovra keygen secret:dev/ssh/deploy --type ed25519
Generated dev/ssh/deploy (ed25519, Medium).
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDnM/+Nl+/2Y/uEZNK5Q7ZEdQEMmOGXB6PTQg2hWJaSw

La entrada se lista con un modo tipado de keypair:ed25519. Reimprimir la clave pública en cualquier momento — esto es gratis y nunca pide confirmación:

zsh
~ % kovra pubkey secret:dev/ssh/deploy
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDnM/+Nl+/2Y/uEZNK5Q7ZEdQEMmOGXB6PTQg2hWJaSw

kovra sign firma datos desde un archivo o desde stdin; la firma va a stdout. kovra verify la comprueba. Firmar con una clave high/prod pide hacer bioProve; verificar es siempre gratis:

zsh
~ % printf 'release v1.2.3' | kovra sign secret:dev/ssh/deploy > sig.bin
zsh
~ % printf 'release v1.2.3' | kovra verify secret:dev/ssh/deploy --signature sig.bin
OK: signature is valid

La verificación también funciona contra una entrada solo-pública — la clave pública de un par que se almacenó con kovra add --public-key (no contiene mitad privada), de modo que se pueden verificar las firmas de un colega sin su clave privada.

Para un keypair ed25519, kovra también puede cifrar hacia la clave pública y descifrar con la clave privada (una caja sellada basada en age). Cifrar es gratis; descifrar con una clave high/prod pide hacer bioProve:

zsh
~ % printf 'a short secret note' | kovra encrypt secret:dev/ssh/deploy > ct.bin
zsh
~ % kovra decrypt secret:dev/ssh/deploy ct.bin
a short secret note

Los keypairs RSA firman y verifican (y funcionan como claves SSH) pero no soportan cifrado — usar ed25519 cuando se necesite sellado.

La clave privada se genera dentro del vault y nunca se materializa en disco ni en el shell. Un agente o un script puede pedirle a kovra que use la clave — firmar un release, abrir un mensaje sellado — pero no puede exfiltrarla, y cada uso de una clave sensible queda gobernado y auditado. Para cargar una clave en una sesión SSH, ver el ssh-agent gobernado.