web-dev-qa-db-ja.com

プッシュ時にSSHキーを使用して自分自身を認証しているのに、なぜGPGキーでGitコミットに署名するのですか?

簡単に言うと、SSH公開鍵を提供する必要がある場合に、GitHubにコントリビュートするときにGPGキーでコミットに署名する必要があるのはなぜですか。

41
Mahmoud Tantawy

SSHキーを使用してGithubに対して認証する場合、その認証は意味のある、または永続的な方法でリポジトリの一部にはなりません。これにより、Githubは今のところアクセスを許可しますが、Github以外のユーザーには何も証明されません。

GitタグにGPG署名すると、そのタグはリポジトリの一部となり、リポジトリの他のコピーにプッシュできます。したがって、あなたの公開鍵にアクセスでき、それを信頼する理由があると仮定して、リポジトリを複製する他の人々は署名されたタグを検証できます。

すべてのコミットにタグ付けしてGPG署名する必要はありませんが、リリースされたバージョンのコードに対応するコミットごとにGPG署名付きタグ少なくともを提供するのが賢明です。あなたはそれ以上のことをしたいかもしれませんが、それは責任ある行動の最低限のものです。

  • 問題のコミットは、問題のリリースに実際に対応しています。

  • 問題のコミット(およびgitのコミット履歴で使用されているSHA1ハッシュ、そのすべての前身)が署名者(および該当する場合は署名者のチーム)からのものです。

  • 問題のコミットは、署名者がそれをタグ付けした後、改ざんされませんでした。

「完全な確実性」ではなく「合理的な保証」と言ったことに注意してください...ソフトウェアの整合性で問題が発生する可能性のある他の事柄もあります。ただし、少なくとも公式リリースに署名済みタグを提供することは、正しい方向への大きな一歩です。

38
HedgeMage