Esiste un modo per modificare le descrizioni ACL dell'elemento portachiavi?

2

Importo il mio ID digitale (certificato X.509 e chiave privata per la firma, la verifica, la crittografia e la decrittografia dei messaggi) nel portachiavi. Nella GUI vedo il mio certificato e la chiave corrispondente e posso modificare le loro descrizioni e posso scrivere una nota che ne descriva l'utilizzo, ecc.

Tuttavia, quando Mail.app tenta di accedere alla chiave privata mostra una finestra di dialogo che dice "La posta vuole utilizzare le informazioni riservate memorizzate in" privateKey "nel portachiavi.".

Ora ho più ID digitali per indirizzi diversi, in modo che il messaggio non mi dia alcuna idea della chiave a cui tenta di accedere. Ho studiato un po 'e si è scoperto che quando si importa una chiave viene creata anche una lista ACL all'interno del portachiavi. Ogni voce in quell'elenco ACL ha una descrizione facoltativa. Credo che quando non c'è una descrizione definita, la finestra di dialogo menzionata userà la descrizione della chiave, ma se c'è una descrizione ACL verrà invece usata.

Quando eseguo il dump del mio portachiavi con "security dump-keychain -a" ottengo il seguente:

keychain: "/Users/galaxy/Library/Keychains/login.keychain"
class: 0x00000010
attributes:
    0x00000000 <uint32>=0x00000010
    0x00000001 <blob>=0x646[...]00  "[email protected]
[galaxy@home:~/xcode/Security-55471.14.18/libsecurity_pkcs12/lib]$ grep -B5 -A5 '"privateKey"' pkcs12Crypto.cpp
        try {
            CssmClient::KeyAclBearer bearer(
                cspHand, *privKey, Allocator::standard());
            SecPointer<KeychainCore::Access> initialAccess(access ?
                KeychainCore::Access::required(access) :        /* caller-supplied */
                new KeychainCore::Access("privateKey"));        /* default */
            initialAccess->setAccess(bearer, maker);
        }
        catch (const CssmError &e) {
            /* not implemented means we're talking to the CSP which does
             * not implement ACLs */
0" 0x00000002 <blob>=<NULL> [...] 0x0000001A <uint32>=0x00000001 access: 3 entries entry 0: authorizations (1): encrypt don't-require-password description: privateKey applications: <null> entry 1: authorizations (6): decrypt derive export_clear export_wrapped mac sign don't-require-password description: privateKey applications (0): entry 2: authorizations (1): change_acl don't-require-password description: privateKey applications (0):

Prima di tutto, voglio cambiare la descrizione da "privateKey" a "[email protected] (Encryption)" per ACL entry 0. Ho cercato molto, ma finora ho trovato solo riferimenti a OS X API per fare così. C'è uno strumento per farlo? Se non esiste uno strumento di questo tipo, come posso configurarlo al momento dell'importazione? Lo chiedo da quando StartSSL obbliga automaticamente Safari ad importare l'ID digitale, la descrizione ACL è impostata su "www.startssl.com", quindi so che è possibile configurarlo.

Infine, una domanda bonus è che esiste uno strumento o un modo per personalizzare gli ACL? Ad esempio, desidero eliminare export_ * dall'ACL della voce 1 (ho visto anche quello fatto da StartSSL con i loro ID digitali).

AGGIORNAMENTO: Da quando Apple ha rilasciato la sua GUI di accesso Portachiavi come Open Source ho controllato le fonti per l'importazione di PKCS # 12 e lì hanno un'opzione per impostare la descrizione e gli ACL al momento dell'importazione. Tuttavia, non ho mai codificato nulla per OS X ed è difficile capire quale condizione dovrebbe essere soddisfatta per ottenere la descrizione degli ACL e degli ACL stessi al momento dell'importazione. La logica si trova nel pacchetto Security in pkcs12Crypto.cpp:

keychain: "/Users/galaxy/Library/Keychains/login.keychain"
class: 0x00000010
attributes:
    0x00000000 <uint32>=0x00000010
    0x00000001 <blob>=0x646[...]00  "[email protected]
[galaxy@home:~/xcode/Security-55471.14.18/libsecurity_pkcs12/lib]$ grep -B5 -A5 '"privateKey"' pkcs12Crypto.cpp
        try {
            CssmClient::KeyAclBearer bearer(
                cspHand, *privKey, Allocator::standard());
            SecPointer<KeychainCore::Access> initialAccess(access ?
                KeychainCore::Access::required(access) :        /* caller-supplied */
                new KeychainCore::Access("privateKey"));        /* default */
            initialAccess->setAccess(bearer, maker);
        }
        catch (const CssmError &e) {
            /* not implemented means we're talking to the CSP which does
             * not implement ACLs */
0" 0x00000002 <blob>=<NULL> [...] 0x0000001A <uint32>=0x00000001 access: 3 entries entry 0: authorizations (1): encrypt don't-require-password description: privateKey applications: <null> entry 1: authorizations (6): decrypt derive export_clear export_wrapped mac sign don't-require-password description: privateKey applications (0): entry 2: authorizations (1): change_acl don't-require-password description: privateKey applications (0):

Sfortunatamente in tutti i miei tentativi di importazione sto ancora colpendo quella descrizione "privateKey" codificata e quando ho, diciamo, 5 diversi ID digitali, tutti richiedono l'accesso con "privateKey" nella finestra di dialogo ed è confuso.

    
posta galaxy 03.10.2014 - 13:59
fonte

2 risposte

2

Dopo una ricerca piuttosto noiosa sembra che non ci sia un modo semplice per modificare la descrizione della chiave privata, quindi fondamentalmente a meno che Apple non migliori la loro applicazione Keychain Access non c'è modo di distinguere tra più ID digitali importati nella stessa catena di chiavi .

Sembra anche che Google Chrome (e Chromium) abbiano implementato alcune routine di gestione delle chiavi e stiano gestendo le descrizioni delle chiavi private importate. Tuttavia, non ho ancora capito come sfruttare al meglio questa funzionalità.

Ad ogni modo, la risposta breve alla mia domanda: non c'è modo di modificare l'ACL dell'articolo e / o le loro descrizioni nel portachiavi di OS X al momento e sembra che a nessuno importi veramente.

    
risposta data 13.10.2014 - 15:09
fonte
0

Per caso mi sono imbattuto in una correzione (di sorta) per il problema di "privateKey" visualizzato nelle finestre di dialogo della posta e confondere un ...

way to distinguish between multiple digital IDs imported into the same key chain.

Questa non è una soluzione così elegante e non capisco perché funziona, ma dopo molti test, in più client di posta, sotto OS X 10.10.3 e 10.10.4, I ho scoperto che fa funziona, è facile e funziona sempre. In poche parole, basterà semplicemente trascinare gli ID digitali su un nuovo portachiavi e quindi girarli e trascinarli indietro.

I dettagli utili e le lezioni apprese sono le seguenti:

  • Applicabile agli ID digitali nel portachiavi di accesso. Altri portachiavi non testati.
  • Utilizzo di un portachiavi di sistema esistente in quanto l'intermediario non ha funzionato.
  • I nuovi portachiavi richiedono una password di almeno sei caratteri ma di qualsiasi forza.
  • Fai attenzione alle password per i nuovi portachiavi non salvati su nessun altro portachiavi!
  • Le impostazioni predefinite Blocca per i nuovi portachiavi sono fastidiose 5 minuti e Sospendi .
  • Durante il trascinamento (o incolla) dell'ID, il controllo dell'accesso chiave privata faults a consenti a tutte le applicazioni di accedere a questo elemento . Accedi manualmente e modificalo nuovamente in Conferma prima di consentire l'accesso .
  • Basta lasciare gli ID nel nuovo portachiavi e usarli potrebbe non essere pratico poiché i nuovi portachiavi non si sbloccano al login.
  • On cancella il nuovo portachiavi per selezionare l'opzione non predefinita Elimina riferimenti e amp; I file .
  • Le modifiche successive del nome della chiave privata richiedono un'altra "correzione" per effettuare le modifiche.
risposta data 13.07.2015 - 06:17
fonte

Leggi altre domande sui tag