Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
git-crypt — Cifrado transparente de archivos en git | Kitploit
Herramientas/GitHubGitHub/agwa/git-crypt
Autenticación y AutorizaciónHerramientas de Cifrado/DescifradoExfiltración de DatosCriptografíaDetección de SecretosSeguridad de Cadena de Suministro
GitHubagwa/git-crypt

git-crypt

Cifrado transparente de archivos en git

Ver Repositorio
9.8k53841hace 8 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
Sitio web

git-crypt - cifrado transparente de archivos en git

git-crypt permite el cifrado y descifrado transparente de archivos en un repositorio git. Los archivos que elijas proteger se cifran al hacer commit, y se descifran al hacer checkout. git-crypt te permite compartir libremente un repositorio que contenga una mezcla de contenido público y privado. git-crypt degrada de forma elegante, por lo que los desarrolladores sin la clave secreta aún pueden clonar y hacer commit a un repositorio con archivos cifrados. Esto te permite almacenar tu material secreto (como claves o contraseñas) en el mismo repositorio que tu código, sin necesidad de bloquear todo tu repositorio.

git-crypt fue escrito por Andrew Ayer ([email protected]). Para más información, consulta https://www.agwa.name/projects/git-crypt.

Compilar git-crypt

Consulta el archivo INSTALL.md.

Usando git-crypt

Configura un repositorio para usar git-crypt:

cd repo
git-crypt init

Especifica los archivos a cifrar creando un archivo .gitattributes:

secretfile filter=git-crypt diff=git-crypt
*.key filter=git-crypt diff=git-crypt
secretdir/** filter=git-crypt diff=git-crypt

Al igual que un archivo .gitignore, puede coincidir con comodines y debe ser registrado en el repositorio. Consulta más abajo para más información sobre .gitattributes. Asegúrate de no cifrar accidentalmente el propio archivo .gitattributes (u otros archivos de git como .gitignore o .gitmodules). Asegúrate de que tus reglas .gitattributes estén configuradas antes de agregar archivos sensibles, ¡o esos archivos no se cifrarán!

Comparte el repositorio con otros (o contigo mismo) usando GPG:

git-crypt add-gpg-user USER_ID

USER_ID puede ser un ID de clave, una huella digital completa, una dirección de correo electrónico o cualquier otra cosa que identifique de manera única una clave pública para GPG (consulta "CÓMO ESPECIFICAR UN USER ID" en la página man de gpg). Nota: git-crypt add-gpg-user agregará y hará commit de un archivo de clave cifrado con GPG en el directorio .git-crypt de la raíz de tu repositorio.

Alternativamente, puedes exportar una clave secreta simétrica, que debes transmitir de forma segura a los colaboradores (no se requiere GPG y no se agregan archivos a tu repositorio):

git-crypt export-key /path/to/key

Después de clonar un repositorio con archivos cifrados, desbloquéalo con GPG:

git-crypt unlock

O con una clave simétrica:

git-crypt unlock /path/to/key

Eso es todo lo que necesitas hacer: una vez que git-crypt esté configurado (ya sea con git-crypt init o git-crypt unlock), puedes usar git con normalidad: el cifrado y descifrado ocurren de forma transparente.

Estado Actual

La última versión de git-crypt es 0.8.0, publicada el 2025-09-23. git-crypt aspira a ser libre de errores y confiable, lo que significa que no debería fallar, funcionar mal o exponer tus datos confidenciales. Sin embargo, aún no ha alcanzado la madurez, lo que significa que no está tan documentado, completo o fácil de usar como debería. Además, pueden introducirse cambios incompatibles con versiones anteriores antes de la versión 1.0.

Seguridad

git-crypt es más seguro que otros sistemas de cifrado transparente de git. git-crypt cifra archivos usando AES-256 en modo CTR con un IV sintético derivado del HMAC SHA-1 del archivo. Este modo de operación es demostrablemente seguro semánticamente bajo un ataque de texto plano elegido determinista. Esto significa que aunque el cifrado es determinista (lo cual es necesario para que git pueda distinguir cuándo un archivo ha cambiado o no), no filtra más información que si dos archivos son idénticos o no. Otras propuestas para el cifrado transparente de git usan ECB o CBC con un IV fijo. Estos sistemas no son seguros semánticamente y filtran información.

Limitaciones

git-crypt depende de los filtros de git, que no fueron diseñados pensando en el cifrado. Por lo tanto, git-crypt no es la mejor herramienta para cifrar la mayoría o todos los archivos en un repositorio. Donde realmente brilla git-crypt es cuando la mayor parte de tu repositorio es pública, pero tienes algunos archivos (quizás claves privadas llamadas *.key, o un archivo con credenciales de API) que necesitas cifrar. Para cifrar un repositorio completo, considera usar un sistema como git-remote-gcrypt en su lugar. (Nota: no se respalda la seguridad de git-remote-gcrypt).

git-crypt no cifra nombres de archivos, mensajes de commit, destinos de enlaces simbólicos, gitlinks ni otros metadatos.

git-crypt no oculta cuándo un archivo cambia o no, la longitud de un archivo, o el hecho de que dos archivos sean idénticos (consulta la sección "Seguridad" más arriba).

git-crypt no admite la revocación del acceso a un repositorio cifrado que se haya concedido previamente. Esto aplica tanto al modo multiusuario con GPG (no hay un comando del-gpg-user que complemente a add-gpg-user) como al modo de clave simétrica (no hay soporte para rotar la clave). Esto se debe a que es un problema inherentemente complejo en el contexto de datos históricos. Por ejemplo, incluso si una clave se rotó en algún punto de la historia, un usuario que tenga la clave anterior aún puede acceder al historial anterior del repositorio. Este problema se discute con más detalle en https://github.com/AGWA/git-crypt/issues/47.

Los archivos cifrados con git-crypt no son comprimibles. Incluso el cambio más pequeño en un archivo cifrado requiere que git almacene el archivo completo modificado, en lugar de solo un delta.

Aunque git-crypt protege el contenido de archivos individuales con un HMAC SHA-1, git-crypt no se puede usar de forma segura a menos que todo el repositorio esté protegido contra manipulaciones (un atacante que pueda modificar tu repositorio puede alterar tu archivo .gitattributes para deshabilitar el cifrado). Si es necesario, usa características de git como etiquetas firmadas en lugar de confiar únicamente en git-crypt para la integridad.

Los archivos cifrados con git-crypt no se pueden parchear con git-apply, a menos que el parche en sí esté cifrado. Para generar un parche cifrado, usa git diff --no-textconv --binary. Alternativamente, puedes aplicar un parche en texto plano fuera de git usando el comando patch.

git-crypt no funciona de manera confiable con algunas GUIs de git de terceros, como Atlassian SourceTree y GitHub para Mac. Los archivos podrían quedar en un estado no cifrado.

Archivo Gitattributes

El archivo .gitattributes está documentado en la página man gitattributes(5). El formato de patrón de archivo es el mismo que el utilizado por .gitignore, como se documenta en la página man gitignore(5), con la excepción de que especificar solo un directorio (por ejemplo, /dir/) no es suficiente para cifrar todos los archivos debajo de él.

También ten en cuenta que el patrón dir/* no coincide con archivos en subdirectorios de dir/. Para cifrar un subárbol completo dir/, usa dir/**:

dir/** filter=git-crypt diff=git-crypt

El archivo .gitattributes no debe estar cifrado, así que asegúrate de que los comodines no coincidan accidentalmente con él. Si es necesario, puedes excluir .gitattributes del cifrado de esta manera:

.gitattributes !filter !diff
Descargar herramienta