23 votes

Comment le trousseau système est-il sécurisé dans OS X ?

Je cherche quelque chose soit comme ce livre blanc sur la sécurité pour iOS sauf pour OS X ou, mieux encore, un rapport d'audit de sécurité établi par un expert indépendant. Après avoir lu de la documentation comme le Guide de programmation des services du trousseau Je suis encore plus perplexe quant à la vulnérabilité d'une sauvegarde non cryptée d'un système OS X à une attaque adverse.

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ûr que le mot de passe. Je me souviens d'un problème qui réduisait 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 les Système Le trousseau est intrinsèquement moins sûr, car n'importe quel administrateur peut y accéder et un intrus a de nombreuses possibilités pour devenir administrateur, en plus de deviner le mot de passe d'un seul utilisateur.

En particulier, je suis préoccupé par le stockage des mots de passe utilisés dans les scripts automatisés dans le trousseau de clés du système, car les fichiers système sont sauvegardés et stockés hors site sans autre chiffrement. Les documents et autres données utilisateur sont chiffrés avant d'être emportés hors site, mais j'ai un soupçon tenace qu'il existe un chemin que je néglige et qui permet de récupérer ces clés une fois que le trousseau système est compromis (en raison de nos procédures, pas nécessairement des défauts cryptographiques). Je veux donc bien comprendre comment le trousseau système est à la fois sécurisé et accessible à tout administrateur.

  1. Comment les clés sont-elles conçues pour que tout utilisateur administratif puisse déverrouiller le trousseau de clés du système ?

  2. Existe-t-il des restrictions cryptographiques qui limitent de quelque manière que ce soit ce qu'un utilisateur administratif peut faire avec les informations du trousseau système ?

  3. Étant donné une sauvegarde non cryptée du système sans /Users comment accéder aux clés du trousseau de clés du système ?

Je suis intéressé par OS X 10.5 Leopard et les versions ultérieures, mais je me limite spécifiquement aux Macs de bureau ou portables. sans une puce T2 ou une enclave sécurisée. Apple Livre blanc sur la sécurité de la plate-forme Spring 2020 explique assez bien que les clés critiques chiffrant les données du trousseau sont stockées sur la puce T2 et que la puce T2 elle-même gère et applique des ACL qui limitent l'accès à la fonctionnalité de déchiffrement. Ainsi, sur ces ordinateurs, comme sur tous les appareils iOS, la base de données du trousseau est liée au matériel et ne peut pas être utilisée sur un autre appareil.

1 votes

Je n'ai pas de réponse, mais une anecdote : en tant qu'utilisateur standard sans privilèges d'administrateur, j'ai pu une fois extraire des mots de passe du trousseau du système avec une relative facilité. Je ne me souviens pas des étapes exactes, mais c'était certainement possible. En passant, cela ne serait-il pas mieux sur sécurité.stackexchange.com ?

0 votes

@Alex, j'ai d'abord essayé Security.SE, mais je n'ai obtenu aucune réponse.

1 votes

Pourquoi ne pas utiliser un porte-clés différent pour ce que vous faites ? Y a-t-il une bonne raison pour que votre script ait besoin d'accéder au trousseau du système ?

13voto

Peter Hahndorf Points 1086

Le trousseau de clés du système est stocké dans /Library/Keychains/System.keychain et la clé pour le déverrouiller est stockée dans /var/db/SystemKey (ses autorisations de fichiers par défaut sont lisibles uniquement par Root). L'emplacement de ces fichiers est référencé dans le fichier système de contrôle de sécurité script (de la security_systemkeychain source ). Il est même possible de tester le verrouillage/déverrouillage automatique du trousseau de clés du système à l'aide du bouton

systemkeychain -vt

Le cadre de sécurité du trousseau de clés permet aux programmes non privilégiés d'effectuer des demandes d'informations à condition qu'elles figurent dans la liste de contrôle d'accès stockée dans l'entrée du trousseau de clés. Il est évident que si un utilisateur a Root sur un système, il peut accéder directement au fichier stockant le trousseau du système et à la clé pour le déverrouiller. Il n'a donc pas à faire de demandes via le cadre de sécurité et n'est pas tenu de respecter les ACL stockées dans le trousseau lui-même.

(Je n'ai pas vraiment répondu aux questions initiales, alors essayons encore une fois)

Comment les clés sont-elles conçues pour que tout utilisateur administratif puisse déverrouiller le trousseau de clés du système ?

Le site libsecurity keychain framework permet aux processus réguliers d'interagir avec le trousseau de clés du système de manière authentifiée en utilisant le cadre de communication interprocessus XPC d'Apple (IPC).

Le programme A envoie une demande d'accès aux informations du trousseau du système en utilisant l'IPC. Une vérification est effectuée pour s'assurer que l'utilisateur demandeur fait déjà partie du groupe de roues et qu'il connaît également le mot de passe d'un utilisateur du groupe de roues. Une fois l'autorisation confirmée, le programme privilégié kcproxy peut être utilisé pour accéder à des documents dans la base de données /var/db/SystemKey déverrouiller le trousseau de clés du système et renvoyer les informations demandées.

Existe-t-il des restrictions cryptographiques qui limitent de quelque manière que ce soit ce qu'un utilisateur administratif peut faire avec les informations du trousseau système ?

Non - un utilisateur administratif est autorisé à accéder au trousseau de clés du système et à le modifier. Même s'il ne le pouvait pas, il pourrait copier les fichiers sous-jacents sur une autre machine dont il a le contrôle total et y déverrouiller/accéder.

Si vous disposez d'une sauvegarde système non cryptée sans /Users, comment pouvez-vous accéder aux clés du trousseau système ?

Si la sauvegarde contenait des copies de /Library/Keychains/System.keychain y /var/db/SystemKey puis je les copierais à leurs emplacements respectifs sur un nouveau système OS X et utiliserais systemkeychain pour que ce dernier déverrouille le premier et vide la base de données du trousseau en utilisant security dump-keychain .

1 votes

Il y a un utilitaire appelé dumpkeychain de GuidanceSoftware/EnCase, qui permet de vider directement le trousseau de clés d'un système (avec le SystemKey) dans Windows (peut être plus facile que de faire une nouvelle installation d'OS X pour le vider).

1 votes

@Anon, comment puis-je utiliser les informations ci-dessus pour accéder/déverrouiller/décharger un trousseau System.keychain à partir d'une sauvegarde Time Machine d'un autre ordinateur ? En d'autres termes, j'ai le trousseau System.keychain et SystemKey stockés sur un disque externe. Je suppose donc que je dois spécifier les chemins d'accès aux deux fichiers respectivement pour éviter qu'il utilise les fichiers situés à l'emplacement par défaut.

0 votes

Ce post est lié (comment utiliser SystemKey pour décrypter System.keychain d'un ancien système). apple.stackexchange.com/questions/307189/ Je suis curieux de savoir s'il existe un moyen, avec Keychain Access ou la clique systemkeychain, de déverrouiller un trousseau System.keychain récupéré (c'est-à-dire d'un vieux disque dur défectueux) avec le SystemKey correspondant de la même installation. Mon but étant de déverrouiller et de migrer les logins dans le nouveau trousseau System sur la nouvelle installation.

5voto

Graham Miln Points 39606

Porte-clés du système

Le trousseau de clés du système possède des capacités uniques. Celles-ci sont documentées par le systemkeychain manuel page. Les mentions du mot de passe principal sont susceptibles de retenir votre attention. Le site code source spécifique au trousseau de clés du système est petit et disponible.

Le trousseau de clés du système, /System/Library/Keychains/System.keychain est un trousseau spécial à utiliser par Apple et les démons. Vous devriez généralement éviter de l'utiliser pour les scripts de niveau utilisateur.

Revue des codes : Porte-clés

Apple a publié le code source du trousseau de clés et le cadre de sécurité pour Mac OS X 10.5 ; vous pouvez examiner ce code pour découvrir son fonctionnement.

Approche alternative : Trousseau de clés 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 l'outil en ligne de commande sécurité pour accéder, extraire et gérer vos trousseaux de clés sans avoir recours à une interface graphique.

Envisagez de stocker les mots de passe de vos scripts automatisés dans un trousseau distinct - et excluez ce trousseau de votre sauvegarde hors site.

Je comprends que supprimer 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 de clés à partir d'une source différente ; il peut s'agir d'une source plus fiable ou d'un canal secondaire.

Vous pouvez toujours stocker le mot de passe du trousseau séparé dans le trousseau système. Vous pourriez ensuite déverrouiller le trousseau séparé à partir d'un script. Si la sauvegarde est attaquée, vous n'exposeriez que le mot de passe du trousseau séparé et non le trousseau lui-même, car ce fichier ne se trouve pas dans la sauvegarde hors site.

0 votes

Merci, mais il est bien trop difficile pour moi de comprendre, à partir de tout ce code, comment le trousseau système est sécurisé et ce qui le maintient en sécurité. Nous devons utiliser le trousseau système parce que nous avons besoin que les scripts soient exécutés automatiquement en arrière-plan avec les privilèges Root, quelle que soit la personne connectée.

1 votes

Je recommande de demander soit sur la liste de diffusion Apple CDSA ( lists.apple.com/mailman/listinfo/apple-cdsa ) ou en faisant appel à un Incident de support technique Apple. Ce n'est que par ces moyens que vous pouvez vous assurer de joindre les ingénieurs Apple appropriés.

0 votes

Faire en sorte que les scripts s'exécutent en arrière-plan en tant que Root est le travail de launchd. Qu'est-ce que vous essayez de faire exactement ?

2voto

Demian Turner Points 809

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.

0 votes

C'est une bonne idée et un bon exemple du type de documentation que je trouverais utile, mais iOS n'a pas le concept de trousseau système et cela ne répond pas à ma question.

0 votes

Je suis heureux d'accepter votre prime si cela vous met dans la bonne direction ;-)

0voto

Mykroft Points 4292

Je n'ai pas de connaissance spécifique de Keychain* mais c'est une pratique assez standardisée.

  1. Vous voulez protéger le fichier de texte brut "foo". Foo peut avoir une taille arbitraire.
  2. Créez une clé symétrique pour crypter foo.
  3. Cryptez la clé symétrique avec une clé initialisée à partir d'une phrase de passe.

Une fois que c'est fait, vous pouvez modifier le "mot de passe" en saisissant la phrase de passe actuelle, en décryptant la clé symétrique, puis en la cryptant avec la nouvelle phrase de passe. Cela permet d'éviter les longs processus de décryptage/chiffrement dans le cas où "foo" est très grand.

Comment cela fonctionne-t-il pour plusieurs utilisateurs qui ont besoin d'accéder au texte en clair de foo ? C'est très simple, il suffit de créer une copie chiffrée de la clé symétrique pour chaque utilisateur. En d'autres termes, il faut faire l'étape 3 pour chaque utilisateur.

Dans la pratique, tout cela est occulté et l'utilisateur final ne doit s'occuper que de son propre mot de passe.

En ce qui concerne la partie 3 de vos questions, les clés des utilisateurs ne sont pas stockées à leur domicile. Elles sont très probablement stockées dans /private/var quelque part. Donc même sans /Users quelqu'un qui avait auparavant un accès serait capable de débloquer le système.


*Il est possible que Keychain fonctionne différemment.

0 votes

Ce qui est différent avec le trousseau du système, c'est que le système peut accéder à ce qui se trouve dans le trousseau, quelle que soit la personne connectée. Par exemple, Time Machine peut accéder au trousseau système pour monter un partage de fichiers distant, même si le seul utilisateur connecté n'est pas un utilisateur administratif et ne peut donc pas accéder au trousseau système. Il se passe donc quelque chose d'autre, et j'aimerais savoir exactement ce que c'est.

0 votes

Encore une fois, je ne peux que supposer, mais je pense que ce n'est pas vraiment que différent. Le système lui-même peut accéder à la clé, c'est évident. Je suppose qu'il y a une clé système traitée de manière similaire aux clés utilisateur. Mais nous sommes maintenant au coeur de votre question qu'est-ce qui fournit le premier accès ?

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X