Crittografia con Python

Documenti analoghi
Crittografia con Python

Crittografia. Steganografia

Crittografia con Python

CODICI. Crittografia e cifrari

Crittografia per la sicurezza dei dati

Storia della Crittografia. dalle origini al XVI secolo

Crittografia con Python

Elementi di Crittografia

Steganografia in un. Corso di Sicurezza dei sistemi informatici Michelangelo Rinelli Anno Accademico 2005/06

Agenda. Steganografia e crittografia. Classificazione e descrizione di alcuni metodi. Chiave privata chiave pubblica. I numeri primi.

Elementi di crittografia

Avviate l interprete Python selezionandolo dal menu dei programmi. Una volta avviato, l interprete presenta un cursore in cui inserire comandi

Crittografia con Python

la crittografia tratta delle "scritture nascoste", dei metodi per rendere un messaggio "offuscato"

Elementi di Algebra e di Matematica Discreta Cenno di un applicazione alla crittografia

RACCOLTA DI ALCUNI ESERCIZI TRATTI DA COMPITI D ESAME SUL SISTEMA CRITTOGRAFICO RSA

Crittografia classica: la storia

Quando usiamo Python in modo interattivo in genere e' lo shell utilizzato che gestisce l'indentazione e la deindentazione.

Informatica di base 6/ed

IL CIFRARIO DI CESARE. Museo della Matematica Lucio Lombardo Radice

Introduzione alla Crittografia. Le Basi (definizioni, richiami e strumenti) Bruno Martino - Fabio Guglietta

Dizionari. Hashtables.

CRITTOGRAFIA: introduzione

Programmazione in Python. Moreno Marzolla

Usare Python in Linux

PRINCIPI DI COMPUTER SECURITY. Andrea Paoloni

Identificazione, Autenticazione e Firma Digitale. Firma digitale...

Crittografia a chiave pubblica

Agostino Dovier. Dip di Matematica e Informatica, Univ. di Udine

crittografia a chiave pubblica

Breve storia della crittografa

Università degli Studi di Milano

Il Gioco dell'agente Segreto

Il linguaggio di programmazione Python

Linguistica Computazionale: esercitazioni

IL DISCO DI ALBERTI. Museo della Matematica Lucio Lombardo Radice

Architettura degli Elaboratori

Introduzione al Python

La tabella dei bigrammi è la frequenza con la quale compaiono COPPIE di lettere in una lingua.

Fortran in pillole : prima parte

Comunicazioni. Utilizzeremo Octave (compatibile con Mathlab) per scrivere semplici codici di cifratura, decifratura e decrittazione

Funzioni e moduli. Andrea Passerini Informatica. funzioni e moduli

FIRMA ELETTRONICA. Il sistema di garanzia è stato individuato nella crittografia in quanto è in grado di assicurare:

Crittografia e firma digitale INTRODUZIONE INTRODUZIONE

Laboratorio di Python (con Linux)

CRITTOGRAFIA E NUMERI PRIMI TFA A059 ANNA NOBILI OTTAVIANO ROSI

CIFRARI MONOALFABETICI

Sommario. 1 La shell di Windows PowerShell... 1

StarShell. Steganografia. StarShell

Usare la crittografia a chiave pubblica per tutelare la privacy nella corrispondenza elettronica.

Sicurezza nelle applicazioni multimediali: lezione 2, crittografia classica. Crittografia classica

Il cifrario di Vigenère. Bizzoni Stefano De Persiis Angela Freddi Giordana

Definizione di sicurezza. Sicurezza in Informatica. Sicurezza per il singolo utente. Panoramica. Per sicurezza si intende la protezione delle risorse

Crittografia: dagli antichi codici di Cesare ai protocolli avanzati

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore

Introduzione alla Crittografia Moderna

INTRODUZIONE ALLA PROGRAMMAZIONE

Studio degli algoritmi

Introduzione alla Crittografia

I Cifrari Perfetti. Alessio Nunzi Fabiola Genevois Federico Russo

Introduzione al corso di Programmazione e Laboratorio

logaritmo discreto come funzione unidirezionale

Linee di programmazione

Transcript:

Crittografia con Python Corso introduttivo Marzo 2015 Con materiale adattato dal libro Hacking Secret Cypher With Python di Al Sweigart (http://inventwithpython.com/hacking/index.html)

Nascondere segreti Fin dai tempi più remoti c è sempre stato interesse a mantenere dei segreti, che dovevano essere conosciuti soltanto da alcune persone Un segreto è il tuo prigioniero: se lo lasci fuggire sarai il suo prigioniero

Nascondere segreti Persone interessate: militari, corpo diplomatico, scrittori di diari e amanti Gli esempi più remoti di tentativi di tenere celata un informazione possono trovarsi nelle Storie di Erodoto (V secolo a.c.), nelle quali narra dell invasione persiana in Grecia

Steganografia Dal greco steganòs (coperto) e gràphein (scrittura). I messaggi vengono coperti in modo che non possano essere visti o, anche se visti, non siano interpretati come tali. La steganografia appare prima della crittografia perchè si basa su stratagemmi furbi per coprire il messaggio

Esempi di steganografia Dalle Storie di Erodoto: il messaggio veniva scritto su un legno il quale veniva poi ricoperto di cera e scambiato così per una tavoletta da scrittura ancora vergine (Demarato). il messaggio veniva scritto sulla testa rasata del messaggero, gli si facevano crescere i capelli (quindi non si aveva fretta...) e poi lo si mandava a destinazione (Istièo).

Altri esempi La steganografia è stata usata in tempi più recenti XVI secolo, Giambattista Della Porta e il metodo dell uovo sodo scrittura con inchiostri simpatici striscioline finissime di seta appollottolate, ricoperte di cera e inghiottite dal messaggero microdot

Limiti della steganografia Se il messaggio viene visto, tutta l informazione è immediatamente disponibile Per superare questi limiti viene sviluppata la crittografia, dal greco kryptòs, che significa nascosto Anche la crittografia ha origini antiche

Crittografia: definizioni La crittografia tratta dei metodi per rendere un messaggio "offuscato" in modo da non essere comprensibile a persone non autorizzate a leggerlo. La crittografia è la controparte della crittanalisi ed assieme formano la crittologia.

Modello crittografico Intrusi passivi ascoltano semplicemnte Intruso Intrusi attivi possono alterare i messaggi Testo in chiaro, P Metodo di cifratura Metodo di decifratura Testo in chiaro Chiave di cifratura, k Testo cifrato, C=E K (P) Chiave di decifratura

Crittografia: terminologia Testo in chiaro (P): messaggio da codificare Chiave (K): parametro della funzione di cifratura Testo cifrato (C): testo cifrato C = E K (P) P = D K (C) Codifica del testo P usando la chiave K Decodifica del testo C usando la chiave K D K (E K (P))=P

Regola fondamentale (Auguste Kerckhoffs 1883) Si assume che chi voglia violare il codice sia a conoscenza del metodo di codifica usato, ma non della chiave: troppo sforzo per inventare, verificare e installare un nuovo metodo ogni volta che ci si rende conto che non è più segreto pensare che un metodo sia segreto quando effettivamente non lo è può essere molto pericoloso

Esempio Metodo di cifratura segreto, nessuna chiave

Cifrari a sostituzione Ogni lettera o gruppo di lettere vengono rimpiazzati da un altra lettera o gruppo di lettere Uno dei più vecchi e noti è dovuto a Giulio Cesare: viene effettuato uno shift di tre posti per sostituire i caratteri Cesare Fhvduh

Metodo di codifica D A C B A Z Y W X V U T S R Q P O N M L K J I H G F E Z Y W X V U T S R Q P O N M L K J I H G F E D C B Quante possibili chiavi? 26, troppo poche, va bene solo per i Cartaginesi... Cosa vuol dire IEDERHQLE?

Linguaggio interpretato Orientato agli oggetti Libreria molto vasta Multipiattaforma Open www.python.org

Ambiente di sviluppo Python è disponibile per ogni piattaforma (Windows, MacOs, Linux, Raspberry ecc.) Per questo corso si utilizzerà Portable Python, distribuzione portatile per ambiente Windows, nella versione 3.2.5.1, che comprende al suo interno sia l'interprete che una serie di librerie e strumenti utili (IDLE, Ipython, ) e che ha il vantaggio di non richiedere installazione http://portablepython.com/

IDLE e IPython IDLE è sia un editor per la scrittura di programmi che una shell interattiva Ipython è un ambiente con una shell interattiva molto sofisticata, con autocompletamento, command history ecc. Useremo l'uno e l'altro a seconda della esigenze, Windows non è l'ambiente ideale ma ce la caveremo

Fondamenti fondamentali Le variabili si dichiarano senza tipo, che viene inferito dal contesto (e non può cambiare implicitamente) L'indentazione non è cosmetica, definisce la struttura del programma Le strutture dati come liste, tuple, dizionari ecc sono parte del linguaggio Lo so che è un po' poco, vedremo il resto poi...

Primo esempio: codice inverso Scopo: vogliamo prendere una stringa e invertirla, un semplice esempio di codice senza chiave Useremo l'assegnamento tra stringhe, la concatenazione tra stringhe, la funzione per calcolare la lunghezza di una stringa, il ciclo while e la funzione print per stampare il risultato Partiamo con IDLE... Facile, vero?

Codice di Cesare in Python Importazione di un modulo Metodi find e upper per stringhe Utilizzo dell'operatore di selezione if Utilizzo del ciclo for e dell'operatore in Utilizzo del modulo pyperclip Torniamo a IDLE...

Cifrari a sostituzione Piccolo miglioramento: sostituzione monoalfabetica al posto della traslazione Al posto di 26 tentativi il crittoanalista ne deve fare 26! (circa 4 x 10 26 che è un numero molto grosso): sembra buono P A U Y T D E W A V O I L N B G R Q S M F K J H C X Z Z Y X W V U T S R Q P O N M L K J I H G F E D C B

Complessità computazionale Supponendo di avere un computer che esplora un milione di possibilità al secondo Numero di possibilità 26 1 milione 1 sec. 10 26 Tempo impiegato 0,000026 sec. 270 milioni di Eu* 10 38 2,7 milioni di milioni di Eu* *Eu = età stimata dell Universo

E adesso tocca a voi... Per casa provare a produrre un cifratore a sostituzione Se funziona prendere un file con del testo italiano, sufficientemente lungo, e cifrarlo con una chiave segreta La prossima volta vedremo come attaccarlo...