信頼とは ... 暗号版
2006年12月12日00:37
今日は、ちょっと普段の作業が煮詰まってきたので、久しぶりに読書をする事にしました。 ずっと読まなきゃと思っておきっぱなしにしていた本、それは、
暗号技術入門 -- 結城 浩 著 (秘密の国のアリス)
http://www.hyuki.com/cr/
です。 普段何気なく聞いている暗号関連の単語ですが、その意味を解説するのみにとどまらず、実装レベルからステップを追いながらとても解かり易く書いてあり、素晴らしい名著だと思いました。 信じられないほど解かり易く、ものすごく良くまとまっていると思いました。
デジタル署名って、RSAの真逆の処理なんですね。 その他色々と頭がすっきりしました。 何度も読んで暗号化のフローを頭に叩き込もうと思いました。
【暗号学者の6つの道具】
○対称暗号( Symmetric cryptography)
暗号化するときと複合化するときの鍵が等しい。 そのため、実用時には必ず「鍵配布問題 (key distribution problem)」が発生する。(鍵を送りたいので暗号化して送る。その為の鍵を暗号化して送る。 その為の鍵を暗号化して送る。 その為の鍵を暗号化して送る。 ...(永遠に続く) )
例) DES(古) / AES(新) (Rijndael) 等々
○公開鍵暗号
暗号化鍵と復号化鍵が分かれている。 暗号化鍵から復号化鍵を推測する事が極めて難しいため、自分の暗号化鍵を広く人々に知らせても安全である。 これにより「鍵配布問題」を解決出来る。
例) RSA(新)
○一方向HASH関数(one-way hash function)
改ざんを防ぐ為、特殊な『チェックサム』アルゴリズムを使ってファイルの「指紋」をとる。
例) MD4/MD5(古) SHA-1(新)
○メッセージ認証コード
共有鍵つきの一方向HASHを使って通信内容の改竄を防ぐ
○デジタル署名 (digital signature)
RSAを逆向きに使う(暗号化鍵をプライベートキーとし、復号化鍵を公開する)。 復号化鍵から暗号化鍵を推測する事は極めて困難であるため、暗号化された文章が公開鍵で正しく復号化出来ればそれが正当であると判定する方法。
○証明書 (public-key certivicate)
デジタル署名で公開されている復号化鍵が改竄されていないか判定するために、復号化鍵に更にデジタル署名する事。 証明書は、一般的にはX.509と呼ばれる復号化鍵だけでなくそれ以外の付属情報を含んだ証明書規格を利用する。 規格どおりに作成したファイルに署名する事で証明書を実現する。
○擬似乱数生成
乱数には3つの性質がある。 無作為性(randomness) 予測不可能性(unpredictavility) 再現不可能性 (irreproducibility?) 通常の乱数アルゴリズムは無作為性しか持たないため、これを他の暗号技術を使って予測不可能性を実現する。
───────────────────
ところで、そんななか ... 気になった一文を引用して見たいと思います。
P261 ... 21行目
認証局はどうやって信頼するか
■■■疑問
認証局の働きはおおよそ理解したけれど、結局のところ、堂々巡りになっているような気がします。 公開カギを信頼するためには、証明書を発行した認証局を信頼しなければならないが、それでは認証局はどうやって信頼するのでしょう。別の認証局による証明書があったとしても今度はその認証局をどうやって信頼するか、という問題が生じてしまうのではありませんか。
■■■答え
この疑問は正当です。
この疑問は、『信頼』がどのようにして生まれるかという本質的な問題に関係しているからです。 何故私たちが銀行にお金を預ける事が出来るのか、財布に入っているお札がお店で使えると思うのは何故か、レストランで出される食べ物を食べても安全だと思うのは何故か、……そのほか私たちが毎日経験している「この○○は、この程度に信頼できるだろう」という気持ちはどこから生まれているのでしょうか。
一言で言えば、それは「信頼出来そうに感じるから」「経験上信頼できるから」ということになります。 私たちがある銀行を信頼するのは、テレビや新聞と言った複数のメディアを通して名前や評判を聞き、いかにも信頼できると感じるからです。
認証局を信頼するかどうか、というのも同じ事です。 様々なメディアを通して、その認証局のことを聞き、きちんと機能しているという話を聞いたから、その認証局を信頼するのです。 社内で使う認証局なら、社内で正式なアナウンスがあり、自分の上司に「ここがわが○○者の認証局だ」といわれるから信頼するのです。 全く見知らぬ人からメールとURLが届き、「○○社の認証局はここです」といわれても、信用は出来ません。
証明書を利用できるメールソフトやWebブラウザには、有名な認証局の証明書が最初から組み込まれています。私たちは通常、ソフトウェアに組み込まれている証明書を自分で再確認したりしません。 それは、ソフトウェアの作成者を信用している事になります。 有名なソフトウェアなら、そんなところに悪意を持った認証局の証明書を含めたりはしないだろう、と考えている事になります(考えていなくても、結果的にそういう態度をとっているわけです)。
この様に考えてくると、例え階層構造を持っている認証局であっても、実際の「信頼」を支えているのは単純な階層ではない、ということがわかります。証明書の連鎖が階層構造であろうと無かろうと、その認証局を信用する理由は、複数の信頼できる情報源からの情報に基づいているのです。
...
コンピュータを使っても、無から有を生じる事は出来ません。デジタル署名を使っても、証明書を使っても、認証局を階層化しようとも、何も信頼できない状態から信頼を作り出す技術はまだ生み出されていません。 メールが届く、電話が通じる、住所が実在する、本人の身分証明書がある、身分証明書の写真と本人の顔が一致する、と言った「何らかの信頼」を種として、そこから別の信頼を引き出しているだけなのです。
...
───────────────────
僕は、この文章を読んで、なんとなく、コンピューターと人の接点が見えるような気がしました。
コンピューターと人の接点というのは、すごく大切な問題だと思うのです。 コンピューターというのは、マクルーハンの言葉を借りて言えば、人の脳の延長に他ならないと僕は思うのです。が、肝心の、その延長を作っているプログラマは、いまいち人というものを理解していないと僕は感じます。 また、残念な事に、人を理解している人は、いまいちコンピューターを理解していないと感じます。
僕は、こういう視点を、徹底的に深く、もっと具体的で、かつ、ありがちな空想で終わらない、実用的な形で考えていきたいな、と思いました。
暗号技術入門 -- 結城 浩 著 (秘密の国のアリス)
http://www.hyuki.com/cr/
です。 普段何気なく聞いている暗号関連の単語ですが、その意味を解説するのみにとどまらず、実装レベルからステップを追いながらとても解かり易く書いてあり、素晴らしい名著だと思いました。 信じられないほど解かり易く、ものすごく良くまとまっていると思いました。
デジタル署名って、RSAの真逆の処理なんですね。 その他色々と頭がすっきりしました。 何度も読んで暗号化のフローを頭に叩き込もうと思いました。
【暗号学者の6つの道具】
○対称暗号( Symmetric cryptography)
暗号化するときと複合化するときの鍵が等しい。 そのため、実用時には必ず「鍵配布問題 (key distribution problem)」が発生する。(鍵を送りたいので暗号化して送る。その為の鍵を暗号化して送る。 その為の鍵を暗号化して送る。 その為の鍵を暗号化して送る。 ...(永遠に続く) )
例) DES(古) / AES(新) (Rijndael) 等々
○公開鍵暗号
暗号化鍵と復号化鍵が分かれている。 暗号化鍵から復号化鍵を推測する事が極めて難しいため、自分の暗号化鍵を広く人々に知らせても安全である。 これにより「鍵配布問題」を解決出来る。
例) RSA(新)
○一方向HASH関数(one-way hash function)
改ざんを防ぐ為、特殊な『チェックサム』アルゴリズムを使ってファイルの「指紋」をとる。
例) MD4/MD5(古) SHA-1(新)
○メッセージ認証コード
共有鍵つきの一方向HASHを使って通信内容の改竄を防ぐ
○デジタル署名 (digital signature)
RSAを逆向きに使う(暗号化鍵をプライベートキーとし、復号化鍵を公開する)。 復号化鍵から暗号化鍵を推測する事は極めて困難であるため、暗号化された文章が公開鍵で正しく復号化出来ればそれが正当であると判定する方法。
○証明書 (public-key certivicate)
デジタル署名で公開されている復号化鍵が改竄されていないか判定するために、復号化鍵に更にデジタル署名する事。 証明書は、一般的にはX.509と呼ばれる復号化鍵だけでなくそれ以外の付属情報を含んだ証明書規格を利用する。 規格どおりに作成したファイルに署名する事で証明書を実現する。
○擬似乱数生成
乱数には3つの性質がある。 無作為性(randomness) 予測不可能性(unpredictavility) 再現不可能性 (irreproducibility?) 通常の乱数アルゴリズムは無作為性しか持たないため、これを他の暗号技術を使って予測不可能性を実現する。
───────────────────
ところで、そんななか ... 気になった一文を引用して見たいと思います。
P261 ... 21行目
認証局はどうやって信頼するか
■■■疑問
認証局の働きはおおよそ理解したけれど、結局のところ、堂々巡りになっているような気がします。 公開カギを信頼するためには、証明書を発行した認証局を信頼しなければならないが、それでは認証局はどうやって信頼するのでしょう。別の認証局による証明書があったとしても今度はその認証局をどうやって信頼するか、という問題が生じてしまうのではありませんか。
■■■答え
この疑問は正当です。
この疑問は、『信頼』がどのようにして生まれるかという本質的な問題に関係しているからです。 何故私たちが銀行にお金を預ける事が出来るのか、財布に入っているお札がお店で使えると思うのは何故か、レストランで出される食べ物を食べても安全だと思うのは何故か、……そのほか私たちが毎日経験している「この○○は、この程度に信頼できるだろう」という気持ちはどこから生まれているのでしょうか。
一言で言えば、それは「信頼出来そうに感じるから」「経験上信頼できるから」ということになります。 私たちがある銀行を信頼するのは、テレビや新聞と言った複数のメディアを通して名前や評判を聞き、いかにも信頼できると感じるからです。
認証局を信頼するかどうか、というのも同じ事です。 様々なメディアを通して、その認証局のことを聞き、きちんと機能しているという話を聞いたから、その認証局を信頼するのです。 社内で使う認証局なら、社内で正式なアナウンスがあり、自分の上司に「ここがわが○○者の認証局だ」といわれるから信頼するのです。 全く見知らぬ人からメールとURLが届き、「○○社の認証局はここです」といわれても、信用は出来ません。
証明書を利用できるメールソフトやWebブラウザには、有名な認証局の証明書が最初から組み込まれています。私たちは通常、ソフトウェアに組み込まれている証明書を自分で再確認したりしません。 それは、ソフトウェアの作成者を信用している事になります。 有名なソフトウェアなら、そんなところに悪意を持った認証局の証明書を含めたりはしないだろう、と考えている事になります(考えていなくても、結果的にそういう態度をとっているわけです)。
この様に考えてくると、例え階層構造を持っている認証局であっても、実際の「信頼」を支えているのは単純な階層ではない、ということがわかります。証明書の連鎖が階層構造であろうと無かろうと、その認証局を信用する理由は、複数の信頼できる情報源からの情報に基づいているのです。
...
コンピュータを使っても、無から有を生じる事は出来ません。デジタル署名を使っても、証明書を使っても、認証局を階層化しようとも、何も信頼できない状態から信頼を作り出す技術はまだ生み出されていません。 メールが届く、電話が通じる、住所が実在する、本人の身分証明書がある、身分証明書の写真と本人の顔が一致する、と言った「何らかの信頼」を種として、そこから別の信頼を引き出しているだけなのです。
...
───────────────────
僕は、この文章を読んで、なんとなく、コンピューターと人の接点が見えるような気がしました。
コンピューターと人の接点というのは、すごく大切な問題だと思うのです。 コンピューターというのは、マクルーハンの言葉を借りて言えば、人の脳の延長に他ならないと僕は思うのです。が、肝心の、その延長を作っているプログラマは、いまいち人というものを理解していないと僕は感じます。 また、残念な事に、人を理解している人は、いまいちコンピューターを理解していないと感じます。
僕は、こういう視点を、徹底的に深く、もっと具体的で、かつ、ありがちな空想で終わらない、実用的な形で考えていきたいな、と思いました。
コメント一覧
さい 2006年12月12日 00:51
面白いね。
「信じられると感じる」から得られる信頼もあるし、
「再現性がある」から得られる信頼性もある。
「信じられると感じる」から得られる信頼もあるし、
「再現性がある」から得られる信頼性もある。
おかあつ 2006年12月12日 01:06
>「信じられると感じる」から得られる信頼もあるし、
>「再現性がある」から得られる信頼性もある。
そうだね...。
コンピューターって言うのは、全てが「確実で一つだけの答えがある」問題だと思うんだけど、人っていうのは、確実で一つだけの答えなんかありえない、実は宙ぶらりんな、存在なんだよね。
その両方を理解できるようになりたい。
>「再現性がある」から得られる信頼性もある。
そうだね...。
コンピューターって言うのは、全てが「確実で一つだけの答えがある」問題だと思うんだけど、人っていうのは、確実で一つだけの答えなんかありえない、実は宙ぶらりんな、存在なんだよね。
その両方を理解できるようになりたい。
tear 2006年12月12日 13:57
結城浩さんのホムペのコラムとか本をJavaを勉強してた頃ずっと励みにしてました。いつも行き詰まっていたので、どうとりかかったらよいのか解らない時、根本から問題をときほぐしてくれるのです。ああいう考え方を表情出来るのってスゴいです。偉大なやわらかアタマです。コンピュータを説明するとき、まるでコンピュータの事を話しているみたいじゃないみたいに語る人が好きなのですが、こういう人って右脳も左脳も同時に働いているような共通点を感じます。