GPG e OpenSSH usano la chiave che si estende sui loro keypair?

6

Sia OpenSSH che GPG possono generare coppie di chiavi che vengono memorizzate come file in percorsi ben noti all'interno della directory dell'utente. Viene sempre richiesta una passphrase durante il processo di generazione, che viene quindi utilizzato per crittografare il contenuto della chiave privata utilizzando un algoritmo di crittografia simmetrica.

Mi piacerebbe sapere se questi programmi applicano anche una tecnica di allungamento chiave come PBKDF2 o scrypt al passphrase prima di usarlo. Supponendo che uno di questi file sia mai stato compromesso mi piacerebbe essere sicuro che ricavare la vera chiave di decrittazione impieghi circa 10-20 secondi sull'hardware di base, rendendo quindi gli attacchi bruteforce non fattibili per il momento. È anche possibile?

    
posta Marcel Hernandez 24.03.2015 - 13:09
fonte

2 risposte

2

OpenSSH

A partire dalla versione 6.5 OpenSSH offre un nuovo formato di chiave privata che supporta il bcrypt KDF. Il nuovo formato può essere applicato passando il flag -o a ssh-keygen . Il numero di round KDF può essere personalizzato con il flag -a .

$ ssh-keygen -o -a 1000

Riferimenti: ssh-keygen pagina man e blog di Ted Unangst .

GPG

Non ho trovato nulla di equivalente ai precedenti flag di comando. Se c'è, fammelo sapere nei commenti e aggiornerò la risposta.

    
risposta data 31.03.2015 - 12:20
fonte
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 ti consente di scegliere quale algoritmo di hashing desideri, purché sia supportato dalla libreria GCrypt .

hash algorithms (MD4, MD5, RIPE-MD160, SHA-1, SHA_224, SHA-256, SHA-384, SHA-512, TIGER-192, Whirlpool), MACs (HMAC for all hash algorithms),

PKCS8 RFC5208 Sezione 1

A password-based encryption algorithm (e.g., one of those described in [PKCS#5]) could be used to encrypt the private-key information.

PKCS5 RFC2898 ha solo PBKDF1 e PBKDF2 elencati per le funzioni di derivazione della chiave.

    
risposta data 24.03.2015 - 16:27
fonte

Leggi altre domande sui tag