Je recherche quelque chose comme ce livre blanc sur la sécurité pour iOS, sauf pour OS X ou mieux encore, une sorte de rapport d'audit de sécurité d'un expert indépendant. Après avoir lu la documentation comme le Guide de programmation des services de trousseau, je suis encore plus confus quant à ce qui est vulnérable à une attaque contradictoire sur une sauvegarde non chiffrée d'un système OS X.
La dernière fois que j'ai vérifié, le trousseau de connexion de l'utilisateur sous OS X était à peu près aussi sécurisé que le mot de passe. Je me souviens d'un problème qui a réduit le secret réel de la clé à quelque chose comme 111 bits (mémoire brumeuse, n'hésitez pas à me corriger) en raison d'un problème avec la façon dont le mot de passe est converti en clé, mais c'était il y a longtemps et j'espère que cela a été corrigé.
D'un autre côté, on m'a dit que le trousseau système est intrinsèquement moins sécurisé car tout administrateur peut y accéder et un intrus a de nombreuses options pour devenir administrateur en plus de deviner le mot de passe d'un seul utilisateur.
En particulier, je crains de stocker des mots de passe utilisés dans des scripts automatisés dans le trousseau système car les fichiers système sont sauvegardés et stockés hors site sans chiffrement supplémentaire. Les documents et autres données utilisateur sont cryptés avant d'être retirés du site, mais j'ai une suspicion persistante qu'il y a un chemin que je néglige qui récupère ces clés une fois que le trousseau système est compromis (en raison de nos procédures, pas nécessairement de défauts cryptographiques) . Je veux donc avoir une compréhension approfondie de la façon dont le trousseau système est simultanément sécurisé mais accessible à tout administrateur.
Comment les clés sont-elles architecturées de sorte que tout utilisateur administratif puisse déverrouiller le trousseau système?
Existe-t-il des restrictions cryptographiques qui limitent de quelque manière que ce soit un utilisateur administratif avec les informations contenues dans le trousseau système?
Étant donné une sauvegarde système non chiffrée sans
/Users
, comment pourriez-vous accéder aux clés du trousseau système?
Je suis intéressé par OS X 10.5 Leopard et les versions ultérieures.
la source
Réponses:
Le trousseau système est stocké dans
/Library/Keychains/System.keychain
et la clé pour le déverrouiller est stockée/var/db/SystemKey
(ses autorisations de fichier par défaut sont lisibles uniquement par root). L'emplacement de ces fichiers est référencé dans le script security-checksystem (à partir de la source security_systemkeychain ). Il est même possible de tester le verrouillage / déverrouillage automatique du trousseau système en utilisantLe cadre de sécurité du trousseau permet aux programmes non privilégiés de faire des demandes d'informations à condition qu'elles soient dans l'ACL stockées dans l'entrée du trousseau. De toute évidence, si un utilisateur a racine sur un système, il peut accéder directement au fichier stockant le trousseau du système et à la clé pour le déverrouiller, donc il n'a pas à faire de demande via le cadre de sécurité et n'est pas redevable aux ACL stockées dans le trousseau lui-même.
(Je n'ai pas vraiment répondu aux questions originales alors essayons encore une fois)
Le cadre du trousseau de clés libsecurity permet aux processus réguliers d'interagir avec le trousseau du système de manière authentifiée à l'aide du cadre de communication interprocessus XC d'Apple (IPC).
Le programme A envoie une demande d'accès aux informations du trousseau système à l'aide d'IPC. On vérifie que l'utilisateur demandeur se trouve déjà dans le groupe de roues et connaît également le mot de passe d'un utilisateur du groupe de roues. Une fois l'autorisation confirmée, le
kcproxy
démon privilégié peut être utilisé pour accéder au contenu/var/db/SystemKey
, déverrouiller le trousseau système et renvoyer les informations demandées.Non - un utilisateur administratif est autorisé à accéder à / modifier quoi que ce soit dans le trousseau système. Même s'ils ne le pouvaient pas, ils pouvaient copier les fichiers sous-jacents sur une autre machine sur laquelle ils avaient un contrôle total et simplement les déverrouiller / y accéder.
Si la sauvegarde contenait des copies de
/Library/Keychains/System.keychain
,/var/db/SystemKey
je les copierais à leurs emplacements respectifs sur un nouveau système OS X et les utiliseraissystemkeychain
pour déverrouiller le premier et vider la base de données du trousseau à l'aidesecurity dump-keychain
.la source
Porte-clés système
Le trousseau système possède des capacités uniques. Ceux-ci sont documentés par la page de manuel systemkeychain . Les mentions du mot de passe principal sont susceptibles d'être votre objectif. Le code source spécifique du trousseau système est petit et disponible.
Le trousseau système,,
/System/Library/Keychains/System.keychain
est un trousseau spécial pour Apple et les démons à utiliser. Vous devez généralement éviter de l'utiliser pour les scripts de niveau utilisateur.Révision du code: porte-clés
Apple a publié le code source du trousseau et du cadre de sécurité pour Mac OS X 10.5; vous pouvez consulter ce code pour découvrir comment il fonctionne.
Approche alternative: trousseau séparé
Vous pouvez créer un trousseau distinct pour stocker les informations d'identification de votre script. Nous recommandons cette pratique à nos clients. Vous pouvez utiliser la sécurité de l' outil de ligne de commande pour accéder, extraire et gérer vos trousseaux sans recourir à une interface graphique.
Pensez à stocker les mots de passe de vos scripts automatisés dans un trousseau distinct - et excluez ce trousseau de votre sauvegarde hors site.
J'apprécie que retirer le trousseau de votre sauvegarde n'est pas idéal, mais cela répondrait à vos préoccupations. Lors de la restauration du Mac, vous devrez récupérer le trousseau à partir d'une source différente; peut être une source ou un canal latéral plus fiable.
Vous pouvez toujours stocker le mot de passe du trousseau distinct dans le trousseau système. Vous pouvez ensuite déverrouiller le trousseau séparé d'un script. Si la sauvegarde est attaquée, vous exposeriez uniquement le mot de passe au trousseau distinct et non au trousseau lui-même, car ce fichier ne fait pas partie de la sauvegarde hors site.
la source
Apple a récemment publié un document décrivant ses pratiques de sécurité , vous y trouverez peut-être des réponses. Le document est spécifique à iOS mais de nombreuses fonctionnalités de sécurité ont beaucoup en commun avec OS X.
la source
Je n'ai pas de connaissance spécifique du trousseau * mais c'est une pratique assez standardisée.
Une fois cela fait, vous pouvez changer le "mot de passe" en entrant la phrase secrète actuelle, en déchiffrant la clé symétrique puis en la chiffrant avec la nouvelle phrase secrète. Cela évite de longs processus de décryptage / cryptage dans le cas où "foo" est très grand.
Alors, comment cela fonctionne-t-il pour plusieurs utilisateurs qui ont besoin d'accéder au texte en clair de foo? Assez facile vraiment, vous créez simplement une copie cryptée de la clé symétrique une fois pour chaque utilisateur. En d'autres termes, effectuez la troisième étape pour chaque utilisateur.
En pratique, tout cela est soustrait à la vue et l'utilisateur final n'a besoin que de son propre mot de passe.
Concernant la partie 3 de vos questions, les clés des utilisateurs ne sont pas stockées chez eux. Ils seraient très probablement stockés
/private/var
quelque part. Ainsi, même sans/Users
quelqu'un qui avait auparavant accès serait en mesure de déverrouiller le système.* Il est possible que le trousseau fonctionne différemment.
la source