|
|
|
|
PPP
|
Point-to-Point Protocol
|
protocollo per trasmissioni punto-punto
|
Un protocollo che consente di connettere un computer a Internet via linea
telefonica commutata, mantenendo gran parte delle prerogative che si avrebbero
con un collegamento diretto. Tra le più importanti di queste prerogative
abbiamo la possibilità di usare un browser Web, come Mosaic, Netscape
Navigator o Internet Explorer. Il PPP viene tipicamente considerato migliore
dello SLIP (Serial Line Internet Protocol) poiché, a differenza di quest'ultimo,
esegue la correzione automatica degli errori, la compressione dei dati
trasmessi, l'autenticazione della password e assicura un miglior rendimento
teorico (non sempre realizzato nella realtà). Qualsiasi computer che disponga
di un numero IP può connettersi a Internet usando modem ad alta velocità.
PPP è in grado di iniziare e terminare una sessione, come pure interrompere
una chiamata e richiamare lo stesso numero nel caso in cui la linea sia
particolarmente disturbata (questa funzione deve essere attivata dal particolare
programma usato per eseguire la chiamata via modem). Il PPP incapsula
i comuni protocolli di livello rete (terzo livello OSI) all'interno di
pacchetti specializzati. Due esempi in questo senso sono il IPCP (IP su
PPP) e il IPXCP (l'IPX su PPP). Può essere utilizzato come sostituto del
driver di rete così che gli utenti remoti possano collegarsi alla LAN
come se fossero in locale. I protocolli usati per l'autenticazio ne della
password sono il Password Authentication Protocol (PAP) e il Challenge
Handshake Authentication Protocol (CHAP). Le specifiche del protocollo
sono contenute nell'RFC 1661 (che rende obsolela l'RFC 1548). Spiegazione
dettagliata: PPP (Point-to-Point Protocol) Nato nel dicembre 1993 e perfezionano
nel luglio 1994 per iniziativa di William Allen Simpson (autodefinitosi
sognatore ad occhi aperti), il PPP è il più largamente usato tra i protocolli
Internet visto che costituisce lo strumento principe per accedere alla
Rete per mezzo di un modem. Esso rappresenta un vettore per altri protocolli
che, lasciati a se stessi, non potrebbero viaggiare su una linea punto-punto,
vale a dire una linea telefonica o qualsiasi altra connessione su lunga
distanza che veda ai propri estremi un solo destinatario e un solo mittente.
Nella sua versione nativa, il protocollo TCP/IP funziona solamente in
rete locale e necessita un vettore per muoversi su una rete geografica.
Quando ci colleghiamo da casa, da un albergo o anche dall'ufficio mediante
una linea a lunga distanza, l'unico punto di contatto possibile con il
sistema all'altro capo è il modem oppure un dispositivo analogo (come
un'interfaccia ISDN) e dobbiamo dipendere da questo per inviare le nostre
richieste su Internet e ricevere le risposte. All'altro capo della linea
c'è un sistema che funge da intermediario tra noi e la rete e che può
essere un altro computer oppure un router. Il PPP è progettato per veicolare
numerosi protocolli su una sola linea, il più comune tra questi è naturalmente
l'Intenet Protocol (IP) il quale a sua volta funge da vettore per altri
protocolli applicativi di grande interesse come l'HTTP (HyperText Transfer
Protocol) per la consultazione di pagine Web, l'FTP (File Transfer Protocol)
per il trasferimento di file a distanza, l'SMTP (Simple Mail Transfer
Protocol) per l'inivio dei messaggi di posta elettronica, il POP3 (Post
Office Protocol) per la copia in locale dei messaggi presenti nella nostra
casella postale, l'NNTP ( Network News Transfer Protocol) per la consultazione
di newsgroup e qualsiasi altro protocollo sia utile durante una sessione
di collegamento con Internet. Il PPP li contiene tutti come una sorta
di busta in cui s'inseriscono altre buste per spedirle a un singolo destinatario.
È come raccogliere all'ufficio posta tutte le missive interne destinate
a una filiale e inviarle all'ufficio posta all'altro estremo usando un
singolo pacco. L'ufficio posta della filiale aprirà il pacco e distribuirà
le lettere ai singoli destinatari, restituendoci un secondo pacco con
le risposte. Il PPP ha una missione è triplice. Deve incapsulare i pacchetti
generati dagli altri protocolli (datagrammi) all'interno di un singolo
pacchetto. Deve attivare la connessione con il sistema remoto, configurarla
e collaudarla. Deve disporre degli strumenti per controllare al proprio
interno il flusso di tutti gli altri protocolli. Il Link Control Protocol
La primissima fase d'intervento del PPP è nel creare la connessione con
il sistema remoto. Ogni volta che ci si collega con una macchina distante
è necessario negoziare i parametri di lavoro che verranno usati nel corso
della connessione. Questo viene fatto in primo luogo dal modem che si
accorda con il modem all'altro estremo su quale sarà la velocità di trasferimento
e la compressione dei dati con correzione di errore da eseguire a livello
fisico tra i due apparecchi. Tale prima fase rimane del tutto trasparente
al PPP. Una volta che i modem hanno instaurato il legame fisico, i due
sistemi si possono parlare e a questo punto devono mettersi d'accordo
su quale formato d'incapsulamento utilizzare, sulla dimensione da assegnare
ai pacchetti in transito e sulle modalità per porre fine al collegamento
una volta che la sessione sia terminata. Tale negoziato è affidato a un
protocollo specializzato all'interno di PPP, che si chiama Link Control
Protocol. Quest'ultimo è responsabile per identificare qualsiasi errore
nella connessione e per assicurare che le due macchine parlino la medesima
lingua. Durante questa fase preliminare, inoltre, si possono eseguire
eventuali operazioni di autenticazione del chiamante attraverso un altro
protocollo specializzato, che può essere il CHAP (Challenge Handshake
Authentication Protocol) oppure il PAP (Password Authentication Protocol).
È in Link Control Protocol che si accorge se la connessione è venuta a
mancare oppure se sta funzionando male per qualche difetto fisico e che
segnala la cosa ai due computer interessati dal collegamento. Gli NCP
tutto fare Una volta che la connessione è stata attivata, i due computer
sono pronti a conversare ma non hanno ancora deciso che lingua utilizzare.
Probabilmente useranno il protocollo IP, ma prima devono attivare tutti
quei meccanismi che permetteranno d'incapsulare le trame IP nei pacchetti
PPP senza che l'IP se ne accorga. Uno di questi gradini preliminari è
l'assegnazione dell'indirizzo di rete. Lo standard vuole che tutte le
macchine collegate a Internet per scopi di navigazione dispongano di un
indirizzo IP univoco in tutto il mondo. Tale indirizzo serve per identificare
il mittente delle richieste e per sapere dove inviare le risposte. Viene
assegnato da enti internazionali che tengono un registro di tutti gli
indirizzi distribuiti. Naturalmente non è molto pratico che ogni singolo
navigatore Internet espleti le pratiche burocratiche per richiederne uno
proprio, anche perché una delle condizioni per l'assegnazione di questi
indirizzi è che la macchina su cui verrà utilizzato sia collegata a Internet
in modo permanente, il che non coincide con la nostra esigenza di usare
il PPP per accedere alla Rete via modem in modo saltuario. La soluzione
consiste nell'affidare un gruppo d'indirizzi a società che poi li distribuiscono
ai propri utenti. Un esempio classico è quello degli Internet Service
Provider che amministrano questi indirizzi fra tutti i propri iscritti.
Tuttavia, l'ISP ha bisogno di un sistema automatico per eseguire questa
assegnazione: non è molto pratico affidare un indirizzo a ciascun abbonato
e poi tenerne una registrazione puntuale. Inoltre l'abbonato si collega
solo in certe ore del giorno e sarebbe uno spreco riservargli un indirizzo
a tempo pieno. Infine l'abbonato potrebbe cambiare provider e continuare
a usare l'indirizzo vecchio con il nuovo provider provocando problemi
di configurazione per il nuovo e di approvvigionamento d'indirizzi per
il vecchio. La soluzione consiste nell'assegnare dinamicamente un numero
IP al momento della connessione. Questo lavoro viene svolto dal Network
Control Protocol, il quale si occupa anche di selezionate anche qualsiasi
altro protocollo rete si debba utilizzare sulla connessione in aggiunta
all'IP (ad esempio l'IPX). Esiste in effetti un'intera famiglia di NCP,
ciascuno dedicato a uno scopo specifico e l'incapsulamento non si limita
al protocollo IP, ma abbraccia anche IPX e svariati altri protocolli proprietari,
tra cui quelli di Xerox, Banyan, Apple, Digital Equipment, IBM SNA e altri
ancora (vedi l'RFC 1700 o STD 2). L'NCP per protocollo IP usa a sua volta
protocollo dedicato, l'IPCP (IP Control Protocol), che assomiglia all'LCP
ma ha la prerogativa abilitare, disabilitare e configurare i moduli IP
a entrambi gli estremi della linea. È questo il protocollo che negozia
tutti i parametri specifici di questo ambiente, come la compressione IP
e TCP e l'assegnazione automatica dell'indirizzo alla stazione remota.
Inoltre l'IPCP blocca il flusso dei pacchetti IP fino a quando la connessione
non è stata instaurata per intero, comprese le eventuali fasi di autenticazione
del chiamante, e fa in modo che nel campo dati del PPP non entrino più
informazioni di quelle che ci stanno e impone la frammentazione delle
stesse in caso contrario. Il protocollo che svolge funzioni analoghe per
IPX si chiama IPXCP. Facilità di configurazione Dovendo essere usato da
persone non esperte, il PPP è concepito per semplificare il più possibile
le modalità di collegamento. I parametri impostati per difetto (default)
sono idonei per la maggior parte delle connessioni e le eventuali eccezioni
vengono risolte automaticamente tra le due macchine (definite peer o pari
nel linguaggio tecnico) senza intervento umano. Là dove il protocollo
LCP riesce a eseguire solo una negoziazione parziale, entrano in gioco
uno o più NCP per sistemare il resto. Di fatto è possibile usare qualsiasi
tipo di connessione remota, non solo il modem. Esistono infatti versioni
del protocollo PPP progettate per funzionare su linea ISDN, su rete X.25
e su fibra ottica ad alta velocità. Il formato della trama Per costruire
il proprio pacchetto d'informazioni, PPP s'ispira a un vecchio protocollo,
molto conosciuto nelle reti di grandi sistemi e nelle reti pubbliche:
HLDC (High-Level Data Link Control). Si tratta di un protocollo nato per
le connessioni sincrone (linee dedicate) perciò presenta caratteristiche
bit-oriented, tuttavia PPP usa la trama a proprio modo e può quindi funzionare
sia come protocollo sincrono bit-oriented sia come protocollo byte-oriented
per linee asincrone, usando 8 bit di dati e nessuna parità (l'impostazione
classica della porta seriale). La prima parte della trama contiene un
flag (segnalatore) che ha un valore sempre fisso (7E espresso in cifre
esadecimali), un indirizzo iniziale (con valore fisso esadecimale FF)
e un campo di controllo (esadecimale 03). Queste parti sono invariabili
e identificano il tipo di pacchetto. Segue immediatamente dopo l'indicazione
del tipo di protocollo in uso. All'inizio della sessione il valore di
questo campo sarà 0021 per indicare che si sta usando il Link Control
Protocol per negoziare i primi parametri di connessione. Subito dopo subentra
l'NCP (8021) e l'eventuale protocollo di autenticazione: PAP (C023) o
CHAP (C223). Nel caso si voglia mantenere sotto controllo la qualità del
collegamento è possibile ricorrere a un altro protocollo chiamato Link
Quality Report che c'informa su quante informazioni da noi trasmesse sono
andate perdute lungo la linea. Una volta terminati questi preamboli, possiamo
chiamare in causa il protocollo di trasporto vero e proprio che sarà IP,
TCP o altro. Segue un campo dedicato ai dati (cioè al datagramma IP che
viene incapsulato nel pacchetto PPP) e che corrisponde, come dimensione
massima, alla capienza di una trama Ethernet. Non a caso Internet è nata
proprio usando Ethernet tra i suoi fondamenti primari. Il pacchetto PPP
si chiude con la classica sequenza di verifica (Frame Check Sequence)
calcolata sull'intera trama, compreso il campo indirizzo e il campo di
controllo iniziali. Segue un altro flag che separa la trama corrente da
quella successiva. Caratteri speciali Come tutti i protocolli asincroni
byte-oriented, anche PPP usa alcuni caratteri speciali per regolare lo
scambio di dati tra le due macchine. Il più importante fra questi è il
carattere 7E (flag) usato come riconoscimento dell'inizio e della fine
della trama. Grazie alla sua presenza non c'è bisogno di mantenere i due
sistemi sincronizzati tra di loro attraverso qualche congegno di temporizzazione:
basta che il destinatario resti in ascolto del carattere 7E (valore decimale126
- carattere ASCII ˜ tilde) per determinare i confini del pacchetto. In
virtù di questo fatto, come in tutti i protocolli di tipo byte-oriented,
il medesimo carattere non può essere utilizzato all'interno del campo
dati perché provocherebbe l'interruzione prematura della trasmissione.
D'altro canto, rispettare questo limite equivarrebbe a impedire la trasmissione
di file binari, cioè i file di programma, che possono contenere qualsiasi
sequenza di bit, incluso 7E, e che costituiscono una delle risorse più
interessanti per navigatori Internet (pensiamo ai vari shareware, ai driver,
agli aggiornamenti software gratuiti). La soluzione consiste nell'istruire
il protocollo PPP di "saltare" (escape) il carattere quando lo incontra
all'interno del campo dati. Ma poiché il computer non ha altro modo per
sapere quali siano i confini del campo dati se non proprio attendere l'arrivo
del carattere 7E, si richiede la sostituzione di tutti i caratteri 7E
contenuti nel campo dati con una coppia di caratteri alternativa, ma riconoscibile.
A questo si arriva usando un altro carattere speciale chiamato "escape"
che si scrive 7D (valore decimale 125 - carattere ASCII } graffa chiusa)
che serve segnalare che il carattere immediatamente successivo non è ciò
che sembra, bensì costituisce in realtà la trasformazione di un carattere
precedente che non poteva essere trasmesso nella sua forma originale.
Quando la macchina in ricezione incontra il carattere 7D, sa che deve
elaborare quello successivo e recuperare il carattere originale. L'elaborazione
consiste nel prendere il sesto bit del carattere in questione e complementarlo
(trasformarlo in 0 nel caso sia un 1 oppure viceversa). Facciamo un esempio
prendendo appunto il carattere di flag 7E che scritto in notazione binaria
diventa 0111 1111, cambiamo il suo sesto bit e otteniamo questa nuova
sequenza: 0101 1111 che corrisponde alla notazione esadecimale 5D. In
trasmissione, ogni volta che nel campo dati compare 7E, il protocollo
sostituirà automaticamente la coppia di caratteri 7D,5D. All'altro capo,
il protocollo di ricezione eseguirà 'operazione inversa 7D,5D = 7E. Questa
regola vale per qualsiasi c arattere speciale che debba filtrare attraverso
le maglie dei vari protocolli in gioco senza provocare conseguenze. Prendiamo
l'esempio di un file che contenga il carattere 7D (cioè il carattere di
escape). Applichiamo lo stesso sistema e perciò avremo una sequenza 7D,5D
= 7D. Tutti i caratteri che hanno un valore esadecimale inferiore a 20
vengono trattati nello stesso modo. Infatti nel codice ASCII i primi trentadue
caratteri (da 00 a 20 esadecimale) possono rappresentare comandi interpretabili
dal modem oppure dalla stampante. In questa regione troviamo infatti il
comando di avanzamento riga, di avanzamento pagina, di ritorno a capo,
di cancellazione all'indietro e altro ancora. Il meccanismo di filtraggio
è sempre il medesimo: li si fa precedere dal co dice 7D seguito da un
codice esadecimale calcolato trasformando il sesto bit del numero originale.
Perché il sesto bit? Perché 0010 0000 corrisponde al numero esadecimale
20, cioè alla soglia dalla quale vogliamo cominciare ad applicare questo
filtro, e se prendiamo questo numero e lo sovrapponiamo a un qualsiasi
altro numero esadecimale con un'operazione di OR esclusivo, vediamo che
l'effetto prodotto è una complementazione del sesto bit a partire da destra.
Se già sappiamo che alcuni dei primi 32 caratteri ASCII sono innocui,
possiamo usare il Link Control Protocol per specificare quali di questi
caratteri lasciar transitare senza codifica di escape. In fase di trasmissione
su linea telefonica, di solito vengono soppressi i campi indirizzo e controllo,
che sono sempre uguali e possono essere aggiunti nuovamente all'altro
estremo quando la trama viene ricostruita dalla stazione ricevente. La
decisione di comprimere l'intestazione della trama può anche essere unilaterale:
il mittente tralascia di spedire il campo indirizzo e controllo e il ricevente
legge la trama e, non incontrando i valori FF e 03, suppone che siano
stati omessi, perciò li aggiunge di propria iniziativa. Le specifiche
primarie del protocollo PPP sono contenute nell'RFC 1661, ma più di una
dozzina di altre RFC collegate descrivono le modalità per incapsulare
i diversi protocolli nei pacchetti PPP e descrivono in che modo eseguire
il negoziato iniziale e tenere sotto controllo la qualità della linea.
Tra le RFC accessorie merita attenzione la 1334 dedicata all'autenticazione
degli accessi. Controllo degli accessi Abbiamo visto che, una volta completata
la predisposizione della connessione attraverso LCP, capita sovente che
il sistema chieda un'identificazione. Esistono due modalità per fornire
nome e password. La prima consiste nel protocollo PAP (Password Authentication
Protocol) il quale attende che la connessione sia attiva dopo di che continua
a inviare la coppia "nome/password" fino a quando il terminale remoto
risponde convalidando l'accesso oppure negandolo e terminando la connessione.
Questo non è un approccio molto sicuro visto che la password viaggia sulla
rete in chiaro e chiunque potrebbe intercettarla. Inoltre il sistema può
essere bombardato da ripetuti tentativi di accesso da parte di un utente
esterno che prova numerose combinazioni fino a quando ne azzecca una.
È l'utente in remoto che ha la piena discrezione sulla frequenza e la
durata dei propri tentativi di accesso. Il protocollo CHAP (Challenge
Handshake Authentication Protocol) è più robusto poiché verifica periodicamente
l'identità del sistema remoto usando un sistema di handshake (sincronizzazione)
a tre vie. L'operazione viene seguita nel momento in cui la connessione
è attivata e può essere ripetuta dopo. Non appena la connessione è completa,
CHAP manda un messaggio di altolà (challenge) al sistema dell'utente il
quale esegue un calcolo sul messaggio ricevuto basandosi su un matrice
in proprio possesso e spedisce la risposta al sistema centrale. Quest'ultimo,
che nel fra ttempo ha eseguito il medesimo calcolo, confronta i risultati
e in caso affermativo abilita l'accesso, oppure lo nega. Il calcolo si
basa su un sistema one-way hash. Ogni volta che invia un altolà (challenge),
il sistema autenticatore inserisce un numero progressivo all'interno del
pacchetto, numero che viene incrementato a ogni tentativo di connessione
seguente. Contemporaneamente modifica anche il contenuto del pacchetto
di challenge così da riportare sotto il proprio controllo la frequenza
e la durata delle operazioni di autenticazione e riducendo il rischio
di attacchi. Per funzionare, questo meccanismo richiede l'esistenza di
un "segreto" noto unicamente al sistema centrale (autenticatore) e al
sistema remoto (quello che tenta l'accesso). Segreto che non può essere
trasferito sulla rete, ma deve essere recapitato in modo sicuro per vie
diverse. La lunghezza del segreto deve essere di almeno 8 bit, ma la sicurezza
aumenta in proporzione alla lunghezza e negli Stati Uniti la maggiore
protezione oggi raggiungibile è con 128 bit. Il sistema one-way hash viene
scelto in modo che sia praticamente impossibile risalire al segreto partendo
semplicemente dal messaggio di challenge e dalla risposta. Il messaggio
di challenge deve essere unico nel suo genere (per consentire il login
da qualsiasi parte del mondo) e imprevedibile. Se fosse prevedibile, l'intruso
potrebbe intrufolarsi fornendo uno dei challenge precedentemente intercettati.
La qualità del sistema di protezione dipende in larga misura dall'applicazione
che ne fa uso. Il protocollo PPP fornisce unicamente gli strumenti per
trasportare le informazioni, mentre tutte le funzioni di autenticazione
vengono svolte altrove, con criteri diversi a seconda dei Paesi in cui
si svolgono. Ad esempio, la tecnologia one-way hash 128 esistente negli
USA non può essere esportata in Europa in quanto "munizione" protetta
dalla legislazione statunitense. Esistono soluzioni a 128 bit europee,
ma non sono disponibili a tutti. Gli standard pubblicati su PPP Documenti
primari RFC 1661 standard primario aggiornato RFC 1548 standard obsoleto
sostituito dalla RFC 1661 RFC 1549 formattazione delle trame PPP in trame
HDLC RFC 1552 ipx su PPP (IPXCP) RFC 1570 estensioni LCP RFC 1598 PPP
su X.25 RFC 1618 PPP su ISDN RFC 1619 PPP su SONET/SDH RFC 1638 PPP Bridging
Control Protocol RFC 1662 altro sulla formattazione di trame PPP in trame
HDLC RFC 1663 trasmissione affidabile dei dati RFC 1762 DECnet su PPP
RFC 1763 Banyan VINES su PPP RFC 1764 protocolli Xerox su PPP RFC 1841
Network Control Protocol con estensioni lan (per router remoti) RFC 1877
estensioni ai name address server RFC 1915 Connection Control Protocol
ed Encryption Control Protocol Documenti collegati RFC 1332 Network Control
Protocol per connessione ip su PPP (IPCP) RFC 1333 monitoraggio sulla
qualità della connessione RFC 1334 protocolli di autenticazione per PPP
(CHAP e PAP).
|
|
|
|
|
|
|
|
|