- 1.ディジタル署名の目的
- 2.ディジタル署名とサインは本当に同じか
- 3.ディジタル署名の検証方法
- 4.CAのディジタル署名
- 5.XMLディジタル署名
- 6.【参考】ディジタル署名はセキュリティが本当に保証されるの?
ディジタル署名?それともデジタル署名?
試験センターの資料に、どちらでもいいとあります。
https://www.ipa.go.jp/shiken/syllabus/doe3um0000002djj-att/shiken_yougo_ver5_1.pdf
「外来語の仮名書きにおける長音符号を付けるか付けないかなどの表記は,規格・標準の分野などによって異なる場合があり(例 ステークホルダとステークホルダー,デジタルとディジタル),一定にすることは困難であるので,いずれの使用も可とする。」
ここ最近はデジタル署名との表記が増えています。
1.ディジタル署名の目的
そもそも、ディジタル署名ってなんですか?
そこからお願いします。
「署名」とは「サイン」のことである。契約書にサインする場合や、クレジットカードで買い物をしたときにサインをする。あれと同じだ。
左は、署名(手書きで名前を書く)と、捺印(印鑑を押す)の様子を図にしてみた。
ディジタル署名は、文字通りディジタルな署名であり、ITの世界の署名である。
機能や目的も全く同じと考えてよい。
では、ここで問題。
問題(H20秋FE午前 問64) |
---|
ディジタル署名の目的を述べよ。 ヒントは以下の①~③である。 「通信販売の電子商取引では、受発注における[ ① ]、[ ② ]、[ ③ ]によって販売業者又は利用者に被害が及ぶ危険性がある。この三つの防止に適用できるセキュリティ技術」 |
↓
↓
↓
↓
↓
ディジタル署名の目的は以下の3つである。
①改ざん防止(完全性)
②なりすまし防止(真正性)
③否認防止
参考ではあるが、情報処理安全確保支援士試験を含む情報処理技術者試験では、「デジタル署名」ではなく「ディジタル署名」と記載される。
2.ディジタル署名とサインは本当に同じか
日常生活の署名(サインや押印)のIT版がディジタル署名と言われてますよね。本当に同じなんですか?なんか、全く別物にしか思えないんですけど。
実際に比較してみるのがいいでしょう。
セキュリティ | サインや押印 | ディジタル署名 | 備考 | |
---|---|---|---|---|
① | 真正性 | 〇 | 〇 | サインを筆跡鑑定すれば、本人がサインしたことが分かる |
② | 完全性 | 〇(or△) | 〇 | 契約書を修正するには、修正印が必要になる。 ※ただ、契約書の修正は跡が残るが、追加だけであれば、できそうな気がして△かもしれないと思っている |
③ | 否認防止 | 〇 | 〇 | サインは他人ができない |
④ | 暗号化 | × | × | 書類にサインする場合、書類そのものは暗号化されていない |
このように、セキュリティ機能はほぼ同じです。
ここで大事なのは、実際の署名と、ディジタル署名が厳密に同じかどうかではありません。身近な技術と比較しながら覚えることで、ディジタル署名の本質を理解することです!
3.ディジタル署名の検証方法
ディジタル署名は、元データのハッシュ値を、署名鍵で暗号化します。ディジタル証明書の場合ですと、署名鍵は「CA(認証局)の秘密鍵」です。
ディジタル署名が正規なものかを検証する方法は、以下です。
①受け取ったデータをハッシュする。
②ディジタル署名を検証鍵(送信者の公開鍵)で復号する。
③上記の①と②が一致するかを確認する。(一致すれば正規の署名)
過去問(H19SW午後Ⅰ問3)に、ディジタル署名の検証方法が述べられています。下図と照らし合わせながら見てください。
過去問(H19SW午後Ⅰ問3) |
---|
署名の検証時 には,その署名のデータを[ c ]で復号して元のデータと比較し,一致すれば元のデータが偽造や改ざんされていないことが確認できる |
↓
↓
↓
↓
↓
cには、「CAの公開鍵」が入りますね。
サーバ証明書の場合、CAの証明書から公開鍵を取り出し、検証するからです。
証明書に限っていえば、それで正解です。
でも、これはディジタル署名全般の話なので、「署名者の公開鍵」が正解です。
証明書の場合は、署名したのがCA(認証局)だから、「CAの公開鍵」。
この場合、署名者が誰か特定されていないません。署名者の秘密鍵で暗号化されたデータを復元するので、秘密鍵の対となる「署名者の公開鍵」が答えです。
4.CAのディジタル署名
問題 |
---|
証明書には、CA(認証局)のディジタル署名が付与されている。 では、CAのディジタル署名とはいったい何か。 以下の[ ア ][ イ ][ ウ ]に入れる字句を答えよ。 CAのディジタル署名とは、[ ア ]の[ イ ]鍵で[ ウ ]を暗号化したもの。 |
↓
↓
↓
↓
↓
えーーと
難しいですね。
[ ア:クライアント ]の[ イ:秘密 ]鍵で[ ウ:証明書のダイジェスト ]を暗号化したものかな?
シンプルな問題だけど、なかなか答えられない人が多い。
もし、クライアントの秘密鍵で署名するのであれば、私の証明書を私の鍵で署名するってことになる。じゃあ私の証明書と、誰かが不正に署名した証明書、どちらが本物かを区別できるかな?
だから、署名するのは公の機関であるCAがすべきである。
答えは、
[ ア:CA ]の[ イ:秘密 ]鍵で[ ウ:証明書のダイジェスト ]を暗号化したもの。
5.XMLディジタル署名
問題(H22春SC午前Ⅱ) |
---|
問2 XMLディジタル署名の特徴はどれか。 ア XML文書中の,指定したエレメントに対して署名することができる。 イ エンベローピング署名(Enveloping Signature)では一つの署名対象に必ず複数の署名を付ける。 ウ 署名形式として,CMS (Cryptographic Message Syntax)を用いる。 エ 署名対象と署名アルゴリズムをASN.1によって記述する。 |
↓
↓
↓
↓
↓
情報処理安全確保支援士試験の過去問からの出題である。XMLディジタル署名とは、XML文書に対するディジタル署名の仕様だ。
XML文書全体だけでなく、特定の部分に関しても署名することができる。
正解はア。
もう一問。こちらも情報処理安全確保支援士試験の問題。
問題(H26春SC午前Ⅱ) |
---|
問2 XML署名において署名対象であるオブジェクトの参照を指定する表記形式はどれか。 ア OIDの形式 イ SSIDの形式 ウ URIの形式 エ ディジタル証明書のシリアル番号の形式 |
↓
↓
↓
↓
↓
正解はウ
6.【参考】ディジタル署名はセキュリティが本当に保証されるの?
ディジタル署名は①真正性(なりすましを防ぐ)、②完全性(改ざんを防ぐ)、③否認防止のセキュリティ対策となる。でも、それが保証されるのは、ルート証明書が正しいときだけでしょ。で、そのルート証明書はブラウザに自動的に入っている。なので、ブラウザの会社にセキュリティを一任していることになる?
この質問の意味がよくわからなかった人もいるかもしれません。たしかに、PKIのセキュリティが保たれるのは、「公開鍵が正しい」ときだけです。だから、PKI(Public Key Infrastructure)として、公開鍵の正当性を保つ仕組みが国として確立されています。ベリサインなどの証明書を発行する機関は誰でもがなれるわけではありません。
また、過去にルート証明書が偽造された国があったと聞きましたが、それはかなりの大問題になりました。