Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
git-crypt — Criptografia transparente de arquivos no git | Kitploit
Ferramentas/GitHubGitHub/agwa/git-crypt
Autenticação e AutorizaçãoFerramentas de Criptografia/DescriptografiaExfiltração de DadosCriptografiaDetecção de SegredosSegurança da Cadeia de Suprimentos
GitHubagwa/git-crypt

git-crypt

Criptografia transparente de arquivos no git

Ver Repositório
9.8k53841há 8 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
Site

git-crypt - criptografia transparente de arquivos no git

git-crypt permite a criptografia e descriptografia transparente de arquivos em um repositório git. Arquivos que você escolhe proteger são criptografados ao serem commitados, e descriptografados ao serem verificados. git-crypt permite que você compartilhe livremente um repositório contendo uma mistura de conteúdo público e privado. git-crypt degrada-se suavemente, então desenvolvedores sem a chave secreta ainda podem clonar e commitar em um repositório com arquivos criptografados. Isso permite que você armazene seu material secreto (como chaves ou senhas) no mesmo repositório que seu código, sem exigir que você bloqueie todo o seu repositório.

git-crypt foi escrito por Andrew Ayer ([email protected]). Para mais informações, veja https://www.agwa.name/projects/git-crypt.

Construindo o git-crypt

Veja o arquivo INSTALL.md.

Usando o git-crypt

Configure um repositório para usar o git-crypt:

cd repo
git-crypt init

Especifique arquivos para criptografar criando um arquivo .gitattributes:

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

Como um arquivo .gitignore, ele pode corresponder a curingas e deve ser commitado no repositório. Veja abaixo para mais informações sobre .gitattributes. Certifique-se de não criptografar acidentalmente o próprio arquivo .gitattributes (ou outros arquivos git como .gitignore ou .gitmodules). Certifique-se de que suas regras .gitattributes estejam em vigor antes de adicionar arquivos sensíveis, ou esses arquivos não serão criptografados!

Compartilhe o repositório com outros (ou consigo mesmo) usando GPG:

git-crypt add-gpg-user USER_ID

USER_ID pode ser um ID de chave, uma impressão digital completa, um endereço de e-mail, ou qualquer outra coisa que identifique exclusivamente uma chave pública para o GPG (veja "HOW TO SPECIFY A USER ID" na página man do gpg). Nota: git-crypt add-gpg-user adicionará e commitará um arquivo de chave criptografado com GPG no diretório .git-crypt na raiz do seu repositório.

Alternativamente, você pode exportar uma chave secreta simétrica, que você deve transmitir de forma segura aos colaboradores (GPG não é necessário, e nenhum arquivo é adicionado ao seu repositório):

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

Após clonar um repositório com arquivos criptografados, desbloqueie com GPG:

git-crypt unlock

Ou com uma chave simétrica:

git-crypt unlock /path/to/key

Isso é tudo que você precisa fazer - após configurar o git-crypt (com git-crypt init ou git-crypt unlock), você pode usar o git normalmente - criptografia e descriptografia acontecem de forma transparente.

Status Atual

A versão mais recente do git-crypt é a 0.8.0, lançada em 2025-09-23. O git-crypt tem como objetivo ser livre de bugs e confiável, ou seja, não deve travar, funcionar mal ou expor seus dados confidenciais. No entanto, ainda não atingiu a maturidade, o que significa que não é tão documentado, rico em recursos ou fácil de usar quanto deveria. Além disso, podem haver mudanças incompatíveis com versões anteriores introduzidas antes da versão 1.0.

Segurança

O git-crypt é mais seguro do que outros sistemas de criptografia transparente para git. O git-crypt criptografa arquivos usando AES-256 no modo CTR com um IV sintético derivado do SHA-1 HMAC do arquivo. Este modo de operação é comprovadamente semanticamente seguro sob ataque de texto claro escolhido determinístico. Isso significa que, embora a criptografia seja determinística (o que é necessário para que o git possa distinguir quando um arquivo mudou ou não), não vaza nenhuma informação além de saber se dois arquivos são idênticos ou não. Outras propostas para criptografia transparente para git usam ECB ou CBC com um IV fixo. Esses sistemas não são semanticamente seguros e vazam informações.

Limitações

O git-crypt depende de filtros git, que não foram projetados com criptografia em mente. Como tal, o git-crypt não é a melhor ferramenta para criptografar a maioria ou todos os arquivos de um repositório. Onde o git-crypt realmente brilha é quando a maior parte do seu repositório é pública, mas você tem alguns arquivos (talvez chaves privadas chamadas *.key, ou um arquivo com credenciais de API) que você precisa criptografar. Para criptografar um repositório inteiro, considere usar um sistema como git-remote-gcrypt em vez disso. (Nota: nenhum endosso é feito à segurança do git-remote-gcrypt.)

O git-crypt não criptografa nomes de arquivos, mensagens de commit, alvos de links simbólicos, gitlinks ou outros metadados.

O git-crypt não oculta quando um arquivo muda ou não, o comprimento de um arquivo, ou o fato de dois arquivos serem idênticos (veja a seção "Segurança" acima).

O git-crypt não suporta revogação de acesso a um repositório criptografado que foi previamente concedido. Isso se aplica tanto ao modo multi-usuário GPG (não há comando del-gpg-user para complementar add-gpg-user) quanto ao modo de chave simétrica (não há suporte para rotacionar a chave). Isso ocorre porque é um problema intrinsecamente complexo no contexto de dados históricos. Por exemplo, mesmo que uma chave tenha sido rotacionada em algum ponto da história, um usuário com a chave anterior ainda pode acessar o histórico anterior do repositório. Este problema é discutido em mais detalhes em https://github.com/AGWA/git-crypt/issues/47.

Arquivos criptografados com git-crypt não são compressíveis. Mesmo a menor alteração em um arquivo criptografado exige que o git armazene o arquivo inteiro alterado, em vez de apenas um delta.

Embora o git-crypt proteja o conteúdo de arquivos individuais com um SHA-1 HMAC, o git-crypt não pode ser usado com segurança a menos que todo o repositório seja protegido contra adulteração (um atacante que pode modificar seu repositório pode alterar seu arquivo .gitattributes para desabilitar a criptografia). Se necessário, use recursos do git como tags assinadas em vez de confiar apenas no git-crypt para integridade.

Arquivos criptografados com git-crypt não podem ser corrigidos com git-apply, a menos que o patch em si seja criptografado. Para gerar um patch criptografado, use git diff --no-textconv --binary. Alternativamente, você pode aplicar um patch de texto simples fora do git usando o comando patch.

O git-crypt não funciona de forma confiável com alguns GUIs git de terceiros, como Atlassian SourceTree e GitHub for Mac. Arquivos podem ficar em um estado não criptografado.

Arquivo Gitattributes

O arquivo .gitattributes é documentado na página man gitattributes(5). O formato do padrão de arquivo é o mesmo usado pelo .gitignore, conforme documentado na página man gitignore(5), com a exceção de que especificar apenas um diretório (ex.: /dir/) não é suficiente para criptografar todos os arquivos abaixo dele.

Observe também que o padrão dir/* não corresponde a arquivos em subdiretórios de dir/. Para criptografar uma subárvore inteira dir/, use dir/**:

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

O arquivo .gitattributes não deve ser criptografado, portanto certifique-se de que curingas não o correspondam acidentalmente. Se necessário, você pode excluir .gitattributes da criptografia assim:

.gitattributes !filter !diff
Baixar ferramenta