Sobre o projeto

git-crypt é uma ferramenta de linha de comando que permite criptografia e descriptografia transparente de arquivos dentro de um repositório git. Arquivos designados para proteção são automaticamente criptografados no commit e descriptografados no checkout, permitindo que equipes compartilhem repositórios contendo uma mistura de conteúdo público e privado sem bloquear todo o repositório. Principais recursos incluem: - Criptografia e descriptografia transparentes via filtros do git, permitindo que usuários trabalhem normalmente com git após a configuração inicial - AES-256 em modo CTR com um IV sintético derivado do HMAC SHA-1 do arquivo, fornecendo segurança semântica sob ataque de texto plano escolhido determinístico - Compartilhamento de chaves baseado em GPG para colaboração multiusuário, onde chaves públicas são adicionadas via git-crypt add-gpg-user - Exportação de chave simétrica para distribuição segura de chaves sem exigir GPG - Degradação graciosa, para que desenvolvedores sem a chave secreta ainda possam clonar e fazer commit no repositório A configuração é feita através de um arquivo .gitattributes que especifica quais arquivos ou padrões devem ser criptografados. O formato de padrão é semelhante ao .gitignore, suportando curingas e padrões de diretório. O próprio arquivo .gitattributes não deve ser criptografado, e as regras devem estar em vigor antes de adicionar arquivos sensíveis. Considerações de segurança: git-crypt é mais seguro do que outros sistemas transparentes de criptografia git que usam ECB ou CBC com um IV fixo. No entanto, ele não criptografa nomes de arquivos, mensagens de commit, alvos de symlink ou outros metadados. Ele não esconde quando um arquivo muda, o comprimento de um arquivo ou o fato de que dois arquivos são idênticos. Também não suporta revogar o acesso a um repositório criptografado que foi previamente concedido, pois isso é inerentemente complexo no contexto de dados históricos. As limitações incluem: não é adequado para criptografar a maioria ou todos os arquivos em um repositório (mais adequado para criptografia seletiva de alguns arquivos sensíveis, como chaves privadas ou credenciais de API), arquivos criptografados não são compressíveis, portanto, mesmo pequenas alterações exigem armazenar o arquivo inteiro, e pode não funcionar de forma confiável com alguns GUIs de git de terceiros, como Atlassian SourceTree e GitHub for Mac. Arquivos criptografados com git-crypt não podem ser corrigidos com git-apply, a menos que o próprio patch seja criptografado. A versão mais recente é 0.8.0, lançada em 23/09/2025. O projeto visa ser livre de bugs e confiável, mas ainda não atingiu total maturidade, e mudanças incompatíveis com versões anteriores podem ser introduzidas antes da versão 1.0.