¿Cómo identifica Keychain los ejecutables?

1

Me pregunto cómo el llavero identifica las aplicaciones. Sospecho que esto se basa en la firma del código, pero los experimentos no son realmente consistentes con esto:

Funciona para ejecutables que no están firmados en absoluto:

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

Pero el proceso R se agrega a la ACL de este secreto, y puede consultarlo alegremente ...

Tampoco hay nada en los atributos extendidos del ejecutable:

xattr -l  /usr/bin/security
# 

Si cambio el archivo en sí, aún funciona:

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"

Pero entonces, ¿cómo funciona? Más específicamente, ¿cómo sabe el llavero que la consulta de contraseña proviene de la aplicación security , que específicamente permití el acceso a esta entrada?

    
pregunta Gabor Csardi 20.01.2017 - 13:04

1 respuesta

1

El llavero no identifica las aplicaciones, las aplicaciones llaman el Keychain API

  

La API de servicios de llavero proporciona una solución a este problema. Por   Al hacer una sola llamada a esta API, una aplicación puede almacenar pequeños fragmentos de   información secreta en un llavero, desde el cual la aplicación puede más tarde   recuperar la información, también con una sola llamada. El llavero asegura   cifrando los datos antes de almacenarlos en el sistema de archivos, aliviando   Usted tiene la necesidad de implementar algoritmos de cifrado complicados. los   El sistema también controla cuidadosamente el acceso a los elementos almacenados. La totalidad   el llavero se puede bloquear, lo que significa que nadie puede descifrar su protección   contenidos hasta que se desbloquee con una contraseña maestra. Incluso con un   llavero desbloqueado, la política de acceso al llavero del sistema garantiza que   solo las aplicaciones autorizadas obtienen acceso a un elemento determinado en el llavero. En   el caso más simple, la aplicación que creó un elemento es la única que   Puede acceder a ella más tarde. Sin embargo, Keychain Services también proporciona formas de   compartir secretos entre aplicaciones.

    
respondido por el Allan 20.01.2017 - 13:41

Lea otras preguntas en las etiquetas