'\" t
.\" Title: apt-secure
.\" Author: Jason Gunthorpe
.\" Generator: DocBook XSL Stylesheets v1.78.1
.\" Date: 09\ \&June\ \&2012
.\" Manual: APT
.\" Source: APT 1.0.9.8.4
.\" Language: English
.\"
.TH "APT\-SECURE" "8" "09\ \&June\ \&2012" "APT 1.0.9.8.4" "APT"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
apt-secure \- Archive authentication support for APT
.SH "DESCRIPTION"
.PP
Starting with version 0\&.6,
\fBapt\fR
contains code that does signature checking of the Release file for all archives\&. This ensures that packages in the archive can\*(Aqt be modified by people who have no access to the Release file signing key\&.
.PP
If a package comes from a archive without a signature, or with a signature that apt does not have a key for, that package is considered untrusted, and installing it will result in a big warning\&.
\fBapt\-get\fR
will currently only warn for unsigned archives; future releases might force all sources to be verified before downloading packages from them\&.
.PP
The package frontends
\fBapt-get\fR(8),
\fBaptitude\fR(8)
and
\fBsynaptic\fR(8)
support this new authentication feature\&.
.SH "TRUSTED ARCHIVES"
.PP
The chain of trust from an apt archive to the end user is made up of several steps\&.
\fBapt\-secure\fR
is the last step in this chain; trusting an archive does not mean that you trust its packages not to contain malicious code, but means that you trust the archive maintainer\&. It\*(Aqs the archive maintainer\*(Aqs responsibility to ensure that the archive\*(Aqs integrity is preserved\&.
.PP
apt\-secure does not review signatures at a package level\&. If you require tools to do this you should look at
\fBdebsig\-verify\fR
and
\fBdebsign\fR
(provided in the debsig\-verify and devscripts packages respectively)\&.
.PP
The chain of trust in Debian starts when a maintainer uploads a new package or a new version of a package to the Debian archive\&. In order to become effective, this upload needs to be signed by a key contained in the Debian Maintainers keyring (available in the debian\-keyring package)\&. Maintainers\*(Aq keys are signed by other maintainers following pre\-established procedures to ensure the identity of the key holder\&.
.PP
Once the uploaded package is verified and included in the archive, the maintainer signature is stripped off, and checksums of the package are computed and put in the Packages file\&. The checksums of all of the Packages files are then computed and put into the Release file\&. The Release file is then signed by the archive key for this Debian release, and distributed alongside the packages and the Packages files on Debian mirrors\&. The keys are in the Debian archive keyring available in the
debian\-archive\-keyring
package\&.
.PP
End users can check the signature of the Release file, extract a checksum of a package from it and compare it with the checksum of the package they downloaded by hand \- or rely on APT doing this automatically\&.
.PP
Notice that this is distinct from checking signatures on a per package basis\&. It is designed to prevent two possible attacks:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Network "man in the middle" attacks\&. Without signature checking, malicious agents can introduce themselves into the package download process and provide malicious software either by controlling a network element (router, switch, etc\&.) or by redirecting traffic to a rogue server (through ARP or DNS spoofing attacks)\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Mirror network compromise\&. Without signature checking, a malicious agent can compromise a mirror host and modify the files in it to propagate malicious software to all users downloading packages from that host\&.
.RE
.PP
However, it does not defend against a compromise of the Debian master server itself (which signs the packages) or against a compromise of the key used to sign the Release files\&. In any case, this mechanism can complement a per\-package signature\&.
.SH "USER CONFIGURATION"
.PP
\fBapt\-key\fR
is the program that manages the list of keys used by apt\&. It can be used to add or remove keys, although an installation of this release will automatically contain the default Debian archive signing keys used in the Debian package repositories\&.
.PP
In order to add a new key you need to first download it (you should make sure you are using a trusted communication channel when retrieving it), add it with
\fBapt\-key\fR
and then run
\fBapt\-get update\fR
so that apt can download and verify the
InRelease
or
Release\&.gpg
files from the archives you have configured\&.
.SH "ARCHIVE CONFIGURATION"
.PP
If you want to provide archive signatures in an archive under your maintenance you have to:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fICreate a toplevel Release file\fR, if it does not exist already\&. You can do this by running
\fBapt\-ftparchive release\fR
(provided in apt\-utils)\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fISign it\fR\&. You can do this by running
\fBgpg \-\-clearsign \-o InRelease Release\fR
and
\fBgpg \-abs \-o Release\&.gpg Release\fR\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fIPublish the key fingerprint\fR, that way your users will know what key they need to import in order to authenticate the files in the archive\&.
.RE
.PP
Whenever the contents of the archive change (new packages are added or removed) the archive maintainer has to follow the first two steps outlined above\&.
.SH "SEE ALSO"
.PP
\fBapt.conf\fR(5),
\fBapt-get\fR(8),
\fBsources.list\fR(5),
\fBapt-key\fR(8),
\fBapt-ftparchive\fR(1),
\fBdebsign\fR(1),
\fBdebsig-verify\fR(1),
\fBgpg\fR(1)
.PP
For more background information you might want to review the
\m[blue]\fBDebian Security Infrastructure\fR\m[]\&\s-2\u[1]\d\s+2
chapter of the Securing Debian Manual (available also in the harden\-doc package) and the
\m[blue]\fBStrong Distribution HOWTO\fR\m[]\&\s-2\u[2]\d\s+2
by V\&. Alex Brennen\&.
.SH "BUGS"
.PP
\m[blue]\fBAPT bug page\fR\m[]\&\s-2\u[3]\d\s+2\&. If you wish to report a bug in APT, please see
/usr/share/doc/debian/bug\-reporting\&.txt
or the
\fBreportbug\fR(1)
command\&.
.SH "AUTHOR"
.PP
APT was written by the APT team
\&.
.SH "MANPAGE AUTHORS"
.PP
This man\-page is based on the work of Javier Fernández\-Sanguino Peña, Isaac Jones, Colin Walters, Florian Weimer and Michael Vogt\&.
.SH "AUTHORS"
.PP
\fBJason Gunthorpe\fR
.RS 4
.RE
.PP
\fBAPT team\fR
.RS 4
.RE
.SH "NOTES"
.IP " 1." 4
Debian Security Infrastructure
.RS 4
\%http://www.debian.org/doc/manuals/securing-debian-howto/ch7
.RE
.IP " 2." 4
Strong Distribution HOWTO
.RS 4
\%http://www.cryptnet.net/fdp/crypto/strong_distro.html
.RE
.IP " 3." 4
APT bug page
.RS 4
\%http://bugs.debian.org/src:apt
.RE