Starting with version 0.6, APT contains code that does signature checking of the Release file for all repositories. This ensures that data like packages in the archive can't be modified by people who have no access to the Release file signing key. Starting with version 1.1 APT requires repositories to provide recent authentication information for unimpeded usage of the repository. Since version 1.5 changes in the information contained in the Release file about the repository need to be confirmed before APT continues to apply updates from this repository.
Nota: tutti i front-end di gestione dei pacchetti basati su APT, come apt-get(8), aptitude(8) e synaptic(8), supportano questa funzionalità di autenticazione, perciò questa pagina di manuale usa APT per fare riferimento a tutti loro solo per ragioni di semplicità.
Se un archivio ha un file Release non firmato o non ha per nulla un file Release, tutte le versioni attuali di APT si rifiutano in modo predefinito di scaricare dati da esso durante le operazioni di update, e i frontend come apt-get, anche se forzati a scaricare, richiedono una conferma esplicita se una richiesta di installazione include un pacchetto da un archivio non autenticato di questo tipo.
Si possono forzare tutti i client APT a dare solo avvertimenti impostando l'opzione di configurazione Acquire::AllowInsecureRepositories a true. È anche possibile abilitare singoli repository non sicuri attraverso l'opzione per sources.list(5) allow-insecure=yes. Notare che l'uso di repository non sicuri è fortemente sconsigliato e tutte le opzioni per forzare apt a continuare a supportarli verranno da ultimo rimosse. Gli utenti hanno a disposizione anche l'opzione Trusted per disabilitare anche gli avvertimenti, ma assicurarsi di avere compreso le implicazioni, come spiegato in dettaglio in sources.list(5).
Un repository che in precedenza era autenticato ma che perde il proprio stato in un'operazione di update genera un errore in tutti i client APT indipendentemente dall'opzione per permettere o proibire l'uso di repository non sicuri. L'errore può essere scavalcato impostando in aggiunta Acquire::AllowDowngradeToInsecureRepositories a true o, per repository individuali, con l'opzione allow-downgrade-to-insecure=yes per sources.list(5).
La catena di fiducia da un archivio APT all'utente finale è composta di vari passaggi intermedi. apt-secure è l'ultimo della catena; il fatto che si abbia fiducia in un archivio non significa che si abbia fiducia che i suoi pacchetti non contengano codice malevolo, ma significa che si ha fiducia nel manutentore dell'archivio. È responsabilità del manutentore dell'archivio assicurare che sia preservata l'integrità dell'archivio.
apt-secure non controlla le firme a livello di pacchetto. Se si desiderano strumenti per farlo, si possono guardare debsig-verify e debsign (forniti rispettivamente nei pacchetti debsig-verify e devscripts).
La catena di fiducia in Debian ha inizio (ad esempio) quando un manutentore carica un nuovo pacchetto o una nuova versione di un pacchetto nell'archivio Debian. Per poter diventare effettivo, questo caricamento deve essere firmato con una chiave contenuta in uno dei portachiavi dei manutentori Debian (disponibili nel pacchetto debian-keyring). Le chiavi dei manutentori sono firmate da altri manutentori seguendo delle procedure prestabilite, per assicurare l'identità del proprietario della chiave. Procedure simili esistono in tutte le distribuzioni basate su Debian.
Una volta che il pacchetto caricato è verificato e incluso nell'archivio, la firma del manutentore viene rimossa e i codici di controllo del pacchetto vengono calcolati e messi nel file Packages. Vengono quindi calcolati i codici di controllo di tutti i file Packages e vengono messi nel file Release. Il file Release viene poi firmato con la chiave dell'archivio per questo rilascio di Debian e viene distribuito insieme ai pacchetti e ai file Packages nei mirror Debian. Le chiavi sono nel portachiavi degli archivi Debian, disponibile nel pacchetto debian-archive-keyring.
Gli utenti finali possono controllare la firma del file Release, estrarre da esso il codice di controllo di un pacchetto e confrontarlo con il codice di controllo del pacchetto che hanno scaricato a mano, oppure possono affidarsi ad APT che lo fa automaticamente.
Notare che questo è diverso dal controllare le firme per ciascun pacchetto. È progettato per prevenire due possibili attacchi:
Tuttavia non difende dalle compromissioni del server principale stesso (che firma i pacchetti) o dalla compromissione della chiave usata per firmare i file Release. In ogni caso, questo meccanismo può complementare le firme a livello di singolo pacchetto.
A Release file contains beside the checksums for the files in the repository also general information about the repository like the origin, codename or version number of the release.
This information is shown in various places so a repository owner should always ensure correctness. Further more user configuration like apt_preferences(5) can depend and make use of this information. Since version 1.5 the user must therefore explicitly confirm changes to signal that the user is sufficiently prepared e.g. for the new major release of the distribution shipped in the repository (as e.g. indicated by the codename).
apt-key è il programma che gestisce l'elenco delle chiavi usate da APT per fidarsi dei repository. Può essere usato per aggiungere o rimuovere chiavi, oltre che per elencare le chiavi fidate. È possibile limitare quali chiavi possono firmare determinati archivi usando Signed-By in sources.list(5).
Notare che un'installazione predefinita contiene già tutte le chiavi per acquisire in modo sicuro i pacchetti dai repository predefiniti, perciò le modifiche fatte a mano con apt-key sono necessarie solo se vengono aggiunti repository di terze parti.
Per aggiungere una nuova chiave, è necessario prima scaricarla (ci si dovrebbe assicurare di usare un canale di comunicazione fidato quando la si recupera), aggiungerla con apt-key e poi eseguire apt-get update, in modo che apt possa scaricare e verificare i file InRelease o Release.gpg dagli archivi che sono configurati.
Se si desiderano fornire firme per un archivio di cui si è il manutentore, si deve:
Ogni volta che i contenuti dell'archivio cambiano (sono aggiunti o rimossi nuovi pacchetti), il manutentore dell'archivio deve compiere nuovamente i primi due passi descritti sopra.
apt.conf(5), apt-get(8), sources.list(5), apt-key(8), apt-ftparchive(1), debsign(1), debsig-verify(1), gpg(1)
Per maggiori informazioni sui concetti alla base di questo sistema, si può leggere il capitolo m[blue]Debian Security Infrastructurem[][1] del manuale Securing Debian (disponibile anche nel pacchetto harden-doc) e il m[blue]Strong Distribution HOWTOm[][2] di V. Alex Brennen.
m[blue]Pagina dei bug di APTm[][3]. Se si desidera segnalare un bug in APT, vedere /usr/share/doc/debian/bug-reporting.txt o il comando reportbug(1).
APT è stato scritto dal Team APT <apt@packages.debian.org>.
Questa pagina di manuale è basata sul lavoro di Javier Fernández-Sanguino Peña, Isaac Jones, Colin Walters, Florian Weimer e Michael Vogt.
Traduzione in italiano a cura del Team italiano di localizzazione di Debian <debian-l10n-italian@lists.debian.org>. In particolare hanno contribuito Eugenia Franzoni (2000), Hugh Hartmann (2000-2012), Gabriele Stilli (2012), Beatrice Torracca (2012, 2014, 2015).
Notare che questa versione tradotta del documento può contenere parti non tradotte. Ciò è voluto, per evitare di perdere contenuti quando la traduzione non è aggiornata rispetto all'originale.
Jason Gunthorpe
Team APT