Wie wird die Echtheit von Debian-Paketen garantiert?

8

Welche Sicherheitssysteme und -prozesse sind vorhanden, um zu verhindern, dass böswillige Dritte die Sicherheit von Code in den Debian-Spiegeln hacken / gefährden, oder um zu überprüfen, ob die Pakete, die wir erhalten, tatsächlich diejenigen sind, die die Betreuer für sie halten?

emf
quelle

Antworten:

13

Pakete überprüfen

Der Inhalt der Spiegel wird direkt oder indirekt mit PGP-Schlüsseln signiert. Beginnend an der "Wurzel" einer Debian-Distribution:

  • Release, signiert mit einer getrennten Signatur in Release.gpg, enthält die Hashes (MD5, SHA1, SHA256) aller Paketindizes und Installer-Hashes ( InReleasekombiniert jetzt beide);
  • der Paket - Indizes ( zB , binary-amd64) enthält die Hashwerte (MD5 und SHA256) der Pakete.

Die Hashes und Signaturen werden von Tools überprüft, z. B. apt-getvon PGP-Schlüsseln, die auf dem System gespeichert sind (verwaltet von apt-key). Solange das empfangende System einwandfrei ist, kann standardmäßig kein Paket aus den Debian-Archiven installiert werden, wenn es nicht (indirekt) vom Archiv-PGP-Schlüssel signiert wurde. Eindringlinge auf den Spiegeln könnten keine Binärdateien ersetzen, wenn sie nicht auch die Kontrolle über den entsprechenden PGP-Schlüssel hätten.

Spiegel steuern

Dies bedeutet, dass eine Kompromittierung des Archivs nicht ausreicht, um Endbenutzersysteme tatsächlich zu kompromittieren. Sie müssten auch einen PGP-Schlüssel kompromittieren, dem diese Systeme bereits vertrauen. (Eine Folge davon ist, dass das Hinzufügen eines Schlüssels zu einem Debian-System nicht leicht genommen werden sollte.) Damit wird Ihre erste Frage in gewissem Maße beantwortet, da die Sicherheit des Archivs nicht so wichtig ist. Trotzdem werden die kritischen Systeme (in denen das Signieren stattfindet) streng überwacht und überwacht, und nur sehr wenige Personen haben Zugriff darauf.

Maintainer Erwartungen

Etwas mehr Aufwand besteht darin, sicherzustellen, dass die Pakete "tatsächlich diejenigen sind, von denen die Betreuer glauben, dass sie sie sind". Dies ist der Weg, den ein Paket einschlägt:

  • Das Paket wird von einem Betreuer vorbereitet und mit einem Schlüssel im Debian-Schlüsselring signiert ( dh einem Schlüssel eines hochladenden Debian-Entwicklers oder eines Debian-Betreuers, der auf den Debian-Schlüsselring-Server hochgeladen und vom Schlüsselring-Wartungsteam zusammengeführt wurde.)
  • Das signierte Paket wird in das Archiv hochgeladen, wo es überprüft wird (unter anderem müssen sich die verwendeten Schlüssel im aktuellen Schlüsselring befinden und dürfen nicht abgelaufen sein, die Signaturen müssen gültig sein, und wenn das Paket von einem DM signiert wurde, muss dies der Fall sein DM muss über die entsprechenden Berechtigungen für das Paket verfügen.
  • Alle hochgeladenen Binärdateien werden unverändert in das endgültige Archiv verschoben (ich vereinfache dies hier ein wenig, aber das ist der Effekt).
  • Alle fehlenden Binärdateien werden von einem BuildD erstellt und vom PGP-Schlüssel des Buildd signiert und in das endgültige Archiv verschoben (das weiß, welche Buildd-Schlüssel gültig sind, und Dateien anhand dieser überprüft).
  • Alle diese Aktualisierungen werden schließlich mit den entsprechenden Indexaktualisierungen (die wie oben beschrieben signiert sind) an das Spiegelnetzwerk gesendet.

Wenn der Betreuer Binärdateien zusammen mit der Paketquelle hochlädt, werden diese Dateien (vorerst) bereitgestellt. Da das Hochladen von Binärdateien jetzt optional ist, werden sie immer häufiger übersprungen, und schließlich werden hochgeladene Binärdateien gelöscht. (Dies war in Ubuntu schon immer der Fall.) Ob die anderen Binärdateien den Erwartungen des Betreuers entsprechen, hängt vom erstellten Netzwerk ab. Daher sind Buildds auch kritische Systeme, die unter strenger Aufsicht und mit wenig menschlichem Zugang stehen. Da alle Artefakte signiert sind, ist es immer möglich, die Integrität der Dateien zu überprüfen: zuerst anhand des Schlüssels des Betreuers, dann anhand der Schlüssel der Buildds und schließlich anhand des Schlüssels des Archivs.

Wie Plugwash hervorhebt , sind die ursprünglichen Signaturen auf den Spiegeln nicht verfügbar, und jede DD kann eine fehlende Binärdatei hochladen. Originalsignaturen können aus den Debian-Devel-Changes- Archiven abgerufen werden .

Zusammenfassend lässt sich sagen , dass das aktuelle System zwar nicht perfekt ist, jedoch eine Rückverfolgbarkeit für alle Dateien bietet, die Sie von den Spiegeln herunterladen können. Es gibt eine Reihe von Bemühungen, um die Situation zu verbessern: reproduzierbare Builds (die eine unabhängige Überprüfung der Korrespondenz von Binärdateien mit der veröffentlichten Quelle ermöglichen), Löschen von vom Betreuer bereitgestellten Binärdateien ...

Stephen Kitt
quelle
Bewundernswert umfassend, aber Sie hätten dem Poster auch vernünftigerweise sagen können, dass es weggehen und die Dokumentation lesen soll. :-)
Faheem Mitha
@FaheemMitha Ich habe gezögert, aber welche Dokumentation? Es gibt wiki.debian.org/SecureApt, aber es deckt nicht alles ab ... Das Zusammensetzen ist ziemlich komplex, es sei denn, es gibt eine andere Dokumentation, die mir nicht bekannt ist!
Stephen Kitt
Haben die von Benutzern ausgeführten Debian-Betriebssysteme öffentliche PGP-Schlüssel vorab eingebettet - die mit den privaten Schlüsseln auf den kritischen Systemen gekoppelt sind (wo die Signierung erfolgt) - und apt-getüberprüfen Pakete mithilfe dieser lokalen vorab eingebetteten Schlüssel, weil sie ihnen vertrauen?
the_velour_fog
@the_velour_fog ja, das ist (fast) richtig; Die öffentlichen Schlüssel werden im debian-archive-keyringPaket geliefert. apt-getÜberprüft ReleaseDateien mit diesen Schlüsseln und Pakete mit den in den Dateien Releaseund enthaltenen Hashes Packages.
Stephen Kitt