In che modo il portachiavi di sistema è protetto in OS X?

22

Sto cercando qualcosa come questo white paper sulla sicurezza per iOS ad eccezione del sistema operativo X o anche meglio, una sorta di rapporto di verifica della sicurezza di un esperto indipendente. Dopo aver letto la documentazione come Guida alla programmazione dei servizi portachiavi Sono ancora più confuso su ciò che è vulnerabile a un attacco contraddittorio su un backup non crittografato di un sistema OS X.

L'ultima volta che ho controllato, il portachiavi di login dell'utente sotto OS X era sicuro quanto la password. Ricordo alcuni problemi che riducevano l'effettiva segretezza della chiave a qualcosa come 111 bit (memoria annebbiata, per favore sentitevi liberi di correggermi) a causa di qualche problema con il modo in cui la password viene convertita in una chiave, ma era molto tempo fa e speriamo che sia stato risolto.

D'altra parte, mi è stato detto che il portachiavi System è intrinsecamente meno sicuro perché qualsiasi amministratore può accedervi e un intruso ha molte opzioni per diventare un amministratore oltre a indovinare la password di un singolo utente.

In particolare, sono preoccupato di archiviare le password utilizzate negli script automatici nel portachiavi di sistema poiché i file di sistema vengono salvati e archiviati fuori dal sito senza ulteriore crittografia. I documenti e gli altri dati dell'utente vengono crittografati prima di essere portati fuori dal sito, ma ho il fastidioso sospetto che ci sia un percorso che trascuro che recupera quelle chiavi una volta che il portachiavi di sistema è compromesso (a causa delle nostre procedure, non necessariamente di eventuali difetti crittografici) . Quindi voglio avere una conoscenza approfondita di come il portachiavi di sistema sia simultaneamente protetto e accessibile a qualsiasi amministratore.

  1. In che modo le chiavi sono progettate in modo tale che qualsiasi utente amministrativo possa sbloccare il portachiavi di sistema?

  2. Esistono restrizioni crittografiche che limitano in qualche modo ciò che un utente amministrativo può fare con le informazioni nel portachiavi di sistema?

  3. Dato un backup di sistema non crittografato senza /Users , in che modo avresti accesso ai tasti nel portachiavi di sistema?

Sono interessato a OS X 10.5 Leopard e versioni successive.

    
posta Old Pro 13.06.2012 - 08:54
fonte

4 risposte

11

Il portachiavi del sistema è memorizzato in /Library/Keychains/System.keychain e la chiave per sbloccarlo è memorizzata in /var/db/SystemKey (le sue autorizzazioni file predefinite sono leggibili solo da root). La posizione di questi file è referenziata nello script del sistema di sicurezza-sicurezza (dal security_systemkeychain source ). È anche possibile testare il blocco / sblocco automatico del portachiavi di sistema usando

systemkeychain -vt

Il framework di sicurezza dei portachiavi consente ai programmi non privilegiati di effettuare richieste di informazioni a condizione che siano nell'ACL memorizzato all'interno della voce del portachiavi. Ovviamente se un utente ha root su un sistema, può accedere direttamente sia al file che memorizza il portachiavi del sistema che alla chiave per sbloccarlo, quindi non ha richieste di esecuzione tramite il framework di sicurezza e non è rispettato dagli ACL memorizzati nel portachiavi stesso.

(In realtà non ho risposto alle domande originali, quindi diamo un'altra occhiata)

How are the keys architected such that any administrative user can unlock the System Keychain?

Il framework portachiavi di libsecurity consente ai processi regolari di interagire con il portachiavi del sistema in modo autenticato utilizzando la comunicazione interprocess XPC di Apple framework (IPC).

Il programma A invia una richiesta per accedere alle informazioni sul portachiavi del sistema usando IPC. Viene verificato che l'utente richiedente sia già nel gruppo wheel e conosca anche la password di un utente nel gruppo wheel. Una volta confermata l'autorizzazione, è possibile utilizzare il daemon privilegiato kcproxy per accedere al materiale in /var/db/SystemKey , sbloccare il portachiavi di sistema e restituire le informazioni richieste.

Are there cryptographic restrictions that limit what an administrative user can do with information in the System Keychain in any way?

No: a un utente amministrativo è consentito accedere / modificare qualsiasi cosa nel portachiavi del sistema. Anche se non potessero, potrebbero copiare i file sottostanti su un'altra macchina su cui hanno il controllo completo e semplicemente sbloccarlo / accedervi lì.

Given an unencrypted system backup without /Users, how would you gain access to the keys in the System Keychain?

Se il backup conteneva copie di /Library/Keychains/System.keychain e /var/db/SystemKey allora vorrei copiarli nelle rispettive posizioni su un nuovo sistema OS X e usare systemkeychain per sbloccare il precedente e scaricare il database del portachiavi usando% % co_de.

    
risposta data 01.01.2014 - 09:15
fonte
5

Keychain di sistema

Il portachiavi di sistema ha alcune funzionalità uniche. Questi sono documentati dalla pagina systemkeychachain . Le citazioni della password principale sono probabilmente al centro dell'attenzione. Il codice sorgente specifico del portachiavi del sistema è piccolo e disponibile.

Il portachiavi di sistema, /System/Library/Keychains/System.keychain , è uno speciale portachiavi per Apple e demoni da utilizzare. In generale, dovresti evitare di usarlo per gli script a livello di utente.

Revisione codice: portachiavi

Apple ha pubblicato il codice sorgente per il portachiavi e il framework di sicurezza per Mac OS X 10.5 ; puoi rivedere questo codice per scoprire come funziona.

Approccio alternativo: portachiavi separato

È possibile creare un portachiavi separato per memorizzare le credenziali dello script. Raccomandiamo questa pratica ai nostri clienti. Puoi utilizzare lo strumento da riga di comando sicurezza accedere, estrarre e gestire i tuoi portachiavi senza ricorrere a un'interfaccia grafica.

Considera la possibilità di memorizzare le password per gli script automatici in un portachiavi separato ed escludere questo portachiavi dal back-up esterno.

Apprezzo che la rimozione del portachiavi dal backup non sia l'ideale, ma risolverebbe i tuoi dubbi. Nel ripristinare il Mac, dovresti recuperare il Portachiavi da una fonte diversa; potrebbe essere più affidabile fonte o canale laterale.

È sempre possibile memorizzare la password del portachiavi separato nel portachiavi del sistema. Potresti quindi sbloccare il portachiavi separato da uno script. Se il back-up viene attaccato, esporrai la password solo al Portachiavi separato e non al Portachiavi stesso poiché questo file non è con il back-up off-site.

    
risposta data 18.06.2012 - 20:57
fonte
2

Apple ha recentemente pubblicato un documento che illustra le sue pratiche di sicurezza , potresti trovare alcune risposte lì. Il documento è specifico per iOS ma molte delle funzionalità di sicurezza hanno molto in comune con OS X.

    
risposta data 20.06.2012 - 10:47
fonte
0

Non ho una conoscenza specifica di Keychain * ma questa è una pratica abbastanza standardizzata.

  1. Si desidera proteggere il file di testo semplice "foo". Foo può avere dimensioni arbitrarie.
  2. Crea una chiave simmetrica per crittografare foo.
  3. Cripta la chiave simmetrica con una chiave seminata da una passphrase.

Fatto ciò è possibile cambiare la "password" inserendo la passphrase corrente, decodificando la chiave simmetrica e quindi crittografandola con la nuova passphrase. Questo evita lunghi processi di decifrazione / crittografia nel caso in cui "pippo" sia molto grande.

Quindi come funziona per più utenti che hanno bisogno di accedere al testo in chiaro di foo? Abbastanza facile davvero, basta creare una copia crittografata della chiave simmetrica una volta per ogni utente. In altre parole, fai il terzo passaggio per ogni utente.

In pratica tutto ciò è astratto dalla vista e l'utente finale deve solo gestire la propria password.

Per quanto riguarda la parte 3 delle tue domande, le chiavi degli utenti non sono memorizzate nella loro casa. Molto probabilmente verrebbero memorizzati in /private/var da qualche parte. Quindi anche senza /Users qualcuno che in precedenza aveva accesso sarebbe in grado di sbloccare il sistema.

* È possibile che Keychain funzioni diversamente.

    
risposta data 19.06.2012 - 01:35
fonte

Leggi altre domande sui tag