La crittografia frattale in Perl



Documenti analoghi
RETI DI CALCOLATORI. Crittografia. La crittografia

Crittografia. Appunti a cura del prof. Ing. Mario Catalano

Codifiche a lunghezza variabile

Probabilità discreta

Convertitori numerici in Excel

4 3 4 = 4 x x x 10 0 aaa

Appunti di informatica. Lezione 2 anno accademico Mario Verdicchio

Funzioni in C. Violetta Lonati

Informatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter

LA TRASMISSIONE DELLE INFORMAZIONI QUARTA PARTE 1

Dimensione di uno Spazio vettoriale

Lezione 8. La macchina universale

RC4 RC4. Davide Cerri. Davide Cerri CEFRIEL - Politecnico di Milano cerri@cefriel.it

la scienza della rappresentazione e della elaborazione dell informazione

Esempi di algoritmi. Lezione III

f(x) = 1 x. Il dominio di questa funzione è il sottoinsieme proprio di R dato da

LE SUCCESSIONI 1. COS E UNA SUCCESSIONE

SISTEMI E RETI. Crittografia. Sistemi distribuiti e configurazione architetturale delle applicazioni WEB.

Fondamenti di Informatica 2. Le operazioni binarie

Corrispondenze e funzioni

Lezione 7 Sicurezza delle informazioni

Linguaggi di programmazione

Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

(71,1), (35,1), (17,1), (8,1), (4,0), (2,0), (1,0), (0,1) 0, = 1, 431 0, = 0, 862 0, = 1, 792 0, = 1, 448 0, = 0, 896

Rappresentazione dei numeri in un calcolatore

Matematica e Statistica

Introduzione all analisi dei segnali digitali.

SSL: applicazioni telematiche SSL SSL SSL. E-commerce Trading on-line Internet banking... Secure Socket Layer

Informazione analogica e digitale

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati

TRAGUARDI PER LO SVILUPPO DELLE COMPETENZE AL TERMINE DELLA SCUOLA PRIMARIA

Calcolo del Valore Attuale Netto (VAN)

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

Invio SMS. DM Board ICS Invio SMS

LE FUNZIONI A DUE VARIABILI

L'impulso di una forza che varia nel tempo

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.

risulta (x) = 1 se x < 0.

Capitolo 2. Operazione di limite

Excel. A cura di Luigi Labonia. luigi.lab@libero.it

Capitolo 13: L offerta dell impresa e il surplus del produttore

Gestione Risorse Umane Web

Plugin ImageJ Steganografia Digitale

Elementi di Psicometria con Laboratorio di SPSS 1

Metodi Stocastici per la Finanza

Informatica. Rappresentazione dei numeri Numerazione binaria

Complemento al corso di Fondamenti di Informatica I corsi di laurea in ingegneria, settore dell informazione Università la Sapienza Consorzio Nettuno

Grandezze scalari e vettoriali

Rappresentazione delle informazioni

1 Applicazioni Lineari tra Spazi Vettoriali

Registratori di Cassa

Informatica per la comunicazione" - lezione 7 -

Algoritmi e strutture dati. Codici di Huffman

Automatizzare i compiti ripetitivi. I file batch. File batch (1) File batch (2) Visualizzazione (2) Visualizzazione

Per chi ha la Virtual Machine: avviare Grass da terminale, andando su Applicazioni Accessori Terminale e scrivere grass

I NUMERI DECIMALI. che cosa sono, come si rappresentano

Titolo della tesi Testing Black Box di un Web Service : sperimentazione su di un servizio con stato

I file di dati. Unità didattica D1 1

Sicurezza dei file Le protezioni nei programmi

Analisi di programmi: Crittografia

EXPLOit Content Management Data Base per documenti SGML/XML

Linguaggi e Paradigmi di Programmazione

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA

CALCOLO COMBINATORIO

Testi di Esercizi e Quesiti 1

Corso di. Dott.ssa Donatella Cocca

Manuale di Aggiornamento BOLLETTINO. Rel H4. DATALOG Soluzioni Integrate a 32 Bit

SymCAD/C.A.T.S. modulo Canali Schema

Nell esempio verrà mostrato come creare un semplice documento in Excel per calcolare in modo automatico la rata di un mutuo a tasso fisso conoscendo

SISTEMI DI NUMERAZIONE E CODICI

Statistica e biometria. D. Bertacchi. Variabili aleatorie. V.a. discrete e continue. La densità di una v.a. discreta. Esempi.

PROGRAMMA SVOLTO NELLA SESSIONE N.

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

Esercizio 1: trading on-line

Organizzazione degli archivi

RISOLUTORE AUTOMATICO PER SUDOKU

Dispense di Informatica per l ITG Valadier

WoWords. Guida all uso: creare ed utilizzare le frasi. In questa guida è descritto come creare ed utilizzare le frasi nel software WoWords.

Analisi e diagramma di Pareto

Statistica. Lezione 6

Introduzione al MATLAB c Parte 2

Introduzione. Classificazione di Flynn... 2 Macchine a pipeline... 3 Macchine vettoriali e Array Processor... 4 Macchine MIMD... 6

Sostituto abilitato Entratel con più sedi: ricezione diretta e incarico ad intermediario abilitato

Mac Application Manager 1.3 (SOLO PER TIGER)

Prodotto libero di gruppi

Introduzione ai Metodi Formali

ATOLLO BACKUP GUIDA INSTALLAZIONE E CONFIGURAZIONE

Sistemi di Numerazione

MATLAB. Caratteristiche. Dati. Esempio di programma MATLAB. a = [1 2 3; 4 5 6; 7 8 9]; b = [1 2 3] ; c = a*b; c

Usando il pendolo reversibile di Kater

Appunti sulla Macchina di Turing. Macchina di Turing

Transitori del primo ordine

CONCETTO DI LIMITE DI UNA FUNZIONE REALE

Determinare la grandezza della sottorete

La Firma Digitale La sperimentazione nel Comune di Cuneo. Pier Angelo Mariani Settore Elaborazione Dati Comune di Cuneo

Elementi di informatica

uadro Soluzioni software per L archiviazione elettronica dei documenti Gestione Aziendale Fa quadrato attorno alla tua azienda

Dispensa di Informatica I.1

INFORMATIVA SUL DIRITTO ALLA PRIVACY PER LA CONSULTAZIONE DEL SITO WEB

Operazioni binarie fondamentali

Transcript:

988.44587991 864.00639226 912.57423224 810.6751627 1004.9465835 856.86126075 1138.2745474 728.29664537 1079.07469229 695.76234167 930.351318 826.07044723 900.19866958 855.11766404 835.59726026 631.79907235 845.59106749 607.51514839 826.07053756 730.67818328 719.40812543 712.90110561 878.12528707 606.87693617 844.95287635 529.89996398 800.51021841 627.67375558 859.71016379 739.56662699 932.56196132 La crittografia frattale in Perl Crypt::FNA e Crypt::FNA::Async

988.44587991 864.00639226 912.57423224 810.6751627 1004.9465835 856.86126075 1138.2745474 728.29664537 1079.07469229 695.76234167 930.351318 826.07044723 900.19866958 855.11766404 835.59726026 631.79907235 845.59106749 607.51514839 826.07053756 730.67818328 719.40812543 712.90110561 878.12528707 606.87693617 844.95287635 529.89996398 800.51021841 627.67375558 859.71016379 739.56662699 932.56196132 La crittografia frattale in Perl SEZIONE 1 Definizione dell insieme {F}

Definizione dell insieme {F} IT S FANTASTIC! FRACTAL CURVE AND SYMMETRIC ENCRYPTION Acronimo di Fractal Numerical Algorithm Ma cos è Crypt::FNA È l implementazione in Perl di due algoritmi per 1. formalizzare l insieme di curve frattali {F} 2. Applicare le curve {F} ad un sistema crittografico simmetrico

Definizione dell insieme {F} Partiamo da frattali lineari come la Koch curve Riportiamo le direzioni dei vari ordini in una costruzione a triangolo: 0 0, 60, -60, 0 0, 60, -60, 0, 60, 120, 0, 60, -60, 0, -120, -60, 0, 60, -60, 0

Definizione dell insieme {F} La cosa che a noi interessa è che ogni numero del triangolo è ottenuto come combinazione delle quantità al rigo superiore 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.

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 gruppo, o ramo su cui si itera il procedimento di costruzione. Il secondo addendo è la posizione dell angolo che stiamo calcolando, nell ambito di quel ramo. uhmmm a(0) = a(0) + a(0) a(1) = a(0) + a(1) I GRUPPO a(2) = a(0) + a(2) a(3) = a(0) + a(3) ------------------------------------------------ a(4) = a(1) + a(0) a(5) = a(1) + a(1) II GRUPPO a(6) = a(1) + a(2) a(7) = a(1) + a(3) ------------------------------------------------ a(8) = a(2) + a(0) a(9) = a(2) + a(1) III GRUPPO a(10)= a(2) + a(2) a(11)= a(2) + a(3) ------------------------------------------------ a(12)= a(3) + a(0) a(13)= a(3) + a(1) IV GRUPPO a(14)= a(3) + a(2) a(15)= a(3) + a(3)

Definizione dell insieme {F} Il gruppo cui appartiene l angolo k-esimo è: G(k) = int(k/ro) La posizione dell angolo k-esimo nel gruppo è invece: P(k) = k-int(k/ro) = k-g(k) In definitiva, il valore dell angolo k-esimo sarà: a(k)=a(g(k)) + a(p(k)) (1) Notiamo che questa relazione è generale e indipendente dal numero di parametri base della curva. In quella di Koch abbiamo una base di cardinalità pari a 4 ma non è necessariamente così.

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}

Grafici di {F} mediante il metodo make_fract (56,-187, 215, 64) (0,90,-60,-90,60)

Grafici di {F} mediante il metodo make_fract (56,-177,225,-164) (56,-77,215,-64,60)

Grafici di {F} mediante il metodo make_fract (0,90,0,-90) (0,90,60,-90,120)

Grafici di {F} mediante il metodo make_fract (56,-177,225,164) (21,-31,100,-79)

Grafici di {F} mediante il metodo make_fract (56,-67,215,-64,60,45) (56,-67,210,-64,60,70)

988.44587991 864.00639226 912.57423224 810.6751627 1004.9465835 856.86126075 1138.2745474 728.29664537 1079.07469229 695.76234167 930.351318 826.07044723 900.19866958 855.11766404 835.59726026 631.79907235 845.59106749 607.51514839 826.07053756 730.67818328 719.40812543 712.90110561 878.12528707 606.87693617 844.95287635 529.89996398 800.51021841 627.67375558 859.71016379 739.56662699 932.56196132 La crittografia frattale in Perl SEZIONE 2 Crypt::FNA metodi & attributi

L algoritmo crittografico Teoria 1dati sono memorizzati in byte: qualunque tipo di file vada ad aprire, il suo contenuto è certamente una sequenza ben precisa di byte. 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 ben preciso byte.

L algoritmo crittografico Teoria 2Le curve {F} hanno quindi 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 esempio il DES ed AES, FNA ha chiave segreta ma a differenza dei predetti Data Encryption Standard (che ha una chiave di 56 bit) ed Advanced EncryptionStandard (che ha una chiave compresa tra i 128 ed i 256 bit), FractalNumericalAlgorithmha una chiave in bit lunga quanto si vuole: non ci sono restrizioni sul numero e valore delle direzioni della base Ro.

L algoritmo crittografico Teoria 3 criptare Ogni 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. 4 decriptare Si 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.

Crypt::FNA methodi & attributi And now, technology application Crypt::FNA methods Crypt::FNA->new Crypt::FNA->make_fract Crypt::FNA->mac Crypt::FNA->encrypt_file Crypt::FNA->decrypt_file Crypt::FNA->encrypt_scalar Crypt::FNA->decrypt_scalar

Crypt::FNA metodi & attributi: METODO NEW Questo metodo ha due diverse modalità per l istanziazione dell oggetto: 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 })

Crypt::FNA metodi & attributi: METODO NEW L 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. Indicato con Ro il numero di angoli base della struttura autosimile, il numero di segmenti costituenti la curva è dato da Ro**r. Valore di default: 7 L attributo angle : direzioni dei segmenti base della curva di {F} Sono gli angoli cui si applica l algoritmo di ricorsione: su questi angoli si determina la struttura base autosimiledella curva di {F}. Gli angoli sono espressi nel sistema sessadecimale, con valori compresi tra -360 e 360 (ovvero da 0 a 360). Valore di default: (56,-187, 215,-64)

Crypt::FNA methodi & attributi: ATTRIBUTO ANGLE : lacci di {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: Definizione 1 Si definisce base di una curva Є {F} l insieme delle inclinazioni {Ro} Definizione 2 Si definisce ramo di una curva Є {F}, la spezzata relativa al calcolo eseguito secondo l algoritmo di costruzione sulla base o sua combinazione Teorema (v. http://www.perl.it/documenti/articoli/2010/04/anakryptfna.html) Ipotesi: sia data la base di {F}={x1, x2,, xn} : max(x)-min(x) < π/4 Tesi: l ipotesi è sufficiente affinché l insieme dei punti della curva {F} sia in corrispondenza biunivoca con un sottoinsieme di punti del piano

Crypt::FNA metodi & attributi: METODO NEW L attributo square : lato del quadrato dove verrà disegnata/calcolata la curva di {F} E la lunghezza del lato del quadrato contenitore della curva. Square non solo ha importanza per la (eventuale) rappresentazione grafica, ma anche per la crittografia, poiché viene utilizzato per calcolare la lunghezza del lato didella curva (di è proporzionale a square/ro**r) Valore di default: 4096 L attributo background : colore di fondo per il disegno della curva di {F} 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)

Crypt::FNA metodi & attributi: METODO NEW L attributo foreground : colore di primo piano per il disegno della curva di {F} 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) L attributo magic number : per la 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 (da cui discreta ). Valore di default: 3

Crypt::FNA metodi & attributi: METODO NEW L attributo salted : 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

Crypt::FNA metodi & attributi: METODO NEW L attributo salted : sale crittografico Teoria Ebbene, anteponendo il sale al dato da criptare, si influenza, per le caratteristiche intrinseche di FNA, tutta la sequenza successiva, per cui cifrature dello stesso dato, in momenti differenti e con la stessa chiave di cifratra, produrranno comunque crittogrammi completamente diversi. In fase di decriptazione, grazie alla chiave (l attributo magicnumbernello specifico), l algoritmo è in grado di valutare quali vertici iniziali del crittogramma scartare, partendo poi dall ultimo di questi per la valutazione dei bytessuccessivi e la ricostruzione del dato in chiaro.

Crypt::FNA metodi & attributi: METODO NEW L attributo salted : sale crittografico Teoria L utilità del sale è legata strettamente all aderenza statistica 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. Come indicato, le curve {F} hanno un andamento coerente alla definizione di caos deterministico: una piccola oscillazione iniziale dei valori, produce grandi variazioni nei dati finali (leggi le coordinate dei vertici della curva).

Crypt::FNA metodi & attributi: METODO NEW L attributo salted : sale crittografico Teoria: descrizione algoritmo Al momento dell invocazione del calcolo, si legge il numero di secondi trascorsi dalla mezzanotte del 1 gennaio 1970 (epochdate). Si calcola poi, tramite la funzione rand (pseudo casuale), un numero compreso tra 0 ed 1. 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 magicnumber. Se il quadrato del magicnumberè 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. Dall iterazione si esce quando la lunghezza del salt è pari al quadrato del magic number. Questa sequenza numerica, casuale, è il nostro sale crittografico.

Crypt::FNA metodi & attributi: METODO MAKE_FRACT 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. 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: 1 L'immagine prodotta è contenuta nel quadrato di lato square.

Crypt::FNA metodi & attributi: METODO ENCRYPT_FILE I metodi encrypt_file e decrypt_file, sono la summa: rendono utile mediante applicazione, la matematica delle curve di {F}. Questo metodo realizza un operazione ben precisa: 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}.

Crypt::FNA metodi & attributi: METODO ENCRYPT_FILE AH AHAH Ecco l aspetto di un file criptato mediante FNA -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 4679.21568268 9563.22563256 4833.53132591 9641.37582295 4740.32174942 9910.49435765 4448.89751812 10157.37473936 4273.26989922 10265.73224722 4218.00573474 10553.33210292 4076.79496626 10732.34891747 3830.35537312 10613.81591903 3785.18217462 10386.70855427 3666.99726881 10332.12423113 3476.25444621 10694.76481321 3296.35920314 10804.77625983 3060.88089069 11346.01346391 3007.91070428 11444.10666595 2765.46825422 11911.74931522 2771.84792598 12217.75488876 2730.08778903 12432.33422506 2649.22698242 12307.67655488 2179.40416992 12145.89439835 2279.94226546 12105.79701773 2047.78623478 12604.70024151 2134.4739565 12762.57334939 1895.30449332 12619.14996241 1526.25794611 12313.79872918 1561.04359063 12060.9258984 1204.52077789 11904.48474151 1011.49806809 11625.32850092 896.84643331 11430.88088124 1209.72754463 11427.67243264 1445.63793588 11243.03320502 1007.30448881

Crypt::FNA metodi & attributi: METODO ENCRYPT_FILE Ed ecco dove viene frullato il file

Crypt::FNA metodi & attributi: METODO DECRYPT_FILE I metodi decrypt_file ed encrypt_file, sono la summa: rendono utile mediante applicazione, la matematica delle curve di {F}. Questo metodo realizza un operazione ben precisa: 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.

Crypt::FNA metodi & attributi: METODO ENCRYPT_SCALAR Il metodo encrypt_scalarcifra 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. Ricordo che un sale è una stringa, solitamente random, aggiunta al dato da criptare, in modo che un brute force a dizionario non produca risultati.

Crypt::FNA metodi & attributi: 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)

Crypt::FNA metodi & attributi: METODO MAC MAC -> Message Authentication Code L autenticazione dei messaggi garantisce l integrità dell informazione anche in presenza di un avversario attivo che invia dati sensati sender receiver attacker

Crypt::FNA metodi & attributi: METODO MAC MAC -> Message Authentication Code Detti: K la chiave FNA scelta per l autenticazione A l applicazione dell algoritmo FNA di Sender V l applicazione dell algoritmo FNA di Receiver mil dato da autenticare Calcoliamo A k (m) coordinate ultimo vertice FNA 1. Senderinvia a Receiverla coppia (m, A k (m)) 2. Receiver che conosce Ked ha ricevuto m calcola V k (m)

Crypt::FNA metodi & attributi: METODO MAC MAC -> Message Authentication Code Sender -> (m, A k (m)) Receiver -> (m, V k (m)) ACCEPT MESSAGE true V k (m) =A k (m) false IGNORE MESSAGE END Se Attackermodifica il messaggio, ignorando la chiave K, non potrà inviare a Receiveril MAC corretto che quindi ignorerà il messaggio edulcorato.

Crypt::FNA metodi & attributi: METODO MAC Il metodo mac faquestolavoroper noi:in questocaso, Crypt::FNA lavoracome un algoritmo digest (ad. Es. MD5). L hash è rappresentatodallecoordinate dell ultimo vertice dellacurva{f} definita tramite il metodo new La sintassi è: my $mac=$krypto->mac($name_plain_file)

Crypt::FNA metodi & attributi: METODO MAC 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.

Crypt::FNA metodi & attributi: METODO MESSAGE Restituisce un array che contiene i codici errore restituiti da Crypt::FNA my@error_code=@{$krypto->message} 0 Orderofthe curve isnotcorrect. Mustnecessarilybenumeric. 1 Orderofthe curve mustbea numbergreaterthan0 2 Length Square container is incorrect. Must necessarily be numeric 3 Side ofa squarecontainer fractalmustbea numbergreaterthan0 5 Value of is not correct. Must necessarily be numeric.default loaded 6 The angle mustbeexpressedin the system sessadecimal(ex. 126.35) Default loaded 7 Error reading sub encrypt, package Crypt::FNA 8 error writing file, package Crypt::FNA sub encrypt 9 read error on sub decrypt myinput package Crypt::FNA 10 writeerroron sub decryptmyoutput package Crypt::FNA

Crypt::FNA metodi & attributi: METODO MESSAGE Restituisce un array che contiene i codici errore restituiti da Crypt::FNA my@error_code=@{$krypto->message} 11 error writing PNG sub draw_fract package Crypt::FNA 12 error background: only numeric character(rgb) 13 errorbackground: onlythreenumber(rgb) from0 to255 14 error foreground: only numeric character(rgb) 15 errorforeground: onlythreenumber(rgb) from0 to255 16 error loading GD::Simple, drawing aborted 18 errorzoom: the valuemustbea numbergreaterthanzero 19 errors during object instantiation 20 error magic setting 21 errorsaltedvalue(trueor false only) 22 error loading Tie::File 23 Errorreadingsub mac, package Crypt::FNA"

Crypt::FNA::Async methodi & attributi And now, technology application Crypt::FNA::Async methods Crypt::FNA::Async->new Crypt::FNA::Async->encrypt_files Crypt::FNA::Async->decrypt_files

Crypt::FNA::Async methodi & attributi 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. Verrannoelaborati, in parallelo, un numerodifiles parial numerodicore disponibili. Se il sistema non supporta I threads, Crypt::FNA::Async effettuerà comunque l elaborazione in serie(in modalità sincrona anziché asincrona)

Crypt::FNA::Async metodi & attributi: 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 })

Crypt::FNA::Async metodi & attributi: METODO ENCRYPT_FILES Il metodo accetta in ingresso un arraycontenente i nomi dei files, in chiaro, da criptare, quindi opera su questi e restituisce i filescriptati 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}.

Crypt::FNA::Async metodi & attributi: METODO DECRYPT_FILES Il metodo accetta in ingresso un arraycontenente i nomi dei filescriptati, quindi opera su questi e restituisce i filesin chiaro. La sintassi è: $krypto->decrypt_files(@files_to_decrypt) I filesdi input, di qualsivoglia formato, saranno letti e decifrati, tramite la curva {F}.

988.44587991 864.00639226 912.57423224 810.6751627 1004.9465835 856.86126075 1138.2745474 728.29664537 1079.07469229 695.76234167 930.351318 826.07044723 900.19866958 855.11766404 835.59726026 631.79907235 845.59106749 607.51514839 826.07053756 730.67818328 719.40812543 712.90110561 878.12528707 606.87693617 844.95287635 529.89996398 800.51021841 627.67375558 859.71016379 739.56662699 932.56196132 La crittografia frattale in Perl SEZIONE 3 Attacco ad FNA

Attacco a FNA FNA è un sistema particolare di cifratura, basato sulla sostituzione di bytes/caratteri con numeri complessi (n-plaordinata 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 di un vertice della curva. FNA può considerarsi un particolare polialfabetico, la cui particolarità risiede nel fatto di avere un numero di alfabeti virtualmente illimitato, questo perché ogni codifica dipende direttamente da tutte le precedenti e segue l effetto farfalla. Riferendomi esplicitamente al caos deterministico, una piccola variazione nel dato in chiaro, produce grandi differenze nel risultante cifrato. In sostanza, ciò che accade è che ogni codifica influenza la sequenza successiva di possibili crittogrammi poiché si riparte da zero (il numero di crittogrammi dipende dalla cardinalità dell alfabeto cui appartiene cosa si cifra); ciò che è interessante ai fini crittografici è che ogni sequenza di 256 vertici della curva di {F} (nel caso si cifrino bytes), quindi l alfabeto usato per cifrare quel determinato byte, è differente dal precedente ed il valore del byte da cifrare influenza i successivi alfabeti.

Attacco a FNA Premesso che la chiave di FNA è, in senso stretto, data dalle direzioni di inizializzazione Ro, di, magice square, osservandolo come polialfabeticoe 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 (nel senso che è notevolmente irregolare) similmente al caso della cifratura a blocco monouso inoltre presenta un numero di alfabeti cifranti virtualmente illimitato e quindi, possiamo dire, pari al numero di caratteri del messaggio in chiaro.

Attacco a FNA Parimenti 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). Vediamo perché, a mio avviso, è lecita questa osservazione:

Attacco a FNA Alfabeto L alfabeto utilizzato è lungo 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 degli angoli, di derivazione frattale, è notevolmente irregolare e questa successione influenza direttamente le coordinate.

Attacco a FNA 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.

Attacco a FNA Chiave La chiave, vista come ordinale della successione di alfabeti da utilizzare, è lunga come il messaggio: chiave 1, primo dato da cifrare: primo alfabeto -> influenza l alfabeto successivo chiave 2, secondo dato da cifrare: secondo alfabeto -> influenza l alfabeto successivo... chiave n-1, n-1esimo dato da cifrare: n-1 esimo alfabeto -> influenza l alfabeto n-esimo In quest ottica abbiamo dunque una chiave lunga come il dato da cifrare ed un numero di alfabeti pari al numero di elementi costituenti il dato in chiaro.

Attacco a FNA Da notare che un eventuale attacco di forza bruta richiederebbe più tempo di quello necessario alla morte termica del nostro Universo.

Attacco a FNA Da notare che un eventuale attacco di forza bruta richiederebbe più tempo di quello necessario alla morte termica del nostro Universo. Se partissimo dall ipotesi di un numero di direzioni base Ro=3, non avremmo comunque idea del valore di queste direzioni. Consideriamo che il valore è un numero compreso tra 0 e 360, consideriamo inoltre che non abbiamo idea di quanti decimali siano stati utilizzati. Se avessimo 8 decimali il numero di direzioni da testare sarebbe: (99'999'999 * 360)**3 = 46655998600320013996799953344000 possibili combinazioni

Attacco a FNA Da notare che un eventuale attacco di forza bruta richiederebbe più tempo di quello necessario alla morte termica del nostro Universo. Se partissimo dall ipotesi di un numero di direzioni base Ro=3, non avremmo comunque idea del valore di queste direzioni. Consideriamo che il valore è un numero compreso tra 0 e 360, consideriamo inoltre che non abbiamo idea di quanti decimali siano stati utilizzati. Se avessimo 8 decimali il numero di direzioni da testare sarebbe: (99'999'999 * 360)**3 = 46655998600320013996799953344000 possibili combinazioni Se potessimo verificare una combinazione al secondo (ipotesi estremamente ottimistica), occorrerebbero un numero di anni pari a: 1 479 452 010 410 959 347 945 204 E se le direzioni fossero 4? Tralascio il calcolo

Attacco a FNA Inoltre ci sono altre variabili, come il magic number, che rendono oltremodo arduo individuare gli angoli successivi (nel tentativo di scoprire la base) oltre all ordine della curva su cui si va a crittografare.

Attacco a FNA Inoltre ci sono altre variabili, come il magic number, che rendono oltremodo arduo individuare gli angoli successivi (nel tentativo di scoprire la base) oltre all ordine della curva su cui si va a crittografare. Consideriamo inoltre le possibilità di ipercrittografia, che ampliano esponenzialmente le combinazioni da dover identificare, come visto, anche con poche direzioni base

988.44587991 864.00639226 912.57423224 810.6751627 1004.9465835 856.86126075 1138.2745474 728.29664537 1079.07469229 695.76234167 930.351318 826.07044723 900.19866958 855.11766404 835.59726026 631.79907235 845.59106749 607.51514839 826.07053756 730.67818328 719.40812543 712.90110561 878.12528707 606.87693617 844.95287635 529.89996398 800.51021841 627.67375558 859.71016379 739.56662699 932.56196132 La crittografia frattale in Perl SEZIONE 4 www.crypter.eu Online crypter engine

www.crypter.eu online crypter engine Crypter.eu, tuttora in fase di sviluppo, è un progetto che, potremmo definire, di cloud encryption: Gli utenti del servizio potranno criptare e decriptare i propri files, scegliendo poi di farseli inviare per emailo salvare il risultato in locale.

www.crypter.eu online crypter engine Consta di un document(e usermanager), realizzato con Omnia, presentato a IPW2009, in cui gli utenti caricheranno i filese specificheranno la propria chiave FNA e su cui poi effettueranno le operazioni di crittografia scelte. Questo è il motivo principale per cui è nata la classe Crypt::FNA::Async(in modo da schedulare più operazioni in parallelo) ed il motivo della ricerca nell ottimizzazione dell algoritmo di Crypt::FNA

988.44587991 864.00639226 912.57423224 810.6751627 1004.9465835 856.86126075 1138.2745474 728.29664537 1079.07469229 695.76234167 930.351318 826.07044723 900.19866958 855.11766404 835.59726026 631.79907235 845.59106749 607.51514839 826.07053756 730.67818328 719.40812543 712.90110561 878.12528707 606.87693617 844.95287635 529.89996398 800.51021841 627.67375558 859.71016379 739.56662699 932.56196132 La crittografia frattale in Perl SEZIONE 5 conclusioni

CONCLUSIONI 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à