Ich suche nach etwas wie diesem Sicherheits-Whitepaper für iOS mit Ausnahme von OS X oder noch besser nach einer Art Sicherheitsüberprüfungsbericht von einem unabhängigen Experten. Nach dem Lesen von Dokumentationen wie dem Keychain Services Programming Guide bin ich noch verwirrter darüber, was für ein Angriff auf ein unverschlüsseltes Backup eines OS X-Systems anfällig ist.
Bei der letzten Überprüfung war der Anmeldeschlüsselbund des Benutzers unter OS X ungefähr so sicher wie das Kennwort. Ich erinnere mich an ein Problem, bei dem die tatsächliche Geheimhaltung des Schlüssels auf 111 Bit (nebliges Gedächtnis, bitte zögern Sie nicht, mich zu korrigieren) geschrumpft ist, weil das Kennwort in einen Schlüssel konvertiert wurde, aber das ist schon lange her und hoffentlich wurde das behoben.
Auf der anderen Seite, ich habe das gesagt, System - Schlüsselanhänger ist von Natur aus weniger sicher , da jeder Administrator darauf zugreifen kann und ein Eindringling viele Optionen für immer ein Administrator hat neben einem einzelnen Benutzer-Passwort zu erraten.
Insbesondere mache ich mir Sorgen um das Speichern von Kennwörtern, die in automatisierten Skripten verwendet werden, im Systemschlüsselbund, da die Systemdateien ohne weitere Verschlüsselung außerhalb des Standorts gesichert und gespeichert werden. Dokumente und andere Benutzerdaten werden verschlüsselt, bevor sie vom Standort entfernt werden. Ich habe jedoch den Verdacht, dass ein von mir übersehener Pfad diese Schlüssel wiederherstellt, sobald der Systemschlüsselbund kompromittiert ist (aufgrund unserer Verfahren, die nicht unbedingt kryptografische Mängel aufweisen). . Daher möchte ich ein umfassendes Verständnis dafür haben, wie der Systemschlüsselbund gleichzeitig gesichert und dennoch für jeden Administrator zugänglich ist.
Wie sind die Schlüssel so aufgebaut, dass jeder Administrator den Systemschlüsselbund entsperren kann?
Gibt es kryptografische Einschränkungen, die in irgendeiner Weise die Möglichkeiten eines Administrators einschränken, mit Informationen im Systemschlüsselbund umzugehen?
Wie würden Sie bei einer unverschlüsselten Systemsicherung ohne
/Users
Zugriff auf die Schlüssel im Systemschlüsselbund zugreifen?
Ich interessiere mich für OS X 10.5 Leopard und spätere Versionen.
quelle
Antworten:
Der Systemschlüsselbund ist in
/Library/Keychains/System.keychain
und der Schlüssel zum Entsperren in gespeichert/var/db/SystemKey
(seine Standarddateiberechtigungen können nur von root gelesen werden). Der Speicherort dieser Dateien wird im Skript security-checksystem (aus der Quelle security_systemkeychain ) angegeben. Es ist sogar möglich, das automatische Sperren / Entsperren des Systemschlüsselbunds mit zu testenDas Schlüsselbund-Sicherheitsframework ermöglicht es nicht privilegierten Programmen, Informationen anzufordern, sofern diese in der im Schlüsselbundeintrag gespeicherten ACL enthalten sind. Wenn ein Benutzer Root auf einem System hat, kann er direkt auf die Datei zugreifen, in der der Systemschlüsselbund gespeichert ist, und auf den Schlüssel, um ihn zu entsperren. Daher müssen er keine Anforderungen über das Sicherheitsframework stellen und sind nicht den im Schlüsselbund gespeicherten ACLs verpflichtet selbst.
(Ich habe die ursprünglichen Fragen nicht beantwortet. Lassen Sie uns dies noch einmal versuchen.)
Das libsecurity-Schlüsselbund-Framework ermöglicht regulären Prozessen die authentifizierte Interaktion mit dem Systemschlüsselbund mithilfe von Apples XPC Interprocess Communication Framework (IPC).
Programm A sendet eine Anfrage, um über IPC auf die Systemschlüsselbundinformationen zuzugreifen. Es wird geprüft, ob sich der anfragende Benutzer bereits in der Radgruppe befindet und auch das Passwort eines Benutzers in der Radgruppe kennt. Sobald die Autorisierung bestätigt wurde, kann der privilegierte
kcproxy
Daemon verwendet werden, um auf Material zuzugreifen/var/db/SystemKey
, den Systemschlüsselbund zu entsperren und die angeforderten Informationen zurückzugeben.Nein - Ein Administrator kann auf alle Elemente im Systemschlüsselbund zugreifen bzw. diese ändern. Selbst wenn sie dies nicht könnten, könnten sie die zugrunde liegenden Dateien auf einen anderen Computer kopieren, auf dem sie die vollständige Kontrolle haben, und sie dort einfach entsperren / darauf zugreifen.
Wenn das Backup Kopien von
/Library/Keychains/System.keychain
und/var/db/SystemKey
dann enthalten würde, würde ich sie an ihre jeweiligen Speicherorte auf einem neuen OS X-System kopieren und verwendensystemkeychain
, um das frühere zu entsperren und die Schlüsselbunddatenbank mit zu sichernsecurity dump-keychain
.quelle
System-Schlüsselbund
Der Systemschlüsselbund verfügt über einige einzigartige Funktionen. Diese werden auf der Manualpage zum Systemkeychain dokumentiert . Die Erwähnungen des Master-Passworts sind wahrscheinlich Ihr Fokus. Der systemschlüsselbundspezifische Quellcode ist klein und verfügbar.
Der System-Schlüsselbund
/System/Library/Keychains/System.keychain
ist ein spezieller Schlüsselbund, den Apple und Daemons verwenden können. Sie sollten es generell nicht für Skripte auf Benutzerebene verwenden.Code Review: Schlüsselbund
Apple hat den Quellcode für das Schlüsselbund- und Sicherheits-Framework für Mac OS X 10.5 veröffentlicht. Sie können diesen Code überprüfen, um herauszufinden, wie er funktioniert.
Alternativer Ansatz: Separater Schlüsselbund
Sie können einen separaten Schlüsselbund erstellen, um die Anmeldeinformationen Ihres Skripts zu speichern. Wir empfehlen diese Praxis unseren Kunden. Mit der Sicherheit des Befehlszeilentools können Sie auf Ihre Schlüssel zugreifen, diese extrahieren und verwalten, ohne auf eine grafische Oberfläche zurückgreifen zu müssen.
Speichern Sie die Kennwörter für Ihre automatisierten Skripts in einem separaten Schlüsselbund - und schließen Sie diesen Schlüsselbund von Ihrer Offsite-Sicherung aus.
Ich weiß es zu schätzen, dass das Entfernen des Schlüsselbunds von Ihrem Backup nicht ideal ist, aber es würde Ihre Bedenken ansprechen. Wenn Sie den Mac wiederherstellen, müssen Sie den Schlüsselbund von einer anderen Quelle zurückholen. ist möglicherweise eine vertrauenswürdigere Quelle oder ein vertrauenswürdigerer Seitenkanal.
Sie können das Kennwort des separaten Schlüsselbunds immer im Systemschlüsselbund speichern. Sie können dann den separaten Schlüsselbund aus einem Skript entsperren. Wenn die Sicherung angegriffen wird, legen Sie das Kennwort nur für den separaten Schlüsselbund und nicht für den Schlüsselbund selbst offen, da diese Datei nicht für die Sicherung außerhalb des Standorts vorgesehen ist.
quelle
Apple hat kürzlich ein Dokument veröffentlicht, in dem die Sicherheitsmaßnahmen beschrieben werden . Möglicherweise finden Sie dort einige Antworten. Das Dokument ist iOS-spezifisch, aber viele Sicherheitsfunktionen haben viel mit OS X gemeinsam.
quelle
Ich habe keine spezifischen Kenntnisse über Schlüsselbund *, aber dies ist eine ziemlich standardisierte Praxis.
Danach können Sie das "Passwort" ändern, indem Sie die aktuelle Passphrase eingeben, den symmetrischen Schlüssel entschlüsseln und anschließend mit der neuen Passphrase verschlüsseln. Dies vermeidet langwierige Entschlüsselungs- / Verschlüsselungsprozesse für den Fall, dass "foo" sehr groß ist.
Wie funktioniert das für mehrere Benutzer, die auf den Klartext von foo zugreifen müssen? Ganz einfach, Sie erstellen einfach eine verschlüsselte Kopie des symmetrischen Schlüssels für jeden Benutzer. Mit anderen Worten, machen Sie Schritt drei für jeden Benutzer.
In der Praxis ist dies alles nicht sichtbar und der Endbenutzer muss nur mit seinem eigenen Passwort umgehen.
In Bezug auf Teil 3 Ihrer Fragen werden die Schlüssel der Benutzer nicht in ihrem Haus gespeichert. Sie würden höchstwahrscheinlich
/private/var
irgendwo aufbewahrt. So wäre auch ohne/Users
jemanden, der zuvor Zugriff hatte, die Möglichkeit gegeben, das System freizuschalten.* Möglicherweise funktioniert der Schlüsselbund anders.
quelle