]> Sergey Matveev's repositories - stargrave-blog.git/commitdiff
Как мне доверять этому репозиторию?
authorSergey Matveev <stargrave@stargrave.org>
Tue, 28 Jun 2022 08:13:08 +0000 (11:13 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Tue, 28 Jun 2022 08:40:56 +0000 (11:40 +0300)
https://anarc.at/blog/2020-03-17-git-gpg-verification/
https://lwn.net/SubscriberLink/898522/9cf50ee3f96f90c1/
https://stackoverflow.com/questions/23584990/what-data-is-being-signed-when-you-git-commit-gpg-sign-key-id
https://github.com/cgwalters/git-evtag
В Git до сих пор используется SHA1, что в общем то не очень хорошо чтобы
можно было спокойно доверять этому хэшу.

Поддержка SHA256 в Git пока плачевна, никакого interoperability между
репозиториями не будет. Хотя можно уже создавать репозиторий с SHA256.

Подписывать каждый коммит: по моему безумная трата ресурсов. Да и,
собственно, подписывает он всё равно те же самые SHA1 хэши.

Какая-то git-evtag утилита, про которую впервые услышал, подписывает уже
SHA512 хэши всего дерева. Плюс ряд других предложений имеется, но про
которые не слышал чтобы использовались.

Задался вопросом: а что есть штатного и стандартного чтобы можно было в
иерархии пройти по всем файлам и посчитать/проверить их хэши? Вообще
конечно и банальным shell-скриптом не сложно, но не очень эффективно.
Вспомнил про mtree и выглядит как то что надо:

    $ fields="type size sha512"
    $ mtree -p /my/dir -c -k "$fields" |
        mtree -F mtree -C -S -k "$fields" > checksum

Ну и выводит нечто что легко отпарсить и автоматизированно проверить:

    $ head checksum
    ./GPL type=file size=17987 sha512=5b3...49c
    ./INSTALL type=file size=1443 sha512=965...fbe
    ./.git/HEAD type=file size=23 sha512=76b...6cf
    $ mtree -p /my/dir < checksum

Если всё сошлось, то будет хороший return code без вывода. В противном
случае покажет что изменилось и вернёт ошибку.

Порты mtree для GNU/Linux существуют, должны прожевать такое.

Утилиты типа sha512sum судя по man могут проверить иерархию, но sha512 в
BSD не может, поэтому тоже это решение не совместимо между платформами.


No differences found