git-crypt明文保护?

时间:2014-02-06 18:11:56

标签: git gitlab

爱git。爱git-crypt。

曾几何时,有一个由git-crypt和一组编码人员保护的回购邮件。不知何故,让我们归咎于外星人,一个文件是以未加密的形式提交的。

错误被及早发现并且没有造成任何伤害,但这引出了我的问题:

在你控制服务器的半集中式设置(gitlab,一个可信的repo ...)中(因此不包括github),你使用什么保护措施来确保秘密文件不会以未加密的形式提交形成?

1 个答案:

答案 0 :(得分:3)

正如您在git-crypt issue 104中看到的那样,在尝试解密实际上加密的文件时会出现警告:

for (int i=1;i<=numberOfchalisas;i++) {
    Integer heronameid = getResources().getIdentifier("hero_" + i, "string", getPackageName());
    Integer numMoviesDoneid = getResources().getIdentifier("hero_" + i +"_number_of_movies", "string", getPackageName());
    Integer numChildrenid = getResources().getIdentifier("hero_" + i +"_children", "string", getPackageName());

    String heroname = getString(heronameid);
    String numMoviesDone = getString(numMoviesDoneid);
    String numChildren = getString(numChildrenid);
    }

来自smudge() function,它读取文件的第一个字符:

git-crypt: Warning: file not encrypted

这意味着您可以撰写pre-receive hook which will unpack the pushed files并阅读第一个NONCE (12) characters,以检查文件是否以// Read the header to get the nonce and make sure it's actually encrypted unsigned char header[10 + Aes_ctr_decryptor::NONCE_LEN]; std::cin.read(reinterpret_cast<char*>(header), sizeof(header)); if (std::cin.gcount() != sizeof(header) || std::memcmp(header, "\0GITCRYPT\0", 10) != 0) { 开头。

如果其中一个推送文件没有(并且是.gitattributes file引用的文件之一),则返回1:推送将被拒绝。

重点是:server-side hook(因为您控制服务器端)是实施策略的最可靠方法(例如,此处仅为加密文件)