현재 git 커밋이 어떻게 작동하는지 궁금합니다.커밋 서명은 어떻게 작동합니까?
찾으려고했지만 정확한 기술 문서를 찾을 수 없습니다. git 커밋 서명 방법을 알고 있지만 정확히 어떻게 자식이 커밋에 서명하는지 궁금해합니다.
정확히 서명 된 것은 무엇입니까? 주어진 커밋에서 저장소 내부의 전체 데이터인가? 커밋 메시지 등의 데이터와 모든 파일의 데이터? 아니면 포함 된 파일 등을 가리키는 커밋일까요?
현재 git 커밋이 어떻게 작동하는지 궁금합니다.커밋 서명은 어떻게 작동합니까?
찾으려고했지만 정확한 기술 문서를 찾을 수 없습니다. git 커밋 서명 방법을 알고 있지만 정확히 어떻게 자식이 커밋에 서명하는지 궁금해합니다.
정확히 서명 된 것은 무엇입니까? 주어진 커밋에서 저장소 내부의 전체 데이터인가? 커밋 메시지 등의 데이터와 모든 파일의 데이터? 아니면 포함 된 파일 등을 가리키는 커밋일까요?
어디에도 문서화되어 있지는 않지만 source code을 보면 커밋 객체의 전체 내용임을 알 수 있습니다. 그런 다음 내용을 으로 수정하여 서명을 삽입하면 확인 프로세스에서 서명을 별도의 버퍼로 제거하고 원래의 서명 전 삽입 데이터를 GPG 서명자에게 전달해야합니다.
GPG 서명 데이터는 커밋의 해시 ID가되기 위해 커밋에 대한 SHA-1 체크섬을 계산할 때 발생합니다. gpg-interface.c
및 commit.c
, 각각 sign_buffer
및 do_sign_commit
을 참조하십시오. 태그 서명은 builtin/tag.c
입니다 (기능 do_sign
및 해당 발신자 참조). 서명 된 태그는 삽입되기보다는 서명이 첨부되지만, 그렇지 않으면 거의 동일한 방식으로 작동합니다.
SHA-1 데모에서 영감을 얻었던 가정이 맞았습니다. 코드를 올바르게 이해했는지 확인합니다. (저는 Java, C 사용자가 아닙니다.) 트리에 대한 SHA-1 참조를 포함하는 커밋 개체 만 서명됩니다. 따라서 서명 된 커밋을 사용하면 트리가 정확한지 확신 할 수 없지만 서명자가 동일한 해시가있는 트리에 커밋을 만들었습니까? 정말 슬프다. –
@MarkusKreusch : 예, 서명 * 직접 * 커밋 또는 태그 객체의 내용 만 보호합니다. 그러나 커밋과 태그 객체는 (임의의 텍스트를 포함 할 수 있음에도 불구하고) 상당히 명백한 형식을 가지고 있으며, SHA-1을 물리 치기위한 기존 기술은 확실한 추적을 남깁니다. 트리 객체는 훨씬 더 제약적인 형태를 가지고 있습니다. Git은 변형 된 트리를 쉽게 감지 할 수 있습니다. BLOB 객체들만이 두 번째 이미지 이미지에 실제로 종속됩니다. Git이 SHA-256을 사용하기 시작할 수 있다면 좋겠지 만 전환은 다소 거칠 것입니다. – torek
(http://stackoverflow.com/q/42433126/1256452와 그 안에있는 메일 링리스트의 링크를 참조하십시오.) – torek
이것은 서명 된 git cat-file
(서명이 제거 된)에 의해 리턴 된 원시 커밋 오브젝트입니다. HEAD는 커밋 서명 된 경우 다음과 같이 손으로 서명을 확인할 수 있습니다
git cat-file commit HEAD > signed-commit
grep -B 9999 'BEGIN PGP SIGNATURE-----' signed-commit | head -n -1 > signed-commit.stripped
grep -A 9999 'END PGP SIGNATURE-----' signed-commit | tail -n +2 >> signed-commit.stripped
sed 's/^gpgsig //' signed-commit | sed 's/^ //' > signed-commit.sig
gpg --verify signed-commit.sig signed-commit.stripped
당신이 https://git-scm.com/docs/git-tag#git- ([서명 태그]에 대해 묻는 태그 - s)? – Leon
https://help.github.com/articles/signing-commits-with-gpg/ –
@ 레온 : 저는 GPG에 어떤 데이터가 공급되는지 알고 싶어합니다. 이것은 신중한 SHA-1 충돌이 생성 된 최근 데모에서 더욱 흥미롭게됩니다. – torek