Sobre el proyecto

git-crypt es una herramienta de línea de comandos que permite el cifrado y descifrado transparente de archivos dentro de un repositorio git. Los archivos designados para protección se cifran automáticamente al hacer commit y se descifran al hacer checkout, permitiendo a los equipos compartir repositorios que contienen una mezcla de contenido público y privado sin bloquear todo el repositorio. Las características clave incluyen: - Cifrado y descifrado transparente mediante filtros de git, de modo que los usuarios pueden trabajar con git normalmente después de la configuración inicial. - AES-256 en modo CTR con un IV sintético derivado del HMAC SHA-1 del archivo, proporcionando seguridad semántica bajo ataque de texto plano elegido determinista. - Intercambio de claves basado en GPG para colaboración multiusuario, donde las claves públicas se añaden mediante git-crypt add-gpg-user. - Exportación de clave simétrica para distribución segura de claves sin requerir GPG. - Degradación elegante, de modo que los desarrolladores sin la clave secreta aún pueden clonar y hacer commit en el repositorio. La configuración se realiza mediante un archivo .gitattributes que especifica qué archivos o patrones deben cifrarse. El formato de patrones es similar al de .gitignore, compatible con comodines y patrones de directorio. El archivo .gitattributes en sí no debe cifrarse, y las reglas deben establecerse antes de añadir archivos sensibles. Consideraciones de seguridad: git-crypt es más seguro que otros sistemas de cifrado transparente de git que usan ECB o CBC con un IV fijo. Sin embargo, no cifra nombres de archivo, mensajes de commit, destinos de enlaces simbólicos ni otros metadatos. No oculta cuándo cambia un archivo, la longitud de un archivo ni el hecho de que dos archivos sean idénticos. Tampoco admite revocar el acceso a un repositorio cifrado que se haya concedido previamente, ya que esto es inherentemente complejo en el contexto de datos históricos. Las limitaciones incluyen: no es adecuado para cifrar la mayoría o todos los archivos de un repositorio (es mejor para el cifrado selectivo de unos pocos archivos sensibles como claves privadas o credenciales de API), los archivos cifrados no son comprimibles, por lo que incluso cambios pequeños requieren almacenar el archivo completo, y puede no funcionar de manera fiable con algunos GUI de git de terceros como Atlassian SourceTree y GitHub para Mac. Los archivos cifrados con git-crypt no pueden parchearse con git-apply a menos que el parche en sí esté cifrado. La última versión es la 0.8.0, publicada el 2025-09-23. El proyecto tiene como objetivo estar libre de errores y ser fiable, pero aún no ha alcanzado la madurez total, y pueden introducirse cambios incompatibles con versiones anteriores antes de la versión 1.0.