security - sendinblue - ¿Cómo funcionan las llaves API y las llaves secretas?
llaves rfid (2)
Estoy empezando a pensar en cómo funcionan las teclas api y las claves secretas. Hace solo 2 días me inscribí en Amazon S3 e instalé el complemento S3Fox . Me pidieron tanto mi clave de acceso como la clave de acceso secreta, las cuales me requieren iniciar sesión para acceder.
Entonces me pregunto, si me están pidiendo mi clave secreta, deben estar almacenándola en algún lugar ¿verdad? ¿No es básicamente lo mismo que pedirme los números de mi tarjeta de crédito o contraseña y almacenarlos en su propia base de datos?
¿Cómo se supone que funcionan las claves secretas y las claves api? ¿Qué tan secreto necesitan ser? ¿Estas aplicaciones que usan las claves secretas lo almacenan de alguna manera?
Gracias por la visión.
Básicamente elaborando sobre lo que se describe here .
Así es como funciona: digamos que tenemos una función que toma un número de cero a nueve, agrega tres y, si el resultado es mayor que diez, resta diez. Entonces f (2) = 5, f (8) = 1, etc. Ahora, podemos hacer otra función, llamarla f '', que va hacia atrás, agregando siete en lugar de tres. f ''(5) = 2, f'' (1) = 8, etc.
Ese es un ejemplo de una función de dos vías y su inversa. Teóricamente, cualquier función matemática que mapee una cosa a otra puede revertirse. En la práctica, sin embargo, puede hacer una función que codifique su entrada tan bien que sea increíblemente difícil de revertir.
Tomar una entrada y aplicar una función de un solo sentido se denomina "hash" a la entrada, y lo que Amazon almacena en su sistema es un "hash" de su clave secreta. SHA1 es un ejemplo de este tipo de función "unidireccional", también está reforzada contra ataques.
La función HMAC se basa en funciones hash establecidas para usar una clave conocida para autenticar una cadena de texto. Funciona así:
- Toma el texto de su solicitud y su clave secreta y aplica la función HMAC.
- Agregue ese encabezado de autenticación a su solicitud y envíela a Amazon.
- Amazon busca su copia de la clave secreta y el texto que acaba de enviar y aplica la función HMAC.
- Si el resultado coincide, saben que tienes la misma clave secreta.
La diferencia entre esto y PKI es que este método es RESTful , lo que permite un número mínimo de intercambios entre su sistema y los servidores de Amazon.
¿No es básicamente lo mismo que pedirme los números de mi tarjeta de crédito o contraseña y almacenarlos en su propia base de datos?
Sí, aunque el daño que alguien puede hacer con S3 parece estar limitado a agotar su cuenta.
¿Qué tan secreto necesitan ser? ¿Estas aplicaciones que usan las claves secretas lo almacenan de alguna manera?
En algún momento, tendrá que cargar la clave secreta, y con la mayoría de los sistemas basados en Unix, si un atacante puede obtener acceso a la raíz, puede obtener la clave. Si cifra la clave, debe tener un código para descifrarla y, en algún momento, el código de descifrado debe ser texto sin formato para poder ejecutarlo. Este es el mismo problema que tiene DRM, excepto que usted es el propietario de la computadora.
En muchos casos, simplemente coloco claves secretas en un archivo con permisos limitados y tomo las precauciones usuales para evitar que mi sistema sea rooteado. Hay algunos trucos para que funcione correctamente con un sistema multiusuario, como evitar archivos temporales y cosas por el estilo.
La criptografía de clave pública se utiliza para defenderse contra ataques muy específicos, algunos de los cuales son comunes. En resumen, se trata de una matemática compleja que permite verificar que el individuo tenga el par de Claves Pública y Privada al mismo tiempo que solo conoce la clave pública. Esto es muy diferente de una tarjeta de crédito o contraseña estática. Como ejemplo, si se está autenticando con un servidor OpenSSH, el servidor no necesita la clave privada .
Idealmente, si la base de datos API de Amazon se viera comprometida, el atacante tendría una lista de claves públicas y no podría acceder a la API del usuario utilizando esta información. Sin embargo, los sistemas ideales no siempre se ponen en práctica y no estoy seguro si Amazon protege contra este vector de ataque, pero deberían estarlo.
En la autenticación de clave pública es estadísticamente inmune a la fuerza bruta. Las contraseñas son a menudo palabras del diccionario que se pueden romper la relatividad rápidamente. Sin embargo, una clave privada es un número masivo que no es fácil de adivinar. Si el atacante tenía la clave pública, podían realizar muchas suposiciones "fuera de línea" en una supercomputadora, pero incluso así tomaría mucho tiempo y dinero romper la llave.