La criptografía es principalmente manejo de claves.
ISO 27001:2022 A.8.24 (uso de criptografía) trata sobre el uso efectivo de la criptografía para proteger la información, incluido el manejo de claves. En el código, esto se reduce principalmente a tres aspectos: ¿se manejan las claves de forma segura, son los algoritmos robustos y es la configuración adecuada? Las tres decisiones se toman en la pull request, y el fallo que aparece en el código suele ser una clave en el lugar equivocado en lugar de un algoritmo débil.
The shapes the same control failure takes.
A.8.24 se debilita cuando una clave se maneja incorrectamente o un primitivo se degrada. Las formas recurrentes:
Una clave termina en el código
Un secreto o clave privada se codifica o se confirma en lugar de leerse desde un almacén de secretos gestionado, por lo que permanece en el repositorio y en su historial.
Se introduce un primitivo débil
Un cambio utiliza un hash o cifrado roto o débil (por ejemplo, para el hashing de contraseñas o la firma) donde se requiere uno robusto.
Se reduce el mínimo de TLS
Se disminuye la versión mínima del protocolo o el requisito de cifrado, debilitando la criptografía que protege un transporte.
Se desactiva la verificación
Se desactiva la verificación de certificados o firmas, por lo que un canal cifrado o un artefacto firmado ya no es realmente confiable.
Se relaja la rotación o el alcance de la clave
Se extiende la vida útil de una clave indefinidamente, o una clave comienza a reutilizarse en límites que no debería cruzar.
Una clave de firma codificada para solucionar un despliegue.
Una clave de firma de tokens se estaba leyendo desde un almacén de secretos, pero el almacén no estaba configurado en un nuevo entorno y el despliegue falló. La solución rápida fue incluir la clave en línea para que el servicio se iniciara. Lo hizo, y ahora la clave privada está en el repositorio y en su historial.
- const SIGNING_KEY = await secrets.get("jwt-signing-key")+ const SIGNING_KEY = "<the PEM private key, pasted inline>"const token = sign(claims, SIGNING_KEY)Una clave de firma en el código fuente permanece en el repositorio, su historial y cada clon y caché de CI, lo que anula el manejo de claves que A.8.24 espera. Restáurela desde el almacén de secretos y configure el almacén en el nuevo entorno, y rote la clave, ya que una clave que se ha confirmado debe tratarse como expuesta.
El manejo de claves es la parte que se muestre.
Un auditor que revisa A.8.24 se preocupa menos por qué cifrado eligió y más por cómo se generan, almacenan, rotan y retiran las claves. Un secreto encontrado en el código, una clave sin rotación o una verificación desactivada silenciosamente son el tipo de hallazgos que aparecen, y suelen introducirse a través de un cambio que intentaba desbloquear algo. La pull request es donde se toma la decisión clave y el lugar más económico para corregirla.
Una revisión, no una auditoría criptográfica.
heygrc marca los cambios que afectan a A.8.24 y cita el control para que la corrección ocurra en la pull request. No diseña su esquema de manejo de claves ni ejecuta su evaluación. Detecta el momento en que una clave se maneja incorrectamente o un primitivo se debilita, en el diff.