デジタル署名と(デジタル)証明書の関係

用語の語感が似ていて、「署名」つながりで関係のある2つの用語についての解説した時の内容をまとめたもの
15
angel (as ㌵㌤の猫) @angel_p_57

@AGAINST_sa9sa9 先にデジタル署名からおさらいです。 が、その前にまず「暗号化」「復号」という用語は忘れてください。 暗号技術の一部としてまとめられていますが、「暗号化」「復号」とは機能が全然異なる技術なので、混同すると誤解の元です。

2021-11-15 20:10:26
angel (as ㌵㌤の猫) @angel_p_57

@AGAINST_sa9sa9 デジタル署名は「特定の人だけが作れて、誰でも本物と確認できるデータ『署名』」を実現する技術です。 作る(署名する)時に必要なデータを署名鍵 or 秘密鍵、確認する(検証する)時に必要なデータを検証鍵 or 公開鍵と呼びます。

2021-11-15 20:10:51
angel (as ㌵㌤の猫) @angel_p_57

@AGAINST_sa9sa9 繰り返しますが、「暗号化」「復号」という用語を持ち出すと誤解の元なのでやめましょう。 というか、「署名の仕組み」的なものを考えるのも止めた方が良いです。 ※大体の人には役に立たないどころか、却って混乱するだけなので。

2021-11-15 20:11:17
angel (as ㌵㌤の猫) @angel_p_57

@AGAINST_sa9sa9 話を戻して、ちょうど「自筆署名」が、「本人しか書けない」「筆跡を知ってる人は本物かどうか確認できる」という性質があるのと同じで、なので「署名」という名前がついています。日本風に言うなら「印鑑」です。( はんこ=秘密鍵、印影サンプル=公開鍵 )

2021-11-15 20:11:48
angel (as ㌵㌤の猫) @angel_p_57

@AGAINST_sa9sa9 なので用途も印鑑と同じで、あるデータに対して「この内容に(秘密鍵の持ち主が)同意します」「この内容に(秘密鍵の持ち主が)責任を持ちます」という証拠になるデータとして使います。 「言い逃れができない」という意味で「否認防止」と呼ばれる機能です。

2021-11-15 20:12:19
angel (as ㌵㌤の猫) @angel_p_57

@AGAINST_sa9sa9 あるいは単純に、「本人しか署名を作れない」ということで、「正しい署名を作れるので本人/本物のサイトです」といった認証 ( 本人確認 ) にも使われます。有名なのはSSHの「公開鍵認証」「ホスト認証」、SSL/TLSの「サーバ認証」です。 情処の参考過去問: fe-siken.com/kakomon/29_aki…

2021-11-15 20:12:55
angel (as ㌵㌤の猫) @angel_p_57

@AGAINST_sa9sa9 ここまでデジタル署名のおさらい終わりで、ここから「証明書」の話です。

2021-11-15 20:13:20
angel (as ㌵㌤の猫) @angel_p_57

@AGAINST_sa9sa9 単なるデジタル署名だと「秘密鍵の持ち主が署名を作った」であって、「その『持ち主』が誰か」を確認する手段は、もし必要なら別に用意しなければなりません。

2021-11-15 20:13:41
angel (as ㌵㌤の猫) @angel_p_57

@AGAINST_sa9sa9 そこで、公開鍵+所有者情報などなどをまとめたデータ「(公開鍵)証明書」を発行する組織、「認証局(CA)」があります。 ※秘密鍵/公開鍵の用途として「署名」以外の場合もありますが、良く使われるのは署名用途の鍵に対する証明書です。

2021-11-15 20:14:10
angel (as ㌵㌤の猫) @angel_p_57

@AGAINST_sa9sa9 契約書等の文書データなら、所有者は大体「組織」になると思います。 例えば、この画像は政府発行のpdfファイル(署名・証明書内蔵)をビューアで見た時のもので、署名者=鍵の所有者=証明書発行先が"Cabinet Secretariat"(内閣官房のこと)になっています。 文書配布元: nisc.go.jp/security-site/… pic.twitter.com/8EDthhkV49

2021-11-15 20:16:09
拡大
拡大
angel (as ㌵㌤の猫) @angel_p_57

@AGAINST_sa9sa9 つまり、この文書の内容には内閣官房が責任を持っていて、その証拠のために秘密鍵で署名をつけて、誰の署名か分かるように証明書も同梱しているということです。( pdfがそういう「同梱した」フォーマットをサポートしている )

2021-11-15 20:16:47
angel (as ㌵㌤の猫) @angel_p_57

@AGAINST_sa9sa9 逆に、もし仮に文書を改変して改変後の内容の責任を内閣官房になすりつけようとしても、秘密鍵がないと正しい署名が作れません。なので、改変版文書を作ったは良いけれど、それは署名が付けられなくて「公式版」じゃないとバレることになります。

2021-11-15 20:17:14
angel (as ㌵㌤の猫) @angel_p_57

@AGAINST_sa9sa9 もし実印を使ったことがあれば、この仕組みは「印鑑証明(書)」と同じだと分かると思います。印鑑証明書は「この印影になるハンコを〇〇さんが持っていることを証明します」というもので、押印した契約書類等と一緒に提出するものですから。

2021-11-15 20:17:37
angel (as ㌵㌤の猫) @angel_p_57

@AGAINST_sa9sa9 ただ、鍵の所有者がどうなるかは用途によっても変わります。例えば「マイナンバーカード」は個人が公的な提出書類に署名できるよう、秘密鍵と証明書が入ってますが、この場合だと「○県□市の日本太郎さん」的な所有者に。 Webサイトに使うSSL証明書なら、例えば「ドメイン xxxx .com」等が所有者に。

2021-11-15 20:18:37
angel (as ㌵㌤の猫) @angel_p_57

@AGAINST_sa9sa9 ここで、証明書でテキトーな所有者を名乗れると困るので、CAは発行時に「正しい所有者か」を審査しますし、偽造が効かないように、「CAの秘密鍵で作ったデジタル署名」を証明書に同梱します。

2021-11-15 20:19:13
angel (as ㌵㌤の猫) @angel_p_57

@AGAINST_sa9sa9 つまりCAの署名は、「公開鍵〇〇(と、対応する秘密鍵)の所有者が□□であることを確認していて、そのことに責任を持ちます」という証拠になるデータ、ということです。

2021-11-15 20:19:48
angel (as ㌵㌤の猫) @angel_p_57

@AGAINST_sa9sa9 そうすると、文書等のデータ・署名・証明書のセットを確認する場合は、 ・データと署名が正しい組み合わせかを、証明書に入っている公開鍵で検証する ・証明書(の内容と同梱されているCA署名の組み合わせ)が正しいか、CAの公開鍵で検証する の2つを行うということになります。

2021-11-15 20:20:23
angel (as ㌵㌤の猫) @angel_p_57

@AGAINST_sa9sa9 「正しい」証明書があることによって、単なる「誰か分からないけどこの公開鍵に対応する秘密鍵の持ち主が署名したデータ」ではなくて、「鍵の所有者〇〇が署名したデータ」と、所有者情報も紐づけられることになる、ということです。

2021-11-15 20:20:51
angel (as ㌵㌤の猫) @angel_p_57

@AGAINST_sa9sa9 長くなりましたが、元のtweetにあった内容は、多分このことを言ってたものと思います。くどいようですが、この話題で「暗号化」は関係ないです。あくまで「どの署名」を「どの公開鍵で確認(検証)」するか、なので。

2021-11-15 20:21:19
angel (as ㌵㌤の猫) @angel_p_57

@AGAINST_sa9sa9 ちなみに「CAの公開鍵」は? というと、それには別途「CA証明書」( これも証明書の一種 ) を使います。 予め検証する方の人がOS等にインストールしておくか、或いは署名する人が自分の証明書に添付しておきます。 ※添付されたCA証明書の場合、さらにその発行元の別のCA証明書を使って検証します。

2021-11-15 20:22:31
angel (as ㌵㌤の猫) @angel_p_57

@AGAINST_sa9sa9 先ほどの文書の場合、発行者である"SECOM Passport for Member PUB CA8"というCAのCA証明書をパソコンにインストールしていたので、「証明書が正しい」と判断できています。 ※CA証明書を信頼してインストールして良いかは、また難しい問題 pic.twitter.com/sdunHF9Tv3

2021-11-15 20:23:17
拡大