MACとデジタル署名の対比

MACやデジタル署名の歴史ってどうなるんだっけ…というところからの、両者の対比に関するちょっとした話。
2

発端は「デジタル署名とMACの歴史って?」的な他の人のtweetを見たことから。

angel (as ㌵㌤の猫) @angel_p_57

歴史調べるのって大変なんだよなあ…。デジタル署名は初出が 1976年で、メッセージ認証コードは多分もう少し後だろうし。40~50年近く遡ることになるわけで。 ※その頃はインターネット自体無いし

2022-05-28 22:29:13
angel (as ㌵㌤の猫) @angel_p_57

ん…。旧RSAセキュリティのページ、悪くないかも。英WikipediaのMACのページの「外部リンク」から辿れるんだけど。 ※やっぱり日本版より数段クオリティが高いかな en.wikipedia.org/wiki/Message_a…

2022-05-28 22:32:01
angel (as ㌵㌤の猫) @angel_p_57

で、これが旧RSAセキュリティのMACのページ。 web.archive.org/web/2006102021…

2022-05-28 22:33:27
angel (as ㌵㌤の猫) @angel_p_57

細かいことはどうでもいい ( というか別にこのページ見なくても分かることだから )。大事なのは、もともと DES の応用で実現していたということ。( 項番4 )

2022-05-28 22:36:17
angel (as ㌵㌤の猫) @angel_p_57

これが実に 1985年のFIPS-113、だから「MACと言えばハッシュを使うHMAC」と思うかも知れないけれど、実用化に至ったハッシュは、89年のMD2からだろうから、実はハッシュよりも古い概念ということになる。

2022-05-28 22:38:41
angel (as ㌵㌤の猫) @angel_p_57

で、FIPS-113 のスキャンデータ ( pdf ) はここで見られるみたい。…当時はMACという言葉はなくて DAA と呼ばれてたのかな。 nvlpubs.nist.gov/nistpubs/Legac…

2022-05-28 22:40:13
angel (as ㌵㌤の猫) @angel_p_57

話を戻してMACの説明だけど…。技術的にはデジタル署名と対比になりがちなのは、まあしようがないところか。Unlike digital signatures, MACs are computed and verified with the same key と。 web.archive.org/web/2006102021…

2022-05-28 22:49:59
angel (as ㌵㌤の猫) @angel_p_57

共通なのはいずれも「特定の人にしか署名/MACを作れないこと」 そして、作った署名/MACは元のメッセージと突き合わせて本物かどうかを確認(検証)する。

2022-05-28 22:52:31
angel (as ㌵㌤の猫) @angel_p_57

では違いは何か。先程の続き so that they can only be verified by the intended recipient の部分、つまり「検証できるのも特定の人」と。これが「誰でも検証できる」デジタル署名との違い。

2022-05-28 22:55:13
angel (as ㌵㌤の猫) @angel_p_57

これをどう実現するか、と言うと…。というより、MACの場合は制約だよね。なぜなら、MACを作るのも検証するのも同じ鍵を使うようにしてるから。( なので共通鍵と呼ぶ )

2022-05-28 22:57:11
angel (as ㌵㌤の猫) @angel_p_57

逆にデジタル署名は、「特定の人の処理用に『秘密鍵』、誰でもできる処理用に『公開鍵』を設ける」という枠組み ( 広い意味での「公開鍵暗号」 ) を採用している。

2022-05-28 22:58:42
angel (as ㌵㌤の猫) @angel_p_57

ここまでの話だけだとそう大きな違いに感じるかも知れないけど、たった? これだけの違いでその用途は大きく変わる。 MACはデータの「改ざん検知」、デジタル署名はデータに対する「否認防止」( 言葉を変えるとデータに対する「保証の付与」 )

2022-05-28 23:01:37
angel (as ㌵㌤の猫) @angel_p_57

この大きく変わる様はなかなか面白いところだけど。どっちも「改ざん検知」と同じように考えると見えなくなるかな。残念なことだと思う。

2022-05-28 23:04:02
angel (as ㌵㌤の猫) @angel_p_57

そう言えば、旧RSAセキュリティのページには、「公開鍵暗号」の一種として「デジタル署名」の説明もあるね。 web.archive.org/web/2006102021…

2022-05-28 23:05:28
angel (as ㌵㌤の猫) @angel_p_57

署名操作に関しては、Alice does a computation involving both her private key and the message itself. 検証操作に関しては、Bob does a computation involving the message, the purported signature, and Alice's public key.と。

2022-05-28 23:08:29

つまり、署名作成時に元のメッセージと秘密鍵を、署名検証時に、元のメッセージ、署名、公開鍵を使って、何かしらの計算を行うことしか言ってない。

angel (as ㌵㌤の猫) @angel_p_57

で、デジタル署名を「署名」たらしめているのが、検証時のこの性質と。 If the result is correct according to a simple, prescribed mathematical relation, the signature is verified to be genuine;

2022-05-28 23:09:38

これ、なんら具体的なことは言ってなくて「( 署名データの整合性を見るための ) なんらかの数学的な関係性があるよ」って話でしかないんだよね。

angel (as ㌵㌤の猫) @angel_p_57

もちろん、旧RSAセキュリティはRSAの開発元 ( の3人が起こした会社 ) なんだけど、そこでさえ「秘密鍵で暗号化します」なんて説明してないんだよね…。なんで拘る人がいるんだか、とつくづく思う。

2022-05-28 23:11:58