La firma DSA del 'ssh-agent' è deterministica?

2

Nella mia speranza di utilizzare ssh-agent per generare una firma come password ho assunto implicitamente una firma deterministica. Tuttavia, il DSA dovrebbe prendere il valore casuale k per la firma . Tuttavia tale casualità è semplicemente necessaria per impedire agli aggressori di ottenere la chiave privata dalle firme dei messaggi diversi . Ho usato questo script Python (leggermente modificato l'output) a ottenere la firma di un messaggio di prova. Tuttavia, anche dopo aver ricollegato o riavviato ssh-agent (OpenSSH_4.6p1, OpenSSL 0.9.8e 23 febbraio 2007 da msysgit 1.7.11), la firma di quel messaggio rimane la stessa. Ma è un comportamento su cui posso fare affidamento o potrebbe cambiare a caso, ad es. quando si utilizza un diverso ssh-agent ?

    
posta Tobias Kienzler 29.10.2012 - 11:48
fonte

1 risposta

4

Non osservo questo comportamento qui. Uso ssh-agent dal pacchetto openssh-client di Ubuntu 12.04, ad esempio "OpenSSH_5.9p1 Debian-5ubuntu1, OpenSSL 1.0.1 14 marzo 2012". Ho modificato lo script Python per selezionare la mia chiave DSA invece della mia chiave RSA (hai fatto lo stesso?) E ottengo, come previsto, firme randomizzate (non è nemmeno necessario riavviare ssh-agent , due firme successive sono distinte). / p>

È è teoricamente possibile creare firme DSA deterministiche attraverso un processo noto come derandomization , che in pratica significa che il valore casuale k non è generato più a caso, ma con un determinismo PRNG seminato sia con il messaggio da firmare (o il suo hash) che con una chiave segreta (che può essere la chiave privata DSA stessa o una chiave simmetrica memorizzata lungo la chiave privata DSA, se c'è spazio per tale chiave extra). Ci sono alcune sottigliezze da ricordare, perché il valore k deve essere selezionato con una casualità uniforme imprevedibile. C'è un progetto di RFC su questo argomento, ma è ancora abbastanza nuovo: ho scritto la prima versione di marzo 2011. Non sono a conoscenza di nessun altro sforzo di standardizzazione sulla derandomizzazione di DSA o ECDSA. Di solito, quando un sistema di firma DSA sembra essere deterministico, è a causa di un difetto molto grave nel generatore di numeri casuali (come ad esempio Sony per le firme ECDSA utilizzate nel software PS3).

Sei sicuro di utilizzare davvero una chiave DSA? Una firma DSA ha una lunghezza di 40 byte in SSH (due interi a 160 bit, poiché SHA-1 è usato come funzione hash), mentre una firma RSA sarà più grande (128 byte per una chiave RSA a 1024 bit).

    
risposta data 29.10.2012 - 13:21
fonte

Leggi altre domande sui tag