Newsgroup: it.comp.sicurezza.pgp
Titolo: Legenda output --gen-key in GPG

Ciao a tutti,
stavo guardando i sorgenti di GPG 1.2.6 per trovare il significato di 
quei . + e ^ che appaiono durante la generazione della chiave ma non ho 
trovato niente (di c ne sò fin là), qualcuno può illuminarmi? Solo per 
curiosità...
Altra cosa, sempre legendo qua e là ho trovato (in keygen.c):
else if( nbits > 4096 ) {
         /* It is ridiculous and an annoyance to use larger key sizes!
          * GnuPG can handle much larger sizes; but it takes an eternity
          * to create such a key (but less than the time the Sirius
          * Computer Corporation needs to process one of the usual
          * complaints) and {de,en}cryption although needs some time.
          * So, before you complain about this limitation, I suggest that
          * you start a discussion with Marvin about this theme and then
          * do whatever you want. */
tty_printf(_("keysize too large; %d is largest value allowed.\n"),4096); 
}
A me basterebbe togliere questo confronto e...
Chiavi grandi a piacimento, tipo 8192 bits???
(Che comunque non ci mettono un'eternità... :p)
Ecco che nasce Imad's GPG :pppp
Grazie
	Manuel

Si si funziona, se a qualcuno interessa, e modificando qua e la si 
riesce ad avere anche la chiave DSA grande a piacere...
Si tratta solo di escludere qualche controllo...
E credo che funzionerà pure perfettamente questa chiave, il team di GPG 
ha fatto proprio un buon lavoro! Hanno guardato al fututo :)
Ecco qua un esempio...
pub  2048D/E1C5E5FF 2004-11-10 TestKey
sig 3       E1C5E5FF 2004-11-10   TestKey
sub  6688g/8455EBC7 2004-11-10
sig         E1C5E5FF 2004-11-10   TestKey
sec  2048D/E1C5E5FF 2004-11-10 TestKey
sig 3       E1C5E5FF 2004-11-10   TestKey
ssb  6688g/8455EBC7 2004-11-10
sig         E1C5E5FF 2004-11-10   TestKey
Ho fatto qualche prova e sembra funzionare tutto, ovviamente però il 
processo è più lento :p
Ho notato che la lunghezza della firma è identica, ma questo è dovuto al 
fatto che è fissa nel DSA, mentre e variabile in base alla lunghezza 
della chiave in RSA, no?
Ciao Ciao
	Manuel

 della chiave in RSA, no?
IMHO, hai fatto un po' di confusione... DSA/ElG e RSA, sono due cose ben
distinte...
Premettendo che tutte le chiavi di cui parlerò sono composte di parte
privata e parte pubblica, prenderemo solo in considerazione la
composizione della parte privata per le firme e di quella pubblica per
la cifratura.
Procediamo.
La chiave RSA primaria, può essere utilizzata sia per cifrare che per
firmare. Nel caso siano presenti delle chiavi RSA secondarie, queste
possono essere utilizzate (in base alle loro caratteristiche) per
cifrare e/o firmare, al posto della RSA primaria.
Ogni chiave RSA primaria o secondaria, può avere una dimensione
arbitraria.
In questo caso, firme apposte con chiavi RSA di differenti dimensioni,
potrebbero avere dimensioni diverse.
La chiave DSA/ElG (altresì DH/DSS), invece, è necessariamente composta
di almeno due parti, una chiamata DSA (o DSS), utilizzata esclusivamente
per apporre le firme digitali e una parte ElG (o DH), utilizzata per la
cifratura.
Mentre la parte ElG può avere dimensione arbitraria, la parte DSA ha
sempre dimensione costante di 1024 bit.
Questo vuol dire che tutte le firme apposte da una chiave DSA/ElG,
saranno sempre apposte con una chiave di 1024 bit, qualsiasi sia, la
dimensione della parte ElG.
Ovviamente, anche in questo caso, ci possono essere delle chiavi
secondarie, sia ElG che DSA, ma le chiavi DSA, saranno, *sempre* e
comunque, di 1024 bit.
Spero di averti confuso ben bene le idee.  ^_^
Ciao,
un TJL73 distratto...
-- 
"Un problema e` un'occasione che ti viene offerta per fare meglio."
                                                       -- Duke Ellington

 Spero di averti confuso ben bene le idee.  ^_^
Uhm.. Non credo sia proprio così da quello che ho capito...
Qui (
http://www.scramdisk.clara.net/pgpfaq.html
), sotto "2.11. Why are 
DSS keys significantly smaller than DH keys?" non dice che deve avere 
sempre la dimensione di 1024 bits, perchè alla fin fine, anche se viene 
rotta, vengono compromesse solo le firme, ma il contenuto crittografato 
rimane sicuro appunto perchè crittato con la chiave ELG.
Credo sia una questione più di comodità allora, visto che la sicurezza 
fornita è gia alta, che serve rendere tutto più lento...
Ah si è perchè PGP/GPG implementa lo standard DSS che definisce 1024 
come lunghezza massima, ma non necessariamente è limitata a quella...
Poi dicono anche che se attaccano le funzioni di hashing, la chiave può 
essere lunga quanto si vuole che tanto non serve nulla :ppp
E sotto "2.3. What is DSS?" dicono:
'DSS employs the ElGamal and Schnorr PK systems to produce a fixed width 
signature (irrespective of the public/private key size). In contrast, 
RSA signature length is a function of the key length employed.'
Dovrebbe essere fissa perchè si utilizza lo standard DSS che impone al 
massimo 1024 bits come lunghezza della chiave, ma questo si estende 
anche a chiavi di lunghezza diversa??? Cioè nel mio caso ho la DSA lunga 
2048 bits mi dovrei aspettare una lunghezza superiore della firma o è 
proprio l'algoritmo che produce un output fisso?
Però pensando al funzionamento di PGP/GPG, del messaggio viene prodotto 
un digest il quale viene firmato con la chiave DSA, e se la chiave è più 
grande... Uhm... qualcosa non quadra nelle mie modifiche... :ppp
Grazie
	Manuel

 nel mio caso ho la DSA lunga 2048 bits
Non saprei... per quanto ne so io, la parte DSA, dovrebbe essere sempre
di 1024 bit... non so se poi, magari, creandone una più grande, ne viene
comunque utilizzata solo una parte (di 1024 bit).
Bisognerebbe dare un'occhiata alla RFC2440.
Tieni conto che, una chiave DSA da più di 1Kb potrebbe non essere
compatibile con gli altri programmi che rispettano l'OpenPGP.
Il perché si comporti così, però, non lo so...
Ciao,
un TJL73 che resta sintonizzato...
-- 
"Non ho la soluzione, ma ammiro il problema."
                                                   -- Ashleigh Brilliant

 compatibile con gli altri programmi che rispettano l'OpenPGP.
Al momento non mi importa della compatibilità, sto solo sperimentando 
:p, non mi metterò poi a distribuire una mia versione personalizzata di 
GPG, è tanto per vedere che si può fare :D
Comunque non mi rimane che studiarmi come funziona il DSA, dopo si potrò 
capire perchè ci sono queste limitazioni etc...
Grazie
	Manuel

Ho trovato già qualcosa sul suo funzionamento:
Key Generation:
- Choose an L-bit prime p, where 512 <= L <= 1024, and L is divisible by 64
- Choose a 160-bit prime q, such that p - 1 = qz, where z is any natural 
number
Se io prendo p con L > 1024 ottengo z proporzionale a questa mia scelta, 
visto che comunque q è limitato a 160 bits.
- Choose h, where 1 < h < p - 1 such that g = hz mod p > 1
Anche qui h è scelto proporzionale alla lunghezza di p, quindi anche g 
risulterà proporzionale.
- Choose x by some random method, where 0 < x < q
- Calculate y = gx mod p
x è "fisso", cioè limitato ai 160 bits di q, però y è comunque 
proporzionale a g, quindi a h e z, quindi a p.
- Public key is (p, q, g, y). Private key is x
- Note that (p, q, g) can be shared between different users of the 
system, if desired.
q, g e y sono tutti proporzionali a p... Da qua si vede che invece x ha 
lunghezza fissa, sarà per questo che per firmare DSA è più veloce di 
RSA, usando la chiave privata che è di "soli" 160 bits...
+++
Signing:
- Choose a random per message value s (called a nonce), where 1 < s < q
s è limitato ai 160 bits...
- Calculate s1 = (gs mod p) mod q
- Calculate s2 = (H(m) - s1*x)s-1 mod q, where H(m) is the SHA-1 hash 
function applied to the message m
- Signature is (s1,s2)
La lunghezza della firma dipende insomma da s1, in s2: H(m), x, s, q 
sono tutti di lunghezza fissa...
Qualcuno sa dirmi se s1 è di lunghezza fissa, quindi indipendentemente 
dalla lunghezza dalla chiave DSA, la firma risulterebbe sempre lunga 
uguale???
Io non vedo limitazioni distruttive alla lunghezza della chiave...
Nel DSS è solo una questione di standard, ma l'algoritmo dovrebbe 
funzionare bene comunque...
Grazie
	Manuel

 Io non vedo limitazioni distruttive alla lunghezza della chiave...
L'unica limitazione sembra i 160 bit di H(m).
q viene scelto da 160 bit perché il FIPS186-2 prevede che venga generato
usando l'SHA-1 per permettere a chiunque di poter verificare che le chiavi
sono valide e non artificiosamente scelte in modo da indebolire il sistema.
Cristiano

 sono valide e non artificiosamente scelte in modo da indebolire il sistema.
Grazie, proprio quello che volevo sapere.
Comunque sta schifezza di pseudo algoritmo l'ho trovata su
http://www.electricinca.com/56/annotations/dsa.htm
Magari la prossima volta č meglio se scelgo fonti piů sicure...
Avevo altre volte visto questo algoritmo, e mi sembrava scritto 
correttamente, scusate per le false informazioni.
Grazie
	Manuel

 Magari la prossima volta č meglio se scelgo fonti piů sicure...
Sě, te lo consiglio anch'io. :-)
Quel sito č una fetenzia, specialmente per come scrivono l'inverso: s-1 o
anche
w = (s2)-1 (mod q).
Poi a volte scrivono correttamente "(mod q)", altre volte non mettono le
parentesi, altre ancora mettono le parentesi quadre... Che casino! :-)
Cristiano