Anteprima
Vedrai una selezione di 4 pagine su 11
Crittografia - Appunti Pag. 1 Crittografia - Appunti Pag. 2
Anteprima di 4 pagg. su 11.
Scarica il documento per vederlo tutto.
Crittografia - Appunti Pag. 6
Anteprima di 4 pagg. su 11.
Scarica il documento per vederlo tutto.
Crittografia - Appunti Pag. 11
1 su 11
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

SSLSecure Socket Layer

è un protocollo (estensione di tcp/ip che si piazza tra livello applicazione e livello trasporto ed è indipendente sia dal protocollo che sta sopra come http sia da quello che sta sotto come tcp) che mette insieme tutti gli elementi di base studiati in precedenza come rsa, hash, ecc, non aggiunge niente di nuovo quindi.

Ha l'obiettivo di fare autenticazione e condenzialità senza che l'utente se ne accorga. Se tutto il mondo fosse esperto di crittografia, ssl non servirebbe, perché esso non è niente di nuovo.

TLS è la versione successiva di SSL, ma SSL è didatticamente migliore da studiare anche se deprecato.

SSL che nello stack TCP/IP ha in alto lo strato di applicazione (es http) e in basso lo strato di trasporto (es tcp) è diviso a sua volta in due strati, quello più in basso si chiama SSL record che è connesso direttamente al protocollo di trasporto, quello più in alto si chiama SSL.

handshake.Handshake crea un canale sicuro dentro il quale record fa viaggiare i messaggi incapsulandoli in blocchi cifrati e autenticati.

SSL viene invocato dall'utente e si basa sulla condivisione di un segreto chiamato master secret, dal quale sia l'utente che il server strapperanno dei pezzi per creare delle chiavi.

Tutto nasce dal client che chiama un "client hello" dove invia determinate cose tra cui una serie di strumenti da utilizzare (es rsa, sha1, ecc) e il server risponde con "server hello" che contiene altre cose tra cui gli strumenti che supporta, invia anche il suo certificato, e può chiedere opzionalmente il certificato del client.

Al client non viene chiesto necessariamente un certificato (perché è a pagamento) altrimenti non lo userebbe nessuno.

Dopo i primi due scambi tra client e server, si è deciso quali strumenti utilizzare, sono stati scambiati reciprocamente dei byte casuali, ed anche i certificati (solo quello del server).

è obbligatorio) Dopodiché il client crea un pre master secret dove invia altri byte casuali e cifrati con la chiave pubblica del server (la chiave pubblica è presa dal certificato inviato poco prima), il pre master secret comprende alcune stringhe note e i byte casuali presenti sia in client hello che server hello, poi questo viene dato in pasto a due funzioni di hash, prima sha1 e poi md5, il risultato è il master secret. Se il server chiede il certificato al client ed esso non lo possiede allora la comunicazione si interrompe, nel caso ce l'abbia oltre al certificato il client invia anche il master secret da lui generato e la history della conversazione per evitare che qualcuno si sia messo in mezzo ad un certo punto, entrambi crittografati con la sua chiave privata. Il master secret serve per ottenere 3 chiavi (una tripla), una per crittografia asimmetrica, una per il mac, e una per messaggi lunghi. Da notare che le chiavi che userannoutilizzare tag h1, ecco come puoi formattare il testo utilizzando tag html:

client e server sono diverse tra loro per aumentare la sicurezza, nonostante entrambi conoscano le chiavi dell'altro.

Con la versione successiva TLS ci sono dei modi per effettuare la comunicazione in sicurezza anche se il server non dispone di un certificato, usando ad esempio il protocollo di Diffie-Hellman, però senza certificati c'è il problema del man-in-the-middle.

Durante gli hello iniziali, ci si invia delle sequenze casuali, queste serviranno per la costruzione del master secret, che sarà così diverso ad ogni sessione SSL (si evita attacco di replay).

Le 3 sequenze casuali vengono da: client hello, server hello e dal pre-master secret fatto dal client, da loro deriva la sicurezza dell'intero protocollo.

Protocolli Zero-Knowledge:

Permettono a qualcuno di convincere qualcun altro di qualcosa senza dirgliela, l'esempio è una persona che dice di sapere quanti sono i granelli di sabbia su di una spiaggia deve convincere un'altra persona senza.

però parlare del metodo di conteggio di questi granelli

La persona da convincere chiede se i granelli sono pari o dispari, poi toglie un numero qualsiasi di granelli e richiede se i granelli sono pari o dispari, poi rifà ancora la stessa cosa tante volte, più le risposte saranno coerenti tra loro e più si avvicina alla sicurezza che la prima persona sappia contare davvero i granelli sulla spiaggia (infatti la persona da convincere non sa contare i granelli ma sa capire se le risposte sono coerenti), corrisponde alla realtà dove P (persona che deve convincere) ha tanta potenza computazionale e V (vero er ovvero persona da convincere) non ce l'ha

Normalmente per fare identificazione quando si usa un cifrario a chiave pubblica si manda un challenge (che è un file random) crittografato con la chiave pubblica della persona da identificare alla persona che si deve identificare che grazie alla sua chiave privata riesce a decriptarlo e mostrare all'altro

comunica a V dove se e=1 allora sarà uguale a r altrimenti r*s mod n, in ne si confrontano i risultati e se è tutto ok si riparte altrimenti si blocca il protocollo senza identificarlo

Eseguendo questa iterazione 5 volte la probabilità che P indovini 5 volte consecutivamente senza sapere s è di 1 su 32, se la si esegue 10 sarà di 1 su 1024, se si esegue 100 sarà quasi impenetrabile. Il tutto senza mai rivelare nulla di Bitcoin

I bitcoin sono in numero finito, e si creano piano piano fino ad un massimo di 21 milioni, le previsioni dicono che avverrà nel 2140, ad oggi ce ne sono in giro 17/18 milioni.

Il controllo è esclusivo degli utenti, non esistono banche, notai o governi che controllano questo sistema.

Ogni utente ha un indirizzo, che è una stringa di caratteri, non è IP o altro, è completamente anonimo perché non esiste un registro che dice a chi appartenga un indirizzo.

Il wallet (portafoglio) sono l'insieme

aggiunto al nodo che ha trovato la dimostrazione. Il mining è un processo computazionale intensivo che richiede molta potenza di calcolo. I miner utilizzano la loro potenza di calcolo per risolvere problemi matematici complessi al fine di confermare le transazioni e aggiungere nuovi blocchi alla blockchain. La blockchain è una catena di blocchi collegati tra loro. Ogni blocco contiene un insieme di transazioni confermate e un riferimento al blocco precedente. Questo rende la blockchain un registro pubblico e immutabile di tutte le transazioni di bitcoin. La sicurezza della blockchain è garantita dalla sua struttura decentralizzata e dalla crittografia. Ogni blocco è collegato al precedente attraverso un hash crittografico, rendendo estremamente difficile alterare o falsificare le transazioni. I bitcoin sono conservati in portafogli digitali, che sono essenzialmente coppie di chiavi crittografiche. Una chiave privata è utilizzata per firmare le transazioni e una chiave pubblica è utilizzata per verificare la firma. Solo il proprietario della chiave privata può spendere i bitcoin associati a quella chiave. In conclusione, i bitcoin sono una forma di valuta digitale che utilizza la tecnologia blockchain per garantire la sicurezza e la trasparenza delle transazioni. Il mining è il processo attraverso il quale vengono confermate le transazioni e aggiunti nuovi blocchi alla blockchain. La blockchain è un registro pubblico e immutabile di tutte le transazioni di bitcoin.

accreditato al nodo autore della dimostrazione.

Fare la dimostrazione di correttezza non sempre conviene farla, quando i bitcoin valevano 10000 l'uno c'era stimolo per cercare di farlo, ora che valgono 3000 si va in perdita per l'uso della corrente.

I nodi accettano il blocco solo se le transazioni in esso contenute sono valide e non apparse in blocchi precedenti.

Il software cliente del bitcoin (oggi è bitcoin core ma cambia spesso) è caricato sul pc o sullo smartphone di ogni utente e genera una coppia di chiavi privata e pubblica, usando un cifrario asimmettrico su curve ellittiche.

La chiave privata viene usata per firmare le transazioni che genera, mentre la pubblica viene impiegata per controllare la firma e anche come identificatore, per fare ciò viene ripetutamente data in pasto alla funzione hash sha-256 (immagine a 256 bit) per poi essere compressa via ripemd-160 (un altro tipo di funzione hash con immagine a 160 bit).

in testa alla quale è aggiunta una sequenza che indica che la stringa complessiva è di fatto un indirizzo bitcoin. Avendo quindi la chiave pubblica si risale senza problemi all'indirizzo, ciò che viene effettivamente fatto è: prendo la chiave pubblica e ci faccio sha256 e il risultato lo do in pasto a ripemd160 che darà una fingerprint di 160 bit, presi questi 160 bit ci aggiungo in fondo 4 bytes chiamati checksum che sono il risultato di applicare due volte sha256 alla fingerprint di 160 bit, poi in ne in testa a tutto viene aggiunto qualcosa per fare capire che si tratta di un indirizzo bitcoin. Quindi il vero identificatore di un utente è la sua chiave pubblica. L'indirizzo quindi non corrisponde ad una locazione dell'utente ma ad un modo per identificarlo, sia per potergli dirigere una transazione che per controllare che possieda effettivamente i fondi che pretende di spendere (importante). Il protocollo di transazione dei bitcoin funziona così,

Il messaggio è dato dagli indirizzi di mittente e destinatario e dalla somma da trasferire. Il mittente calcola l'hash sha-256 del messaggio e genera la rma usando la sua chiave privata (quindi decodificando il risultato della funzione hash precedente) e poi spara sulla rete la coppia formata dal messaggio in chiaro e dalla rma.

La verifica di validità della transazione (mining) è eseguita dalla rete che aggiorna in conseguenza il libro contabile. Il destinatario attende che la rete convalidi la transazione prima di accettarla, se il destinatario deve spedire della merce non sua, per prudenza deve attendere la convalida del messaggio prima della spedizione (attualmente qualche minuto).

La chiave privata è l'unico documento valido per dimostrare la proprietà in bitcoin di un utente, in pratica la chiave pubblica è l'indirizzo e la chiave privata è la dimostrazione di possedere quella chiave.

Dettagli
Publisher
A.A. 2021-2022
11 pagine
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher luca2695 di informazioni apprese con la frequenza delle lezioni di Crittografia e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Bologna o del prof Margara Luciano.