Posta elettronica - SMTP, POP3 e IMAP
In questa pagina 7
Il problema e l'architettura
La posta elettronica (e-mail) permette agli utenti di scambiarsi messaggi. È diversa da HTTP (Livello applicazione - HTTPIl livello applicazione è il più alto della pila: offre servizi all'utente con una connessione logica tra le due applicazioni e riceve servizi solo dal trasporto (DNS, HTTP, e-mail, FTP). Il Web (WWW, nato al CERN nel 1989) è un servizio client-server distribuito di pagine collegate da ipertesti; ogni pagina ha un URL protocollo://host:porta/percorso. HTTP: il client manda una richiesta, il server una risposta, su TCP (server sulla porta 80, client su una porta temporanea); senza stato. Messaggi di testo (riga di richiesta o di stato, intestazioni, riga vuota, corpo), metodi GET, POST, HEAD, PUT, DELETE, codici di stato 2xx-5xx. Una pagina con N oggetti incorporati richiede 2(N+1) RTT con connessioni non persistenti e (N+2) RTT con connessione persistente (trascurando la trasmissione). I cookie danno memoria al protocollo: Set-Cookie nella risposta, Cookie nelle richieste, file nel browser e base di dati nel sito. Un proxy (web cache) tiene le copie delle risposte recenti: meno carico sul server, meno traffico, meno ritardo.Livello applicazione - HTTP →): in HTTP il server è sempre attivo e aspetta le richieste di un client; quando ne arriva una, offre il servizio. Nella posta la situazione è diversa:
- l'e-mail è una transazione a senso unico: quando A scrive a B può aspettarsi una risposta, ma non è un obbligo; se B risponde, è un'altra transazione a senso unico;
- non è né possibile né logico che B faccia girare un programma server in attesa che qualcuno gli scriva.
L'idea client/server va quindi realizzata in un altro modo, con dei computer intermedi (server): gli utenti fanno partire i programmi client quando serve, e i server intermedi applicano il paradigma client/server.
Definizione (scenario tipico). Servono due UA (User Agent) sugli host locali; due programmi client/server di spinta (push), gli MTA (Message Transfer Agent); un programma client/server di tiro (pull), il MAA (Message Access Agent).
UA di Mario UA di Luisa
| SMTP server del mittente ---------SMTP--------> server del |
|--------> (es. Gmail) (MTA - MTA) destinatario <----|
| (MTA) (es. Yahoo) POP3 o IMAP4
(MAA)Tre usi del paradigma client/server, con tre protocolli:
- dal mittente al suo server: MTA, protocollo SMTP;
- dal server del mittente al server del destinatario: ancora MTA, SMTP;
- dal server del destinatario al destinatario: MAA, POP3 oppure IMAP4 (oppure HTTP, nel caso del webmail).
Il motivo del punto 3: SMTP è un protocollo di spinta, chi ha un messaggio lo manda a un server che lo accetta. Il destinatario invece deve tirare (scaricare) quando si collega. Il trasporto è TCP (TCP - connessione, affidabilità e controllo di flussoTCP (Transmission Control Protocol) è il protocollo di trasporto con connessione e affidabile: trasforma il servizio senza connessione e inaffidabile di IP in un flusso di byte ordinato, senza errori né duplicati. La connessione si apre con l'handshake a tre vie (SYN, SYN+ACK, ACK) e si chiude con tre o quattro segmenti (FIN). I byte sono numerati: il numero di sequenza è quello del primo byte del segmento, il numero di ACK (cumulativo) è il prossimo byte atteso. Il mittente può inviare $\min(\text{rwnd},\text{cwnd})$ byte non ancora confermati; rwnd (finestra del ricevitore, in un campo di 16 bit) è il controllo di flusso. L'errore si gestisce con checksum, ACK, timeout di ritrasmissione (RTO) e ritrasmissione rapida dopo tre ACK duplicati. Per usare tutto il canale la finestra deve valere almeno il prodotto banda-ritardo (BDP); il throughput massimo è $\text{MSS}\cdot W_{\max}/\text{RTT}$.TCP - connessione, affidabilità e controllo di flusso →); il server di destinazione si trova con il DNS (record MX, Livello applicazione - DNSIl DNS (Domain Name System) traduce i nomi (www.amazon.com) negli indirizzi IP, perché le persone preferiscono i nomi e i protocolli TCP/IP usano gli indirizzi. È un database distribuito e gerarchico: albero rovesciato con radice, domini di primo livello e sottodomini (al più 128 livelli); le informazioni sono su tanti server (13 server radice) e i nuovi domini si registrano presso un registrar accreditato ICANN. Ogni ISP ha un DNS locale, il cui indirizzo l'host riceve con DHCP: l'host (resolver) gli manda la richiesta, di solito su UDP, e il DNS locale interroga radice, dominio di primo livello e server dell'organizzazione. Ogni server che impara un'associazione la tiene in cache, marcando la risposta non autoritativa, e la scarta dopo il TTL. Record (nome, tipo, valore, classe, TTL). Con il NAT il DNS deve restituire l'indirizzo pubblico. Quattro attacchi: macchina compromessa, risposta falsa all'host, avvelenamento della cache del DNS locale, server DNS malevolo.Livello applicazione - DNS →).
User Agent. Lo UA è il programma che rende più facile spedire e ricevere: scrive, legge, risponde, inoltra i messaggi e gestisce le caselle locali sul computer dell'utente. Ce ne sono di due tipi: a comandi (dei primi tempi della posta: mail, pine, elm) e grafici, con icone, barre dei menu e finestre (Eudora, Outlook).
Il messaggio
Un messaggio è testo ASCII: un'intestazione (righe Nome: valore: From, To, Date, Subject), una riga vuota e il corpo.
From: Behrouz Forouzan
To: William Shane
Date: 1/10/2011
Subject: Network
Dear Mr. Shane,
We want to inform you that ...Definizione (busta e contenuto). Le righe
From:eTo:dentro il messaggio sono il contenuto, quello che l'utente vede. Gli indirizzi che i server usano per consegnare sono quelli del dialogo SMTP,MAIL FROMeRCPT TO(la busta, envelope): possono essere diversi.
Esempio. Con la copia nascosta (Bcc) il server riceve un RCPT TO in più, ma l'indirizzo non compare nel contenuto: gli altri destinatari non lo vedono.
SMTP
SMTP (Simple Mail Transfer Protocol) definisce come comandi e risposte si scambiano tra un MTA client e un MTA server. Ogni comando o risposta termina con un marcatore di fine riga di due caratteri: ritorno a capo e nuova riga (CR LF).
- Comandi (client server):
HELO(il client si presenta con il suo nome di dominio),MAIL FROM(mittente del messaggio),RCPT TO(destinatario),DATA(corpo del messaggio),QUIT. - Risposte (server client): un codice a tre cifre, eventualmente seguito da testo. I principali:
220servizio pronto,221servizio in chiusura,250comando completato,354inizia l'immissione della posta,421servizio non disponibile.
Proprietà (le tre fasi del trasferimento). Un messaggio si trasferisce in tre fasi: apertura della connessione, trasferimento della posta, chiusura della connessione.
1. Apertura. Dopo che il client ha aperto una connessione TCP verso la porta 25 (porta nota) del server:
- il server manda il codice 220 (servizio pronto) per dire che può ricevere posta; se non è pronto, manda 421 (servizio non disponibile);
- il client manda HELO, presentandosi con il suo nome di dominio: serve al server per sapere il dominio del client;
- il server risponde 250 (comando completato) o un altro codice a seconda del caso.
2. Trasferimento. Stabilita la connessione, si può scambiare un messaggio tra un mittente e uno o più destinatari:
- il client manda MAIL FROM, con l'indirizzo del mittente (casella e dominio): serve al server per avere l'indirizzo a cui restituire errori e rapporti;
- il server risponde
250(o altro codice appropriato); - il client manda RCPT TO, con l'indirizzo del destinatario;
- il server risponde
250o altro; - il client manda DATA per iniziare il trasferimento del messaggio;
- il server risponde 354 (inizia l'immissione della posta) o altro;
- il client manda il contenuto del messaggio, riga per riga, ognuna terminata da CR LF; il messaggio finisce con una riga che contiene solo un punto;
- il server risponde 250 (OK) o altro.
3. Chiusura. Trasferito il messaggio, il client chiude la connessione in due passi: manda QUIT, il server risponde 221 (o altro).
Esempio (la sequenza delle slide). S: server, C: client; il nome some.com è quello dell'host del client.
S: 220 service ready
C: HELO some.com
S: 250 OK
C: MAIL FROM: forouzan@some.com
S: 250 OK
C: RCPT TO: william@aNetwork.com
S: 250 OK
C: DATA
S: 354 start mail input
C: From: Behrouz Forouzan
C: To: William Shane
C: Date: 1/10/2011
C: Subject: Network
C:
C: Dear Mr. Shane,
C: We want to inform you that ...
C: .
S: 250 OK
C: QUIT
S: 221 service closedNella figura delle slide lo scambio è diviso così: 220, HELO, 250 sono l'apertura; MAIL FROM e RCPT TO con le loro risposte sono la busta (envelope); dopo DATA e 354 vengono l'intestazione (From, To, Date, Subject), la riga vuota e il corpo, chiuso dal punto; QUIT e 221 sono la chiusura. Le coppie comando-risposta sono 6 (HELO, MAIL FROM, RCPT TO, DATA, il testo con il ., QUIT), più il 220 iniziale che il server manda da solo.
Quanto dura la sessione? Ogni coppia comando-risposta costa un RTT (Analisi delle prestazioni di reteLe prestazioni di una rete si misurano con tre famiglie di metriche: traffico (bitrate $R_0$ massimo del collegamento, throughput $S\le R_0$ dati consegnati con successo, goodput al livello applicazione), ritardo (end-to-end $d_{tot}=d_{proc}+d_{queue}+d_{trans}+d_{prop}$ con $d_{trans}=L/R$ e $d_{prop}=d/v$; jitter; RTT) e capacità del tubo (BDP $=R\cdot$ ritardo, bit che riempiono il collegamento), più l'affidabilità (PER, PDR, PLR). Il throughput di un percorso è quello del collegamento collo di bottiglia, $\min$ dei bitrate, ricordando che i collegamenti condivisi dividono la capacità.Analisi delle prestazioni di rete →), perché SMTP aspetta la risposta prima di mandare il comando successivo. Contando dall'inizio: il client riceve il SYN+ACK dopo RTT e manda l'ACK; il server lo riceve dopo RTT e manda il 220, che arriva dopo altri RTT: in totale RTT fino al saluto; poi coppie. Trascurando i tempi di trasmissione (messaggi di poche decine di byte) servono circa RTT: con ms sono ms per un messaggio. È uno dei motivi per cui i server tengono la connessione aperta e spediscono più messaggi di seguito (altre MAIL FROM/RCPT TO/DATA senza ripetere l'apertura).
POP3
POP3 (Post Office Protocol, version 3) è semplice ma limitato. L'accesso alla posta parte dal client, quando deve scaricare la sua posta dalla casella sul server di posta.
- Il client apre una connessione verso il server sulla porta TCP 110.
- Manda nome utente e password per accedere alla casella.
- Può poi elencare (
LIST) e scaricare (RETR) i messaggi uno per uno.
Comandi usati nel dialogo: USER, PASS, STAT (numero e dimensione totale), LIST, RETR n, DELE n, QUIT; il server risponde +OK oppure -ERR.
S: +OK POP3 server ready
C: USER luisa
S: +OK
C: PASS ********
S: +OK maildrop has 2 messages (320 octets)
C: LIST
S: +OK 2 messages
S: 1 120
S: 2 200
S: .
C: RETR 1
S: +OK 120 octets
S: (qui il messaggio 1)
S: .
C: QUIT
S: +OK POP3 server signing off(STAT e LIST dicono che ci sono 2 messaggi di byte.) La modalità tradizionale è scarica e cancella: i messaggi passano sul computer dell'utente e spariscono dal server.
IMAP4
POP3 ha parecchi limiti:
- non permette all'utente di organizzare la posta sul server;
- l'utente non può avere cartelle diverse sul server;
- non permette di controllare in parte il contenuto di un messaggio prima di scaricarlo.
IMAP4 (Internet Mail Access Protocol, version 4) aggiunge queste funzioni:
- controllare l'intestazione di un messaggio prima di scaricarlo;
- cercare una stringa di caratteri nel contenuto dei messaggi prima di scaricarli;
- scaricare un messaggio solo in parte;
- creare, cancellare e rinominare caselle sul server;
- creare una gerarchia di caselle (cartelle) per archiviare la posta.
Proprietà (POP3 contro IMAP4).
POP3 IMAP4 dove stanno i messaggi sul computer dell'utente, dopo lo scaricamento sul server cartelle sul server no sì, con gerarchia controllo prima del download no intestazione, ricerca, download parziale porta TCP 110 143
Esempio. Con una casella letta da PC e da telefono, IMAP4 mostra su entrambi gli stessi messaggi e le stesse cartelle; con POP3 e scarica-e-cancella ciascun dispositivo avrebbe solo i messaggi che ha scaricato.
MIME
La posta elettronica, così com'è, può spedire solo messaggi in formato ASCII a 7 bit (NVT):
- si può usare solo per lingue con alfabeto latino;
- non si possono spedire file binari come immagini e video.
MIME (Multipurpose Internet Mail Extensions) è un protocollo supplementare che permette di spedire per posta dati non ASCII: fa da traduttore verso il formato ASCII. Testo, simboli, immagini, video e audio diventano spedibili. Aggiunge intestazioni come MIME-Version: 1.0, Content-Type (per esempio image/png) e Content-Transfer-Encoding (come i byte sono scritti nel messaggio).
Definizione (base64). Prende i dati 3 byte alla volta (24 bit), li divide in 4 gruppi da 6 bit e scrive ciascun gruppo (valore da 0 a 63) con un carattere dell'alfabeto
A-Z a-z 0-9 + /.
Perché 6 bit e perché 3 byte: con 6 bit si hanno valori, e l'alfabeto ha caratteri stampabili in ASCII a 7 bit, che passano senza problemi nella posta; byte sono bit e gruppi da 6 sono bit: è il più piccolo numero di bit multiplo sia di sia di (Sistemi di numerazione posizionaliNotazione posizionale in base b; conversioni tra base 10, 2, 8 e 16 per interi (divisioni successive) e per parti frazionarie (moltiplicazioni successive); numeri periodici in binario.Sistemi di numerazione posizionali →). Quindi ogni byte diventano esattamente caratteri e il corpo cresce di (). Per leggere i gruppi: ogni lettera è un valore - (). Se il numero di byte non è multiplo di 3 si completa con uno o due caratteri =. In MIME le righe sono lunghe al più 76 caratteri. L'uscita è lunga caratteri per byte, circa dell'originale.
Esempio. Man = byte 01001101 01100001 01101110 (i codici ASCII di M, a, n sono , Codici binari - BCD, ASCII, Unicode, parità e GrayUn codice binario a $n$ bit distingue $2^n$ elementi. BCD: una cifra decimale ogni 4 bit (1010–1111 non usati; 10 richiede 8 bit, non è il binario del numero). ASCII: 7 bit per 128 caratteri, la cifra ASCII è 011 seguito dal BCD. Unicode/UTF-8: da 1 a 4 byte, compatibile con ASCII. Bit di parità: rileva errori su un numero dispari di bit. Distanza di Hamming = numero di bit diversi. Codice Gray: numeri consecutivi differiscono di un solo bit (sensori di posizione); si costruisce per riflessione o con $g_i=b_i\oplus b_{i+1}$.Codici binari - BCD, ASCII, Unicode, parità e Gray →) si riscrivono i 24 bit di fila, 010011010110000101101110, e si tagliano ogni 6: 010011 010110 000101 101110 () lettere TWFu. Ma (2 byte) TWE=, M TQ==, Ciao Q2lhbw==. Passaggi del riempimento: Ma sono bit, che si dividono in gruppi da 6 ( bit) più bit restanti, completati con due zeri per fare un terzo gruppo da 6 (010011 010110 0001 + 00 ); mancando un byte su tre si aggiunge un =. M sono bit: un gruppo da 6 e uno da 2 bit completato con quattro zeri (010011 010000 ), mancano due byte su tre, quindi ==. Ciao sono byte: Cia Q2lh, e il byte o solo bw==. Un allegato di byte diventa caratteri (ogni byte caratteri); poi si va a capo ogni caratteri: righe, ciascuna con un CRLF di byte, quindi byte, e (il di base64 più il degli a capo).
Un'altra codifica è la quoted-printable, adatta a un testo quasi tutto ASCII: i caratteri non ASCII sono scritti come = seguito dai due caratteri esadecimali del byte (in UTF-8 è sono i byte C3 A8, quindi =C3=A8).
Errori comuni
- Dire che si usa SMTP per leggere la posta: SMTP serve per inviare e inoltrare; si legge con POP3, IMAP4 o HTTP.
- Confondere busta (
MAIL FROM,RCPT TO) e intestazioniFrom:/To:. - Dimenticare la riga con il solo
.che chiude il messaggio (e la riga vuota tra intestazioni e corpo). - Pensare che base64 sia una cifratura: è solo una codifica, reversibile da tutti (Funzioni hash e crittografia simmetricaLa crittografia trasforma un messaggio in chiaro (plaintext) in un testo cifrato (ciphertext) con una chiave: C = E_ke(P), P = D_kd(C); può dare riservatezza, integrità e autenticazione. Attacchi: solo testo cifrato, testo in chiaro noto, testo in chiaro scelto, forza bruta. Funzione hash: mappa dati di qualsiasi lunghezza in un digest di lunghezza fissa; one-way (dato h è difficile trovare m con hash(m) = h) e resistente alle collisioni; famiglie MD (MD5 rotto per le collisioni nel 2004) e SHA (SHA-0 e SHA-1 rotti, SHA-2 il più usato, SHA-3); costruzione di Merkle-Damgård; usi: integrità e password. Crittografia simmetrica: stessa chiave segreta per cifrare e decifrare; Cesare (E_n(x) = x + n mod 26), Vigenère, Enigma; DES (blocchi da 64 bit, chiave da 56) e AES (blocchi da 128 bit, chiavi da 128, 192, 256); modi ECB (insicuro), CBC, CFB, OFB, CTR. Scambio della chiave con Diffie-Hellman: K = g^(xy) mod p. MAC e HMAC: autenticazione con chiave condivisa.Funzioni hash e crittografia simmetrica →).
- Contare 3 byte come 3 caratteri in base64: 3 byte 4 caratteri; non scordare i
=di riempimento. - Scambiare la porta di POP3 (110) con quella di SMTP (25).
Versione ripasso
- Perché i server intermedi. L'e-mail è una transazione a senso unico, e il destinatario non può tenere un programma server sempre in attesa. Per questo servono server intermedi: il client parte quando serve e i server applicano il paradigma client/server. Diversa da HTTP, dove il server aspetta le richieste (Livello applicazione - HTTPIl livello applicazione è il più alto della pila: offre servizi all'utente con una connessione logica tra le due applicazioni e riceve servizi solo dal trasporto (DNS, HTTP, e-mail, FTP). Il Web (WWW, nato al CERN nel 1989) è un servizio client-server distribuito di pagine collegate da ipertesti; ogni pagina ha un URL protocollo://host:porta/percorso. HTTP: il client manda una richiesta, il server una risposta, su TCP (server sulla porta 80, client su una porta temporanea); senza stato. Messaggi di testo (riga di richiesta o di stato, intestazioni, riga vuota, corpo), metodi GET, POST, HEAD, PUT, DELETE, codici di stato 2xx-5xx. Una pagina con N oggetti incorporati richiede 2(N+1) RTT con connessioni non persistenti e (N+2) RTT con connessione persistente (trascurando la trasmissione). I cookie danno memoria al protocollo: Set-Cookie nella risposta, Cookie nelle richieste, file nel browser e base di dati nel sito. Un proxy (web cache) tiene le copie delle risposte recenti: meno carico sul server, meno traffico, meno ritardo.Livello applicazione - HTTP →).
- Tre usi, tre protocolli. Scenario: 2 UA (User Agent, il programma dell'utente), 2 MTA (Message Transfer Agent, di spinta, SMTP: mittente verso il suo server, e server verso server), 1 MAA (Message Access Agent, di tiro, POP3 o IMAP4: server del destinatario verso il destinatario; in webmail HTTP). SMTP spinge perché chi ha un messaggio lo manda a un server; il destinatario tira quando si collega. Trasporto TCP (TCP - connessione, affidabilità e controllo di flussoTCP (Transmission Control Protocol) è il protocollo di trasporto con connessione e affidabile: trasforma il servizio senza connessione e inaffidabile di IP in un flusso di byte ordinato, senza errori né duplicati. La connessione si apre con l'handshake a tre vie (SYN, SYN+ACK, ACK) e si chiude con tre o quattro segmenti (FIN). I byte sono numerati: il numero di sequenza è quello del primo byte del segmento, il numero di ACK (cumulativo) è il prossimo byte atteso. Il mittente può inviare $\min(\text{rwnd},\text{cwnd})$ byte non ancora confermati; rwnd (finestra del ricevitore, in un campo di 16 bit) è il controllo di flusso. L'errore si gestisce con checksum, ACK, timeout di ritrasmissione (RTO) e ritrasmissione rapida dopo tre ACK duplicati. Per usare tutto il canale la finestra deve valere almeno il prodotto banda-ritardo (BDP); il throughput massimo è $\text{MSS}\cdot W_{\max}/\text{RTT}$.TCP - connessione, affidabilità e controllo di flusso →); il server di destinazione si trova con il record MX del DNS (Livello applicazione - DNSIl DNS (Domain Name System) traduce i nomi (www.amazon.com) negli indirizzi IP, perché le persone preferiscono i nomi e i protocolli TCP/IP usano gli indirizzi. È un database distribuito e gerarchico: albero rovesciato con radice, domini di primo livello e sottodomini (al più 128 livelli); le informazioni sono su tanti server (13 server radice) e i nuovi domini si registrano presso un registrar accreditato ICANN. Ogni ISP ha un DNS locale, il cui indirizzo l'host riceve con DHCP: l'host (resolver) gli manda la richiesta, di solito su UDP, e il DNS locale interroga radice, dominio di primo livello e server dell'organizzazione. Ogni server che impara un'associazione la tiene in cache, marcando la risposta non autoritativa, e la scarta dopo il TTL. Record (nome, tipo, valore, classe, TTL). Con il NAT il DNS deve restituire l'indirizzo pubblico. Quattro attacchi: macchina compromessa, risposta falsa all'host, avvelenamento della cache del DNS locale, server DNS malevolo.Livello applicazione - DNS →).
- UA. Scrive, legge, risponde, inoltra e gestisce le caselle locali. A comandi (
mail,pine,elm) oppure grafici (Eudora, Outlook). - Messaggio. Testo ASCII: intestazione (
From,To,Date,Subject), riga vuota, corpo. - Busta e contenuto.
From:eTo:nel messaggio sono il contenuto che l'utente vede. Gli indirizzi per la consegna sonoMAIL FROMeRCPT TOnel dialogo SMTP (la busta, envelope): possono essere diversi. Esempio: la copia nascosta (Bcc) aggiunge unRCPT TOma l'indirizzo non compare nel contenuto. - SMTP. Connessione TCP alla porta 25. Comandi:
HELO(il client si presenta con il suo dominio),MAIL FROM,RCPT TO,DATA,QUIT. Ogni riga termina con CR LF. Risposte a tre cifre:220servizio pronto (421non disponibile),250comando completato,354inizia l'immissione del testo,221chiusura. - Tre fasi.
- Apertura:
220,HELO,250. - Trasferimento:
MAIL FROMcon250,RCPT TOcon250,DATAcon354, il testo riga per riga (intestazioni, riga vuota, corpo) che finisce con una riga contenente solo un punto, poi250. - Chiusura:
QUIT, risposta221.
- Apertura:
- Esempio di sessione.
S: 220 service ready/C: HELO some.com/S: 250 OK/C: MAIL FROM: forouzan@some.com/C: RCPT TO: william@aNetwork.com/C: DATA/S: 354 start mail input/ testo del messaggio /C: ./S: 250 OK/C: QUIT/S: 221 service closed. - POP3. Porta TCP 110. Il client manda
USERePASS, poiSTAT(numero e dimensione totale),LIST(elenco),RETR n(scarica il messaggio ),DELE n,QUIT. Il server risponde+OKo-ERR. Esempio:LISTmostra due messaggi di 120 e 200 byte, cioè byte. Modalità tipica: scarica e cancella. Il server non organizza la posta. - IMAP4. Porta TCP 143. Oltre a quanto fa POP3: controllo dell'intestazione prima del download, ricerca di una stringa nel contenuto, download parziale, creazione, cancellazione e rinomina di caselle, gerarchia di cartelle sul server.
| POP3 | IMAP4 | |
|---|---|---|
| dove stanno i messaggi | sul computer dell'utente, dopo lo scaricamento | sul server |
| cartelle sul server | no | sì, con gerarchia |
| controllo prima del download | no | intestazione, ricerca, download parziale |
| porta TCP | 110 | 143 |
- MIME. Il formato base è ASCII a 7 bit: niente lettere accentate, niente file binari. MIME (Multipurpose Internet Mail Extensions) traduce i dati in ASCII con intestazioni
MIME-Version: 1.0,Content-Type(es.image/png) eContent-Transfer-Encoding. - Base64. Prende 3 byte (24 bit), li divide in 4 gruppi da 6 bit (valori 0–63) e li scrive con
A-Z a-z 0-9 + /. Se mancano byte si aggiungono=. Righe di al più 76 caratteri. Uscita di caratteri per byte, circa dell'originale. - Esempi base64.
Man=01001101 01100001 01101110gruppi 19, 22, 5, 46TWFu.MaTWE=,MTQ==,CiaoQ2lhbw==. Allegato di byte: caratteri, più un CRLF ogni 76, per byte, cioè circa . - Errori tipici: usare SMTP per leggere (serve POP3, IMAP4 o HTTP); confondere busta e intestazioni; dimenticare la riga con solo il punto e la riga vuota tra intestazioni e corpo; credere che base64 sia cifratura (è una codifica reversibile da chiunque, Funzioni hash e crittografia simmetricaLa crittografia trasforma un messaggio in chiaro (plaintext) in un testo cifrato (ciphertext) con una chiave: C = E_ke(P), P = D_kd(C); può dare riservatezza, integrità e autenticazione. Attacchi: solo testo cifrato, testo in chiaro noto, testo in chiaro scelto, forza bruta. Funzione hash: mappa dati di qualsiasi lunghezza in un digest di lunghezza fissa; one-way (dato h è difficile trovare m con hash(m) = h) e resistente alle collisioni; famiglie MD (MD5 rotto per le collisioni nel 2004) e SHA (SHA-0 e SHA-1 rotti, SHA-2 il più usato, SHA-3); costruzione di Merkle-Damgård; usi: integrità e password. Crittografia simmetrica: stessa chiave segreta per cifrare e decifrare; Cesare (E_n(x) = x + n mod 26), Vigenère, Enigma; DES (blocchi da 64 bit, chiave da 56) e AES (blocchi da 128 bit, chiavi da 128, 192, 256); modi ECB (insicuro), CBC, CFB, OFB, CTR. Scambio della chiave con Diffie-Hellman: K = g^(xy) mod p. MAC e HMAC: autenticazione con chiave condivisa.Funzioni hash e crittografia simmetrica →); contare 3 byte come 3 caratteri in base64 (diventano 4); scambiare la porta di POP3 (110) con quella di SMTP (25).