Pregunta:
Mantener secretos de root en Linux
Nakedible
2011-10-02 16:07:35 UTC
view on stackexchange narkive permalink

Estoy buscando formas de fortalecer un sistema Linux para que, incluso al obtener acceso root completo (a través de medios legítimos o no), algunos secretos permanezcan inaccesibles. Pero primero un poco de antecedentes.

Muchos de los diferentes modelos de seguridad de Linux (SELinux, TOMOYO, etc.) se concentran en limitar lo que pueden hacer los procesos por política y asegurarse de que no necesiten acceso root completo. Su objetivo es mantener los exploits contenidos para que otras partes del sistema no puedan verse comprometidas. Sin embargo, parece que estos no abordan directamente el caso en el que ya se ha obtenido la raíz completa, o, incluso más, ocultan secretos al usuario root válido. Parece que normalmente estos pueden ser desactivados por la raíz real en tiempo de ejecución.

Otro enfoque es limitar las formas de obtener una raíz completa sin restricciones, por ejemplo, no permitir todo el acceso a un usuario root conectado de forma remota, pero requiere un inicio de sesión desde la consola física. Sin embargo, este tampoco es mi objetivo: se supone que ya se han superado dichas protecciones y que la raíz es lo más legítima posible.

Es obvio que cualquier persona con acceso físico a la máquina puede obtener todo lo almacenado en el disco duro y posiblemente también todo lo almacenado en la memoria. También es obvio que si el usuario root tiene el poder de modificar binarios o imágenes del kernel, no se pueden hacer promesas de seguridad después del reinicio. Solo me interesan los ataques que se pueden realizar sin reiniciar el sistema.

Además, durante el proceso de inicio, lo más probable es que los secretos se transmitan a través de muchos lugares y se necesitan muchas funciones críticas de seguridad. Por supuesto, es genial si los secretos también se pueden proteger durante el proceso de inicio, pero lo que es suficiente para mí es un paso durante el inicio en el que se pueden eliminar los privilegios elevados y después del cual no hay forma de recuperarlos.

Entonces, con estas limitaciones, ¿cuáles son las formas en Linux para evitar que el usuario root completo acceda a algunos secretos?

  • ¿Puede haber archivos en el sistema de archivos que no sean accesibles incluso para la raíz completa de ninguna manera, pero accesibles para algunos procesos? ¿Algunos procesos actualmente en ejecución, o incluso procesos nuevos iniciados por los procesos que actualmente tienen acceso?

  • ¿Se pueden guardar secretos en la memoria ejecutando procesos de modo que incluso la raíz completa no pueda obtener acceso a ellos por cualquier medio? ¿Se pueden transmitir estos secretos a nuevos procesos por algún medio que la raíz no pueda afectar?

Esta es una pregunta difícil de escribir para obtener respuestas relevantes para mí, así que intentará editar la pregunta para que sea más específica si es necesario.


Las cosas obvias que vienen a la mente y que deben limitarse serían:

  • Desactivar acceso a / proc / mem

  • Deshabilitar el acceso a / proc / <pid> / mem

  • Deshabilitar el acceso a / proc / <pid> / fd / *

  • Desactivar la carga de módulos (solo después de que se hayan cargado algunos módulos, preferiblemente)

  • Desactivar ptrace acceso a cualquier proceso

Solo como ejemplo, aquí hay un parche bastante reciente que agrega una vez más una variante de caída de capacidad: https://lkml.org/lkml/2011/7/19/231
* "Solo me interesan los ataques que se pueden realizar sin reiniciar el sistema." * - Esto parece que abre una peligrosa escotilla de escape para un atacante: simplemente haga que se reinicie el sistema.
Muy cierto, pero en mi caso de uso eso no es realmente relevante. En mi caso de uso, el sistema se ejecuta en Amazon EC2; nada persiste durante los reinicios. Además de eso, los secretos no se entregarán al sistema automáticamente, por lo que los secretos se perderán permanentemente en el reinicio.
Gracias por la explicación. Quizás sería útil hacerse la pregunta: ¿necesita siquiera un usuario root en primer lugar? Por ejemplo, ¿ha considerado configurar su máquina virtual EC2 para que nadie pueda iniciar sesión como root? Eso podría llevar a una solución más simple a su problema particular. Me pregunto si, al permitirnos pensar fuera del alcance de la pregunta particular que ha publicado aquí, podríamos encontrar una mejor solución para usted.
Advertencia de enchufe descarado. Hay productos comerciales que brindan esta funcionalidad fácilmente. Trustifier KSE proporciona esto para Linux, mientras que Raytheon Trusted CS es otro.
* ladrón de máquinas * es incluso más poderoso que * root *
Ocho respuestas:
user2213
2011-10-02 21:24:57 UTC
view on stackexchange narkive permalink

En realidad, es posible restringir el root si uno está preparado para definir tal restricción como confiar fundamentalmente en el sistema operativo . Esto se puede hacer usando SELinux (que yo sepa) y presumiblemente otros sistemas similares. El mejor ejemplo que he visto de SELinux usado de esta manera es Play SELinux Machine de Russell Coker.

Como una breve descripción de cómo funciona, el nombre "root" es no es especial en Unix. El UID 0 es. Se entiende que UID 0 significa "confiar en todo lo que digo". Esto se aplica específicamente al modelo de acceso estándar que se usa en Unices, Unixen o como se utilice en plural "Unix".

LSM, o módulos de seguridad de Linux, le permite conectarse a casi todo y auditar / denegar acciones a medida que consideran necesario. En el caso de SELinux, los permisos de SELinux se verifican después de los permisos de Unix, por lo que su flujo se ve así:

  Evento ---- > ¿Tiene permisos de Unix? --- ¿> tiene permisos de SELinux? --- > Deje que suceda  

La siguiente etapa a entender es que existen, o han existido históricamente, diferentes versiones de la Política de SELinux. Antes de entrar en eso, entienda que en SELinux:

  • los inodos tienen tipos, con el sufijo _t , que también podrían llamarse dominios; y
  • los usuarios tienen roles, con el sufijo _r.

Combinados, controlan qué acción puede hacer un usuario en un rol dado, y qué un proceso en un dominio determinado puede funcionar.

Ahora, hay tres políticas principales de SELinux:

  1. dirigido. Esta es la política predeterminada para escritorios como Fedora. La idea de focalizado es que los servicios críticos del sistema y los demonios se ejecutan en dominios, pero mucho de lo que hace el usuario final se ejecuta en inconfined_u: inconfined_r: inconfined_t . No hay premios por adivinar lo que eso significa: si los permisos de Unix funcionan, SELinux se transfiere efectivamente.
  2. estricto. Esta política implica eliminar inconfined_u por completo. Este no es un proceso fácil, especialmente en el escritorio de Linux (es decir, init 5 ). Específicamente, el modelo de seguridad X11 no es excelente y, a menudo, requiere unsinfined_t para algunas aplicaciones. puede hacer esto, pero esperaría que trabajar con X11 sea más difícil (aunque no imposible), especialmente cuando se ejecutan aplicaciones GUI que requieren root. Hay un proyecto en marcha para brindar soporte para la funcionalidad similar a SELinux en X, llamado XACE (X Access Control Extensions).
  3. MLS. MLS significa para seguridad multinivel y significa el final de la cadena de permiso: user_u: system_r: httpd_content_t.s0-s2: c5-c7 , es decir, esos s y c los números realmente significan algo. Específicamente, forman una configuración de no leer, no escribir de modo que, a menos que el proceso se esté ejecutando a un cierto nivel, la información que pueden ver será limitada. La idea de este nivel de información es proteger los activos clasificados: SELinux fue desarrollado originalmente por la NSA, presumiblemente para este propósito.

Así que esa es su experiencia. Ahora, de acuerdo con las páginas web (consulte las Preguntas frecuentes), la raíz es UID 0 en la máquina de reproducción; sin embargo, root está configurado para ejecutarse como user_r y no como sysadm_r en la política estricta . Esto significa que al usuario no se le permitirá ejecutar funciones administrativas desde el shell.

Lo que sería interesante saber, entonces, es el estado de los otros procesos que requieren root. Es de suponer que dichos procesos se han etiquetado adecuadamente y tienen políticas que les permiten el acceso que requieren. La pregunta entonces es cómo se administra el sistema y si alguno de estos procesos puede lanzar un shell en el contexto de ese usuario. Si eso puede suceder, aún puede administrar un exploit.

Dado que la máquina de juego está actualmente inactiva (al momento de escribir este artículo), estoy trabajando en supuestos aquí; pero esencialmente, necesitaría un proceso que se ejecute en sysadm_r y con UID 0 como su objetivo para un exploit. Asumiendo que tal proceso existe y es explotable, aún podría llegar a la raíz. En cuanto a seguir siendo capaz de administrar a través de root, hay dos opciones en las que puedo pensar:

  • O hay una transición confiable de algún tipo que significa que root luego puede hacer la transición a sysadm_r (menos seguro) o
  • En diferentes niveles de ejecución, se aplica una política diferente, por lo que para administrar la máquina, uno establece el nivel de ejecución en 1 y la política no restringe la raíz. . Supongo que aquí.

Resumen

Si su pregunta es "¿puedo hacer esto ahora de manera fácil y segura?" la respuesta es no. Si su pregunta es "Estoy preparado para aprender acerca de SELinux, ensuciarme con mi distribución y aguantar muchas cosas que no funcionan", la respuesta es que es posible restringir el root mucho más que la instalación promedio. Dicho esto, esto no lo hace invulnerable de ninguna manera a los exploits; no hace que sea imposible para un usuario eludir este control de acceso adicional, ya sea en el software o físicamente.

Entonces sí, puede hacer cosas invisible para la raíz; sin embargo, dejando de lado la carga técnica adicional, se aplican las mismas advertencias que a cualquier configuración de control de acceso en cualquier usuario normal; no hay una fórmula mágica.

Ah, y autopromoción descarada: es posible que le guste mi publicación de blog almacenar secretos en software. Está en el blog de security stackexchange, así que no me siento tan mal por promocionarlo. Esencialmente, como puede ver, existen mecanismos para hacer la vida mucho más difícil para un atacante (y para usted), pero al final, es un caso de "tortugas hasta el fondo", es decir, fundamentalmente imposible de hacer.

Creo que el plural de unix es unix, como oveja o venado.
Hmmh, he estudiado este enfoque un poco, pero parece que el enfoque de la máquina de juego depende también de limitar el poder de root para todas las tareas administrativas mundanas. SELinux en general, sin embargo, parece ser capaz de limitar la mayoría de los vectores de ataque, pero esto necesita más investigación aún. ¡Gracias por la larga respuesta!
Tu respuesta es esencialmente lo que hubiera dicho. Utilice el control de acceso obligatorio (MAC), que proporciona SELinux. AppArmor es otra implementación de MAC que está disponible en SUSE, openSUSE y Ubuntu. TOMYO es una tercera implementación de MAC disponible para Ubuntu y CentOS. Recuerde que todos estos son simplemente mecanismos para hacer cumplir una política de seguridad y sin una política de seguridad bien diseñada, todos no brindarán la protección deseada.
@chown, Creo que es "Unix Systems"
El plural de Unix es Unices y, con menos frecuencia, Unixen.Consulte http://www.dictionary.com/browse/unix y el final de https://en.wikipedia.org/wiki/Unix#Branding
@forest, aunque es cierto, nunca en un millón de años equipararé ver "Unices" o "Unixen" con "Unix".Nunca.Fallo total en la pluralización.
TC Fox
2011-10-03 05:53:07 UTC
view on stackexchange narkive permalink

Tuve que abordar este problema antes, cuando se me acercó un cliente que quería mantener seguros los "mensajes privados" entre los usuarios de un sitio web. Es posible proteger algunos datos en algunas circunstancias, pero esto es razonablemente limitado.

Mi enfoque fue simplemente almacenar una versión encriptada de la nota en el servidor y enviarla (una vez autenticada, por supuesto ), luego descifrelo completamente del lado del cliente. Esto significa que incluso en el caso de un compromiso total de la seguridad del servidor (es decir, acceso de root), las notas permanecen seguras. Sin embargo, las limitaciones de esto:

  • Los datos protegidos solo están seguros hasta el punto de compromiso, y no más tarde. Dependiendo del método utilizado para cifrar la información, un servidor rooteado puede engañar al usuario para que revele las claves de descifrado (inyección de JavaScript, o para clientes GUI nativos, emitiendo una actualización de cliente comprometida) o interceptando las claves de descifrado (si las claves están basadas en del mismo método que la autenticación del usuario, como una contraseña, pueden ser interceptados durante el proceso de autenticación del lado del servidor).
  • La transmisión requiere un secreto directo perfecto, de lo contrario, los datos cifrados podrían ser interceptados, almacenados y luego descifrado después del compromiso como se discutió anteriormente.
  • Esto no protege nada si el cliente también está comprometido. A menos que esté procesando datos encriptados completamente en su propia cabeza (y si puede, se merece un trofeo o algo así), estará dando datos confidenciales a algo , y nada es perfectamente intransigente.
  • No hay forma de utilizar estos datos del lado del servidor (es decir, para fines de indexación) a menos que se almacenen metadatos descifrables / en texto plano al lado, lo que puede revelar información adicional.

Básicamente, esto limita los usos potenciales de este escenario y todavía existen debilidades, pero es posible que funcione en algunas situaciones. El hash de contraseña es un ejemplo (razonablemente) exitoso de 'protección contra el compromiso de root', ya que incluso el acceso físico no revelará las contraseñas de un usuario (excepto, por supuesto, si esa contraseña se transmite después del compromiso).

Hay otros ejemplos en este hilo que vale la pena analizar también, pero piense un poco en el escenario de procesamiento del lado del cliente, usando el servidor simplemente como un servicio de almacenamiento seguro.

TC

¡Gran respuesta! Esto hace que la seguridad del servidor sea irrelevante y, por lo tanto, hace que el nivel de acceso de root sea relativamente inofensivo para la seguridad general del sistema. Creo que este tipo de dirección puede ser más prometedora, en los dominios de aplicación donde es aplicable.
Desafortunadamente, este enfoque no es relevante para mis necesidades. Sin embargo, es una gran idea.
Pensé que probablemente ese podría ser el caso. Aún así, vale la pena mencionarlo, en la remota posibilidad de que surja una idea similar que pueda ayudar. ¡Y parece haber ayudado a otros! :)
Falcon
2011-10-02 20:09:09 UTC
view on stackexchange narkive permalink

¿Puede haber archivos en el sistema de archivos que no sean accesibles incluso para la raíz completa de ninguna manera, pero accesibles para algunos procesos? ¿Algunos procesos actualmente en ejecución, o incluso procesos nuevos iniciados por los procesos que actualmente tienen acceso?

No. Cuando un proceso puede acceder a ellos, también puede root. Si desea hacer tales cosas, tendrá que modificar en gran medida todo el sistema, posiblemente un sistema que arranca un kernel inmutable desde algún dispositivo de solo lectura y que niega a root ciertos accesos a archivos / memoria mientras se los permite a otros usuarios que root pueden ' t suplantar.

¿Se pueden mantener secretos en la memoria ejecutando procesos de modo que incluso la raíz completa no pueda acceder a ellos de ninguna manera? ¿Se pueden transmitir estos secretos a nuevos procesos por algún medio que la raíz no pueda afectar?

No. Consulte la respuesta anterior.

No puede, por definición, restringir el acceso de root. Si limita el acceso de root, entonces ya no es un usuario root.

Si quisiera denegar el acceso de root a los secretos, trataría de ocultarlos. Contenedores criptográficos, tal vez ocultos en la memoria de intercambio o en otro lugar y solo accesibles con una contraseña o algún otro tipo de esteganografía. Es muy difícil encontrar una aguja en un pajar, aunque no imposible.

Incorrecto, el kernel de Linux tiene varias formas de restringir lo que puede hacer el root, y todavía se le llama usuario root. Por ejemplo, si los permisos de archivo no permiten el acceso a un archivo, pero la raíz puede acceder a él, en realidad es la capacidad CAP_DAC_OVERRIDE la que lo permite. Si la raíz no tiene esta capacidad, incluso no tiene ese poder.
@Nakedible: Eso es interesante, no lo sabía. Pero todavía me pregunto si estas capacidades se pueden eliminar universalmente de la cuenta de root para proporcionar un control detallado sobre qué root puede acceder y qué no. ¿Pueden ellos?
Sí, pueden, pero los detalles son un poco confusos. En los núcleos de la serie 2.4, uno podría simplemente repetir un poco en / proc / sys / kernel / cap-bound para deshabilitar, digamos, la carga de módulos en todo el sistema. Hoy en día, las capacidades son solo por proceso, por lo que es un poco más complicado, que es principalmente lo que estoy preguntando aquí. Hay demasiadas variables y muy poca documentación, así que estoy desconcertado sobre cuál es el enfoque correcto.
Un enlace más sobre esto: https://wiki.ubuntu.com/Security/Features
@Nakedible: tengo entendido que las capacidades POSIX no restringen lo que puede hacer el usuario root (uid 0). Más bien, pueden usarse para restringir procesos particulares que se ejecutan con euid 0. Por lo tanto, hasta donde yo sé, no creo que sea del todo exacto decir que las capacidades proporcionan una forma de restringir al usuario root.
Gilles 'SO- stop being evil'
2011-10-03 00:29:27 UTC
view on stackexchange narkive permalink

Hay varias formas indirectas a través de las cuales root puede terminar ejecutando código arbitrario. Puede deshabilitarlos y, de hecho, algunos marcos de seguridad pueden deshabilitarlos, pero paralizan la capacidad de root para realizar tareas de administración.

Por ejemplo, root puede leer y escribir en discos directamente, sin pasar por todo tipo de sistemas de archivos. permisos. Puede eliminar esta capacidad, pero el root no podrá mover un sistema de archivos completo a un nuevo disco en caso de emergencia.

El root puede cargar módulos del kernel y, por lo tanto, puede hacer todo lo que el kernel puede hacer. . Puede eliminar esta capacidad, pero luego excluye la carga de controladores para medios conectables en caliente. (Esto puede ser deseable en el .001% de las instalaciones de Unix, pero no es el caso general).

La raíz puede actualizar los ejecutables que permiten a los usuarios iniciar sesión, como login o sshd . Estos demonios manejan la autenticación de usuarios, por lo que si controlas su código, puedes inyectar una puerta trasera. Puede eliminar esta capacidad, pero la raíz no podrá realizar actualizaciones de seguridad.

La raíz puede crear y eliminar usuarios y cambiar las credenciales de autenticación: si puede editar / etc / passwd para agregar una cuenta, también puede editarla para convertirla temporalmente en una cuenta sin contraseña. Puede eliminar esta capacidad haciendo que algunos archivos sean de solo lectura incluso para root, pero luego terminará con un sistema en el que no podrá crear o eliminar cuentas de usuario sin reiniciar.

Los marcos de seguridad crean de manera efectiva usuarios de root limitado que son root solo en un subconjunto del sistema - root solo en una máquina virtual, no en el sistema "real". Esta raíz limitada pierde la posibilidad de realizar tareas de administración en el sistema real. Creo que la virtualización es lo que busca.

Me doy cuenta de que, en general, este no es un enfoque de seguridad realmente atractivo. Sin embargo, en este caso, no me preocupa necesariamente eludir los permisos del sistema de archivos, o actualizar los ejecutables, entregar el inicio de sesión o algo por el estilo. Me importa la carga del módulo, pero no lo necesito después del inicio del sistema. Espero lograr una raíz que pueda hacer * casi * todo, excepto desenterrar los secretos de alguna parte del sistema. Para eso, la capacidad de usar gdb, por ejemplo, podría perderse, pero depende de los detalles si eso es aceptable.
¿De qué manera la virtualización resuelve el poderoso problema del administrador de manera diferente a la forma en que un sistema operativo resuelve el problema? La máquina virtual aún necesita ejecutarse en una máquina real en algún lugar.
@this.josh Root tiene muchas habilidades y es difícil contenerlas de una manera que no deje una ruta de escape. El enfoque de VM significa darle a alguien acceso de root desenfrenado en una VM (permitiéndole configurar redes, instalar y actualizar programas, configurar sistemas de archivos, etc.). La raíz en la máquina real está reservada para las personas que realizan mantenimiento de hardware (y por lo tanto tienen acceso al hardware de todos modos) y aprovisionamiento de VM (que es difícil de limitar, aunque en principio los TPM podrían vincular un módulo de seguridad de hardware con seguridad en la VM sin pasar por el administrador de host).
cnd
2015-09-07 13:18:25 UTC
view on stackexchange narkive permalink

Esto se logra con relativa facilidad mediante el uso de un sistema selinux de "dos claves": root no tiene permisos para hacer nada, y algún otro usuario sin permisos de root , así que para cambiar cosas, primero necesita para ser el otro usuario no root, entonces "su" a root para realizar el cambio.

Ninguno de los usuarios de forma aislada puede hacer o ver nada.

Estoy usando esto . Funciona realmente bien.

todavía puede acceder a los datos de otros usuarios como root.El hecho de que necesites una contraseña adicional (específica de usuario) para convertirse en root parece irrelevante.
Bradley Kreider
2011-10-02 20:44:48 UTC
view on stackexchange narkive permalink

Como dijo Falcon, el usuario root por definición tiene acceso a todas esas cosas, o ya no es el usuario root.

El kernel controla todo el hardware, así que una vez que eres root tienes el mismo acceso. Realmente necesita virtualización, por lo que su usuario root es solo root para el sistema operativo virtualizado en el que se está ejecutando y algún hipervisor se encuentra fuera de esa root . (no quiere decir que los hipervisores no sean explotables, pero lo que está intentando hacer es equivalente a esto).

Incorrecto, el kernel de Linux tiene varias formas de restringir lo que puede hacer el root, y todavía se le llama usuario root.
@Nakedible,, ¿estás seguro? Tengo entendido que, en su mayor parte, estos pueden usarse para restringir procesos particulares que de otro modo tendrían privilegios de root completos (es decir, procesos particulares que se ejecutan con euid 0), que no es exactamente lo mismo que restringir al usuario root en sí. ¿He entendido mal?
Jauzsika
2011-10-03 00:09:58 UTC
view on stackexchange narkive permalink

¿Has probado Grsecurity? Puede restringir efectivamente a los usuarios root de todas las formas posibles. https://grsecurity.net/

Grsecurity, junto con PaX hace de tu caja una fortaleza inexpugnable ... si lo haces bien

He mirado brevemente grsecurity y parece que al menos hace algo similar. Sin embargo, estaba buscando detalles específicos: alguna forma de lograr lo que quiero y explicaciones sobre cuáles son los límites de la solución de seguridad.
Bueno, GRSecurity es bastante complejo, por lo que no hay una solución de 1 minuto para su problema. Consulte el libro no oficial GRSEC y eche un vistazo: http://en.wikibooks.org/wiki/Grsecurity
Además, preferiría algo que esté incluido en el kernel de Linux de la línea principal; sin embargo, si no hay nada que funcione, estoy dispuesto a probar parches.
Bueno, SELinux está incluido y definitivamente te da una falsa sensación de seguridad. También utiliza algunas de las soluciones de GRSec / PaX. Utilice GRSec / PaX si desea seguridad.
-1 por usar la palabra "inexpugnable" en una discusión sobre seguridad informática. No existe tal cosa y lo sabes.
Shadur, ¿has leído la oración completa? "Fortaleza inexpugnable ... si lo haces bien :)". De todas formas...
Grsecurity es una forma de control de acceso obligatorio (MAC) similar a AppArmor, SELinux y TOMYO. MAC es una solución al poderoso problema del administrador, pero tiene un alto costo en términos de diseño, distribución y actualización de la política de seguridad.
Grsecurity es un sistema basado en RBAC. Si tiene un negocio de cría de perros, realmente no lo necesita :))).
@this.josh Grsecurity _contiene_ un marco MAC, pero es una parte muy pequeña de las protecciones generales proporcionadas por grsecurity.
Jonah Benton
2016-08-26 07:12:41 UTC
view on stackexchange narkive permalink

La necesidad real no está bien definida en la pregunta, pero no se han mencionado dos posibles soluciones a las que se alude:

  • Contenedores
  • HSM

Los contenedores, que por supuesto son solo un enfoque más sensato desde el punto de vista arquitectónico de lo que se estaba haciendo poco a poco con herramientas como cárceles y SELinux, pueden ser de relevancia en el contexto de un replanteamiento de la pregunta, ¿hay una forma en que un sistema lógico similar a Unix puede estar expuesto a atacantes de manera que pueda estar comprometido con la raíz, pero los secretos del sistema físico aún están protegidos. Con los contenedores nos estamos acercando a este objetivo. Vale la pena leer un artículo reciente del grupo de seguridad NCC: https://www.nccgroup.trust/globalassets/our-research/us/whitepapers/2016/june/container_whitepaper.pdf

Los HSM son dispositivos de cifrado de hardware que evitan la recuperación de claves de descifrado a través de métodos físicos o lógicos, por lo que puede ser una respuesta a la pregunta reformulada como: Tengo secretos que tengo que descifrar de forma segura, ¿qué hago con las claves?



Esta pregunta y respuesta fue traducida automáticamente del idioma inglés.El contenido original está disponible en stackexchange, a quien agradecemos la licencia cc by-sa 3.0 bajo la que se distribuye.
Loading...