In che modo il portachiavi identifica gli eseguibili?

1

Mi chiedo come il portachiavi identifica le applicazioni. Sospetto che ciò sia basato sulla firma del codice, ma gli esperimenti non sono coerenti con questo:

Funziona per i file eseguibili che non sono affatto firmati:

codesign -dv  /Library/Frameworks/R.framework/Resources/bin/exec/R
# /Library/Frameworks/R.framework/Resources/bin/exec/R: code object is not signed at all

Ma il processo R viene aggiunto all'ACL di questo segreto e può interrogarlo felicemente ...

Non c'è anche nulla negli attributi estesi dell'eseguibile:

xattr -l  /usr/bin/security
# 

Se cambio il file stesso, funziona ancora:

cp /usr/bin/security foobar
echo "\nharmless" >> foobar
./foobar find-generic-password -a 'gaborcsardi' -s foobar -g
# keychain: "/Users/gaborcsardi/Library/Keychains/login.keychain"
# class: "genp"
# attributes:
#     0x00000007 <blob>="foobar"
#     0x00000008 <blob>=<NULL>
#     "acct"<blob>="gaborcsardi"
# ...
# password: "secret"

Ma come funziona? Più in particolare, in che modo il portachiavi sa che la richiesta della password proviene dall'app security , che ho specificamente autorizzato l'accesso a questa voce?

    
posta Gabor Csardi 20.01.2017 - 13:04
fonte

1 risposta

1

Il portachiavi non identifica le applicazioni, le applicazioni chiamano il Keychain API

The Keychain Services API provides a solution to this problem. By making a single call to this API, an app can store small bits of secret information on a keychain, from which the app can later retrieve the information—also with a single call. The keychain secures data by encrypting it before storing it in the file system, relieving you of the need to implement complicated encryption algorithms. The system also carefully controls access to stored items. The entire keychain can be locked, meaning no one can decrypt its protected contents until it is unlocked with a master password. Even with an unlocked keychain, the system’s Keychain Access policy ensures that only authorized apps gain access to a given item in the keychain. In the simplest case, the app that created an item is the only one that can access it later. However, Keychain Services also provides ways to share secrets among apps.

    
risposta data 20.01.2017 - 13:41
fonte

Leggi altre domande sui tag