¿Cómo se asegura el llavero del sistema en OS X?

22

Estoy buscando algo, ya sea como este documento de seguridad para iOS , excepto el sistema operativo X o incluso mejor, algún tipo de informe de auditoría de seguridad de un experto independiente. Después de leer la documentación como Guía de programación de servicios de llavero Estoy aún más confundido acerca de lo que es vulnerable a un ataque adverso en una copia de seguridad sin cifrar de un sistema OS X.

La última vez que lo verifiqué, el llavero de inicio de sesión del usuario en OS X era tan seguro como la contraseña. Recuerdo un problema que redujo el secreto real de la clave a algo así como 111 bits (memoria de niebla, no dude en corregirme) debido a algún problema con la forma en que la contraseña se convierte en una clave, pero eso fue hace mucho tiempo. Esperemos que eso haya sido arreglado.

Por otra parte, me han dicho que el llavero System es intrínsecamente menos seguro porque cualquier administrador puede acceder a él y un intruso tiene muchas opciones para convertirse en administrador. además de adivinar la contraseña de un solo usuario.

En particular, me preocupa el almacenamiento de las contraseñas utilizadas en los scripts automatizados en el Sistema de llavero, ya que se realiza una copia de seguridad de los archivos del sistema y se almacenan fuera del sitio sin más cifrado. Los documentos y otros datos de los usuarios se encriptan antes de ser retirados del sitio, pero tengo una sospecha persistente de que hay un camino que estoy pasando por alto y que recupera esas claves una vez que el Sistema de Llavero está comprometido (debido a nuestros procedimientos, no necesariamente a fallas criptográficas) . Por lo tanto, quiero tener un conocimiento profundo de cómo el Sistema de llavero está protegido de manera simultánea y al mismo tiempo accesible para cualquier administrador.

  1. ¿Cómo se diseñan las claves de modo que cualquier usuario administrativo pueda desbloquear el llavero del sistema?

  2. ¿Existen restricciones criptográficas que limiten lo que un usuario administrativo puede hacer con la información en el Llavero del sistema de alguna manera?

  3. Dada una copia de seguridad del sistema sin cifrar sin /Users , ¿cómo obtendría acceso a las claves en el llavero del sistema?

Estoy interesado en OS X 10.5 Leopard y versiones posteriores.

    
pregunta Old Pro 13.06.2012 - 08:54

4 respuestas

11

El llavero del sistema se almacena en /Library/Keychains/System.keychain y la clave para desbloquearlo se almacena en /var/db/SystemKey (sus permisos de archivo predeterminados son legibles solo por la raíz). La ubicación de estos archivos se encuentra en script del sistema de verificación de seguridad (del security_systemkeychain source ). Incluso es posible probar el bloqueo / desbloqueo automático del llavero del sistema utilizando

systemkeychain -vt

El marco de seguridad de llavero permite que los programas sin privilegios realicen solicitudes de información siempre que estén en la ACL almacenada en la entrada del llavero. Obviamente, si un usuario tiene una raíz en un sistema, puede acceder directamente tanto al archivo que almacena el llavero del sistema como a la clave para desbloquearlo, por lo que no tienen que realizar solicitudes a través del marco de seguridad y no están sujetos a las ACL almacenadas en el llavero En sí.

(No contesté realmente las preguntas originales, así que vamos a intentarlo de nuevo)

  

¿Cómo se diseñan las claves para que cualquier usuario administrativo pueda desbloquear el llavero del sistema?

El framework de llavero libsecurity permite que los procesos regulares interactúen con el llavero del sistema de forma autenticada mediante la comunicación entre procesos XPC de Apple. marco (IPC).

El programa A envía una solicitud para acceder a la información del llavero del sistema utilizando IPC. Se verifica que el usuario solicitante ya esté en el grupo de ruedas y también conozca la contraseña de un usuario en el grupo de ruedas. Una vez que se confirma la autorización, el daemon privilegiado kcproxy se puede usar para acceder al material en /var/db/SystemKey , desbloquear el llavero del sistema y devolver la información solicitada.

  

¿Existen restricciones criptográficas que limiten lo que un usuario administrativo puede hacer con la información en el Llavero del sistema de alguna manera?

No: un usuario administrativo tiene permiso para acceder / cambiar cualquier cosa en el llavero del sistema. Incluso si no pudieran, podrían copiar los archivos subyacentes a otra máquina en la que tienen control total y simplemente desbloquearlos / acceder a ellos allí.

  

Dada una copia de seguridad del sistema sin cifrar sin / Usuarios, ¿cómo obtendría acceso a las claves en el Llavero del sistema?

Si la copia de seguridad contenía copias de /Library/Keychains/System.keychain y /var/db/SystemKey , las copiaría en sus respectivas ubicaciones en un nuevo sistema OS X y usaría systemkeychain para hacer el último desbloqueo de la anterior y volcar la base de datos de llaveros usando security dump-keychain .

    
respondido por el Anon 01.01.2014 - 09:15
5

Llavero del sistema

El llavero del sistema tiene algunas capacidades únicas. Estos están documentados en la página systemkeychain . Las menciones de la contraseña maestra probablemente serán su enfoque. El código fuente específico del llavero del sistema es pequeño y está disponible.

El Sistema de Llavero, /System/Library/Keychains/System.keychain , es un Llavero especial para que lo usen Apple y los demonios. En general, debería evitar usarlo para los scripts de nivel de usuario.

Revisión de código: llavero

Apple publicó el código fuente para el Llavero y el marco de seguridad para Mac OS X 10.5 ; Puedes revisar este código para descubrir cómo funciona.

Enfoque alternativo: llavero separado

Puede crear un llavero separado para almacenar las credenciales de su script. Recomendamos esta práctica a nuestros clientes. Puede utilizar la herramienta de línea de comandos seguridad para acceder, extraer y administrar sus llaveros sin tener que recurrir a una interfaz gráfica.

Considere almacenar las contraseñas de sus scripts automatizados en un llavero separado, y excluya este llavero de su copia de seguridad fuera del sitio.

Aprecio que quitar el llavero de su copia de seguridad no sea lo ideal, pero trataría sus inquietudes. Al restaurar la Mac, necesitaría recuperar el Llavero de una fuente diferente; Puede ser una fuente más confiable o un canal lateral.

Siempre puede almacenar la contraseña del llavero por separado en el llavero del sistema. A continuación, puede desbloquear el llavero separado de un script. Si se ataca la copia de seguridad, solo se debe exponer la contraseña a un llavero separado y no al llavero en sí mismo, ya que este archivo no se encuentra con la copia de seguridad fuera del sitio.

    
respondido por el Graham Miln 18.06.2012 - 20:57
2

Apple publicó recientemente un documento que describe sus prácticas de seguridad , puede encontrar algunas respuestas allí. El documento es específico de iOS, pero muchas de las características de seguridad tienen mucho en común con OS X.

    
respondido por el demianturner 20.06.2012 - 10:47
0

No tengo conocimientos específicos de Keychain * pero esta es una práctica bastante estandarizada.

  1. Desea proteger el archivo de texto plano "foo". Foo puede ser de tamaño arbitrario.
  2. Crea una clave simétrica para cifrar foo.
  3. Cifre la clave simétrica con una clave derivada de una frase de contraseña.

Una vez hecho esto, puede cambiar la "contraseña" ingresando la frase de contraseña actual, descifrando la clave simétrica y luego encriptándola con la nueva frase de contraseña. Esto evita largos procesos de descifrado / cifrado en el caso de que "foo" sea muy grande.

Entonces, ¿cómo funciona esto para múltiples usuarios que necesitan acceder al texto plano de foo? Bastante fácil, simplemente creas una copia encriptada de la clave simétrica una vez para cada usuario. En otras palabras, realice el paso tres para cada usuario.

En la práctica, todo esto se extrae de la vista y el usuario final solo necesita tratar con su propia contraseña.

Con respecto a la parte 3 de sus preguntas, las claves de los usuarios no se almacenan en su casa. Lo más probable es que se almacenen en /private/var en algún lugar. Así que incluso sin /Users alguien que anteriormente tenía acceso podría desbloquear el sistema.

* Es posible que Keychain funcione de manera diferente.

    
respondido por el bahamat 19.06.2012 - 01:35

Lea otras preguntas en las etiquetas