128
Una nuova crittografia frattale - classe Crypt::FNA Mario Rossano aka Anak [email protected]Netlogica Software Lab – community Perl.it

Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Embed Size (px)

DESCRIPTION

Slide del talk tenuto il 24 marzo 2012 presso la Facoltà di Ingegneria dell'Università Roma Tre, durante l'evento Codemotion 2012 (www.codemotion.it).Il talk riguarda la classe Perl, disponibile su CPAN, Crypt::FNA, suoi metodi ed attributi. Una parte rilevante della presentazione riguarda la descrizione dell'algoritmo generatore dell'insieme di curve frattali {F} e dell'algoritmo crittografico.

Citation preview

Page 1: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Una nuova crittografia frattale - classe Crypt::FNA

Mario Rossano aka Anak

[email protected] – Netlogica Software Lab – community Perl.it

Page 2: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNA

• Sezione 1: Definizione dell’insieme {F}

Mario [email protected]; Perl.it

Page 3: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNA

• Sezione 1: Definizione dell’insieme {F}

• Sezione 2: Algoritmo crittografico FNA

Mario [email protected]; Perl.it

Page 4: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNA

• Sezione 1: Definizione dell’insieme {F}

• Sezione 2: Algoritmo crittografico FNA

• Sezione 3: Classe Crypt::FNA

Mario [email protected]; Perl.it

Page 5: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNA

• Sezione 1: Definizione dell’insieme {F}

• Sezione 2: Algoritmo crittografico FNA

• Sezione 3: Classe Crypt::FNA

• Sezione 4: Classe Crypt::FNA::Async

Mario [email protected]; Perl.it

Page 6: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNA

• Sezione 1: Definizione dell’insieme {F}

• Sezione 2: Algoritmo crittografico FNA

• Sezione 3: Classe Crypt::FNA

• Sezione 4: Classe Crypt::FNA::Async

• Sezione 5: Applicazioni

Mario [email protected]; Perl.it

Page 7: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNA

• Sezione 1: Definizione dell’insieme {F}

• Sezione 2: Algoritmo crittografico FNA

• Sezione 3: Classe Crypt::FNA

• Sezione 4: Classe Crypt::FNA::Async

• Sezione 5: Applicazioni

• Sezione 6: Considerazioni

Mario [email protected]; Perl.it

Page 8: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNA

• Sezione 1: Definizione dell’insieme {F}

• Sezione 2: Algoritmo crittografico FNA

• Sezione 3: Classe Crypt::FNA

• Sezione 4: Classe Crypt::FNA::Async

• Sezione 5: Applicazioni

• Sezione 6: Considerazioni

• Sezione 7: Conclusioni

Mario [email protected]; Perl.it

Page 9: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNA

Sezione 1: Definizione dell’insieme {F}

Mario [email protected]; Perl.it

Page 10: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNASezione 1: Definizione dell’insieme {F}

FNA -> Acronimo di Fractal Numerical Algorithm

definisce l’insieme di curve frattali {F}

Mario [email protected]; Perl.it

Page 11: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNASezione 1: Definizione dell’insieme {F}

Partiamo da frattali lineari come la Koch curve

Mario [email protected]; Perl.it

Page 12: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNASezione 1: Definizione dell’insieme {F}

Partiamo da frattali lineari come la Koch curve

Direzioni dei vari ordini:

0

0, 60, -60, 0

0, 60, -60, 0, 60, 120, 0, 60, -60, 0, -120, -60, 0, 60, -60, 0

Direzioni dei vari ordini:

0

0, 60, -60, 0

0, 60, -60, 0, 60, 120, 0, 60, -60, 0, -120, -60, 0, 60, -60, 0

Mario [email protected]; Perl.it

Page 13: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNASezione 1: Definizione dell’insieme {F}

Partiamo da frattali lineari come la Koch curve

Direzioni dei vari ordini:

0

0, 60, -60, 0

0, 60, -60, 0, 60, 120, 0, 60, -60, 0, -120, -60, 0, 60, -60, 0

Direzioni dei vari ordini:

0

0, 60, -60, 0

0, 60, -60, 0, 60, 120, 0, 60, -60, 0, -120, -60, 0, 60, -60, 0

La cosa che a noi interessa è che ogni numero della costruzione triangolare è ottenuta come combinazione delle quantità al rigo superiore

Mario [email protected]; Perl.it

Page 14: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNASezione 1: Definizione dell’insieme {F}

Partiamo da frattali lineari come la Koch curve

Direzioni dei vari ordini:

0

0, 60, -60, 0

0, 60, -60, 0, 60, 120, 0, 60, -60, 0, -120, -60, 0, 60, -60, 0

Direzioni dei vari ordini:

0

0, 60, -60, 0

0, 60, -60, 0, 60, 120, 0, 60, -60, 0, -120, -60, 0, 60, -60, 0

osserviamo che possiamo esprimere la proprietà di auto-similitudine della curva di Koch grazie ad una costruzione simile, combinando tra loro i valori della base e poi con quelli derivati dalla combinazione e così via iterando il procedimento.

Mario [email protected]; Perl.it

Page 15: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNASezione 1: Definizione dell’insieme {F}

Scrivendo la successione delle direzioni come gli elementi di un vettore leggiamo la proprietà principale della costruzione: il primo addendo è il ramo su cui si itera il procedimento di costruzione. Il secondo addendo è la posizione della direzione che stiamo calcolando, nell’ambito di quel ramo.

a(0) = a(0) + a(0)a(1) = a(0) + a(1) I RAMOa(2) = a(0) + a(2)a(3) = a(0) + a(3)

Mario [email protected]; Perl.it

Page 16: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNASezione 1: Definizione dell’insieme {F}

Scrivendo la successione delle direzioni come gli elementi di un vettore leggiamo la proprietà principale della costruzione: il primo addendo è il ramo su cui si itera il procedimento di costruzione. Il secondo addendo è la posizione della direzione che stiamo calcolando, nell’ambito di quel ramo.

a(4) = a(1) + a(0)a(5) = a(1) + a(1) II RAMOa(6) = a(1) + a(2)a(7) = a(1) + a(3)

Mario [email protected]; Perl.it

Page 17: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNASezione 1: Definizione dell’insieme {F}

Scrivendo la successione delle direzioni come gli elementi di un vettore leggiamo la proprietà principale della costruzione: il primo addendo è il ramo su cui si itera il procedimento di costruzione. Il secondo addendo è la posizione della direzione che stiamo calcolando, nell’ambito di quel ramo.

a(8) = a(2) + a(0)a(9) = a(2) + a(1) III RAMOa(10)= a(2) + a(2)a(11)= a(2) + a(3)

Mario [email protected]; Perl.it

Page 18: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNASezione 1: Definizione dell’insieme {F}

Scrivendo la successione delle direzioni come gli elementi di un vettore leggiamo la proprietà principale della costruzione: il primo addendo è il ramo su cui si itera il procedimento di costruzione. Il secondo addendo è la posizione della direzione che stiamo calcolando, nell’ambito di quel ramo.

a(12)= a(3) + a(0)a(13)= a(3) + a(1) IV RAMOa(14)= a(3) + a(2)a(15)= a(3) + a(3)

Mario [email protected]; Perl.it

Page 19: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNASezione 1: Definizione dell’insieme {F}

Il ramo cui appartiene la direzione k-esima è:G(k) = int(k/Ro)

Mario [email protected]; Perl.it

Page 20: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNASezione 1: Definizione dell’insieme {F}

Il ramo cui appartiene la direzione k-esima è:G(k) = int(k/Ro)

La posizione della direzione k-esima nel ramo è:P(k) = k-int(k/Ro) = k-G(k)

Mario [email protected]; Perl.it

Page 21: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNASezione 1: Definizione dell’insieme {F}

Il ramo cui appartiene la direzione k-esima è:G(k) = int(k/Ro)

La posizione della direzione k-esima nel ramo è:P(k) = k-int(k/Ro) = k-G(k)

In definitiva, il valore della direzione k-esima è:

a(k)=a(G(k)) + a(P(k))

Mario [email protected]; Perl.it

Page 22: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNASezione 1: Definizione dell’insieme {F}

a(k)=a(G(k)) + a(P(k))

Notiamo che questa relazione è generale, indipendente dal numero di parametri base della curva.

Mario [email protected]; Perl.it

Page 23: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNASezione 1: Definizione dell’insieme {F}

Con questa relazione diventa semplice ricavare il grafico della curva, potendone calcolare la direzione dei segmenti approssimanti successivi ed implementando poi un sistema di turtle graphics per il grafico:

while ($k<$Ro**$r) {$a [$k]=$a[int($k/$Ro)]+$a[$k-int($k/$Ro)];$k++

}

Di seguito alcune curve appartenenti ad {F}

a(k)=a(G(k)) + a(P(k))

Mario [email protected]; Perl.it

Page 24: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNASezione 1: Definizione dell’insieme {F}

(56,-187, 215, 64) (0,90,-60,-90,60)Mario Rossano

[email protected]; Perl.it

Page 25: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNASezione 1: Definizione dell’insieme {F}

(56,-177,225,-164) (56,-77,215,-64,60)

Mario [email protected]; Perl.it

Page 26: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNASezione 1: Definizione dell’insieme {F}

(0,90,0,-90) (0,90,60,-90,120)

Mario [email protected]; Perl.it

Page 27: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNASezione 1: Definizione dell’insieme {F}

(56,-177,225,164) (21,-31,100,-79)Mario Rossano

[email protected]; Perl.it

Page 28: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNASezione 1: Definizione dell’insieme {F}

(56,-67,215,-64,60,45) (56,-67,210,-64,60,70)Mario Rossano

[email protected]; Perl.it

Page 29: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNA

Sezione 2: Algoritmo crittografico FNA

Mario [email protected]; Perl.it

Page 30: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNASezione 2: Algoritmo crittografico FNA

1 i dati sono memorizzati in byte: qualunque tipo di file vada ad aprire, il suo contenuto è certamente una sequenza ben precisa di bytes.

Mario [email protected]; Perl.it

Page 31: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNASezione 2: Algoritmo crittografico FNA

1 i dati sono memorizzati in byte: qualunque tipo di file vada ad aprire, il suo contenuto è certamente una sequenza ben precisa di bytes.

Un byte è costituito da 8 bit, per cui il suo valore deve appartenere all’insieme degli interi compresi tra 0 e 255 (256 elementi complessivamente). Seguo quindi la curva frattale scelta, dell’insieme {F}, per un numero di vertici uguale a quella del valore del byte da criptare. Le coordinate cartesiane di quel vertice rappresentano il crittogramma di quel byte.

Mario [email protected]; Perl.it

Page 32: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNASezione 2: Algoritmo crittografico FNA

2 Le curve {F} hanno un andamento che, in generale, si conosce solo calcolandolo ma lo si può calcolare solo se sono noti i parametri Ro genitori che sono parti fondamentali della chiave: è proprio in questo il cuore del sistema crittografico.

Mario [email protected]; Perl.it

Page 33: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNASezione 2: Algoritmo crittografico FNA

2 Le curve {F} hanno un andamento che, in generale, si conosce solo calcolandolo ma lo si può calcolare solo se sono noti i parametri Ro genitori che sono parti fondamentali della chiave: è proprio in questo il cuore del sistema crittografico.

Come altri sistemi di cifratura simmetrici, ad es. DES e AES, FNA ha chiave segreta ma a differenza dei predetti Data Encryption Standard (che ha una chiave di 56 bit) ed Advanced Encryption Standard (che ha una chiave compresa tra i 128 ed i 256 bit), Fractal Numerical Algorithm ha una chiave in bit lunga quanto si vuole: non ci sono restrizioni sul numero e valore delle direzioni della base Ro.

Mario [email protected]; Perl.it

Page 34: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNASezione 2: Algoritmo crittografico FNA

3 criptareOgni byte viene crittografato mediante le coordinate del vertice della curva frattale, ottenuto partendo dal successivo a quello precedentemente valutato, saltando di un numero ulteriore di vertici uguale al magic number più il valore del byte da crittografare.

Mario [email protected]; Perl.it

Page 35: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNASezione 2: Algoritmo crittografico FNA

4 decriptareSi segue la curva frattale verificando, di vertice in vertice, che le coordinate corrispondano a quelle del crittogramma. Il valore del byte originale viene ricostruito avendo contato quanti vertici si sono succeduti per arrivare all’uguaglianza dei due valori, dall’ultima uguaglianza incontrata. Il numero di vertici, ridotto del magic number sommato all’unità, rappresenta il valore del byte n-esimo.

Mario [email protected]; Perl.it

Page 36: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNASezione 2: Algoritmo crittografico FNA

5 sale crittografico

Si sfrutta la proprietà di pseudocasualità insita nelle curve {F}, per cui a differenze iniziali ad un certo ordine di grandezza seguono differenze finali ad un ordine di grandezza maggiore (c.d. effetto farfalla).

Mario [email protected]; Perl.it

Page 37: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNASezione 2: Algoritmo crittografico FNA

5 sale crittografico

Si sfrutta la proprietà di pseudocasualità insita nelle curve {F}, per cui a differenze iniziali ad un certo ordine di grandezza seguono differenze finali ad un ordine di grandezza maggiore (c.d. effetto farfalla).

Si realizza aggiungendo prima del file da crittografare, una sequenza random, in modo da modificare tutta la sequenza successiva.

Mario [email protected]; Perl.it

Page 38: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNASezione 2: Algoritmo crittografico FNA

5 sale crittografico

Per fare questo, l’algoritmo generatore del sale deve produrre valori statisticamente aderenti ad una sequenza casuale ovvero una sequenza che, statisticamente, può essere interpretata come tale (con una distribuzione simile ad altre sequenze casuali).

Mario [email protected]; Perl.it

Page 39: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNASezione 2: Algoritmo crittografico FNA

5 sale crittografico

Per fare questo, l’algoritmo generatore del sale deve produrre valori statisticamente aderenti ad una sequenza casuale ovvero una sequenza che, statisticamente, può essere interpretata come tale (con una distribuzione simile ad altre sequenze casuali).

Si è dunque scelto “l’istante” in cui viene invocato il calcolo del sale, evento casuale, come uno dei fattori di input mentre il “magic number” è l’altro.

Mario [email protected]; Perl.it

Page 40: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNASezione 2: Algoritmo crittografico FNA

5 sale crittografico

Al momento dell’invocazione del calcolo, si legge il numero di secondi trascorsi dalla mezzanotte del 1 gennaio 1970 (epoch date). Si calcola poi, tramite la funzione “rand” (pseudo casuale), un numero compreso tra 0 ed 1.

Mario [email protected]; Perl.it

Page 41: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNASezione 2: Algoritmo crittografico FNA

5 sale crittografico

Si calcola poi il rapporto tra il numero dei secondi (casuale) ed il numero restituito dalla funzione random. Da questo si preleva un numero di cifre pari al quadrato del magic number. Se il quadrato del magic number è superiore al numero di cifre del quoziente prima calcolato, si itera il procedimento, ricalcolando “time”, “rand” e l’intero del rapporto e concatenando la nuova stringa alla precedente.

Mario [email protected]; Perl.it

Page 42: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNASezione 2: Algoritmo crittografico FNA

5 sale crittografico

Dall’iterazione si esce quando la lunghezza del salt è pari al quadrato del magic number. Questa sequenza numerica, casuale, è il nostro sale crittografico.

Mario [email protected]; Perl.it

Page 43: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNASezione 2: Algoritmo crittografico FNA

5 sale crittografico

Dall’iterazione si esce quando la lunghezza del salt è pari al quadrato del magic number. Questa sequenza numerica, casuale, è il nostro sale crittografico.

In questo modo, due cifrature dello stesso dato, daranno luogo a crittogrammi completamente differenti e soggetti all’effetto farfalla poiché le curve {F} hanno un andamento coerente alla definizione di caos deterministico.

Mario [email protected]; Perl.it

Page 44: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNASezione 2: Algoritmo crittografico FNA

5 sale crittografico

In fase di decriptazione, grazie alla chiave (l’attributo magic number nello specifico), l’algoritmo è in grado di valutare quali vertici iniziali del crittogramma scartare, partendo poi dall’ultimo di questi per la valutazione dei bytes successivi ricostruendo il dato in chiaro.

Mario [email protected]; Perl.it

Page 45: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNA

Sezione 3: Classe Crypt::FNA

Mario [email protected]; Perl.it

Page 46: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNASezione 3: Crypt::FNA

Metodi della classe Perl

Crypt::FNA->new

Mario [email protected]; Perl.it

Page 47: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNASezione 3: Crypt::FNA

Metodi della classe Perl

Crypt::FNA->newCrypt::FNA->make_fract

Mario [email protected]; Perl.it

Page 48: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNASezione 3: Crypt::FNA

Metodi della classe Perl

Crypt::FNA->newCrypt::FNA->make_fractCrypt::FNA->encrypt_file

Mario [email protected]; Perl.it

Page 49: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNASezione 3: Crypt::FNA

Metodi della classe Perl

Crypt::FNA->newCrypt::FNA->make_fractCrypt::FNA->encrypt_fileCrypt::FNA->decrypt_file

Mario [email protected]; Perl.it

Page 50: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNASezione 3: Crypt::FNA

Metodi della classe Perl

Crypt::FNA->newCrypt::FNA->make_fractCrypt::FNA->encrypt_fileCrypt::FNA->decrypt_fileCrypt::FNA->encrypt_scalar

Mario [email protected]; Perl.it

Page 51: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNASezione 3: Crypt::FNA

Metodi della classe Perl

Crypt::FNA->newCrypt::FNA->make_fractCrypt::FNA->encrypt_fileCrypt::FNA->decrypt_fileCrypt::FNA->encrypt_scalarCrypt::FNA->decrypt_scalar

Mario [email protected]; Perl.it

Page 52: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNASezione 3: Crypt::FNA

Metodi della classe Perl

Crypt::FNA->newCrypt::FNA->make_fractCrypt::FNA->encrypt_fileCrypt::FNA->decrypt_fileCrypt::FNA->encrypt_scalarCrypt::FNA->decrypt_scalarCrypt::FNA->mac

Mario [email protected]; Perl.it

Page 53: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNASezione 3: Crypt::FNA

Metodo “new”

my $krypto=Crypt::FNA->new()

Mario [email protected]; Perl.it

Page 54: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNASezione 3: Crypt::FNA

Metodo “new”

my $krypto=Crypt::FNA->new()

my $krypto=Crypt::FNA->new({r=> 7,angle => [56,-187, 215,-64],square => 4096,background => [255,255,255],foreground => [0,0,0],magic => 3,salted => ‘true’

})Mario Rossano

[email protected]; Perl.it

Page 55: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNASezione 3: Crypt::FNA

Metodo “new”: attributo “r” – ordine della curva di {F}

Indica il livello di approfondimento nel calcolo della curva. E’ un numero maggiore di zero, non necessariamente intero.

Valore di default: 7

Mario [email protected]; Perl.it

Page 56: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNASezione 3: Crypt::FNA

Metodo “new”: attributo “angle” – direzioni della base di {F}

Sono le direzioni su cui si applica l’algoritmo di costruzione: su queste si determina la struttura base autosimile della curva di {F}. Le direzioni sono espresse nel sistema sessadecimale, con valori compresi tra -360 e 360 (ovvero da 0 a 360).

Valore di default: (56,-187, 215,-64)

Mario [email protected]; Perl.it

Page 57: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNASezione 3: Crypt::FNA

Metodo “new”: attributo “square” – lato quadrato contenitore

E’ la lunghezza del lato del quadrato dal cui centro parte la costruzione della curva. Le coordinate del suo vertice in alto a sinistra sono, canonicamente, (0,0).

Valore di default: 4096

Mario [email protected]; Perl.it

Page 58: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNASezione 3: Crypt::FNA

Metodo “new”: attributo “background” – colore fondo PNG

E’ il colore RGB di fondo del file PNG contenente il disegno della curva. La notazione è decimale, quindi con valori che vanno da 0 a 255.

Valore di default: (255,255,255)

Mario [email protected]; Perl.it

Page 59: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNASezione 3: Crypt::FNA

Metodo “new”: attributo “foreground” – colore primo piano

E’ il colore RGB del tratto nel file PNG contenente il disegno della curva. La notazione è decimale, quindi con valori che vanno da 0 a 255.

Valore di default: (0,0,0)

Mario [email protected]; Perl.it

Page 60: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNASezione 3: Crypt::FNA

Metodo “new”: attributo “magic number” crittografia discreta

Indica il numero di vertici della curva da saltare in fase di cifratura e decifratura: essendo l'algoritmo una funzione continua sui vertici, saltandone alcuni questa resta continua su punti isolati dell’insieme dei vertici, fornendo una crittografia discreta sui vertici.

Valore di default: 3

Mario [email protected]; Perl.it

Page 61: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNASezione 3: Crypt::FNA

Metodo “new”: attributo “salted” il sale crittografico

Il ‘salt’ è una sequenza casuale, che ha lo scopo ultimo di influenzare direttamente il crittogramma, in modo che cifrature dello stesso dato, danno luogo a crittogrammi differenti.

Il valore di default è ‘false’ per retrocompatibilità con le versioni di Crypt::FNA antecedenti alla 0.24 – prima versione che lo implementa

Valore di default: false

Mario [email protected]; Perl.it

Page 62: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNASezione 3: Crypt::FNA

Metodo “make_fract” il disegno della curva

Questo metodo è senz'altro il più suggestivo e permette di "toccare" le curve che verranno poi applicate negli algoritmi crittografici.

Il file grafico di output è in formato PNG (Portable Network Graphic), fruibile da un qualunque browser come dai più diversi software di grafica.

Mario [email protected]; Perl.it

Page 63: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNASezione 3: Crypt::FNA

Metodo “make_fract” il disegno della curva

La sintassi è:$krypto->make_fract($pngfile,$zoom)

$pngfile è il nome del file png - senza estensione "png" che viene inserita automaticamente.

$zoom è la scala del disegno - maggiore di zero. Valore di default: 1L'immagine prodotta è in un quadrato di lato square.

Mario [email protected]; Perl.it

Page 64: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNASezione 3: Crypt::FNA

Metodo “encrypt_file”

Questo metodo cripta il file di input in quello di output.

La sintassi è:

$krypto->encrypt_file($name_plain_file,$name_encrypted_file)

Il file di input di qualsivoglia formato sarà letto e cifrato, tramite la curva {F}.

Mario [email protected]; Perl.it

Page 65: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNASezione 3: Crypt::FNA

Metodo “encrypt_file”

L’aspetto di un file cifrato è simile al seguente:

-806.16701617 4296.950584 -1163.3897453 4378.30613408 -1253.81513894 4361.33265404 -1502.80711437 4636.89514523 -1371.10557976 4745.56050632 -1230.07749379 4968.48069209 -1338.39851924 5248.88785964 -917.21821497 5429.36645491 -773.44592091 5696.62911696 -692.72801005 5885.46154004 -988.27897105 5885.418198 -1248.99379997 6171.71101067 -830.48330143 6377.55135044 -768.07453852 6493.40995382 -290.38619797 6703.79926248 -101.38261857 6641.39653224 329.01095794 6547.35282987 491.23460593 6672.15350589 682.15153937 6767.07332641 951.17643798 7125.45527124 844.47157379 7301.13742586 616.45930112 7293.99200882 844.26353513 7262.78340711 1211.3200562 7315.25004987 1474.41515451 7121.21394711 1951.75973992 7224.47233263 2176.20365976 6962.04147204 2547.88708591 6998.13655185 2781.82594976 6972.85084038 3056.52905252 7371.28466715 3037.53030053 7569.06437014 3048.49593738 7320.32093005 3389.66342779 7357.81470144 3676.23526579 7708.87987244 3755.43863759 7814.8354795 3435.5290489 8296.58426972 3441.10117125 8627.97877198 3412.2773365 8623.6058585 3362.87465115 8767.32280898 3260.65143202 8583.97947961 2890.71868372 8474.68032897 2726.83436885 8650.05588533 2718.8481018 9045.95222039 2669.00976899 9254.66114943 2644.06562016 9103.68182141 3127.66020707 9113.43039278 3191.47856428 9188.88465234 3207.82184971 9202.57034881 3478.33454467 8945.6121183 3832.00806714 8945.62804071 4080.86384299 9320.62189286 4289.2595779 9439.78195562 4021.13116501 9644.36385638 4311.34336432 9554.3477728

Mario [email protected]; Perl.it

Page 66: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNASezione 3: Crypt::FNA

Metodo “encrypt_file”

Il file viene “frullato” in una ragnatela simile alla seguente.

Mario [email protected]; Perl.it

Page 67: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNASezione 3: Crypt::FNA

Metodo “decrypt_file”

decripta il file di input (che è quello di output del metodo encrypt_file) in quello di output (che è quello di input del metodo encrypt_file).

La sintassi è:

$krypto->decrypt_file($name_encrypted_file,$name_decrypted_file)

Il file di input sarà letto e decodificato, tramite la curva {F}, nel file di output.

Mario [email protected]; Perl.it

Page 68: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNASezione 3: Crypt::FNA

Metodo “encrypt_scalar”

Il metodo encrypt_scalar cifra stringhe: il risultato dell’operazione di cifratura è un vettore contenente il crittogramma.

La sintassi è:

@encrypted_scalar=$krypto->encrypt_scalar($this_string)

Il programmatore che preveda un salvataggio password con FNA, farà bene ad impostare salted => ‘true’

Mario [email protected]; Perl.it

Page 69: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNASezione 3: Crypt::FNA

Metodo “decrypt_scalar”

Il metodo decrypt_scalar ricostruisce il dato in chiaro dal risultato dell’operazione di cifratura scalari.

La sintassi è:

$decrypted_scalar=$krypto->decrypt_scalar(@encrypted_scalar)

Mario [email protected]; Perl.it

Page 70: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNASezione 3: Crypt::FNA

Metodo “mac” – digest con FNA

L’ “hash” è rappresentato dalle coordinate dell’ultimo vertice della curva {F} definita tramite il metodo “new”

La sintassi è:

my $mac=$krypto->mac($name_plain_file)

Mario [email protected]; Perl.it

Page 71: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNASezione 3: Crypt::FNA

Metodo “mac” – digest con FNA

Tramite questo metodo, Crypt::FNA assolve alle specifiche degli algoritmi digest e precisamente:

1. ha lunghezza fissa che lo rende facile da manipolare e da trasmettere (128bit);

Mario [email protected]; Perl.it

Page 72: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNASezione 3: Crypt::FNA

Metodo “mac” – digest con FNA

Tramite questo metodo, Crypt::FNA assolve alle specifiche degli algoritmi digest e precisamente:

1. ha lunghezza fissa che lo rende facile da manipolare e da trasmettere (128bit);

2. è estremamente improbabile che due messaggi diversi abbiano lo stesso digest;

Mario [email protected]; Perl.it

Page 73: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNASezione 3: Crypt::FNA

Metodo “mac” – digest con FNA

Tramite questo metodo, Crypt::FNA assolve alle specifiche degli algoritmi digest e precisamente:

1. ha lunghezza fissa che lo rende facile da manipolare e da trasmettere (128bit);

2. è estremamente improbabile che due messaggi diversi abbiano lo stesso digest;

3. non è invertibile, cioè non esiste un algoritmo noto che, dato un digest, sia in grado di generare un messaggio che gli corrisponde; in altri termini, è estremamente difficile produrre un messaggio che abbia un digest predeterminato.

Mario [email protected]; Perl.it

Page 74: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNA

Sezione 4: Crypt::FNA::Async

Mario [email protected]; Perl.it

Page 75: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNA Sezione 4: Crypt::FNA::Async

Classe Crypt::FNA::Async – Sincrono contro Asincrono

Crypt::FNA::Async consente di elaborare in parallelo cifratura e decifratura di files, avvantaggiandosi delle CPU multicore e/o quelle che supportano hypertrading.

Mario [email protected]; Perl.it

Page 76: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNA Sezione 4: Crypt::FNA::Async

Classe Crypt::FNA::Async – Sincrono contro Asincrono

Crypt::FNA::Async consente di elaborare in parallelo cifratura e decifratura di files, avvantaggiandosi delle CPU multicore e/o quelle che supportano hypertrading.

Nel caso ideale, verranno elaborati, in parallelo, un numero di files pari al numero di core disponibili.

Mario [email protected]; Perl.it

Page 77: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNA Sezione 4: Crypt::FNA::Async

Classe Crypt::FNA::Async – Sincrono contro Asincrono

Crypt::FNA::Async consente di elaborare in parallelo cifratura e decifratura di files, avvantaggiandosi delle CPU multicore e/o quelle che supportano hypertrading.

Nel caso ideale, verranno elaborati, in parallelo, un numero di files pari al numero di core disponibili.

Se il sistema non supporta i threads, Crypt::FNA::Async effettuerà comunque l’elaborazione in serie (quindi sincrona anziché asincrona)

Mario [email protected]; Perl.it

Page 78: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNA Sezione 4: Crypt::FNA::Async

Classe Crypt::FNA::Async – Sincrono contro Asincrono

Metodi

Crypt::FNA::Async->new

Mario [email protected]; Perl.it

Page 79: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNA Sezione 4: Crypt::FNA::Async

Classe Crypt::FNA::Async – Sincrono contro Asincrono

Metodi

Crypt::FNA::Async->new

Crypt::FNA::Async->encrypt_files

Mario [email protected]; Perl.it

Page 80: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNA Sezione 4: Crypt::FNA::Async

Classe Crypt::FNA::Async – Sincrono contro Asincrono

Metodi

Crypt::FNA::Async->new

Crypt::FNA::Async->encrypt_filesCrypt::FNA::Async->decrypt_files

Mario [email protected]; Perl.it

Page 81: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNA Sezione 4: Crypt::FNA::Async

Classe Crypt::FNA::Async – metodo “new”

Il metodo new di Crypt::FNA::Async è analogo all’omonimo di Crypt::FNA.

my $krypto=Crypt::FNA::Async->new()

my $krypto=Crypt::FNA::Async->new({r=> 7,angle => [56,-187, 215,-64],square => 4096,magic => 3,salted => ‘true’

})

Mario [email protected]; Perl.it

Page 82: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNA Sezione 4: Crypt::FNA::Async

Classe Crypt::FNA::Async – metodo “encrypt_files”

Il metodo accetta in ingresso un array contenente i nomi dei files, in chiaro, da criptare, quindi opera su questi e restituisce i files criptati con nuova estensione ‘.fna’

La sintassi è:

$krypto->encrypt_files(@files_to_encrypt)

I files di input, di qualsivoglia formato, saranno letti e cifrati, tramite la curva {F}

Mario [email protected]; Perl.it

Page 83: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNA Sezione 4: Crypt::FNA::Async

Classe Crypt::FNA::Async – metodo “decrypt_files”

Il metodo accetta in ingresso un array contenente i nomi dei files criptati, quindi opera su questi e restituisce i files in chiaro.

La sintassi è:

$krypto->decrypt_files(@files_to_decrypt)

I files di input, di qualsivoglia formato, saranno letti e decifrati, tramite la curva {F}.

Mario [email protected]; Perl.it

Page 84: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNA

Sezione 5: Applicazioni

Mario [email protected]; Perl.it

Page 85: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNA Sezione 5: Applicazioni

Le applicazioni sono ovviamente molteplici, di seguito alcuni esempi:

1.Salvataggio di password

Mario [email protected]; Perl.it

Page 86: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNA Sezione 5: Applicazioni

Le applicazioni sono ovviamente molteplici, di seguito alcuni esempi:

1.Salvataggio di password

2.Storage di documenti criptati su server remoto

Mario [email protected]; Perl.it

Page 87: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNA Sezione 5: Applicazioni

Le applicazioni sono ovviamente molteplici, di seguito alcuni esempi:

1.Salvataggio di password

2.Storage di documenti criptati su server remoto

3.Database remoto criptato, accessibile solo fornendo la chiave dal client

Mario [email protected]; Perl.it

Page 88: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNA Sezione 5: Applicazioni

Le applicazioni sono ovviamente molteplici, di seguito alcuni esempi:

1.Salvataggio di password

2.Storage di documenti criptati su server remoto

3.Database remoto criptato, accessibile solo fornendo la chiave dal client

4.Verifiche di autenticità di dati trasmessi in una comunicazione

Mario [email protected]; Perl.it

Page 89: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNA Sezione 5: Applicazioni

Le applicazioni sono ovviamente molteplici, di seguito alcuni esempi:

1.Salvataggio di password

2.Storage di documenti criptati su server remoto

3.Database remoto criptato, accessibile solo fornendo la chiave dal client

4.Verifiche di autenticità di dati trasmessi in una comunicazione

5.ecc.

Mario [email protected]; Perl.it

Page 90: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNA Sezione 5: Applicazioni

Le applicazioni sono ovviamente molteplici, di seguito alcuni esempi:

1.Salvataggio di password

2.Storage di documenti criptati su server remoto

3.Database remoto criptato, accessibile solo fornendo la chiave dal client

4.Verifiche di autenticità di dati trasmessi in una comunicazione

5.ecc.

Mario [email protected]; Perl.it

Page 91: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNA Sezione 5: Applicazioni

MAC -> Message Authentication Code

L’autenticazione dei messaggi garantisce l’integrità dell’informazione anche in presenza di un avversario attivo che invia dati sensati

Mario [email protected]; Perl.it

Page 92: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNA Sezione 5: Applicazioni

MAC -> Message Authentication Code

Detti:K la chiave FNA scelta per l’autenticazioneA l’applicazione dell’algoritmo FNA di SenderV l’applicazione dell’algoritmo FNA di Receiverm il dato da autenticare

CalcoliamoAk(m) – coordinate ultimo vertice FNA

Mario [email protected]; Perl.it

Page 93: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNA Sezione 5: Applicazioni

MAC -> Message Authentication Code

Calcolato Ak(m) – coordinate ultimo vertice FNA

1. Sender invia a Receiver la coppia (m, Ak(m))

2. Receiver – che conosce K ed ha ricevuto m – calcola Vk(m)

Mario [email protected]; Perl.it

Page 94: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNA Sezione 5: Applicazioni

MAC -> Message Authentication Code

Se Attacker modifica il messaggio, ignorando la chiave K, non potrà inviare a Receiver il MAC corretto che quindi ignorerà il messaggio edulcorato

Mario [email protected]; Perl.it

Page 95: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNA Sezione 5: Applicazioni

MAC -> Message Authentication Code

Il metodo mac di Crypt::FNA effettua proprio il calcolo qui indicato con Ak(m), consentendo l’implementazione di questo diagramma di flusso.

Mario [email protected]; Perl.it

Page 96: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNA

Sezione 6: Considerazioni

Mario [email protected]; Perl.it

Page 97: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNA Sezione 6: Considerazioni

a. Sulla decifratura – lacci di f Є {F}

In questa eventualità c’è una probabilità non nulla che due (e quindi infiniti) vertici possano sovrapporsi, rendendo impossibile la decodifica del file criptato. Ad esempio, con una base Ro={-30, 60, 45, 110} abbiamo:

Mario [email protected]; Perl.it

Page 98: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNA Sezione 6: Considerazioni

a. Sulla decifratura – lacci di f Є {F}

Occorre quindi una condizione che ci permetta di assegnare una base tale che i lacci non si producano.

Mario [email protected]; Perl.it

Page 99: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNA Sezione 6: Considerazioni

a. Sulla decifratura – lacci di f Є {F}

Occorre quindi una condizione che ci permetta di assegnare una base tale che i lacci non si producano.

Il seguente teorema fornisce una condizione sufficiente.

Mario [email protected]; Perl.it

Page 100: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNA Sezione 6: Considerazioni

a. Sulla decifratura – Teorema di unicità dei vertici di f Є {F}

Definizione 1: base di una curva f Є {F} è l’insieme delle inclinazioni {Ro}

Mario [email protected]; Perl.it

Page 101: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNA Sezione 6: Considerazioni

a. Sulla decifratura – Teorema di unicità dei vertici di f Є {F}

Definizione 1: base di una curva f Є {F} è l’insieme delle inclinazioni {Ro}Definizione 2: ramo di una curva f Є {F} è la spezzata relativa al calcolo

eseguito secondo l’algoritmo di costruzione sulla base o sua combinazione

Mario [email protected]; Perl.it

Page 102: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNA Sezione 6: Considerazioni

a. Sulla decifratura – Teorema di unicità dei vertici di f Є {F}

Definizione 1: base di una curva f Є {F} è l’insieme delle inclinazioni {Ro}Definizione 2: ramo di una curva f Є {F} è la spezzata relativa al calcolo

eseguito secondo l’algoritmo di costruzione sulla base o sua combinazione

Ipotesisia data la base di {F}={x1, x2,…, xn} : max(x)-min(x) < π/4

Mario [email protected]; Perl.it

Page 103: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNA Sezione 6: Considerazioni

a. Sulla decifratura – Teorema di unicità dei vertici di f Є {F}

Definizione 1: base di una curva f Є {F} è l’insieme delle inclinazioni {Ro}Definizione 2: ramo di una curva f Є {F} è la spezzata relativa al calcolo

eseguito secondo l’algoritmo di costruzione sulla base o sua combinazione

Ipotesisia data la base di {F}={x1, x2,…, xn} : max(x)-min(x) < π/4

TesiL’ipotesi è sufficiente affinché l’insieme dei punti della curva f sia in

corrispondenza biunivoca con un sottoinsieme di punti del pianoMario Rossano

[email protected]; Perl.it

Page 104: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNA Sezione 6: Considerazioni

a. Sulla decifratura – Teorema di unicità dei vertici di f Є {F}

Dimostrazione su:www.perl.it/documenti/articoli/2010/04/anakryptfna.html

Ipotesisia data la base di {F}={x1, x2,…, xn} : max(x)-min(x) < π/4

TesiL’ipotesi è sufficiente affinché l’insieme dei punti della curva f sia in

corrispondenza biunivoca con un sottoinsieme di punti del pianoMario Rossano

[email protected]; Perl.it

Page 105: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNA Sezione 6: Considerazioni

b. Robustezza di FNA

900.19866958855.11766404835.59726026631.79907235845.59106749607.51514839826.07053756730.67818328719.40812543712.90110561878.12528707606.87693617844.95287635529.89996398800.51021841627.67375558859.71016379739.56662699932.56196132

FNA è un sistema di cifratura, basato sulla sostituzione di bytes/caratteri con numeri complessi (n-pla ordinata di numeri, in questo caso la coppia di coordinate) attraverso l’algoritmo generatore dei frattali {F}.

La trasformazione in generale avviene sostituendo il valore ordinale, nel suo alfabeto quindi, di ciò che si trasforma con le coordinate cartesiane di un vertice della curva.

Mario [email protected]; Perl.it

Page 106: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNA Sezione 6: Considerazioni

b. Robustezza di FNA

900.19866958855.11766404835.59726026631.79907235845.59106749607.51514839826.07053756730.67818328719.40812543712.90110561878.12528707606.87693617844.95287635529.89996398800.51021841627.67375558859.71016379739.56662699932.56196132

Alfabeto

Per ogni cifratura di byte, l’alfabeto utilizzato da FNA è differente dal precedente. Ogni “singolo” alfabeto ha un numero di simboli al più quanto la cardinalità dell’alfabeto con cui è espresso il dato in chiaro che si cifra. Nel caso di bytes è costituito al più da 256 coppie di coordinate di vertici.

Gli alfabeti sono inoltre apparentemente casuali, poiché la successione dei vertici, di derivazione frattale, è notevolmente irregolare.

Mario [email protected]; Perl.it

Page 107: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNA Sezione 6: Considerazioni

b. Robustezza di FNA

900.19866958855.11766404835.59726026631.79907235845.59106749607.51514839826.07053756730.67818328719.40812543712.90110561878.12528707606.87693617844.95287635529.89996398800.51021841627.67375558859.71016379739.56662699932.56196132

Alfabeto

Una volta cifrato un byte, si procede alla cifratura del successivo: l’alfabeto “riparte”, poiché una volta cifrato un byte, si considerano le coordinate del successivo vertice di {F} come il simbolo di ordinalità 1 nel nuovo alfabeto di cardinalità, al più, pari alla cardinalità dell’alfabeto con cui è espresso il dato da cifrare.

I successivi alfabeti sono sempre differenti e dipendenti da tutti i dati in chiaro precedentemente cifrati.

Mario [email protected]; Perl.it

Page 108: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNA Sezione 6: Considerazioni

b. Robustezza di FNA

900.19866958855.11766404835.59726026631.79907235845.59106749607.51514839826.07053756730.67818328719.40812543712.90110561878.12528707606.87693617844.95287635529.89996398800.51021841627.67375558859.71016379739.56662699932.56196132

Premesso che la chiave di FNA è, in senso stretto, data dalle direzioni di inizializzazione Ro, magic e square, osservandolo come polialfabetico e considerando l’algoritmo frattale come un generatore di alfabeti, possiamo dire che ha in sé i vantaggi di una chiave lunga come il messaggio ed apparentemente casuale similmente al caso della cifratura a blocco monouso (nel senso che è notevolmente irregolare).

Mario [email protected]; Perl.it

Page 109: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNA Sezione 6: Considerazioni

b. Robustezza di FNA

900.19866958855.11766404835.59726026631.79907235845.59106749607.51514839826.07053756730.67818328719.40812543712.90110561878.12528707606.87693617844.95287635529.89996398800.51021841627.67375558859.71016379739.56662699932.56196132

Chiave

In un polialfabetico, la chiave è utilizzata per identificare il particolare alfabeto da utilizzare sulla singola operazione di cifratura.

Mario [email protected]; Perl.it

Page 110: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNA Sezione 6: Considerazioni

b. Robustezza di FNA

900.19866958855.11766404835.59726026631.79907235845.59106749607.51514839826.07053756730.67818328719.40812543712.90110561878.12528707606.87693617844.95287635529.89996398800.51021841627.67375558859.71016379739.56662699932.56196132

Chiave

In un polialfabetico, la chiave è utilizzata per identificare il particolare alfabeto da utilizzare sulla singola operazione di cifratura.

Il caso migliore si ha quando la chiave è lunga come il messaggio (il dato) da cifrare, il che equivale a dire che si cifra con un numero di alfabeti pari al numero di caratteri del messaggio da cifrare.

Mario [email protected]; Perl.it

Page 111: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNA Sezione 6: Considerazioni

b. Robustezza di FNA

900.19866958855.11766404835.59726026631.79907235845.59106749607.51514839826.07053756730.67818328719.40812543712.90110561878.12528707606.87693617844.95287635529.89996398800.51021841627.67375558859.71016379739.56662699932.56196132

Chiave

chiave 1, primo dato da cifrare: primo alfabeto -> influenza l’alfabeto successivochiave 2, secondo dato da cifrare: secondo alfabeto -> influenza l’alfabeto successivo...chiave n-1, n-1 esimo dato da cifrare: n-1 esimo alfabeto -> influenza l’alfabeto n-esimo

Mario [email protected]; Perl.it

Page 112: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNA Sezione 6: Considerazioni

b. Robustezza di FNA

900.19866958855.11766404835.59726026631.79907235845.59106749607.51514839826.07053756730.67818328719.40812543712.90110561878.12528707606.87693617844.95287635529.89996398800.51021841627.67375558859.71016379739.56662699932.56196132

Nel 1949, Claude Shannon, padre della teoria dell'informazione, nel lavoro ”La teoria della comunicazione nei sistemi crittografici” dimostrò che questo è l'unico metodo crittografico possibile che sia totalmente sicuro ovvero chiavi segrete casuali lunghe quanto il messaggio.

Mario [email protected]; Perl.it

Page 113: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNA Sezione 6: Considerazioni

b. Robustezza di FNA

900.19866958855.11766404835.59726026631.79907235845.59106749607.51514839826.07053756730.67818328719.40812543712.90110561878.12528707606.87693617844.95287635529.89996398800.51021841627.67375558859.71016379739.56662699932.56196132

Parimenti FNA non soffre della difficoltà di applicazione insita nel sistema a blocco monouso (dispendiosa) e si presta molto semplicemente ad operazioni di ipercrittografia (cifrare un dato già cifrato).

Mario [email protected]; Perl.it

Page 114: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNA Sezione 6: Considerazioni

b. Robustezza di FNA

900.19866958855.11766404835.59726026631.79907235845.59106749607.51514839826.07053756730.67818328719.40812543712.90110561878.12528707606.87693617844.95287635529.89996398800.51021841627.67375558859.71016379739.56662699932.56196132

Parimenti FNA non soffre della difficoltà di applicazione insita nel sistema a blocco monouso (dispendiosa) e si presta molto semplicemente ad operazioni di ipercrittografia (cifrare un dato già cifrato).

$krypto->encrypt_file($plainFile,$encryptedFile);$krypto2->encrypt_file($encryptedFile, $hyperEncryptedFile);

Mario [email protected]; Perl.it

Page 115: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNA Sezione 6: Considerazioni

b. Robustezza di FNA

900.19866958855.11766404835.59726026631.79907235845.59106749607.51514839826.07053756730.67818328719.40812543712.90110561878.12528707606.87693617844.95287635529.89996398800.51021841627.67375558859.71016379739.56662699932.56196132

Parimenti FNA non soffre della difficoltà di applicazione insita nel sistema a blocco monouso (dispendiosa) e si presta molto semplicemente ad operazioni di ipercrittografia (cifrare un dato già cifrato).

$krypto->encrypt_file($plainFile,$encryptedFile);$krypto2->encrypt_file($encryptedFile, $hyperEncryptedFile);…$krypto2->decrypt_file($hyperEncryptedFile, $encryptedFile);

$krypto->decrypt_file($encryptedFile, $plainFile);

Mario [email protected]; Perl.it

Page 116: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNA Sezione 6: Considerazioni

b. Robustezza di FNA

900.19866958855.11766404835.59726026631.79907235845.59106749607.51514839826.07053756730.67818328719.40812543712.90110561878.12528707606.87693617844.95287635529.89996398800.51021841627.67375558859.71016379739.56662699932.56196132

Inoltre ci sono altre parti della chiave, mi riferisco al magic number, che rendono oltremodo arduo individuare le direzioni successive (nel tentativo di scoprire la base) oltre all’ordine della curva su cui si va a crittografare.

Mario [email protected]; Perl.it

Page 117: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNA Sezione 6: Considerazioni

c. Crypt::FNA è multipiattaforma

900.19866958855.11766404835.59726026631.79907235845.59106749607.51514839826.07053756730.67818328719.40812543712.90110561878.12528707606.87693617844.95287635529.89996398800.51021841627.67375558859.71016379739.56662699932.56196132

Grazie al lavoro dei CPAN Tester, possiamo affermare che viene eseguito su:

Mario [email protected]; Perl.it

Page 118: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNA Sezione 6: Considerazioni

c. Crypt::FNA è multipiattaforma

900.19866958855.11766404835.59726026631.79907235845.59106749607.51514839826.07053756730.67818328719.40812543712.90110561878.12528707606.87693617844.95287635529.89996398800.51021841627.67375558859.71016379739.56662699932.56196132

Grazie al lavoro dei CPAN Tester, possiamo affermare che viene eseguito su:

CygwinMac OS XDragonfly BSDFreeBSDDebian GNU/kFreeBSDIRIX

Mario [email protected]; Perl.it

Page 119: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNA Sezione 6: Considerazioni

c. Crypt::FNA è multipiattaforma

900.19866958855.11766404835.59726026631.79907235845.59106749607.51514839826.07053756730.67818328719.40812543712.90110561878.12528707606.87693617844.95287635529.89996398800.51021841627.67375558859.71016379739.56662699932.56196132

Grazie al lavoro dei CPAN Tester, possiamo affermare che viene eseguito su:

CygwinMac OS XDragonfly BSDFreeBSDDebian GNU/kFreeBSDIRIX

GNU/LinuxMirOS BSDWindowsNerBSDOpenBSDSunOS/Solaris

Mario [email protected]; Perl.it

Page 120: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNA Sezione 6: Considerazioni

c. Crypt::FNA è multipiattaforma

900.19866958855.11766404835.59726026631.79907235845.59106749607.51514839826.07053756730.67818328719.40812543712.90110561878.12528707606.87693617844.95287635529.89996398800.51021841627.67375558859.71016379739.56662699932.56196132

Grazie al lavoro dei CPAN Tester, possiamo affermare che viene eseguito su:

CygwinMac OS XDragonfly BSDFreeBSDDebian GNU/kFreeBSDIRIX

GNU/LinuxMirOS BSDWindowsNerBSDOpenBSDSunOS/Solaris

Mario [email protected]; Perl.it

Commodore64

Page 121: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNA Sezione 6: Considerazioni

c. Crypt::FNA è multipiattaforma

900.19866958855.11766404835.59726026631.79907235845.59106749607.51514839826.07053756730.67818328719.40812543712.90110561878.12528707606.87693617844.95287635529.89996398800.51021841627.67375558859.71016379739.56662699932.56196132

Grazie al lavoro dei CPAN Tester, possiamo affermare che viene eseguito su:

CygwinMac OS XDragonfly BSDFreeBSDDebian GNU/kFreeBSDIRIX

GNU/LinuxMirOS BSDWindowsNerBSDOpenBSDSunOS/Solaris

Mario [email protected]; Perl.it

Commodore64In basic v2

Page 122: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNA

Sezione 7: Conclusioni

Mario [email protected]; Perl.it

Page 123: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNA Sezione 7: Conclusioni 900.19866958

855.11766404835.59726026631.79907235845.59106749607.51514839826.07053756730.67818328719.40812543712.90110561878.12528707606.87693617844.95287635529.89996398800.51021841627.67375558859.71016379739.56662699932.56196132

• Crypt::FNA è in costante aggiornamento, soprattutto per quanto riguarda l’ottimizzazione nell’uso della memoria e la velocità di elaborazione, con uno sguardo volto alla retrocompatibilità

Mario [email protected]; Perl.it

Page 124: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNA Sezione 7: Conclusioni 900.19866958

855.11766404835.59726026631.79907235845.59106749607.51514839826.07053756730.67818328719.40812543712.90110561878.12528707606.87693617844.95287635529.89996398800.51021841627.67375558859.71016379739.56662699932.56196132

• Crypt::FNA è in costante aggiornamento, soprattutto per quanto riguarda l’ottimizzazione nell’uso della memoria e la velocità di elaborazione, con uno sguardo volto alla retrocompatibilità

• In ogni caso voglio ricordare che FNA è un algoritmo molto giovane ed ancora in fase di sviluppo, per cui eviterei di salvare i dati di accesso ad un server contenente carte di credito o la ricetta della pizza se non dopo attenta fase di testing.

Mario [email protected]; Perl.it

Page 125: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNA Sezione 7: Conclusioni 900.19866958

855.11766404835.59726026631.79907235845.59106749607.51514839826.07053756730.67818328719.40812543712.90110561878.12528707606.87693617844.95287635529.89996398800.51021841627.67375558859.71016379739.56662699932.56196132

• Crypt::FNA è in costante aggiornamento, soprattutto per quanto riguarda l’ottimizzazione nell’uso della memoria e la velocità di elaborazione, con uno sguardo volto alla retrocompatibilità

• In ogni caso voglio ricordare che FNA è un algoritmo molto giovane ed ancora in fase di sviluppo, per cui eviterei di salvare i dati di accesso ad un server contenente carte di credito o la ricetta della pizza se non dopo attenta fase di testing.

• Tra gli sviluppi futuri, è in cantiere l’implementazione di un metodo di cifratura asimmetrico aFNA

Mario [email protected]; Perl.it

Page 126: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNA Sezione 7: Conclusioni 900.19866958

855.11766404835.59726026631.79907235845.59106749607.51514839826.07053756730.67818328719.40812543712.90110561878.12528707606.87693617844.95287635529.89996398800.51021841627.67375558859.71016379739.56662699932.56196132

• CPAN : modulo Crypt::FNA• https://metacpan.org/module/Crypt::FNA

• CPAN : modulo Crypt::FNA::Async• https://metacpan.org/release/Crypt-FNA-Async

• Articolo su Perl.it (ver. 0.01 della classe):http://www.perl.it/documenti/articoli/2010/04/anakryptfna.htm

• Queste slide:http://www.netlogica.it/codemotion2012/crypt_fna_codemotion2012.pdf

• L’Autore:[email protected]; [email protected]; www.netlogica.it

Mario [email protected]; Perl.it

Page 127: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

Una nuova crittografia frattale - classe Crypt::FNA Sezione 7: Conclusioni 900.19866958

855.11766404835.59726026631.79907235845.59106749607.51514839826.07053756730.67818328719.40812543712.90110561878.12528707606.87693617844.95287635529.89996398800.51021841627.67375558859.71016379739.56662699932.56196132

THE END?

Mario [email protected]; Perl.it

Page 128: Codemotion 2012: una nuova crittografia frattale - classe Crypt::FNA

Nome speakerMail speaker – company or community

128

Il punto di riferimento di Perl in ItaliaAssociazione Perl.itIl linguaggio di programmazione Perl

www.perl.itwww.perl.it/associazionewww.perl.org

Link utili

Distribuzioni e IDE

Strawberryperl, Perl per MS WindowsActivePerlPadre, Perl IDE

strawberryperl.comwww.activestate.com/activeperlpadre.perlide.org

Comprehensive Perl Archive Network

Moduli e Classi

metacpan.org

[email protected]

Mailing list, IRC

usa Perl responsabilmenteuse strict;

use warnings;

IPW, Italian Perl Workshop metà ottobre 2012 a Bologna. Stay Tuned!

Scoprite il linguaggio che rende facili le cose facili e possibili quelle difficili

lists.perl.it/sympa/info/mongersperlweekly.com#perl.it