Security info 2002 Vol. Bonus
1) Huffman Cifrature | e4m
Questo volume non era stato stabilito! Ma cio' pensato e Huffman mi ha salvato! Posso descrivervi un grandissimo algoritmo!.. Codificare un testo significa sostituire ciascuna parola (o carattere) del testo originario con la corrispondente parola di codice presente nella tabella del codice. Un codice e' univocamente decodificabile se e possibile decodificare ogni carattere del testo in input in modo univoco. Nell'ambito dei codici univocamente decodificabili e' possibile riconoscere i codici prefissi. Un codice e' prefisso se e' possibile decodificare correttamente una parola di codice non appena essa e' riconosciuta nel testo codificato T, poichè nessuna parola di codice è prefisso di un'altra parola di codice. In generale una parola W e' prefisso di un'altra parola W' se W' = Wa. Di seguito e' mostrato un esempio di codice prefisso a lunghezza variabile
Carattere Parola codice
A 00
B 01
C 10
D 110
E 111
Se il testo codificato e' T = 0001111, allora scorrendo T si riconosce dapprima il carattere A, quindi, il carattere B ed infine il carattere E, per cui il testo decodificato sara' ABE. Una codifica, d'altronde, e' una regola che associa ad ogni carattere (o parola) del testo una parola di codice. Supponiamo di avere a che fare con un testo su di un file: ogni carattere viene rappresentato da una stringa di 8 bit, quindi se riuscissimo a codificare un carattere utilizzando meno di otto bit, sarebbe possibile diminuire lo spazio occupato dal testo originale. Utilizzando i concetti di entropia e ridondanza e' stato possibile sviluppare algoritmi capaci di risalire alla codifica di un carattere, conoscendone il numero di occorrenza in un dato testo in modo tale da ridurre la taglia complessiva del testo stesso. Ho trovato un algoritmo (proposto da C. Shannon e R. M. Fano) che e' in grado di trovare questa scringe e comprimere. Ecco la procedura di creazione del codice che ho trovato!:
ShannonFanoCode(L)
if |L| == 1 then
return 0
if |L| >= 2 then
"dividere L in due sottoliste L1 ed L2 , considerando le coppie
nell'ordine in cui si presentano in L1 , in modo tale che la
differenza tra (x,n) n e (x,n) n sia minima"
"aggiungere uno 0 alla parola di codice wx per tutti i caratteri x : (x,n) L1"
"aggiungere uno 1 alla parola di codice wx per tutti i caratteri x : (x,n) L2"
if |L1| == 1 then
return wx
else
ShannonFanoCode(L1)
if |L2| == 1 then
return wx
else
ShannonFanoCode(L2)
Vi faccio vedere ora cosa centra Huffman . L'albero di Huffman e' costruito cosi': (tenete in mente sempre la tabella Carattere-parola codice)
Carattere Codifica
A 0
B 100
C 101
D 110
E 111
Non sono un artista ma ci provero'..
+------+ 39
0 / +
/ |1
/ |
15 A |
+- 24 -+
/ \
/ \
/ \
13 11
0 / \ 1 0 / \ 1
/ \ / \
B C D E
7 6 6 5
Corrisponde alla tabella vero? :) Quindi abbiamo visto come l'algoritmo di Huffman esegua una compressione dati! Non vado avanti perche dovrei parlare di Sibling! Bhe non so nulla! In pratica e' una proprieta' che gode un binario! Ma non c'interessa!
3) Chiudere in bellezza| e4m
Ci avete capito qualcosa?Io no! uhuh, Comunque l'importante e' che vi sia piaciuto! Con l'ausilio del mio amichetto sla! Si effettivamente lo ho un po sfruttato Thz :* .. eheh Ora e' finito finalmete!
Ringrazio nuovamente slash per il suo programma e il suo tocco di basic con l'anonimita'! Vi auguro una buona hakerata (anonimi!!)
Consumo: -Un cesso-mp3-pettine-dublo-slash- !
Chiudere in bellezza? Sisi ..
Vi spiego come funziona il MIme e un altra botta sul Pgp! Felici?
La differenza fondamentale tra i due sistemi e' che mentre il primo utilizza una gestione "utente-centrica" delle chiavi pubbliche (il cosidetto web of trust), il secondo impiega una struttura gerarchica di certificazione (le Certification Authorities o CA). Ma non ce ne frega piu di tanto! Ora c'e' da capire una cosa che prima ho mancato. I certificati! Che servono per verificare l'identita' dei corrispondenti: tra le altre informazioni contengono la loro chiave pubblica e sono firmati da un agente di cui le parti si fidano e che garantisce in questo modo la loro identita'. Questo agente viene detto Certificate Authority (CA). In genere i certificati dovrebbero seguire lo standard X.509. (ho letto da una parte!) PGP Pretty Good Privacy (PGP) e' un programma di crittografia a chiave pubblica che utilizza RSA, IDEA e MD5 per firmare e crittografare i messaggi.
Si basa su due RFC:
PGP Message Exchange Formats,
MIME Security with Pretty Good Privacy.
S/MIME S/MIME (Secure/Multipurpose Internet Mail Extensions) e' una proposta di standard per la crittografazione e firma dei messaggi di posta elettronica. Utilizza RSA, RC2 e MD5 La versione 2 e' descritta in due documenti:
S/MIME Version 2 Message Specification.
S/MIME Version 2 Certificate Handling.
Credo di essere stato esaudiente alla prossima Byez!!!
e4m
Tezkatlipoka@libero.it
Www.bfc.too.it
wWW.e4m.linuX-duDe.cOm