620 likes | 878 Views
共通教育 「情報セキュリティ・モラル」 第 2 週 暗号化と認証. 学習内容. 1. 符号と暗号 2. 共通鍵暗号と公開鍵暗号 3. 認証とデジタル署名 4. 暗号化の具体的な方法. ※ 本資料において,「 ED2 」なる透かしの入ったコンテンツは,下記の Web サイトから引用したものである。 http://kyoiku-gakka.u-sacred-heart.ac.jp/jyouhou-kiki/index.html. 2. 2. 本時の目標について. 暗号化と認証の必要性を認識すること。
E N D
共通教育「情報セキュリティ・モラル」第2週 暗号化と認証共通教育「情報セキュリティ・モラル」第2週 暗号化と認証
学習内容 1. 符号と暗号 2. 共通鍵暗号と公開鍵暗号 3. 認証とデジタル署名 4. 暗号化の具体的な方法 ※ 本資料において,「ED2」なる透かしの入ったコンテンツは,下記のWeb サイトから引用したものである。 http://kyoiku-gakka.u-sacred-heart.ac.jp/jyouhou-kiki/index.html 2 2
本時の目標について • 暗号化と認証の必要性を認識すること。 • 高度情報通信ネットワーク社会における共通鍵暗号と公開鍵暗号の役割を理解すること。 • デジタル署名の仕組みを理解すること。 3
1. 符号と暗号 • インターネットの普及に伴い,その利便性の故に,ありとあらゆる情報が,インターネットを通じてやりとりされるようになった。 • インターネットでは,情報は多数のコンピュータにより中継され,伝達されていく。 • 多数のコンピュータが通信に介在するということから,無関係の第三者に対して本来秘匿されなければならない個人情報などが,故意に又は偶然に,通信の途中で盗み見られるという危険性が,インターネットには,常に存在する。 • 高度情報通信ネットワーク社会では,通信の秘密を確保することが最重要の課題の一つとされている。その通信の秘密の基盤となるのが,暗号である。 4
一つの例 • 次に示す記号列(記号の並び)は,何を表しているのであろうか。 • 57656C636F6D6520746F2059616D61677563686920556E69766572736974792E • 実は,これは,JISコードと呼ばれる符号によって,ある英語の文を符号化したものである。 5
「符号」とは,一定の規則に基づいて,記号列を別の記号列に変換する仕組みをいう。「符号」とは,一定の規則に基づいて,記号列を別の記号列に変換する仕組みをいう。 符号とは 符号によって,与えられた記号列を別の記号列に変換することを「符号化」という。 6
JISコードについて(参考) 「JISコード」は,日本工業規格で定められた,数字,英字,ひらがな,カタカナ,漢字等からなる文を16進数字(0~9, A,B,C,D,E 及び F)の並び又はビット列(0と1の並び)に変換する符号である。 16進数字のA,B,C,D,E及びFは,各々,10進数の10,11,12,13,14及び15を表す。また,16進数字の並びとビット列とはいつでも変換可能で,各16進数字に長さ4のビット列が対応する。例は次の通り: 016 ⇔00002 (0=0×23+0×22+0×21+0×20) A16 ⇔10102 (A=10=1×23+0×22+1×21+0×20) 7
Welcome to Yamaguchi University. 一つの例 57656C636F6D6520746F2059616D61677563686920556E69766572736974792E は,JISコードによって,英語の文 を符号化したものである。 この符号化は,文字’W’には57を,文字’e’には65を,… ,文字’.’には2Eを,といった具合に,英語の文を1文字ずつ置き換えることで行われている。 9
「暗号」とは,符号のうち,その変換の規則が秘匿されているものをいう。「暗号」とは,符号のうち,その変換の規則が秘匿されているものをいう。 暗号とは JISコードは,変換の仕組みが公開されているので,暗号とは呼ばれない。それでは,暗号とは,どのようなものをいうのであろうか。 10
暗号に関する諸定義 • 暗号化暗号による符号化。 • 平文(ひらぶん, へいぶん)暗号化する前の記号列。 • 暗号文平文を暗号化して得られる記号列。 • 復号化暗号文を元の平文に戻す(変換する)こと。 • 鍵暗号化又は復号化における変換の規則を機能させるのに必要となる一定の情報。 • 暗号鍵 暗号化するための鍵。 • 復号鍵 復号化するための鍵。 11
暗号方式の例1: シーザー暗号(オリジナル) • アルファベットを3文字シフトさせる暗号化方式 • 暗号化例: NDA QGD • NDA が平文,QGD が暗号文 • 3文字シフトが暗号化 • 3文字逆シフトが複合化 • 暗号鍵・複合鍵は無し.
暗号方式の例2: シーザー暗号(現代版) • アルファベットを何文字かシフトさせる暗号化方式 • 暗号化例: NDA QGD • NDA が平文,QGD が暗号文 • 3文字シフトが暗号化 • 3文字逆シフトが複合化 • 暗号鍵・複合鍵は「3」 • 鍵の概念があるので,シーザ暗号であることがばれても,複合化はできない. • ただし,暗号強度は弱い. • 鍵が25通りなのでコンピュータを使えば平文の候補を簡単に挙げることができる.
2. 共通鍵暗号と公開鍵暗号 ■ 暗号文を解読することが困難であることを「暗号の安全性」というが,数千年の歴史をもつ従来の暗号では,その安全性は,暗号化と復号化における変換の規則(以下「アルゴリズム」という。)の秘匿性に依存していた。 ■ ところが,1970年代に入ると,コンピュータを用いて暗号化と復号化を行う必要性が高まり,暗号のアルゴリズムそのものは公開し,アルゴリズムを機能させるのに必要となる鍵のみを秘匿するタイプの暗号が考案された。 ■このタイプの暗号を「現代暗号」と呼んでいるが,その代表が共通鍵暗号と公開鍵暗号である。 14
「共通鍵暗号」とは,暗号鍵と復号鍵とが同一である暗号をいう。また,同一である鍵を「共通鍵」という。 共通鍵暗号とは 共通鍵暗号は,換字(記号を別の記号又は記号列に置き換えること)と置換(記号列における記号の並びの順序を入れ換えること)とを高度に組み合わせることで,実現されている。 = シーザ暗号(現代版)は共通鍵暗号である。 15
共通鍵暗号による暗号通信 AさんがBさんに,共通鍵暗号を用いて「暗号通信」(情報を暗号化して伝達する通信をいう。)を行う手順は,次のようになる。 ① Aさんは,自分の作成した共通鍵CAをBさんに配送する。 ② Aさんは,平文m をCAにより暗号化し,暗号文c をBさんに 送る。 ③ c を受け取ったBさんは,それをCAにより復号化し,m を入 手する。 16
共通鍵暗号では,共通鍵をいかに安全に配送するかということが問題になり,これを「鍵配送問題」という。 鍵配送問題 ①共通鍵CAの配送 Aさん Bさん ②暗号文c の送信 ③CAによるc の復号化 通信の秘密は本当に確保されるのか? 17
「公開鍵暗号」とは,相異なる二つの鍵を用意して,その一方を暗号鍵とし,他方を復号鍵とする暗号であって,それら二つの鍵のうち,一方が公開され,他方が鍵の作成者によって秘匿されるものをいう。 公開鍵暗号とは 鍵配送問題を見事に解決したのは,ディッフィ(W. Diffie)とヘルマン(M. Hellman)が1976年に考案した公開鍵暗号である。 公開鍵 公開される鍵。 秘密鍵 作成者によって秘匿される鍵。 18
公開鍵暗号とは(その2) 公開鍵を暗号鍵としたときは秘密鍵が復号鍵となり,秘密鍵を暗号鍵としたときは公開鍵が復号鍵となる。 暗号鍵 ≠ 復号鍵 19
公開鍵暗号による鍵配送 公開鍵暗号を用いることで,鍵配送問題は解決される。鍵配送の手順は,次の通りである。 ①Aさんは,Bさんの公開鍵PBを取得する。(公開されているので,これは誰でも可能である。) ② Aさんは,自分の作成した共通鍵CAをPBにより暗号化し(CAを暗号化したものをcAとする。),cAをBさんに送る。 ③ cAを受け取ったBさんは,自分の秘密鍵SBによりcAを復号化し,CAを入手する。 20
鍵配送の手順 ①公開鍵PBの取得 Aさん Bさん ②共通鍵CAをPBで 暗号化して送信 ③秘密鍵SB による 暗号文cAの復号化 21
鍵配送問題の解決 それではこれで,共通鍵が安全に配送されたとどうして言えるのであろうか。 文書の暗号化に用いる共通鍵(CA)が盗聴されても,これは公開鍵 (PB)で暗号化されているため,秘密鍵(SB)の持ち主でなければ復号化することができない。これによって「鍵配送問題」を解決している。
公開鍵暗号の革命性(参考) 鍵は秘匿されなければならないという暗号の常識に反して,公開鍵暗号では一方の鍵を公開してしまうという点は,暗号の世界における革命的なアイデアといえる。この革命性の故に,公開鍵暗号は,前述の鍵配送問題を解決しただけでなく,後述するように,認証(本物であることを証明すること)の問題をも解決してしまった。 23
公開鍵暗号の安全性の基盤(参考) 一方の鍵を公開しても公開鍵暗号が安全であるのは,その安全性の基盤として,「素因数分解問題の困難性」などが用いられていることによる。ここで,「困難性」という言葉は,現在まで効率的な解法が知られていないことを意味する。 24
RSA暗号(参考) p とq を相異なる素数とするとき,それらの積n のみを与えて,n からp とq を求める問題を「素因数分解問題」という。p とq が同じ程度の大きさであるとき,n が十分に大きいと,素因数分解を現実的な時間で行うことは困難であることが知られている。この素因数分解問題の困難性を利用した公開鍵暗号を,「RSA暗号」という。 RSA暗号のRSAは,この公開鍵暗号を考案したリベスト(R. Rivest),シャミア(A. Shamir)及びエイドルマン(L. Adleman)の頭文字を採ったものである。 25
RSA暗号(参考その2) RSA暗号の公開鍵と秘密鍵は,次のように構成されている。 λ(n )=LCM(p - 1,q - 1)として,1より大きくてλ(n )より小さい適当な整数e を,λ(n )と互いに素となるように選ぶ。さらに,d e ≡ 1 (mod λ(n ))となるような最小の正整数d を求める。このとき,(e,n )を公開鍵とし,d を秘密鍵とする。 平文に対応する整数をm とし,暗号文に対応する整数をc とするとき,暗号化と復号化は, c =me mod n(暗号化), m =cd mod n (復号化) によって行われる。なお,秘密鍵で暗号化し,公開鍵で復号化することもできる。 26
RSA暗号の簡単な例(参考) n の大きさは,1024ビット(長さ1024のビット列)が推奨されて いる。これは,10進数でいえば,約308桁の整数ということになる。 簡単のため,p =7,q =11,n =77とすると, λ(77)=LCM(6,10)=30 なので,e の候補としては, 7,11,13,17,19,23,29 がある。例えば,e =7とすると,7d ≡1 (mod 30)から d =(30k +1)/ 7=4k +(2k +1)/ 7 となる。従って,k =3のとき30k +1は7で割り切れ,d =13を得る。 この場合,公開鍵は(7,77)であり,秘密鍵は13ということになる。 27
合成数(素数ではない数)n の素因数分解を効率的に行う方法は現在まで知られておらず,素因数を見つけるには,n を√ 以下の素数で小さいものから順に割ってみるしか,現実的な方法はない。 n 途方もない計算時間(参考) 自然数x 以下の素数がどのくらいあるかの目安として,次の定理がある。 〔素数定理〕 自然数x 以下の素数の個数をπ(x )とすると,x が十分に大きいとき,π(x )~x /lnx が成り立つ。 28
途方もない計算時間(参考その2) 宇宙の年齢は,100億年程度とされている。1日は86,400秒 なので,宇宙の年齢を秒に換算すると,たった 100億年=86,400秒×365日×100億年~1017 秒 にしかすぎない。ところで,n が308桁の合成数であれば,その素因数分解を行うには,最悪の場合,10152 個ほどもある素数でn を割ってみる必要がある。高速のコンピュータを使って,1回の割算が1ピコ秒(ピコ=10-12)で行えたとしても,全部の割算を終えるのに,10140 秒もかかる。この地球に100億台の高速コンピュータがあって,それらが同時に使えたとしても,10130 秒に短縮されるにすぎない。この途方もない計算時間に比べれば,宇宙の年齢など,わずかなものといえる。 29
共通鍵暗号には,鍵の長さを短くすることができるため(代表的なものでは,128ビットである。),暗号化と復号化が高速に行えるという利点がある反面,鍵配送問題という難点がある。 公開鍵暗号には,鍵配送の問題がないという利点がある反面,鍵の長さを長くする必要があるため(代表的なものでは,1024ビットである。),暗号化と復号化に時間がかかるという難点がある。 現代暗号の利点と難点 一方, 30
このような方式を,「ハイブリッド暗号方式」と呼んでいる。 ハイブリッド暗号方式 現代暗号の利点と難点とを考慮して,共通鍵の配送に公開鍵暗号を利用し,その後の通信には,共通鍵暗号を用いるという方式が,一般に採用されている。 31
3. 認証とデジタル署名 ■ 紙の文書が本物であることを証明するために,署名や印鑑が用いられている。 ■ 署名や印鑑が本物であることを証明する手段になりえるのは,それらの表す情報が有体物に固定されているため,その完全な複製を作ることが原理的に不可能だからである。 ■ ビット列で表されるデジタル情報は,アナログ情報と異なり,容易にその完全な複製を作ることができてしまうので,「電子文書」(ビット列で表される文書をいう。)を認証することは非常に難しく,公開鍵暗号に基づくデジタル署名が考案されて初めて,有効な実現方法が確立された。 32 32
「認証」とは,何らかの仕組みで本人又は本物であることを証明することをいう。また,その証明を実際に調べ確かめることを「検証」という。 認証と検証 代表的な認証に,本人認証(ユーザ認証),メッセージ認証,時刻認証などがある。
「本人認証」とは,ある人(被認証者)が他の人(認証者)に自分が確かに本人であることを納得させることをいう。 本人認証とは • 本人認証のうち,ID(ユーザを特定するために用いられる文字列)とパスワード(正規のユーザであることをコンピュータに通知するために用いられる,あらかじめ取り決めた文字列)を用いて正規のユーザであることを証明するものを,「ユーザ認証」という。 • これ以外にも,本人認証の手段として,ICカードを用いる方式や生体認証と呼ばれる指紋,虹彩,静脈等を利用する方式などがある。
① IDとパスワードの入力 ② IDとパスワードの送信 被認証者 認証者 ④ 一致すれば利用の許可そうでなければ利用の拒否 ユーザ認証の仕組み ③ 登録されているID,パスワードとの照合
「メッセージ認証」とは,ハッシュ値(メッセージダイジェスト)を用いてメッセージが改ざんされていないことを保証することをいう。 メッセージ認証とは メッセージ 情報を伝達する記号列。 ハッシュ値 ハッシュ関数の出力。 メッセージダイジェスト メッセージのハッシュ値。
「ハッシュ関数」とは,入力したいろいろな長さの記号列から一定の長さのビット列を出力する関数であって,そのビット列が擬似乱数になっているものをいう。 10…1 abcdefghijklmnopqrstuvwxyz 01…0 ハッシュ関数 0123456789 00…1 あかさたなはまやらわ 記号列 ビット列 ハッシュ関数とは 擬似乱数 無秩序に出現する数に似ていてそれと区別がつけ 難く,その出現頻度がほぼ等しいもの。
ハッシュ関数の性質(参考) ハッシュ関数H は,次の性質をもつ。 ① 不可逆性(一方向性) 与えられたビット列b からH (m)=b を満たす記号列m を見付けることが困難である。 ② 2次不可逆性 与えられた記号列m からH (m)=H (m’)と なる,m とは別の記号列m’を見付けることが困難である。 ③ 衝突困難性H (m)=H (m’)となる,互いに異なる記号列 m とm’の組を見付けることが困難である。
メッセージ 保管 Welcome to Yamaguchi University. … ハッシュ関数 保管 ××× … × メッセージダイジェスト メッセージ認証の仕組み メッセージm に対し,ハッシュ関数H によりそのメッセージダイジェストmd=H (m)を計算し,m を保管する場所よりも安全な所にmdを保管する。メッセージm が改ざんされて別のメッセージm’になっていた場合,md≠H (m’)なので,メッセージが改ざんされていることが分かる。
「時刻認証」とは,タイムスタンプを用いて物事が確かにその時刻に起ったことを保証することをいう。 時刻認証とは(参考) タイムスタンプ データがある時刻に存在していたこと及びその時刻以降に 当該データが改ざんされていないことを証明することのできる機能を有す る時刻情報。 ※ 「e-文書法」(平成16年法律第149号及び第150号)の制定により,日本にお いても,電子文書の形で作成し,保存したものを原本として認める方向にある。 容易に完全な複製を作成することのできる電子文書では,その原本性を保証 するため,それがいつ作成されたかということと,その後それが改ざんされて いないということとを証明する仕組みが必要であり,それを実現するのがタイ ムスタンプである。
印鑑の画像 山口 山口太郎 電子文書 印鑑の画像で認証は可能か? 印鑑の画像はそのままにして文書の内容を変更したり,他の文書にその画像を流用したりすることができるので,印鑑の画像は,認証の手段になりえない。
「デジタル署名」とは,本人であることを示すデジタル情報であって,それを付加した電子文書が本人にしか作れないものであること及び通信の途中で改ざんされていないことを,誰にでも検証することができるものをいう。 デジタル署名とは 〔デジタル署名の要件〕 ① 電子文書が本人にしか作れないものであることを検証することができる。 ② 電子文書が通信の途中で改ざんされていないことを検証することができる。
mσ 秘密鍵S による暗号化 デジタル署名の実現方法 デジタル署名は,公開鍵暗号を利用することにより,実現することができる。 自分の作成した公開鍵暗号の秘密鍵S により電子文書m を暗号化したものをσとするとき,m にσを付加したmσが署名付文書であり,σが自分のデジタル署名ということになる。 σ
デジタル署名の実現方法(その2) それでは,mσを送ってきたのがAさんであるとして,σがどうしてAさんのデジタル署名であるといえるのであろうか。 σをAさんの公開鍵により復号化して得られるm ’がm と一致すれば,Aさんの公開鍵により正しく復号化することができたことから,次のことが確認される。 • mは,Aさんだけにしかつくれない。(別な人が作成していたらmσを正しく作成することができない。) • mは,通信の途中で改ざんされていない。(改ざん文書m”からm”σを正しく作成することはAさん以外にできない。) 従って,σはAさんのデジタル署名であることになる。
Aさん Bさん メッセージ ダイジェスト メッセージ ダイジェスト Dear B-san, Thank you very much for ... Dear B-san, Thank you very much for ... 10…1 10…1 10…1 比較 秘密鍵で暗号化 公開鍵で復号化 H H 送信 デジタル署名 デジタル署名 ○△□…× ○△□…× メッセージダイジェストとデジタル署名 秘密鍵を用いて電子文書(メッセージ)をそのまま暗号化すると,暗号化や復号化に手間がかかるので,実際には,いったんハッシュ関数によりメッセージダイジェストを作成し,それを暗号化することでデジタル署名を作成する。
「認証局(Certificate Authority)」とは,公開鍵の作成者がそう称している通りの者であることを保証するための電子証明書を発行する,信頼することのできる第三者機関をいい,「CA」と略される。 認証局について デジタル署名は,電子文書が公開鍵の作成者によって作成されたものであることを保証するが,「なりすまし」(ある者が別の者を装うことをいう。)を防ぐことができない。この問題を解決する仕組みが,認証局である。 ※ 電子証明書には,氏名や機関名などの登録者情報,登録者の公開鍵, 有効期限,認証局のデジタル署名などが含まれている。
馬の公開キー置き場 牛です. 証明書はこれです. 牛です [デジタル署名] でも 本当は馬. 確かに「牛です」が正しくデジタル署名されている.信じて良いか? だめ.証明書は本人が作成しているし,改ざんもされていないが,あくまで自分は「牛」だと言い張っているだけ.いくらでも証明書は偽造できる.
(信頼できる)認証局(CA) 牛です. 証明書はこれです. 牛です [CAのデジタル署名] 牛です 牛です [CAのデジタル署名] 確かに「牛です」が信頼できるCAによって正しくデジタル署名されている.信じても良さそうである. 問題無し.証明書作成は信頼できる認証局がしているし,改ざんもされていない.この証明書は信頼できる.
馬の(なんちゃって)認証局(CA) 牛です. 証明書はこれです. 牛です [馬CAのデジタル署名] でも 本当は馬. 牛です 牛です [馬CAのデジタル署名] 確かに「牛です」が馬CAによって正しくデジタル署名されている.信頼して良いか? 問題あり.CAは個人でも運用できる.信頼できないCAが作成した証明書を信頼してはいけない。この手の証明書は「なんちゃって証明書」などと呼ばれる。
信頼できるCAとは? • 「信頼できるCAがお墨付きを与えているCAは信頼できる.」 • この連鎖の大元になるものをルートCAと呼ぶ. • ルートCAは社会的信頼を得た企業や政府機関などが行う. • 多くのWebブラウザには信頼できるCAがあらかじめ組み込んである: • ブラウザはWebサイトが提示した証明書が信頼できないと判断した時には(設定にもよるが)警告を出す.