6.6. Public Key Algorithms (Algoritmi a chiave pubblica)
6.6. Public Key Algorithms (Algoritmi a chiave pubblica)
Questo protocollo è stato progettato per funzionare con quasi qualsiasi formato di chiave pubblica, codifica e algoritmo (firma e/o crittografia).
Ci sono diversi aspetti che definiscono un tipo di chiave pubblica:
-
Formato della chiave: come viene codificata la chiave e come vengono rappresentati i certificati. I blob di chiave in questo protocollo POSSONO contenere certificati oltre alle chiavi.
-
Algoritmi di firma e/o crittografia: Alcuni tipi di chiave potrebbero non supportare sia la firma che la crittografia. L'uso della chiave può anche essere limitato da dichiarazioni di policy (ad esempio, nei certificati). In questo caso, DOVREBBERO essere definiti tipi di chiave diversi per le diverse alternative di policy.
-
Codifica delle firme e/o dei dati crittografati: Questo include ma non è limitato a padding, ordine dei byte e formati dei dati.
I formati di chiave pubblica e/o certificato attualmente definiti sono i seguenti:
ssh-dss REQUIRED sign Chiave DSS grezza
ssh-rsa RECOMMENDED sign Chiave RSA grezza
pgp-sign-rsa OPTIONAL sign Certificati OpenPGP (chiave RSA)
pgp-sign-dss OPTIONAL sign Certificati OpenPGP (chiave DSS)
Tipi di chiave aggiuntivi possono essere definiti, come specificato in [SSH-ARCH] e in [SSH-NUMBERS].
Il tipo di chiave DEVE essere sempre esplicitamente noto (dalla negoziazione dell'algoritmo o da qualche altra fonte). Normalmente non è incluso nel blob della chiave.
I certificati e le chiavi pubbliche sono codificati come segue:
string identificatore del formato del certificato o della chiave pubblica
byte[n] dati della chiave/certificato
La parte del certificato può essere una stringa di lunghezza zero, ma è richiesta una chiave pubblica. Questa è la chiave pubblica che verrà utilizzata per l'autenticazione. La sequenza di certificati contenuta nel blob del certificato può essere utilizzata per fornire autorizzazione.
I formati di chiave pubblica/certificato che non specificano esplicitamente un identificatore di formato di firma DEVONO utilizzare l'identificatore di formato di chiave pubblica/certificato come identificatore di firma.
Le firme sono codificate come segue:
string identificatore del formato della firma (come specificato dal formato chiave pubblica/certificato)
byte[n] blob della firma in codifica specifica del formato
Le specifiche di codifica dettagliate per i formati di chiave "ssh-dss" e "ssh-rsa" possono essere trovate nei documenti di specifica completi.