この記事は Origami Advent Calendar 11日目の記事になります。 最近学習しているデジタル署名について、わからない人でもわかる基礎的なところから、簡単なサンプルプログラムの実装までまとめてみました。最後のサンプルプログラムを組むところまで実施すれば、デジタル署名のメリットや仕組みなどの基本的な部分は理解できるかと思います。プログラムはGoで書いてます。 デジタル署名について デジタル署名は公開鍵暗号方式の一種で、一般的には3つのアルゴリズムから成る。 鍵生成アルゴリズムG 署名者の"鍵ペア"(PK, SK)を生成する。PKは公開する検証鍵(公開鍵)、そしてSKは秘密にする署名鍵(秘密鍵)である。 署名生成アルゴリズムS メッセージmと署名鍵SKを入力とし、署名σを生成する。 署名検証アルゴリズムV メッセージm、検証鍵PK、署名σを入力とし、承認または拒否を出力する。