2011 Future University Hakodate 2011 System Information Science Practice Group Report Project Name Visualization of Code-Breaking Group Name Implemati

40 

Loading....

Loading....

Loading....

Loading....

Loading....

全文

(1)

グループ報告書

Future University Hakodate 2011 System Information Science Practice Group Report

プロジェクト名

暗号解読の可視化

Project Name

Visualization of Code-Breaking

グループ名

実装グループ

Group Name

Implemation Group プロジェクト番号/Project No. 13-C

プロジェクトリーダ

/Project Leader

1009087 大久保貴裕 Takahiro Okubo

グループリーダ

/Group Leader

1009087 大久保貴裕 Takahiro Okubo

グループメンバ

/Group Member

1009084 青塚佳祐 Keisuke Aotuka 1009085 稲熊卓記 Takahumi Inaguma 1009087 大久保貴裕 Takahiro Okubo

指導教員

白勢政明 小西修

Advisor

Masaaki Shirase Osamu Konishi

提出日

2012年1月18日

Date of Submission

(2)

本プロジェクトでは暗号の解読を可視化し暗号に興味のない人にも楽しんでもらえるような装 置を実装する。まずはPARI/GPを用いて暗号の基礎について学ぶ。その後、誕生日パラドッ クスグループ、RSA暗号グループ、楕円曲線暗号グループ、実装グループの4つのグループに 分かれて暗号について学習する。実装グループはアプリケーション作成のための環境を作り、 誕生日パラドックスグループ、RSA暗号グループ、楕円曲線暗号グループはそれぞれ基礎知識 を学びながらアプリケーションの実装に向け活動している。RSA暗号は桁の大きい数の素因 数分解の難しさより安全性が確保されている暗号であり、広く一般的に使われている。また楕 円曲線暗号は比較的新しい暗号でRSA暗号よりも計算時間が短く処理も早いがRSA暗号と 同等の処理ができる。広く一般的に使われており、一般の人がイメージする共通鍵暗号の解読 には頻度分析のような考え方が必要となる。これに対して公開鍵暗号であるRSA暗号や楕円 曲線暗号は誕生日パラドックスの考え方を利用して解読することができる。そのため誕生日パ ラドックスは暗号の世界ではとても重要である。本プロジェクトではこのようなことをわかり やすく可視化するためのアプリケーションを実装したい。 キーワード キーワード   公開鍵暗号,誕生日パラドックス,RSA暗号,楕円曲線暗号 (文責:稲熊卓記)

(3)

This project implements a device for person who are not interested in to enjoy by visualization of decryption. Firstly, we learn about basics of cryptography using PARI/GP.Then, we divide into for groups, Birthday paradox, RSA cryptography, Elliptic Curve Cryptography, Implementation and learn it about a code.Implementation made environment for Application.Birthday paradox, RSA cryptography and Elliptic Curve Cryptography were active toward the implementation of the application while learning basic knowledge each.RSA cryptography is generally used widely because safety is secured by prime factoring of big numerical of the figure.

Elliptic Curve Cryptography is a relatively new code.Elliptic Curve Cryptography can handle the processing that is equal to RSA cryptography in short time.Decipher of Symmetric key cryptography which many persons images needs thought such as the Frequency analysis.On the other hand, public key cryptosystems such as RSA and el-liptic curve cryptographies can decipher by using a way of thinking of Birthday para-dox.Therefore the birthday paradox is very important in the world of the code.We want to implement plain visualization of the decryption by this project.

Keyword Public key cryptosystem, Birthday Paradox, RSA cryptography, Elliptic Curve Cryptography

(4)

目次

1章 背景 1 1.1 前年度の成果 . . . 1 1.2 現状における問題点 . . . 1 1.3 課題の概要 . . . 1 第2章 到達目標 2 2.1 本プロジェクトにおける目的 . . . 2 2.2 通常の授業ではなく、プロジェクト学習で行う利点. . . 2 2.3 具体的な手順・課題設定 . . . 3 2.3.1 目的 . . . 3 2.3.2 課題設定 . . . 4 第3章 可視化で扱う暗号 5 3.1 RSA暗号 . . . 5 3.1.1 背景 . . . 5

3.1.2 PGP(Pretty Good Privacy)が普及に至るまで . . . 5

3.2 楕円曲線暗号 . . . 6 3.2.1 概要 . . . 6 3.2.2 実装例 . . . 6 3.3 IDベース暗号 . . . 7 3.3.1 概要 . . . 7 3.3.2 適用法 . . . 7 3.3.3 PKI(公開鍵基盤) . . . 8 3.3.4 公開鍵証明書 . . . 8 3.4 IDベース暗号の利点と欠点 . . . 8 3.4.1 IDベース暗号の利点 . . . 8 3.4.2 IDベース暗号の欠点 . . . 8 3.5 タイムリリース暗号 . . . 9 3.5.1 概要 . . . 9 3.5.2 タイムリリース暗号の秘密鍵、公開鍵 . . . 9 第4章 到達目標 10 4.1 アプリケーションの作成における課題設定 . . . 10 4.2 アプリケーションの開発における問題点. . . 10 4.2.1 テキストの読み込み . . . 10 4.2.2 ビューの切り替え . . . 10 4.2.3 テキストの色付け . . . 10 第5章 課題解決のプロセス 12

(5)

5.2 各人の課題の概要とプロジェクト内における位置づけ . . . 13 5.2.1 青塚佳祐の担当課題 . . . 13 5.2.2 稲熊卓記の担当課題 . . . 13 5.2.3 大久保貴裕の担当課題 . . . 14 5.3 担当課題解決過程の詳細 . . . 14 5.3.1 青塚佳祐 . . . 14 5.3.2 稲熊卓記 . . . 15 5.3.3 大久保貴裕. . . 16 第6章 頻度分析プログラム作成の概要 18 6.1 頻度分析の概要. . . 18 6.2 プログラム開発∼暗号化 . . . 18 6.3 プログラム開発過程∼文字の出現頻度計算 . . . 19 6.4 プログラム開発過程∼文字の変換 . . . 19 6.5 前期の活動と後期の活動の結びつき . . . 19 6.6 アプリケーションへの引継ぎ . . . 20 第7章 プログラム試験運用 21 7.1 実験の目的 . . . 21 7.2 実験手続き . . . 21 7.3 実験内容 . . . 21 7.4 実験結果 . . . 22 7.5 実験成果 . . . 22 7.6 実験を終えて . . . 23 第8章 結果 24 8.1 成果. . . 24 8.2 課題の解決手順. . . 24 8.2.1 前期での課題 . . . 24 8.2.2 後期での課題 . . . 25 第9章 発表会評価 27 9.1 中間発表の評価について . . . 27 9.2 最終発表の評価について . . . 28 第10章 相互評価 29 10.1 大久保貴裕に対する評価 . . . 29 10.2 稲熊卓記に対する評価 . . . 29 10.3 青塚圭祐に対する評価 . . . 29 第11章 まとめ 30 11.1 プロジェクトの成果 . . . 30 11.2 各人の役割 . . . 30

(6)

付録A 新規習得技術 32

付録B 活用した講義 33

(7)

1

章 背景

情報化社会の現代においてインターネットというのは身近な存在になっている。携帯電話やパソ コンから誰でも気軽にアクセスができるようになった。インターネットがつながっている場所なら ばどこでも世界中の人とコミュニケーションが取れたり、どのようなことが起こっているかなどの 情報を得ることができる。しかしこれは第三者が簡単に他人の情報を得ることができたり他人にな りすましたりすることができるようになってしまったといえる。インターネットを利用する上でこ のようなことを防ぐためにもセキュリティ技術は欠かすことができないものである。  セキュリティ技術の中でも暗号技術というのは広く使用されているものである。暗号化は第三者 に通信内容を見られても読めないように変換する表記法で特殊な知識がない限りは見ることができ ない。通信のみでなく保管する文章などにも使用できる。  しかしインターネット利用に置いて重要で身近なものでも一般には認識が薄いところがある。パ スワードを覚えやすい簡単な文字列にしたり、他人に分かってしまうようなものにしてしまうなど 意識の低さが見られるところがある。 (文責:稲熊卓記)

1.1

前年度の成果

インターネットとセキュリティ技術は常に一緒になくてはならないものである。前年度ではセ キュリティ技術の中でも暗号に着目しその歴史を通じて暗号に関心を持ってもらうという活動を行 なっていた。その中でセキュリティ対策の重要性を理解してもらうものだった。 (文責:稲熊卓記)

1.2

現状における問題点

非常に重要で身近に使われている暗号だが一般にはあまり関心が持たれていない。暗号と聞くと 難しく堅苦しいなどのイメージを持っている人が多いかもしれない。さらにインターネットを使う 上でもパスワードを自分で設定することがあっても暗号に直接触れる機会は少ない。 (文責:稲熊卓記)

1.3

課題の概要

暗号というものは誰もが直接目に見えて使うものではない。そこで私たちは暗号の解読を目に見 える形で行いさらに楽しんでもらえるような形で行うことで暗号というもののマイナスのイメージ を消し、もっと身近に感じてもらおうとした。 (文責:稲熊卓記)

(8)

2

章 到達目標

2.1

本プロジェクトにおける目的

 今、世界中でインターネットが普及している。このように世界がつながっている中で安全にイ ンターネットを利用できている理由として挙げられるのが「さまざまな暗号の利用」である。私た ちのプロジェクトの目標としては、多くの人に暗号に興味を持ってもらうために、さまざまな暗号 (RSA暗号や楕円曲線暗号など)を目に見えるように可視化しようというものである。このような 可視化をしようと思った理由は、多くの人が暗号に対して「複雑なイメージがある」や「大変そう」 といった学ぶことに対してのマイナスの考えが多いだろうということで、暗号をより身近に感じて もらおうと考えたからである。これにより、現在私たちが生きている中で暗号が広く使われている ことを感じ取ることができ、暗号の大切さ・重要さを再認識できるだろう。これらのことを学びな がら暗号の基礎を知り、可視化するための方法などについて考えていき、アプリケーションを作成 するのが私たちの目的である。 (文責:稲熊卓記)

2.2

通常の授業ではなく、プロジェクト学習で行う利点

 プロジェク学習では1年間を通じて、教授たちが掲げたあるテーマに対して学生たちが集い学 習する。そして、テーマに対してプロジェクトとしての目標を全員が集まり設定する。これは他の 学習法とは大きく異なる。それは個人ではなくチームで行うという利点である。個人では、全て自 分で考えて行動しなければならない。それに対して、プロジェクト学習ではチームで行うため、あ ることを考えるときに様々な意見や考え方を得ることができるという利点がある。  個人の時には自分の考えを客観的に見ることは難しい。しかし、チームでは自分の意見を他の人 に客観的に見てもらうことができる。また、チームということで多くの意見や助言をもらうことが でき、物事を早く進めることができる。そのようなディスカッションを繰り返すことによって、多 くの考え方を知ることができたり、自分の考え方を見つめ直すことができるので、それぞれの考え をよりよい方向に持っていくことができる。  さらに、プロジェクト学習は教授たちのもとで行う活動であるので、多くの経験をしてきた教授 たちからも意見や助言を得ることができる。また、より実践的な取り組みをすることができる。こ れにより、多くの経験を積み、能力を向上させることができる。  このように、プロジェクト学習では他の講義ではできない経験をすることができ、多くの知識を 身につけることができる。そして、これらの経験は私達が社会人になったときに生きてくると思わ れる。 (文責:稲熊卓記)

(9)

2.3

具体的な手順・課題設定

2.3.1

目的

 本プロジェクト全体の目的は、上で挙げた通りさまざまな暗号の可視化である。様々な暗号と いうことで本プロジェクトでは4つのグループに分かれて作業を進めた。4つのグループというこ とで、誕生日パラドックス班・RSA暗号班・楕円曲線暗号班・実装班に分かれ、各々のグループで 目標を定めて前期の作業を行った。  誕生日パラドックス班の前期の目標は、誕生日パラドックスの基礎を学び、スライドを使って他 の人に説明できることとした。また、換字式暗号のプログラム作成や頻度分析についても理解しよ うというのを目標とした。

 RSA暗号班の前期の目標は、まずはRSA暗号の基本的な構造を学ぶということである。RSA

暗号の考え方や使用例などを学び、数学的な考えや誕生日パラドックスとの関連性などについても 理解することを目標とした。また、RSA暗号の複雑さを理解するためにRSA暗号の解読プログラ ムの作成も目標として掲げた。  楕円曲線暗号班の前期の目標は、まず楕円曲線暗号の基本構造を理解することとした。その後、 楕円曲線暗号の実装プログラムを組むことを目標とし、解読のプログラム作成のためのρ法を学 び、解読プログラムの作成をしようと考えた。  実装班の前期の目標は、暗号解読の可視化をするためにアプリケーション開発に関しての知識を 増やしたり、アプリケーション開発環境の整理などとした。また、中間発表の際のポスターをイラ ストレーター使い製作することを目標とした。   また、情報化社会の現代においてインターネットというのは身近な存在になっている。携帯電 話やパソコンから誰でも気軽にアクセスができるようになった。インターネットがつながっている 場所ならばどこでも世界中の人とコミュニケーションが取れたり、どのようなことが起こっている かなどの情報を得ることができる。しかしこれは第三者が簡単に他人の情報を得ることができたり 他人になりすましたりすることができるようになってしまったといえる。インターネットを利用す る上でこのようなことを防ぐためにもセキュリティ技術は欠かすことができないものである。 セ キュリティ技術の中でも暗号技術というのは広く使用されているものである。暗号化は第三者に通 信内容を見られても読めないように変換する表記法で特殊な知識がない限りは見ることができな い。通信のみでなく保管する文章などにも使用できる。 しかしインターネット利用に置いて重要 で身近なものでも一般には認識が薄いところがある。パスワードを覚えやすい簡単な文字列にした り、他人に分かってしまうようなものにしてしまうなど意識の低さが見られるところがある。  これにより、現在私たちが生きている中で暗号が広く使われていることを感じ取ることができ、 暗号の大切さ・重要さを再認識できるだろう。これらのことを学びながら暗号の基礎を知り、可視 化するための方法などについて考えていき、アプリケーションを作成するのが私たちの目的であ る。非常に重要で身近に使われている暗号だが一般にはあまり関心が持たれていない。暗号と聞く と難しく堅苦しいなどのイメージを持っている人が多いかもしれない。さらにインターネットを使 う上でもパスワードを自分で設定することがあっても暗号に直接触れる機会は少ない。

(10)

2.3.2

課題設定

本プロジェクトの目的は可視化ということなのでその方法について考えた。大きな考えとしては iPadを使った可視化である。本プロジェクトのプロセスとして、まずはPARI/GPという高速計 算機の使い方を学んだ。また、暗号というものには共通鍵暗号と公開鍵暗号があるので、その2種 類についての概要を学んだ。その後、各々の班に分かれて作業を行った。ここから各々の班につい てのプロセスについてまとめる。  誕生日パラドックス班の課題に対するプロセスは、まず誕生日パラドックスの基本構造を理解す ることから始め、頻度分析なども理解するように勤めた。また、それらをスライドで説明する方法 を考えた。頻度分析やシーザー暗号のプログラムの作成をし、その実装なども行った。  RSA暗号班の課題に対するプロセスは、RSA暗号の基本的な構造の理解や数学的な考えの理解 をし、素因数分解の重要性などを学んだ。他にも誕生日パラドックスとの関連性を学び、それを実 装する段階で理解した。また、PARI/GPという高速計算機を用いてRSA暗号の解読プログラム の作成も行った。  楕円曲線暗号班のプロセスとしては、まず数学的な楕円曲線について学び、その後楕円曲線暗号 の基本的な構造の理解を行った。解読のために必要なρ法という解読方法を学んだ。また、楕円曲 線暗号のプログラム作成や解読プログラムの作成なども行った。  実装班のプロセスとしては、可視化をするにあたってのアプリケーションの開発環境を整えると いうことでアプリケーションを開発するための勉強を行った。その後、Macを使ってiPad上での 開発環境の整理を行い、後期にアプリケーションを製作できるようにした。  暗号には堅苦しい・難しいなどのマイナスなイメージをする人が多くいる。このようなイメージ を払拭するために、暗号を身近なものとして認識してもらい、そこからセキュリティ対策に関心を 持ってもらう必要がある。  そこで、本プロジェクトは暗号についてわかりやすい説明をし、多くの人に暗号を理解してもら うことを目標とした。具体的には、暗号の可視化を行い、実際に暗号がどのようなものかを理解し てもらうようにすることを目標とした。これが達成されることで、多くの人にセキュリティ対策の 重要性を理解してもらおうとした。 (文責:稲熊卓記)

(11)

3

章 可視化で扱う暗号

3.1

RSA

暗号

 この章では、RSA暗号の背景、仕組みについて記す。

3.1.1

背景

 現代社会では、世界中で情報化が進んでおり、日々多くの情報がネットワークを介してやり取 りされている。しかしネットワークを用いることで利便性が高まった反面、その情報が漏えいした り改ざんされる可能性も高まったのである。そうした外部からの攻撃から情報を守るために、暗号 技術はとても重要な要素とされている。  現代では、主にRSA暗号が用いられている。また、RSA暗号はこのデータ暗号化方式を考察し たMITの発明者3人(Rivest, Shamir, Adleman)の頭文字をとって名付けられた。

 しかし、RSA暗号が開発された段階では、実用上大きな問題が残されていた。それは、RSA暗 号による暗号化には莫大な計算力が必要だったため、当時RSA暗号を利用できたのは強力なコン ピューターをもつ政府や軍部、大企業などに限られていて、一般市民はRSA暗号を使うことが出 来なかったことである。  そこで、誰もが簡単にRSA暗号を使えるようにしたいと考えた人物がおり、それがPhilip R. Zimmermann氏であり、PGPとよばれるフリーソフトウェアを世間に広めた人でもある。  PGPが世間に広まったことで、RSA暗号は世界中に広まった。そのような背景から、今では数 多くのユーザに利用されており、現代社会にとってRSA暗号は必要不可欠な暗号技術となった。 (文責:稲熊卓記)

3.1.2

PGP(Pretty Good Privacy)

が普及に至るまで

 現代社会では、世界中で情報化が進んでおり、日々多くの情報がネットワークを介してやり取 りされている。しかしネットワークを用いることで利便性が高まった反面、その情報が漏えいした り改ざんされる可能性も高まったのである。そうした外部からの攻撃から情報を守るために、暗号 技術はとても重要な要素とされている。

 現代では、主にRSA暗号が用いられている。また、RSA暗号はこのデータ暗号化方式を考察し たMITの発明者3人(Rivest, Shamir, Adleman)の頭文字をとって名付けられた。

 しかし、RSA暗号が開発された段階では、実用上大きな問題が残されていた。それは、RSA暗 号による暗号化には莫大な計算力が必要だったため、当時RSA暗号を利用できたのは強力なコン ピューターをもつ政府や軍部、大企業などに限られていて、一般市民はRSA暗号を使うことが出 来なかったことである。  そこで、誰もが簡単にRSA暗号を使えるようにしたいと考えた人物がおり、それがPhilip R. Zimmermann氏であり、PGPとよばれるフリーソフトウェアを世間に広めた人でもある。  PGPが世間に広まったことで、RSA暗号は世界中に広まった。そのような背景から、今では数

(12)

多くのユーザに利用されており、現代社会にとってRSA暗号は必要不可欠な暗号技術となった。 (文責:稲熊卓記)

3.2

楕円曲線暗号

 この章では、楕円曲線暗号についての必要な知識などについて記す。

3.2.1

概要

 楕円曲線暗号は、楕円曲線上の離散対数問題 (EC-DLP) を安全性の根拠とする暗号である。

1985年頃に ビクタ・ミラー(Victor Miller)とニール・コブリッツ(Neal Koblitz) が各々発明し た。具体的な暗号方式の名前ではなく、楕円曲線を利用した暗号方式の総称である。RSA暗号を 楕円曲線上で定義した「楕円RSA」や、DSAを楕円曲線上で定義した楕円DSA (EC-DSA) や、

DH鍵共有を楕円化した楕円DHなどがある。これらのものは公開鍵暗号が多い。EC-DLPを解 く準指数関数時間アルゴリズムがまだ見つかっていないため、それが見つかるまでの間は、RSA 暗号などと比べて、同レベルの安全性をより短い鍵で実現でき、処理速度も速いことをメリットと して、ポストRSA暗号として注目されている。ただしP=NPが成立した場合、EC-DLPを多項 式時間で解くアルゴリズムが存在するということになり、ECCの安全性は崩壊することになって しまう。これは、公開鍵暗号自体が崩壊ということを表している。また、送信者が暗号化時に公開 鍵とは違う適当な乱数を使うので、鍵が同じでも平文と暗号文の関係が1対1でない点にも注意す る必要がある。これは、ElGamal暗号でも同様である。一部の楕円曲線には、DLPを解く多項式 時間アルゴリズムが見つかっているため、注意が必要である。 (文責:稲熊卓記)

3.2.2

実装例

 楕円曲線暗号は、楕円曲線上の離散対数問題 (EC-DLP) を安全性の根拠とする暗号である。

1985年頃に ビクタ・ミラー(Victor Miller)とニール・コブリッツ(Neal Koblitz) が各々発明し た。具体的な暗号方式の名前ではなく、楕円曲線を利用した暗号方式の総称である。RSA暗号を 楕円曲線上で定義した「楕円RSA」や、DSAを楕円曲線上で定義した楕円DSA (EC-DSA) や、

DH鍵共有を楕円化した楕円DHなどがある。これらのものは公開鍵暗号が多い。EC-DLPを解 く準指数関数時間アルゴリズムがまだ見つかっていないため、それが見つかるまでの間は、RSA 暗号などと比べて、同レベルの安全性をより短い鍵で実現でき、処理速度も速いことをメリットと して、ポストRSA暗号として注目されている。ただしP=NPが成立した場合、EC-DLPを多項 式時間で解くアルゴリズムが存在するということになり、ECCの安全性は崩壊することになって しまう。これは、公開鍵暗号自体が崩壊ということを表している。また、送信者が暗号化時に公開 鍵とは違う適当な乱数を使うので、鍵が同じでも平文と暗号文の関係が1対1でない点にも注意す る必要がある。これは、ElGamal暗号でも同様である。一部の楕円曲線には、DLPを解く多項式 時間アルゴリズムが見つかっているため、注意が必要である。 (文責:稲熊卓記)

(13)

3.3

ID

ベース暗号

 ペアリングを利用して実現できる技術がIDベース暗号である。この章では、タイムリリース 暗号の実装において基板となるIDベース暗号の概要とそのアルゴリズムを記す。

3.3.1

概要

 IDベース暗号とは、公開鍵暗号の一種であり識別子を利用した暗号方式である。この暗号で は、利用者の公開鍵として、利用者の識別子に関する一意な情報(利用者のメールアドレスなど) を利用者の公開鍵として用いる。物理的なIPアドレスについても公開鍵として用いることがで き、ユーザのメールアドレス、住所、名前の情報を直接暗号化用の鍵として用いることができる。

ID(Identity)を公開鍵として暗号化することから、「IBE(Identity Based Encryption)」とも呼ば れる。IDベース暗号の暗号化方式は平文、受信者のIDおよび共通パラメータだけを用いて受信者 への暗号文を作成するため、従来の公開鍵暗号のように公開鍵認証センタは必要ない。  ここでのIDとは、個人を特定することが可能な情報の全般を指す。例として住所や氏名、メー ルアドレス、携帯電話の番号などは個人を特定できるためIDとして扱うことが出来る。また、広 い意味でのIDベース暗号では、認証、署名、暗号化等の方式をIDに基づいて実現する方式を言 う。本章でIDと記した場合には、メールアドレスなどの文字列を意味するものと仮定する。  相手のIDから数学的に相手の公開鍵を生成するが、ユーザから見た場合では、相手のIDさえ わかっていると暗号化することが可能となる。また、秘密鍵は鍵サーバで公開鍵と同様に相手の IDから自動的に生成されるので、事前に大量の秘密鍵を生成し、保管しておく必要もない。した がって、運用も容易かつ安全に行える。IDベース暗号はまだ登場したばかりのアルゴリズムであ るが、すでにメールの暗号化などに利用されており、今後が期待される暗号技術の1つである。 (文責:稲熊卓記)

3.3.2

適用法

 IDベース暗号の暗号化方式は、任意の利用者に文字列などの識別子から公開鍵を生成する。 秘密鍵生成局(Private Key Generator:PKG)とよばれる信頼された第三者は、対応する秘密鍵を 生成する。まず、秘密鍵生成局はマスター公開鍵を公開し、マスター秘密鍵を秘密に保持する。マ スター公開鍵が与えられると、利用者は識別子IDに対応する公開鍵をマスター公開鍵と識別子か ら計算できる。この公開鍵を用いて、暗号化を施す。  通常、公開鍵暗号では、暗号化の際に用いる公開鍵の正当性保証のために、公開鍵証明書という データを用いる。これは、公開鍵と利用者を結びつけるための署名付きのデータである。IDベー ス暗号では、IDを公開鍵にできるため公開鍵証明書を用いる手間が省ける点から、便利であると される。今後、PKI(Public Key Infrastructure)との共存を図りながら、多様なセキュリティー ニーズに対応できる方式として注目されている。

(14)

3.3.3

PKI(

公開鍵基盤

)

 PKIとは、企業間取引などでインターネットを利用する際に付きまとうなりすましや盗聴、 改ざんといったリスクに対して、電子署名と暗号技術を兼ね備え、安全な電子通信を確保できるも のを言い、以下の基本要素を含んでいる。  ・鍵と証明書のライフサイクル管理   ・認証機関(CA)機能  ・登録機関(RA)機能  ・証明書の保管、運用ディレクトリの維持  ・完全な証明書失効システム  ・鍵のバックアップとリカバリの仕組み  ・タイムスタンプ機能  PKIの活用により、安全な電子メール(暗号化メール)、安全なインターネット通信(VPN)、安 全なWeb、安全な電子商取引、安全なコンピュータを実現可能となる。 (文責:稲熊卓記)

3.3.4

公開鍵証明書

 公開鍵証明書とは、公開鍵とその所有者の同定情報(その他に有効期間、発行者、署名アルゴ リズムなどの情報も含む)を結びつける証明書である。これはデジタル証明書とも呼ばれる。 (文責:稲熊卓記)

3.4

ID

ベース暗号の利点と欠点

3.4.1

ID

ベース暗号の利点

 ・任意のデータを公開鍵として適用可能。そのため、公開鍵証明書が不要(公開鍵データとID 情報を別々に持つ必要がない)  ・暗号通信に前もって受信者が事前に秘密鍵と公開鍵の鍵ペアを生成する必要がなく、相手の ID(例えばメールアドレス)さえわかれば即座に暗号データを送信することができる。そのため、 従来までの暗号の公開鍵ペアの生成、という作業が不要でRSAのような認証までの手間が省ける。 (文責:稲熊卓記)

3.4.2

ID

ベース暗号の欠点

 ・システムに参加するにあたり、秘密鍵を安全に配送するための利用者と秘密鍵生成局の間に 安全な通信路が必要。

(15)

 ・生成局自体の信頼性が必要。(秘密鍵生成局が利用者の秘密鍵を生成するので、生成局は認証 なしに任意の暗号文を復号でき、また任意のメッセージに署名できる。) (文責:稲熊卓記)

3.5

タイムリリース暗号

 この章では、タイムリリース暗号についての概要とそのアルゴリズムを記す。

3.5.1

概要

 タイムリリース暗号とは、ある時刻がきたら誰でも復号できる、もしくはある時刻が来たら特 定の受信者が複合できるというように受け取った人が指定された時刻にならないと復号化できない ことを特徴とした公開鍵暗号の1つである。  RSA暗号などの従来の暗号では、公開鍵を作成する前に秘密鍵を作成する必要があったが、今 回我々が取り上げたタイムリリース暗号は、指定した時刻が来たら秘密鍵が自動更新されるため、 先に秘密鍵を作らずにいきなり公開鍵を作成できるといった特徴がある。そのため、前もって秘密 鍵を複数つくる必要がないので、従来の暗号と比較して鍵管理が楽になる、不特定多数への配信が 容易にすることができるといった利点がある。  タイムリリース暗号は前章で述べたIDベース暗号に時間的要素を組み込んで応用した暗号化方 式であり、IDベース暗号と同様にペアリング技術を用いて実現できる暗号技術の1つである。 (文責:稲熊卓記)

3.5.2

タイムリリース暗号の秘密鍵、公開鍵

 この節では、タイムリリース暗号の秘密鍵・公開鍵の利用方法について説明する。タイムリ リース暗号では、IDと日付を公開鍵として扱い、自身のメッセージの暗号化に用いる。これらの 2つの公開鍵をもとに、送信者が指定した日時になると初めて受信者は自身のIDに対応する秘密 鍵を得ることができ、送信者から送られてきたメッセージを復号化し、読むことが可能となる。  しかし、IDが同じでも日付によって生成される秘密鍵が異なってくるので、受信者は送信者が 指定した日時以外では復号できない。つまり、送信者が復号出来る時間を指定できるという点がタ イムリリース暗号の大きなメリットとなっている。 (文責:稲熊卓記)  

(16)

4

章 到達目標

4.1

アプリケーションの作成における課題設定

 本プロジェクトではiPad上で動作するアプリケーションを作り、暗号を可視化させ、よりわ かりやすく暗号を説明することを目指した。そのために、どのように可視化を行うのがわかりやす いアプリケーションなのかということを考え、アプリケーションを設計することが課題となった。 (文責:大久保貴裕)

4.2

アプリケーションの開発における問題点

4.2.1

テキストの読み込み

 暗号文のテキストファイルを扱う際にどのようにプログラミングをするかが鍵であるように 思われた。配列によって、それぞれの文字をチェックしてカウントしていく方法も考えられた。し かし、短い文章であればそれはたやすい事だが、長い文章もなるべく扱いたいので、これは現実的 ではないと思われた。そこで、なにか他に方法はないかと探したところ、テキストファイルを一度 に読み込み、テキストの内容を保持するようなメソッドがあることがわかった。今回のアプリケー ションをつくるうえで、これは重要なプログラムの一部になった。 (文責:大久保貴裕)

4.2.2

ビューの切り替え

 今回作成したアプリケーションは複数もの画面を用意する必要があった。ページを用意するに は、元々あったオリジナルのテンプレートを改良していかなければならず、労力のかかる作業で あった。また、新しいファイルもつくる必要があった。それよりも、ページを切り替えて行くほう が新しいファイルをつくる必要もなく、楽にできるのではないかと考えた。具体的には、表示した い画面以外をすべて隠し、表示したい画面だけを現れるようにするというものだ。この作業にはフ ラグを複数用意しなければならず大変ではあったが、直感的にプログラミングができるという利点 があった。このプログラミングをする上で必要になったのは、ビューを隠したり表示させたりする メソッドがあるかどうかということだが、”hidden”というメソッドのYesかNoかを切り替える だけで画面の切り替えをすることができ、問題なくプログラミングをすることができた。 (文責:大久保貴裕)

4.2.3

テキストの色付け

 暗号文を置換していく作業の際に、現在置換している文字と、置換し終わった文字に色をつけ ていくことが決まっていた。文字に色をつけるメソッドはObjective-Cにはあったが、それはラベ

(17)

ルに対して色をつけるメソッドであった。すなわち、テキストにある特定の文字の色を変えるとい うメソッドではなかった。これについて、他のメソッドや、今までとは違う別の色をつける方法を 模索したが、うまくいきそうな方法は見当たらなかった。そこで、暗号文をテキスト文字として扱 うのではなく、画像として扱うという方法が考えられた。これには、置換している文字と、置換さ れた文字に色をつけた暗号文の画像を複数用意する必要があった。しかし、これが最も実現性の高 い方法であったので、この方法が採用された。よって、Open Officeによってテキストに色をつけ、 それを画像ファイルにするために、図形ソフトにより画像として保存する作業が行われた。初めは 手作業で文字に色をつける作業が行われたが、のちに置換する文字を検索して色を付ける作業を行 い、最終的には効率的に色をつける作業が行われた。色をつけた暗号文は図 4.1のようになる。 図4.1 色付けした暗号文 (文責:大久保貴裕)

(18)

5

章 課題解決のプロセス

5.1

課題解決のプロセスの概要

 本プロジェクトの目的は可視化ということなのでその方法について考えた。大きな考えとして はiPadを使った可視化である。本プロジェクトのプロセスとして、まずはPARI/GPという高速 計算機の使い方を学んだ。また、暗号というものには共通鍵暗号と公開鍵暗号があるので、その2 種類についての概要を学んだ。その後、各々の班に分かれて作業を行った。ここから各々の班につ いてのプロセスについてまとめる。  誕生日パラドックス班の課題に対するプロセスは、まず誕生日パラドックスの基本構造を理解す ることから始め、頻度分析なども理解するように勤めた。また、それらをスライドで説明する方法 を考えた。頻度分析やシーザー暗号のプログラムの作成をし、その実装なども行った。  RSA暗号班の課題に対するプロセスは、RSA暗号の基本的な構造の理解や数学的な考えの理解 をし、素因数分解の重要性などを学んだ。他にも誕生日パラドックスとの関連性を学び、それを実 装する段階で理解した。また、PARI/GPという高速計算機を用いてRSA暗号の解読プログラム の作成も行った。  楕円曲線暗号班のプロセスとしては、まず数学的な楕円曲線について学び、その後楕円曲線暗号 の基本的な構造の理解を行った。解読のために必要なρ法という解読方法を学んだ。また、楕円曲 線暗号のプログラム作成や解読プログラムの作成なども行った。  実装班のプロセスとしては、可視化をするにあたってのアプリケーションの開発環境を整えると いうことでアプリケーションを開発するための勉強を行った。その後、Macを使ってiPad上での 開発環境の整理を行い、後期にアプリケーションを製作できるようにした。  本プロジェクト全体の目的は、上で挙げた通りさまざまな暗号の可視化である。様々な暗号とい うことで本プロジェクトでは4つのグループに分かれて作業を進めた。4つのグループということ で、誕生日パラドックス班・RSA暗号班・楕円曲線暗号班・実装班に分かれ、各々のグループで目 標を定めて前期の作業を行った。  誕生日パラドックス班の前期の目標は、誕生日パラドックスの基礎を学び、スライドを使って他 の人に説明できることとした。また、換字式暗号のプログラム作成や頻度分析についても理解しよ うというのを目標とした。

 RSA暗号班の前期の目標は、まずはRSA暗号の基本的な構造を学ぶということである。RSA

暗号の考え方や使用例などを学び、数学的な考えや誕生日パラドックスとの関連性などについても 理解することを目標とした。また、RSA暗号の複雑さを理解するためにRSA暗号の解読プログラ ムの作成も目標として掲げた。  楕円曲線暗号班の前期の目標は、まず楕円曲線暗号の基本構造を理解することとした。その後、 楕円曲線暗号の実装プログラムを組むことを目標とし、解読のプログラム作成のためのρ法を学 び、解読プログラムの作成をしようと考えた。  実装班の前期の目標は、暗号解読の可視化をするためにアプリケーション開発に関しての知識を 増やしたり、アプリケーション開発環境の整理などとした。また、中間発表の際のポスターをイラ ストレーター使い製作することを目標とした。

(19)

(文責:大久保貴裕)

5.2

各人の課題の概要とプロジェクト内における位置づけ

各人の課題の概要とプロジェクト内における位置づけは以下の通りである。

5.2.1

青塚佳祐の担当課題

 青塚佳祐の担当課題は以下の通りである。 4月 暗号についての基礎知識をつける学習。 5月 実装班に配属。 6月 Objective-Cについて学習 7月 Objective-Cについて学習 中間発表に向けての準備 個人報告書の作成 グループ報告書の作成 8月 Objective-Cについての学習 9月 今後の予定の確認 10月 開発環境の構築 11月 アプリケーションの実装 12月 最終発表に向けての準備 個人報告書の作成 グループ報告書の作成 (文責:青塚佳祐)

5.2.2

稲熊卓記の担当課題

 稲熊卓記の担当課題は以下の通りである。 4月 暗号についての基礎知識をつける学習。 5月 実装班に配属。 6月 Objective-Cについて学習 7月 Objective-Cについて学習 中間発表に向けての準備 個人報告書の作成 グループ報告書の作成 8月 Objective-Cについての学習 9月 今後の予定の確認 10月 開発環境の構築 11月 アプリケーションの実装 12月 最終発表に向けての準備 個人報告書の作成

(20)

グループ報告書の作成 (文責:稲熊卓記)

5.2.3

大久保貴裕の担当課題

 大久保貴裕の担当課題は以下の通りである。 4月 暗号についての基礎知識をつける学習。 5月 実装班に配属。 6月 Objective-Cについて学習 7月 Objective-Cについて学習 中間発表に向けての準備 個人報告書の作成 グループ報告書の作成 8月 Objective-Cについての学習 9月 今後の予定の確認 10月 開発環境の構築 11月 アプリケーションの実装 12月 最終発表に向けての準備 個人報告書の作成 グループ報告書の作成 (文責:大久保貴裕)

5.3

担当課題解決過程の詳細

 各人の担当課題の解決過程を詳細に記述する。

5.3.1

青塚佳祐

 青塚佳祐の担当課題の解決過程を詳細に記述する。 4月 各自の自己紹介を終えたあと、担当教員よりプロジェクトの目的や今後の大まかな活動内容 について説明をしていただいた。そして、暗号についての講義を受けた。PARIという計算 アプリケーションを使用し、素因がRSAの暗号に関わっていることを学んだ。素因数分解 が公開鍵、秘密鍵のしくみに深く関わっていることを学んだ。 5月 グループ分けを行った。プロジェクトのメンバーはそれぞれ誕生日パラドックス班、RSA 暗号班、楕円曲線暗号班、実装班にわかれた。この時点ではまだ、PARIを用いた暗号につ いての学習も行なっていた。この時にiPadのアプリケーションをつくる際に何が必要なの かを調べた。また、プロジェクトで購入するもの、必要になるものを考えた。 6月 各自でObjective-Cについての学習を始めた。参考書はプロジェクトの予算で購入し、それ を用いて学習を行った。この時点ではまだノートパソコンなどのプログラミングをするのに 必要なものはそろっていなかったので、本を読んで実際にプログラミングをするまでに、必

(21)

要な知識をなるべく身につけることが重要な課題となった。 7月 引き続きObjective-Cについての学習を行った。この時にもまだノートパソコンやiPadな どは手元になく、Objective-Cをコードを打ち込まずひたすら学習していた。そして、中間 発表会において使用するポスター、スライド、プレゼンテーション用原稿の作成を行った。 中間発表会後は評価シートの集計を行った。また、個人報告書の作成を行った。グループ報 告書では、グループ全体での構成を決定した。それを参考に、メンバー内で担当を分担し、 グループ報告書を作成した。 8月 この期間も、引き続きObjective-Cについての学習を行った。参考書は学校に共用という形 で置いておいたので、各自でウェブページを見て学習した。 9月 前期に問題となったスケジュール管理を改善するために、後期は最初に全体のスケジュール を立てた。また、Objective-Cについての学習も引き続き行った。

10月 Macのノートパソコンが届き、開発環境の構築が行われた。AppleのDeveloper Center

に登録をし、X-Codeをダウンロードしてプログラミング環境を整えた。また、iPadも届い たので、実機テストができるようにDeveloper Centerで登録作業を施し、iPad上でアプリ ケーションが作動できるようにした。この作業をする際は、ビルドエラーが何度も現れ、エ ラーを出ないようにする作業に追われた。この作業に多くの時間を要することになった。 11月 本格的にプログラミングをする作業に入った。アプリケーションのホーム画面を作成し、 ボタンの設置やアクションプログラムの作成を行った。暗号文に色をつける作業について は、当初予定していた方法だと不可能だと判断し、暗号文をテキストではなく画像として扱 い、アニメーションのようにすることに決めた。そこで、タイマー処理のプログラミング コードを書き、画像を一定時間おきに切り替えていき、アニメーションの効果を果たすこと ができた。 12月 最終発表会において使用するポスター、スライド、プレゼンテーション用原稿の作成を行っ た。最終発表会では、プレゼンテーションもした。最終発表会後は評価シートの集計を行っ た。また、個人報告書の作成を行った。グループ報告書では、グループ全体での構成を決定 した。それを参考に、メンバー内で担当を分担し、グループ報告書を作成した。 (文責:青塚佳祐)

5.3.2

稲熊卓記

 稲熊卓記の担当課題の解決過程を詳細に記述する。 4月 各自の自己紹介を終えたあと、担当教員よりプロジェクトの目的や今後の大まかな活動内容 について説明をしていただいた。そして、暗号についての講義を受けた。PARIという計算 アプリケーションを使用し、素因がRSAの暗号に関わっていることを学んだ。素因数分解 が公開鍵、秘密鍵のしくみに深く関わっていることを学んだ。 5月 グループ分けを行った。プロジェクトのメンバーはそれぞれ誕生日パラドックス班、RSA 暗号班、楕円曲線暗号班、実装班にわかれた。この時点ではまだ、PARIを用いた暗号につ いての学習も行なっていた。この時にiPadのアプリケーションをつくる際に何が必要なの かを調べた。また、プロジェクトで購入するもの、必要になるものを考えた。 6月 各自でObjective-Cについての学習を始めた。参考書はプロジェクトの予算で購入し、それ を用いて学習を行った。この時点ではまだノートパソコンなどのプログラミングをするのに

(22)

必要なものはそろっていなかったので、本を読んで実際にプログラミングをするまでに、必 要な知識をなるべく身につけることが重要な課題となった。 7月 引き続きObjective-Cについての学習を行った。この時にもまだノートパソコンやiPadな どは手元になく、Objective-Cをコードを打ち込まずひたすら学習していた。そして、中間 発表会において使用するポスター、スライド、プレゼンテーション用原稿の作成を行った。 中間発表会後は評価シートの集計を行った。また、個人報告書の作成を行った。グループ報 告書では、グループ全体での構成を決定した。それを参考に、メンバー内で担当を分担し、 グループ報告書を作成した。 8月 この期間も、引き続きObjective-Cについての学習を行った。参考書は学校に共用という形 で置いておいたので、各自でウェブページを見て学習した。 9月 前期に問題となったスケジュール管理を改善するために、後期は最初に全体のスケジュール を立てた。また、Objective-Cについての学習も引き続き行った。

10月 Macのノートパソコンが届き、開発環境の構築が行われた。AppleのDeveloper Center

に登録をし、X-Codeをダウンロードしてプログラミング環境を整えた。また、iPadも届い たので、実機テストができるようにDeveloper Centerで登録作業を施し、iPad上でアプリ ケーションが作動できるようにした。この作業をする際は、ビルドエラーが何度も現れ、エ ラーを出ないようにする作業に追われた。この作業に多くの時間を要することになった。 11月 本格的にプログラミングをする作業に入った。アプリケーションのホーム画面を作成し、 ボタンの設置やアクションプログラムの作成を行った。暗号文に色をつける作業について は、当初予定していた方法だと不可能だと判断し、暗号文をテキストではなく画像として扱 い、アニメーションのようにすることに決めた。そこで、タイマー処理のプログラミング コードを書き、画像を一定時間おきに切り替えていき、アニメーションの効果を果たすこと ができた。 12月 最終発表会において使用するポスター、スライド、プレゼンテーション用原稿の作成を行っ た。最終発表会では、プレゼンテーションもした。最終発表会後は評価シートの集計を行っ た。また、個人報告書の作成を行った。グループ報告書では、グループ全体での構成を決定 した。それを参考に、メンバー内で担当を分担し、グループ報告書を作成した。 (文責:稲熊卓記)

5.3.3

大久保貴裕

 大久保貴裕の担当課題の解決過程を詳細に記述する。 4月 各自の自己紹介を終えたあと、担当教員よりプロジェクトの目的や今後の大まかな活動内容 について説明をしていただいた。そして、暗号についての講義を受けた。PARIという計算 アプリケーションを使用し、素因がRSAの暗号に関わっていることを学んだ。素因数分解 が公開鍵、秘密鍵のしくみに深く関わっていることを学んだ。 5月 グループ分けを行った。プロジェクトのメンバーはそれぞれ誕生日パラドックス班、RSA 暗号班、楕円曲線暗号班、実装班にわかれた。この時点ではまだ、PARIを用いた暗号につ いての学習も行なっていた。この時にiPadのアプリケーションをつくる際に何が必要なの かを調べた。また、プロジェクトで購入するもの、必要になるものを考えた。 6月 各自でObjective-Cについての学習を始めた。参考書はプロジェクトの予算で購入し、それ

(23)

を用いて学習を行った。この時点ではまだノートパソコンなどのプログラミングをするのに 必要なものはそろっていなかったので、本を読んで実際にプログラミングをするまでに、必 要な知識をなるべく身につけることが重要な課題となった。 7月 引き続きObjective-Cについての学習を行った。この時にもまだノートパソコンやiPadな どは手元になく、Objective-Cをコードを打ち込まずひたすら学習していた。そして、中間 発表会において使用するポスター、スライド、プレゼンテーション用原稿の作成を行った。 中間発表会後は評価シートの集計を行った。また、個人報告書の作成を行った。グループ報 告書では、グループ全体での構成を決定した。それを参考に、メンバー内で担当を分担し、 グループ報告書を作成した。 8月 この期間も、引き続きObjective-Cについての学習を行った。参考書は学校に共用という形 で置いておいたので、各自でウェブページを見て学習した。 9月 前期に問題となったスケジュール管理を改善するために、後期は最初に全体のスケジュール を立てた。また、Objective-Cについての学習も引き続き行った。

10月 Macのノートパソコンが届き、開発環境の構築が行われた。AppleのDeveloper Center

に登録をし、X-Codeをダウンロードしてプログラミング環境を整えた。また、iPadも届い たので、実機テストができるようにDeveloper Centerで登録作業を施し、iPad上でアプリ ケーションが作動できるようにした。この作業をする際は、ビルドエラーが何度も現れ、エ ラーを出ないようにする作業に追われた。この作業に多くの時間を要することになった。 11月 本格的にプログラミングをする作業に入った。アプリケーションのホーム画面を作成し、 ボタンの設置やアクションプログラムの作成を行った。暗号文に色をつける作業について は、当初予定していた方法だと不可能だと判断し、暗号文をテキストではなく画像として扱 い、アニメーションのようにすることに決めた。そこで、タイマー処理のプログラミング コードを書き、画像を一定時間おきに切り替えていき、アニメーションの効果を果たすこと ができた。 12月 最終発表会において使用するポスター、スライド、プレゼンテーション用原稿の作成を行っ た。最終発表会では、プレゼンテーションもした。最終発表会後は評価シートの集計を行っ た。また、個人報告書の作成を行った。グループ報告書では、グループ全体での構成を決定 した。それを参考に、メンバー内で担当を分担し、グループ報告書を作成した。 (文責:大久保貴裕)

(24)

6

章 頻度分析プログラム作成の概要

6.1

頻度分析の概要

たいていの文章では文字の出現頻度に偏りがある場合が多い。その出現頻度の偏りを利用するこ とで、暗号解読に役立てることができる。そうした暗号解読の方法が頻度分析である。 例えば、 通常の英文において「e」の出現頻度は最も高く、逆に「z」の出現頻度は最も低い。そのため暗号 文で出現頻度の高かった文字から変換していく方法が効果的である。また前置詞や接続詞などは種 類が限られるため文字の予測がしやすい。 頻度分析のデメリットとして、文章が短かった場合は うまく頻度分析がしにくいことが挙げられる。これは、文章が短いと文字の総数が少なくなり、頻 度の偏りがうまく発見できないからである。つまり、頻度分析をする際には文章がある程度長いと いうことが重要視される。 頻度分析を利用する暗号として換字式暗号というものがある。換字式 暗号は暗号化する前の、元文の文字を別の文字に変換している暗号である。原文がアルファベット の文章だとすると、原文のアルファベットを別なアルファベットにそれぞれ置き換えている暗号の ことである。この場合、ただ文字を置き換えているだけなので、全体の文字の個数に変化はない。 例えば、「a」という文字が「b」に置き換えられていた場合、この「a」と「b」の出現頻度は等し い。よって、出現頻度から暗号解読ができるのである。 (文責:大久保貴裕)

6.2

プログラム開発∼暗号化

頻度分析は暗号文を元の文章に戻す解読方法なので、まずは暗号文を用意する必要があった。そ のため、文章を暗号化するプログラムをc言語で作成した。その暗号化プログラムとは換字式暗号 そのものであり、「a」から「z」の26のアルファベットを異なるランダムなアルファベットに変 換するプログラムである。ランダムなアルファベットとは乱数を使うことで生成される。この時、 「a」は「c」に変換され、「b」も「c」に変換されることはない。全て重複することなく別のアルファ ベットに変換される。前期では暗号文はどのように生成されているのか学んでいなかった。そのた め、暗号文に変換するという工程が思いつかなかった。そのため、暗号の知識を調べるために後期 のプロジェクト活動が始まったときに新たに暗号文にはどういう種類があるのか学んだ。  またシーザー暗号と呼ばれる、特定の数だけ文字をずらしているう単一換字式暗号のプログラム も作成した。例えば,「3」だけ文字をずらすように設定すると「a」は「d」に「b」は「e」に変換 される。「z」の場合はアルファベットの最初に戻り3ずらすので「c」となる。この暗号はずらす 文字を設定すると26種類全ての文字が移動するので、他の暗号よりも解読が比較的容易である。 (文責:大久保貴裕)

(25)

6.3

プログラム開発過程∼文字の出現頻度計算

頻度分析を行うには「a」から「z」までの26文字のアルファベットがそれぞれいくつ存在するの か調べる必要があった。そのため暗号化した文章から文字を数え、個数を表示させるというプログ ラムを作成した。この時、文字の頻度を数えることが重要なので、大文字と小文字の区別をせず、 大文字と小文字の個数を合わせて1種類のアルファベットとして計算するようにした。  作成したプログラムは、「aは文章中に○文字存在する」…「zは文章中に○文字存在する」とい う表示にしていた。しかし、1目見ただけでどのアルファベットが多いかを判断するのが難しかっ た。頻度分析グループで作成したプログラムは、最終的にはアプリケーション実装グループでも使 われるため、なるべく見やすくわかりやすいプログラムを作成する必要があった。そのため文字数 の多い順番に並べるように改良した。ただし、文字の頻度によって必ずしも文字が決められている わけではない。そのため文字の出現頻度を確認する専用のプログラムに留まった。 (文責:大久保貴裕)

6.4

プログラム開発過程∼文字の変換

文章の文字の頻度を調べた後は文字を変換する処理が必要であった.そのため、文字を変換する プログラムを作成した。変換前の文字とと変換後の文字を入力し、変換した文章を生成するプログ ラムである。生成する場所は当初テキストファイルを生成して、そこに文章を保存させるような仕 組みにした。しかし、テキストファイルに保存した場合はいちいちテキストファイルを開き、場所 を確認する必要が生じる。暗号解読をしていくには、暗号文中の文字を何度も変換したり、元に戻 したりするため、暗号解読がしずらいという問題点が生じた。  そのため、テキストファイルを開く手間を省くために、プログラム上で文章を常時表示させてお いた。さらにテキストファイルでアルファベットの変換対応表作成した。そうすることでアルファ ベットの変換対応表を操作すると、プログラム上で常時表示してある文章が変化するとういうプロ グラムになった。これにより、テキストファイルをいちいち確認する必要がなくなり、さらに同時 に変換できる文字の量が増えることで、最終的にプログラムの質を向上させることができた。この プログラムは変換した文字の色を変更させることで、変換後の文字がどこなのかを1目でわかるよ う工夫した。  アプリケーションに転用した際にも操作性の向上という点で大きく貢献できた。 (文責:大久保貴裕)

6.5

前期の活動と後期の活動の結びつき

 前期での活動によりプロジェクトメンバー全員がPARI/GPを利用した暗号化、復号、解読技 術を学んだ。PARI/GPとは数論に関する様々な代数演算を行うことが可能である計算機代数アプ リケーションである。数論に関する様々な代数演算を行うことが可能である。それを元に解読の際 に重要とされている素因数分解を行った。PARI/GPを用いてプログラムを組み、RSA暗号や楕 円曲線暗号の基礎的な暗号化、復号、解読技術を多くの試行を繰り返し学んだ。  さらに暗号の歴史的背景を学ぶことによって、暗号が生活の中でどのように使われてるのかを学

(26)

ぶことができた。そして日常生活の中で暗号は情報セキュリティでよく使われているということが わかった。例えば、個人情報を保護したり、企業などの機密情報を守るために存在しているのだ。 また、情報の通信にも使用され、第3者が情報を見れないようにするために暗号が使われている場 合もある。プロジェクト全体で、暗号という言葉を聞いて、一般の人は「暗号」に対して具体的な イメージがわきにくいのではないかと考えた。これらの問題点を解決するために、グールプ全体で 個人が暗号解読の可視化へ向けての最終発表をするため準備を行ってきた。  また、中間発表では内容や説明が不足しているという声があった。そのためより多くの知識を増 やすため、各自で勉強をして、暗号の知識をつける必要があった。さらにプロジェクトの中で連携 してる様が見えてないという指摘があったため、後期でよりいっそうプロジェクトグループ全体で 仕事を分担し、プロジェクト内の協力体制を強化した。  後期では今までの知識を生かすと同時に、より詳しい知識を学び暗号解読の可視化をするべく、 グループ全体で話し合いを幾度となく重ねた。プロジェクト全体の最終目標として、一般の人たち にも暗号解読というものをイメージさせやすく、さらにもっと解読の過程を分かりやすく、目に見 えるようにするということが挙げられていた。そのため後期のプロジェクトグループ全体の主な 目標は暗号解読の可視化のアプリケーションの作成をすることに定まった。そのため最終的には ipad上で暗号解読のプロセスを可視化をすることに目標を定め、頻度分析グループでは自らが前 期で学んだ知識を生かしてプログラムを作成する必要性があるということで話がまとまった。  アプリケーション実装グループは実装環境の整備を進め、同時進行で頻度分析グループではPC 上で暗号解読のプロセスを一通りプログラム化してみることにした。そうすることによってお互い のグループで時間を有効に使うことができ、それぞれの知識を高めあうことができた。 (文責:大久保貴裕)

6.6

アプリケーションへの引継ぎ

頻度分析グループではアプリケーションの開発まではせず、アプリケーション実装グループに開 発をお願いし、お互いに協力してアプリケーションを開発する体制を整えた。また、頻度分析グ ループが作成したプログラムは全てアプリケーション実装グループに渡し、アプリケーション実装 グループでアプリケーション用にプログラムを改良した。頻度分析グループでは頻度分析の解読プ ログラムを作成でき、アプリケーションに利用することができた。 (文責:大久保貴裕)

(27)

7

章 プログラム試験運用

7.1

実験の目的

今回の実験をする目的は、プロジェクトで作成したプログラムが果たして、一般の人が理解でき るように実装されているのか確かめるためである。もし、一般の人がプログラムをうまく使うこと がでないのであれば、よりわかりやすくプログラムを改良するべきである。もし、一般の人がプロ グラムをうまく使うことができるのであれば、そのプログラムの何がよかった分析することができ る。一般の人とこのプロジェクトグループの人とのプログラムの知識には差がありその差はプログ ラムを動かしたときに、どのように影響するのか知る必要がある。  この実験を通すことで、プログラムを一般の方にもわかりやすいものに近づけることができると 考えた。実験を行わずにアプリケーションに実装してしまうと、一般の人に不都合や操作性のしに くさが生じてしまう可能性があった。そのためプログラムの動作テストも兼ねて実験を行った。 (文責:青塚佳祐)

7.2

実験手続き

頻度分析グループで作成したプログラムは、pc上で動かすプログムラムの状態で1度以上被験 者に触ってもらい、悪いところや意見を貰うようにした。そのためにも被験者を用意する必要が生 じた。まず被験者の対象として、18歳から55歳までの10人の人間に実験に参加して頂いた。全 員がプログラムに関して詳しくなく、プロジェクトの対象である「「暗号」に対して具体的なイメー ジがわきにくい一般の人」に近い存在であった。 (文責:青塚佳祐)

7.3

実験内容

被験者にはあらかじめプログラムを動作実験をするということを伝えておいた。実験に用いるプ ログラムは2つである。1つは文章を暗号化するプログラムで、もう1つは頻度分析による暗号解 読プログラムである。pcを用意し、被験者にプログラムをpc上で実際に動かして頂いた。動かし ている最中に操作の仕方を教えて、全員がプログラムを最後まで動かせるように補助した。2つめ のプログラムは最後まで解読する必要はなく、動作を確認してもらうだけである。最後に被験者か ら意見を頂いた。 (文責:青塚佳祐)

Updating...

参照

Updating...

関連した話題 :