わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

例題から始めよう

いきなりですが問題です.

以下の暗号プロトコルは安全でない.なぜか.

  1. Alice→Trent: E(K(a),r), a, b
  2. Trent→Alice: E(K(b),r)
  3. Alice→Bob: E(K(b),r), E(r,m)

前提

  • 安全な対称暗号E(鍵と平文を引数にとる)を用いて秘密通信をしたい.
  • AliceとTrentは鍵K(a)を,BobとTrentは鍵K(b)を共有する.Trentは「信頼される第三者」であり,ユーザごとに異なる鍵を共有し,これが漏洩することはない.
  • rはセッション鍵と呼ばれる.通信のたびに異なる乱数である.
  • 「X→Y: M」は「XからYにメッセージMを送る」という意味.またメッセージ中の「a」「b」はそれぞれ「Aliceの名前」「Bobの名前」の略記.

情報セキュリティの問題です.試験に出すことは,ないようにします.
ちょっと前提が多いのですが,対称暗号を知っていれば(すなわち,私の授業の第3回を聞いていれば)問題文は理解できると思います.
授業(第5回)で言っていなかったことを補足します.n人で対称暗号を使って相互に秘密通信するには,トータルn(n-1)/2個の鍵が必要になる,と説明しましたが,上の方法は,n+1人(+1はTrentの分)で,信頼される第三者と各人とで鍵を共有して運用するなら,鍵の総数はn個で済みます.nの2乗からnにオーダーが減ったので,良さそうに見えますが*1,信頼される第三者の暗号化・復号の負担が大きくなるという問題があります.
そこでセッション鍵を秘密に受け渡すまでは信頼される第三者を介し,受け渡し(鍵の共有)が完了すれば,信頼される第三者は関わらない,という方針なのが,上の通信手順です.「通信手順」は「プロトコル」とも呼ばれ,通信に暗号を用いているので,「暗号プロトコル」といいます.
情報セキュリティの授業では,ここ数年,上の暗号プロトコルは取り上げていません.はじめのころの年度では説明していましたし,他学科向け科目で,解説していたこともありました.なぜ取り上げないのかというと,当初は教科書として,現在は参考書としている『暗号技術入門 秘密の国のアリス』の中に,少し異なる暗号プロトコルの説明があるからです.
2日連続で恐縮ですが,なぜ安全でないかを説明するのは,差し控えたいと思います.ただ,「Alice(あるいはa)」「Bob(あるいはb)」と,具体的な名前や定数を使用していますが,Trentの動作は「E(K(x),z), x, yという情報が送られてきたら,K(x)で復号してK(y)で暗号化し,E(K(y),z)を返す」のだ,というのを理解する必要があります.
この問題は,私が大学院に入り暗号の研究をすると決めたときに,教授から研究の大まかな目標(項書換え系を用いて暗号プロトコルの安全性を検証できるようにすること)を聞いた上で,「まず考えてみなさい」と言われた課題です.対称暗号・公開鍵暗号の違いを,春休みに本を1冊読んで理解していた,というくらいの知識しかありませんでした.ホワイトボードに書かれたのを紙に写し取り,自分の机の前であれこれ考え,帰りの学園前駅快速急行を待っているときに,答えがひらめき,帰宅してから清書したのを思い出します.教授ではなくドクターコースの方にメールを送ると.「それで正解.〜〜でもかまいません」と,別解をいただいたことも,記憶によみがえってきます.
伝統的に,この問題の示唆するものは,「暗号アルゴリズムが安全であっても,それを用いた暗号プロトコルが安全であるとは限らない」なのですが,最近私はこの問題に,別の意味を持たせつつあります.それは,研究を始める人に与える,具体的な課題・例題の大切さです.
というのも,私が大学院生だったころは,自分がどんな目標を持ってどんな研究をしているかを学内で発表するのは,年に1回,秋か冬でした.なので年度の前半は,課題や先行論文の中で模索でき,後期にその活動内容を取りまとめるという余裕がありました.
しかし現在はと言うと,研究グループ内の小ゼミにせよ,クラスタの大ゼミにせよ,ゴールデンウィークより前に,研究紹介をしないといけない学生がいます.
明らかに,先に発表する人のほうが損です.研究内容が整理されておらずよく分からないだとか,研究の手順は了解だが有用性がいまいち理解できないだとか,言われがちです.
しかし研究グループなりクラスタなりで,年間スケジュールというのがあるので,「発表を後にしてください」と主張するわけにはいきません.そこで限られた期間内に話すべきことを整理し,プレゼンすることになります.さて,どこに力点を置いて,話せばいいのでしょうか?
指導教員のポリシーにもよるのでしょうが,私は,研究発表はコミュニケーションの場なのであり,したがって手法・手順だけでなく,その分野でよく知られた例題や,未解決あるいは解決された具体的な問題を提示することは,研究活動に説得力を持たせまた議論を活発化させる,極めて重要な行為だと,ここしばらくの発表と質疑を見聞きして,考えるようになりました.
もちろんその例題にこだわるあまり,(例題にすぎないのに)例題こそ解くべき課題,ゴールだと誤解されてしまってはいけません.それは例えば,その例題の中にどんな構造が含まれているかを指摘することで,回避できるものです.
卒業研究と違うテーマで修士論文のための研究をすることになった人は,自分が理解でき,プレゼンを通じて親しみを持ってもらえそうな「例題」がないか,探してみてはいかがでしょうか.データベース関係であれば,実データを「揉んでみる」というのも,手です.
卒業研究を発展させるという人は,例題から始めるわけにはいかないでしょう.しかし,卒研活動で得た具体的な「成果」を示してから,それを踏まえて次にどんなことをしたいか,何を明らかにしたいかを提案すれば,これまた研究を周囲に理解してもらいやすくなるはずです.

*1:セキュリティから離れますが,乱立する画像フォーマットを相互に変換するプログラムを作るとなると,フォーマット数nに対して,n(n-1)個のプログラムが必要ですが,一つフォーマットを決め,それとの相互変換プログラムを作るのなら,2n個のプログラムで済む,という考え方でできたフォーマットがpbm (pgm, ppm, pnm)である…というのは,暗号理論を学ぶよりたしか後に学んだことです.