¿GPG y OpenSSH usan el estiramiento de teclas en sus pares de llaves?

6

Tanto OpenSSH como GPG pueden generar pares de claves que se almacenan como archivos en rutas conocidas dentro del directorio de usuarios. Siempre se solicita una frase de contraseña durante el proceso de generación, que luego se utiliza para cifrar el contenido de la clave privada mediante un algoritmo de cifrado simétrico.

Me gustaría saber si estos programas también aplican una técnica de estiramiento de teclas como PBKDF2 o scrypt a la frase de contraseña antes de usarla. Suponiendo que uno de estos archivos se haya comprometido alguna vez, me gustaría asegurarme de que obtener la clave de descifrado real demore entre 10 y 20 segundos en el hardware básico, lo que hace que los ataques de fuerza bruta sean impractibles por el momento. ¿Es eso posible?

    
pregunta Marcel Hernandez 24.03.2015 - 13:09
fuente

2 respuestas

2

OpenSSH

A partir de la versión 6.5, OpenSSH ofrece un nuevo formato de clave privada que admite el bcrypt KDF. El nuevo formato se puede aplicar al pasar el indicador -o a ssh-keygen . El número de rondas KDF se puede personalizar con el indicador -a .

$ ssh-keygen -o -a 1000

Referencias: ssh-keygen página de manual y Ted Unangst 'blog .

GPG

No pude encontrar nada equivalente a los indicadores de comando anteriores. Si lo hay, avíseme en los comentarios y actualizaré la respuesta.

    
respondido por el Marcel Hernandez 31.03.2015 - 12:20
fuente
2

OpenSSH - Line 3090:sshkey.c:sshkey_private_to_blob2

if (strcmp(kdfname, "bcrypt") == 0) {
        arc4random_buf(salt, SALT_LEN);
        if (bcrypt_pbkdf(passphrase, strlen(passphrase),
            salt, SALT_LEN, key, keylen + ivlen, rounds) < 0) {
            r = SSH_ERR_INVALID_ARGUMENT;
            goto out;
        }
        if ((r = sshbuf_put_string(kdf, salt, SALT_LEN)) != 0 ||
            (r = sshbuf_put_u32(kdf, rounds)) != 0)
            goto out;
    } else if (strcmp(kdfname, "none") != 0) {
        /* Unsupported KDF type */
        r = SSH_ERR_KEY_UNKNOWN_CIPHER;
        goto out;
    }

GPG le permite elegir el algoritmo de hash que desee, siempre y cuando sea compatible con la GCrypt Library .

  

algoritmos hash (MD4, MD5, RIPE-MD160, SHA-1, SHA_224, SHA-256,   SHA-384, SHA-512, TIGER-192, Whirlpool), MAC (HMAC para todo hash   algoritmos),

PKCS8 RFC5208 Sección 1

  

Un algoritmo de cifrado basado en contraseña (por ejemplo, uno de los descritos en   [PKCS # 5]) podría usarse para cifrar la información de clave privada.

PKCS5 RFC2898 solo tiene PBKDF1 y PBKDF2 para las funciones de derivación clave.

    
respondido por el RoraΖ 24.03.2015 - 16:27
fuente

Lea otras preguntas en las etiquetas