Git の署名コミットを改ざん:ハッシュ連鎖の可鍛性を実証

Git Hash Chain Malleability

Git の署名コミットを改ざん:ハッシュ連鎖の可鍛性を実証

Git のコミット署名は、コミットハッシュが署名済みコンテンツを一意かつ不変に識別する証拠として広く信頼されている。しかし、この不変性は成立しない。署名キーへのアクセスもSHA2の破壊もなしに、攻撃者は同一のツリー・メタデータ・有効な署名を持ち、GitHubなどのGit Forgeで「Verified」バッジが付く、ハッシュだけが異なる2つ目のコミットを作成できる。この改変は後続のコミットハッシュにも連鎖するため、著者らは「ハッシュ連鎖可鍛性」と名付けた。ECDSAの代数反転、OpenPGPサブパケット挿入、DER長再エンコーディングの3つの経路を示し、すべてGitHubで永続的な「Verified」記録を生成することを実証した。

署名されたコミットが与えられたとき、署名キーへのアクセスもSHA2の破壊もなしに、攻撃者は同一のツリー、同一のメタデータ、有効な署名、そしてGitHubなどのGit Forgeからの「Verified」バッジを持ち、コミットハッシュのみが異なる2つ目のコミットを生成できる。