document13_C.pdf

公立はこだて未来大学 2011 年度 システム情報科学実習
グループ報告書
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
January , 2011
概要
本プロジェクトでは暗号の解読を可視化し暗号に興味のない人にも楽しんでもらえるような装
置を実装する。まずは PARI/GP を用いて暗号の基礎について学ぶ。その後、誕生日パラドッ
クスグループ、RSA 暗号グループ、楕円曲線暗号グループ、実装グループの 4 つのグループに
分かれて暗号について学習する。実装グループはアプリケーション作成のための環境を作り、
誕生日パラドックスグループ、RSA 暗号グループ、楕円曲線暗号グループはそれぞれ基礎知識
を学びながらアプリケーションの実装に向け活動している。RSA 暗号は桁の大きい数の素因
数分解の難しさより安全性が確保されている暗号であり、広く一般的に使われている。また楕
円曲線暗号は比較的新しい暗号で RSA 暗号よりも計算時間が短く処理も早いが RSA 暗号と
同等の処理ができる。広く一般的に使われており、一般の人がイメージする共通鍵暗号の解読
には頻度分析のような考え方が必要となる。これに対して公開鍵暗号である RSA 暗号や楕円
曲線暗号は誕生日パラドックスの考え方を利用して解読することができる。そのため誕生日パ
ラドックスは暗号の世界ではとても重要である。本プロジェクトではこのようなことをわかり
やすく可視化するためのアプリケーションを実装したい。
キーワード
キーワード 公開鍵暗号,誕生日パラドックス,RSA 暗号,楕円曲線暗号
(文責: 稲熊卓記)
-i-
Abstract
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 elliptic curve cryptographies can decipher by using a way of thinking of Birthday paradox.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
(文責: 稲熊卓記)
- ii -
目次
第1章
背景
1
1.1
前年度の成果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
1.2
現状における問題点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
1.3
課題の概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
到達目標
2
第2章
2.1
本プロジェクトにおける目的
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
2.2
通常の授業ではなく、プロジェクト学習で行う利点 . . . . . . . . . . . . . . . . .
2
2.3
具体的な手順・課題設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
第3章
3.1
3.2
3.3
3.4
3.5
第4章
2.3.1
目的 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
2.3.2
課題設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
可視化で扱う暗号
5
RSA 暗号 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
3.1.1
背景 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
3.1.2
PGP(Pretty Good Privacy) が普及に至るまで . . . . . . . . . . . . . . .
5
楕円曲線暗号 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
3.2.1
概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
3.2.2
実装例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
ID ベース暗号 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
3.3.1
概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
3.3.2
適用法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
3.3.3
PKI(公開鍵基盤) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
3.3.4
公開鍵証明書 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
ID ベース暗号の利点と欠点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
3.4.1
ID ベース暗号の利点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
3.4.2
ID ベース暗号の欠点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
タイムリリース暗号 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
3.5.1
概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
3.5.2
タイムリリース暗号の秘密鍵、公開鍵 . . . . . . . . . . . . . . . . . . . .
9
到達目標
10
4.1
アプリケーションの作成における課題設定 . . . . . . . . . . . . . . . . . . . . .
10
4.2
アプリケーションの開発における問題点 . . . . . . . . . . . . . . . . . . . . . . .
10
第5章
4.2.1
テキストの読み込み . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
4.2.2
ビューの切り替え . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
4.2.3
テキストの色付け . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
課題解決のプロセス
12
- iii -
5.1
課題解決のプロセスの概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
5.2
各人の課題の概要とプロジェクト内における位置づけ
. . . . . . . . . . . . . . .
13
5.2.1
青塚佳祐の担当課題 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
5.2.2
稲熊卓記の担当課題 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
5.2.3
大久保貴裕の担当課題 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
担当課題解決過程の詳細 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
5.3
第6章
5.3.1
青塚佳祐 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
5.3.2
稲熊卓記 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
5.3.3
大久保貴裕 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
頻度分析プログラム作成の概要
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
結果
24
8.1
成果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
8.2
課題の解決手順 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
第8章
第9章
8.2.1
前期での課題 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
8.2.2
後期での課題 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
25
発表会評価
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
- iv -
11.3
今後の課題 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
30
付録 A
新規習得技術
32
付録 B
活用した講義
33
参考文献
34
-v-
Visualization of Code-Breaking
第1章
背景
情報化社会の現代においてインターネットというのは身近な存在になっている。携帯電話やパソ
コンから誰でも気軽にアクセスができるようになった。インターネットがつながっている場所なら
ばどこでも世界中の人とコミュニケーションが取れたり、どのようなことが起こっているかなどの
情報を得ることができる。しかしこれは第三者が簡単に他人の情報を得ることができたり他人にな
りすましたりすることができるようになってしまったといえる。インターネットを利用する上でこ
のようなことを防ぐためにもセキュリティ技術は欠かすことができないものである。
セキュリティ技術の中でも暗号技術というのは広く使用されているものである。暗号化は第三者
に通信内容を見られても読めないように変換する表記法で特殊な知識がない限りは見ることができ
ない。通信のみでなく保管する文章などにも使用できる。
しかしインターネット利用に置いて重要で身近なものでも一般には認識が薄いところがある。パ
スワードを覚えやすい簡単な文字列にしたり、他人に分かってしまうようなものにしてしまうなど
意識の低さが見られるところがある。
(文責: 稲熊卓記)
1.1
前年度の成果
インターネットとセキュリティ技術は常に一緒になくてはならないものである。前年度ではセ
キュリティ技術の中でも暗号に着目しその歴史を通じて暗号に関心を持ってもらうという活動を行
なっていた。その中でセキュリティ対策の重要性を理解してもらうものだった。
(文責: 稲熊卓記)
1.2
現状における問題点
非常に重要で身近に使われている暗号だが一般にはあまり関心が持たれていない。暗号と聞くと
難しく堅苦しいなどのイメージを持っている人が多いかもしれない。さらにインターネットを使う
上でもパスワードを自分で設定することがあっても暗号に直接触れる機会は少ない。
(文責: 稲熊卓記)
1.3
課題の概要
暗号というものは誰もが直接目に見えて使うものではない。そこで私たちは暗号の解読を目に見
える形で行いさらに楽しんでもらえるような形で行うことで暗号というもののマイナスのイメージ
を消し、もっと身近に感じてもらおうとした。
(文責: 稲熊卓記)
Group Report of 2011 SISP
-1-
Group Number 13-C
Visualization of Code-Breaking
第 2 章 到達目標
2.1
本プロジェクトにおける目的
今、世界中でインターネットが普及している。このように世界がつながっている中で安全にイ
ンターネットを利用できている理由として挙げられるのが「さまざまな暗号の利用」である。私た
ちのプロジェクトの目標としては、多くの人に暗号に興味を持ってもらうために、さまざまな暗号
(RSA 暗号や楕円曲線暗号など)を目に見えるように可視化しようというものである。このような
可視化をしようと思った理由は、多くの人が暗号に対して「複雑なイメージがある」や「大変そう」
といった学ぶことに対してのマイナスの考えが多いだろうということで、暗号をより身近に感じて
もらおうと考えたからである。これにより、現在私たちが生きている中で暗号が広く使われている
ことを感じ取ることができ、暗号の大切さ・重要さを再認識できるだろう。これらのことを学びな
がら暗号の基礎を知り、可視化するための方法などについて考えていき、アプリケーションを作成
するのが私たちの目的である。
(文責: 稲熊卓記)
2.2
通常の授業ではなく、プロジェクト学習で行う利点
プロジェク学習では 1 年間を通じて、教授たちが掲げたあるテーマに対して学生たちが集い学
習する。そして、テーマに対してプロジェクトとしての目標を全員が集まり設定する。これは他の
学習法とは大きく異なる。それは個人ではなくチームで行うという利点である。個人では、全て自
分で考えて行動しなければならない。それに対して、プロジェクト学習ではチームで行うため、あ
ることを考えるときに様々な意見や考え方を得ることができるという利点がある。
個人の時には自分の考えを客観的に見ることは難しい。しかし、チームでは自分の意見を他の人
に客観的に見てもらうことができる。また、チームということで多くの意見や助言をもらうことが
でき、物事を早く進めることができる。そのようなディスカッションを繰り返すことによって、多
くの考え方を知ることができたり、自分の考え方を見つめ直すことができるので、それぞれの考え
をよりよい方向に持っていくことができる。
さらに、プロジェクト学習は教授たちのもとで行う活動であるので、多くの経験をしてきた教授
たちからも意見や助言を得ることができる。また、より実践的な取り組みをすることができる。こ
れにより、多くの経験を積み、能力を向上させることができる。
このように、プロジェクト学習では他の講義ではできない経験をすることができ、多くの知識を
身につけることができる。そして、これらの経験は私達が社会人になったときに生きてくると思わ
れる。
(文責: 稲熊卓記)
Group Report of 2011 SISP
-2-
Group Number 13-C
Visualization of Code-Breaking
2.3
2.3.1
具体的な手順・課題設定
目的
本プロジェクト全体の目的は、上で挙げた通りさまざまな暗号の可視化である。様々な暗号と
いうことで本プロジェクトでは 4 つのグループに分かれて作業を進めた。4 つのグループというこ
とで、誕生日パラドックス班・RSA 暗号班・楕円曲線暗号班・実装班に分かれ、各々のグループで
目標を定めて前期の作業を行った。
誕生日パラドックス班の前期の目標は、誕生日パラドックスの基礎を学び、スライドを使って他
の人に説明できることとした。また、換字式暗号のプログラム作成や頻度分析についても理解しよ
うというのを目標とした。
RSA 暗号班の前期の目標は、まずは RSA 暗号の基本的な構造を学ぶということである。RSA
暗号の考え方や使用例などを学び、数学的な考えや誕生日パラドックスとの関連性などについても
理解することを目標とした。また、RSA 暗号の複雑さを理解するために RSA 暗号の解読プログラ
ムの作成も目標として掲げた。
楕円曲線暗号班の前期の目標は、まず楕円曲線暗号の基本構造を理解することとした。その後、
楕円曲線暗号の実装プログラムを組むことを目標とし、解読のプログラム作成のためのρ法を学
び、解読プログラムの作成をしようと考えた。
実装班の前期の目標は、暗号解読の可視化をするためにアプリケーション開発に関しての知識を
増やしたり、アプリケーション開発環境の整理などとした。また、中間発表の際のポスターをイラ
ストレーター使い製作することを目標とした。
また、情報化社会の現代においてインターネットというのは身近な存在になっている。携帯電
話やパソコンから誰でも気軽にアクセスができるようになった。インターネットがつながっている
場所ならばどこでも世界中の人とコミュニケーションが取れたり、どのようなことが起こっている
かなどの情報を得ることができる。しかしこれは第三者が簡単に他人の情報を得ることができたり
他人になりすましたりすることができるようになってしまったといえる。インターネットを利用す
る上でこのようなことを防ぐためにもセキュリティ技術は欠かすことができないものである。 セ
キュリティ技術の中でも暗号技術というのは広く使用されているものである。暗号化は第三者に通
信内容を見られても読めないように変換する表記法で特殊な知識がない限りは見ることができな
い。通信のみでなく保管する文章などにも使用できる。 しかしインターネット利用に置いて重要
で身近なものでも一般には認識が薄いところがある。パスワードを覚えやすい簡単な文字列にした
り、他人に分かってしまうようなものにしてしまうなど意識の低さが見られるところがある。
これにより、現在私たちが生きている中で暗号が広く使われていることを感じ取ることができ、
暗号の大切さ・重要さを再認識できるだろう。これらのことを学びながら暗号の基礎を知り、可視
化するための方法などについて考えていき、アプリケーションを作成するのが私たちの目的であ
る。非常に重要で身近に使われている暗号だが一般にはあまり関心が持たれていない。暗号と聞く
と難しく堅苦しいなどのイメージを持っている人が多いかもしれない。さらにインターネットを使
う上でもパスワードを自分で設定することがあっても暗号に直接触れる機会は少ない。
Group Report of 2011 SISP
-3-
Group Number 13-C
Visualization of Code-Breaking
2.3.2
課題設定
本プロジェクトの目的は可視化ということなのでその方法について考えた。大きな考えとしては
iPad を使った可視化である。本プロジェクトのプロセスとして、まずは PARI/GP という高速計
算機の使い方を学んだ。また、暗号というものには共通鍵暗号と公開鍵暗号があるので、その 2 種
類についての概要を学んだ。その後、各々の班に分かれて作業を行った。ここから各々の班につい
てのプロセスについてまとめる。
誕生日パラドックス班の課題に対するプロセスは、まず誕生日パラドックスの基本構造を理解す
ることから始め、頻度分析なども理解するように勤めた。また、それらをスライドで説明する方法
を考えた。頻度分析やシーザー暗号のプログラムの作成をし、その実装なども行った。
RSA 暗号班の課題に対するプロセスは、RSA 暗号の基本的な構造の理解や数学的な考えの理解
をし、素因数分解の重要性などを学んだ。他にも誕生日パラドックスとの関連性を学び、それを実
装する段階で理解した。また、PARI/GP という高速計算機を用いて RSA 暗号の解読プログラム
の作成も行った。
楕円曲線暗号班のプロセスとしては、まず数学的な楕円曲線について学び、その後楕円曲線暗号
の基本的な構造の理解を行った。解読のために必要なρ法という解読方法を学んだ。また、楕円曲
線暗号のプログラム作成や解読プログラムの作成なども行った。
実装班のプロセスとしては、可視化をするにあたってのアプリケーションの開発環境を整えると
いうことでアプリケーションを開発するための勉強を行った。その後、Mac を使って iPad 上での
開発環境の整理を行い、後期にアプリケーションを製作できるようにした。
暗号には堅苦しい・難しいなどのマイナスなイメージをする人が多くいる。このようなイメージ
を払拭するために、暗号を身近なものとして認識してもらい、そこからセキュリティ対策に関心を
持ってもらう必要がある。
そこで、本プロジェクトは暗号についてわかりやすい説明をし、多くの人に暗号を理解してもら
うことを目標とした。具体的には、暗号の可視化を行い、実際に暗号がどのようなものかを理解し
てもらうようにすることを目標とした。これが達成されることで、多くの人にセキュリティ対策の
重要性を理解してもらおうとした。
(文責: 稲熊卓記)
Group Report of 2011 SISP
-4-
Group Number 13-C
Visualization of Code-Breaking
第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 暗号は世界中に広まった。そのような背景から、今では数
Group Report of 2011 SISP
-5-
Group Number 13-C
Visualization of Code-Breaking
多くのユーザに利用されており、現代社会にとって 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 を解く多項式
時間アルゴリズムが見つかっているため、注意が必要である。
(文責: 稲熊卓記)
Group Report of 2011 SISP
-6-
Group Number 13-C
Visualization of Code-Breaking
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) との共存を図りながら、多様なセキュリティー
ニーズに対応できる方式として注目されている。
(文責: 稲熊卓記)
Group Report of 2011 SISP
-7-
Group Number 13-C
Visualization of Code-Breaking
3.3.3
PKI(公開鍵基盤)
PKI とは、企業間取引などでインターネットを利用する際に付きまとうなりすましや盗聴、
改ざんといったリスクに対して、電子署名と暗号技術を兼ね備え、安全な電子通信を確保できるも
のを言い、以下の基本要素を含んでいる。
・鍵と証明書のライフサイクル管理 ・認証機関 (CA) 機能
・登録機関 (RA) 機能
・証明書の保管、運用ディレクトリの維持
・完全な証明書失効システム
・鍵のバックアップとリカバリの仕組み
・タイムスタンプ機能
PKI の活用により、安全な電子メール (暗号化メール)、安全なインターネット通信 (VPN)、安
全な Web、安全な電子商取引、安全なコンピュータを実現可能となる。
(文責: 稲熊卓記)
3.3.4
公開鍵証明書
公開鍵証明書とは、公開鍵とその所有者の同定情報 (その他に有効期間、発行者、署名アルゴ
リズムなどの情報も含む) を結びつける証明書である。これはデジタル証明書とも呼ばれる。
(文責: 稲熊卓記)
3.4
3.4.1
ID ベース暗号の利点と欠点
ID ベース暗号の利点
・任意のデータを公開鍵として適用可能。そのため、公開鍵証明書が不要 (公開鍵データと ID
情報を別々に持つ必要がない)
・暗号通信に前もって受信者が事前に秘密鍵と公開鍵の鍵ペアを生成する必要がなく、相手の
ID(例えばメールアドレス) さえわかれば即座に暗号データを送信することができる。そのため、
従来までの暗号の公開鍵ペアの生成、という作業が不要で RSA のような認証までの手間が省ける。
(文責: 稲熊卓記)
3.4.2
ID ベース暗号の欠点
・システムに参加するにあたり、秘密鍵を安全に配送するための利用者と秘密鍵生成局の間に
安全な通信路が必要。
Group Report of 2011 SISP
-8-
Group Number 13-C
Visualization of Code-Breaking
・生成局自体の信頼性が必要。(秘密鍵生成局が利用者の秘密鍵を生成するので、生成局は認証
なしに任意の暗号文を復号でき、また任意のメッセージに署名できる。)
(文責: 稲熊卓記)
3.5
タイムリリース暗号
この章では、タイムリリース暗号についての概要とそのアルゴリズムを記す。
3.5.1
概要
タイムリリース暗号とは、ある時刻がきたら誰でも復号できる、もしくはある時刻が来たら特
定の受信者が複合できるというように受け取った人が指定された時刻にならないと復号化できない
ことを特徴とした公開鍵暗号の 1 つである。
RSA 暗号などの従来の暗号では、公開鍵を作成する前に秘密鍵を作成する必要があったが、今
回我々が取り上げたタイムリリース暗号は、指定した時刻が来たら秘密鍵が自動更新されるため、
先に秘密鍵を作らずにいきなり公開鍵を作成できるといった特徴がある。そのため、前もって秘密
鍵を複数つくる必要がないので、従来の暗号と比較して鍵管理が楽になる、不特定多数への配信が
容易にすることができるといった利点がある。
タイムリリース暗号は前章で述べた ID ベース暗号に時間的要素を組み込んで応用した暗号化方
式であり、ID ベース暗号と同様にペアリング技術を用いて実現できる暗号技術の 1 つである。
(文責: 稲熊卓記)
3.5.2
タイムリリース暗号の秘密鍵、公開鍵
この節では、タイムリリース暗号の秘密鍵・公開鍵の利用方法について説明する。タイムリ
リース暗号では、ID と日付を公開鍵として扱い、自身のメッセージの暗号化に用いる。これらの
2 つの公開鍵をもとに、送信者が指定した日時になると初めて受信者は自身の ID に対応する秘密
鍵を得ることができ、送信者から送られてきたメッセージを復号化し、読むことが可能となる。
しかし、ID が同じでも日付によって生成される秘密鍵が異なってくるので、受信者は送信者が
指定した日時以外では復号できない。つまり、送信者が復号出来る時間を指定できるという点がタ
イムリリース暗号の大きなメリットとなっている。
(文責: 稲熊卓記)
Group Report of 2011 SISP
-9-
Group Number 13-C
Visualization of Code-Breaking
第 4 章 到達目標
4.1
アプリケーションの作成における課題設定
本プロジェクトでは iPad 上で動作するアプリケーションを作り、暗号を可視化させ、よりわ
かりやすく暗号を説明することを目指した。そのために、どのように可視化を行うのがわかりやす
いアプリケーションなのかということを考え、アプリケーションを設計することが課題となった。
(文責: 大久保貴裕)
4.2
4.2.1
アプリケーションの開発における問題点
テキストの読み込み
暗号文のテキストファイルを扱う際にどのようにプログラミングをするかが鍵であるように
思われた。配列によって、それぞれの文字をチェックしてカウントしていく方法も考えられた。し
かし、短い文章であればそれはたやすい事だが、長い文章もなるべく扱いたいので、これは現実的
ではないと思われた。そこで、なにか他に方法はないかと探したところ、テキストファイルを一度
に読み込み、テキストの内容を保持するようなメソッドがあることがわかった。今回のアプリケー
ションをつくるうえで、これは重要なプログラムの一部になった。
(文責: 大久保貴裕)
4.2.2
ビューの切り替え
今回作成したアプリケーションは複数もの画面を用意する必要があった。ページを用意するに
は、元々あったオリジナルのテンプレートを改良していかなければならず、労力のかかる作業で
あった。また、新しいファイルもつくる必要があった。それよりも、ページを切り替えて行くほう
が新しいファイルをつくる必要もなく、楽にできるのではないかと考えた。具体的には、表示した
い画面以外をすべて隠し、表示したい画面だけを現れるようにするというものだ。この作業にはフ
ラグを複数用意しなければならず大変ではあったが、直感的にプログラミングができるという利点
があった。このプログラミングをする上で必要になったのは、ビューを隠したり表示させたりする
メソッドがあるかどうかということだが、”hidden”というメソッドの Yes か No かを切り替える
だけで画面の切り替えをすることができ、問題なくプログラミングをすることができた。
(文責: 大久保貴裕)
4.2.3
テキストの色付け
暗号文を置換していく作業の際に、現在置換している文字と、置換し終わった文字に色をつけ
ていくことが決まっていた。文字に色をつけるメソッドは Objective-C にはあったが、それはラベ
Group Report of 2011 SISP
- 10 -
Group Number 13-C
Visualization of Code-Breaking
ルに対して色をつけるメソッドであった。すなわち、テキストにある特定の文字の色を変えるとい
うメソッドではなかった。これについて、他のメソッドや、今までとは違う別の色をつける方法を
模索したが、うまくいきそうな方法は見当たらなかった。そこで、暗号文をテキスト文字として扱
うのではなく、画像として扱うという方法が考えられた。これには、置換している文字と、置換さ
れた文字に色をつけた暗号文の画像を複数用意する必要があった。しかし、これが最も実現性の高
い方法であったので、この方法が採用された。よって、Open Office によってテキストに色をつけ、
それを画像ファイルにするために、図形ソフトにより画像として保存する作業が行われた。初めは
手作業で文字に色をつける作業が行われたが、のちに置換する文字を検索して色を付ける作業を行
い、最終的には効率的に色をつける作業が行われた。色をつけた暗号文は図 4.1 のようになる。
図 4.1
色付けした暗号文
(文責: 大久保貴裕)
Group Report of 2011 SISP
- 11 -
Group Number 13-C
Visualization of Code-Breaking
第 5 章 課題解決のプロセス
5.1
課題解決のプロセスの概要
本プロジェクトの目的は可視化ということなのでその方法について考えた。大きな考えとして
は iPad を使った可視化である。本プロジェクトのプロセスとして、まずは PARI/GP という高速
計算機の使い方を学んだ。また、暗号というものには共通鍵暗号と公開鍵暗号があるので、その 2
種類についての概要を学んだ。その後、各々の班に分かれて作業を行った。ここから各々の班につ
いてのプロセスについてまとめる。
誕生日パラドックス班の課題に対するプロセスは、まず誕生日パラドックスの基本構造を理解す
ることから始め、頻度分析なども理解するように勤めた。また、それらをスライドで説明する方法
を考えた。頻度分析やシーザー暗号のプログラムの作成をし、その実装なども行った。
RSA 暗号班の課題に対するプロセスは、RSA 暗号の基本的な構造の理解や数学的な考えの理解
をし、素因数分解の重要性などを学んだ。他にも誕生日パラドックスとの関連性を学び、それを実
装する段階で理解した。また、PARI/GP という高速計算機を用いて RSA 暗号の解読プログラム
の作成も行った。
楕円曲線暗号班のプロセスとしては、まず数学的な楕円曲線について学び、その後楕円曲線暗号
の基本的な構造の理解を行った。解読のために必要なρ法という解読方法を学んだ。また、楕円曲
線暗号のプログラム作成や解読プログラムの作成なども行った。
実装班のプロセスとしては、可視化をするにあたってのアプリケーションの開発環境を整えると
いうことでアプリケーションを開発するための勉強を行った。その後、Mac を使って iPad 上での
開発環境の整理を行い、後期にアプリケーションを製作できるようにした。
本プロジェクト全体の目的は、上で挙げた通りさまざまな暗号の可視化である。様々な暗号とい
うことで本プロジェクトでは 4 つのグループに分かれて作業を進めた。4 つのグループということ
で、誕生日パラドックス班・RSA 暗号班・楕円曲線暗号班・実装班に分かれ、各々のグループで目
標を定めて前期の作業を行った。
誕生日パラドックス班の前期の目標は、誕生日パラドックスの基礎を学び、スライドを使って他
の人に説明できることとした。また、換字式暗号のプログラム作成や頻度分析についても理解しよ
うというのを目標とした。
RSA 暗号班の前期の目標は、まずは RSA 暗号の基本的な構造を学ぶということである。RSA
暗号の考え方や使用例などを学び、数学的な考えや誕生日パラドックスとの関連性などについても
理解することを目標とした。また、RSA 暗号の複雑さを理解するために RSA 暗号の解読プログラ
ムの作成も目標として掲げた。
楕円曲線暗号班の前期の目標は、まず楕円曲線暗号の基本構造を理解することとした。その後、
楕円曲線暗号の実装プログラムを組むことを目標とし、解読のプログラム作成のためのρ法を学
び、解読プログラムの作成をしようと考えた。
実装班の前期の目標は、暗号解読の可視化をするためにアプリケーション開発に関しての知識を
増やしたり、アプリケーション開発環境の整理などとした。また、中間発表の際のポスターをイラ
ストレーター使い製作することを目標とした。
Group Report of 2011 SISP
- 12 -
Group Number 13-C
Visualization of Code-Breaking
(文責: 大久保貴裕)
各人の課題の概要とプロジェクト内における位置づけ
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 月 最終発表に向けての準備
個人報告書の作成
Group Report of 2011 SISP
- 13 -
Group Number 13-C
Visualization of Code-Breaking
グループ報告書の作成
(文責: 稲熊卓記)
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 についての学習を始めた。参考書はプロジェクトの予算で購入し、それ
を用いて学習を行った。この時点ではまだノートパソコンなどのプログラミングをするのに
必要なものはそろっていなかったので、本を読んで実際にプログラミングをするまでに、必
Group Report of 2011 SISP
- 14 -
Group Number 13-C
Visualization of Code-Breaking
要な知識をなるべく身につけることが重要な課題となった。
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 についての学習を始めた。参考書はプロジェクトの予算で購入し、それ
を用いて学習を行った。この時点ではまだノートパソコンなどのプログラミングをするのに
Group Report of 2011 SISP
- 15 -
Group Number 13-C
Visualization of Code-Breaking
必要なものはそろっていなかったので、本を読んで実際にプログラミングをするまでに、必
要な知識をなるべく身につけることが重要な課題となった。
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 についての学習を始めた。参考書はプロジェクトの予算で購入し、それ
Group Report of 2011 SISP
- 16 -
Group Number 13-C
Visualization of Code-Breaking
を用いて学習を行った。この時点ではまだノートパソコンなどのプログラミングをするのに
必要なものはそろっていなかったので、本を読んで実際にプログラミングをするまでに、必
要な知識をなるべく身につけることが重要な課題となった。
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 月 最終発表会において使用するポスター、スライド、プレゼンテーション用原稿の作成を行っ
た。最終発表会では、プレゼンテーションもした。最終発表会後は評価シートの集計を行っ
た。また、個人報告書の作成を行った。グループ報告書では、グループ全体での構成を決定
した。それを参考に、メンバー内で担当を分担し、グループ報告書を作成した。
(文責: 大久保貴裕)
Group Report of 2011 SISP
- 17 -
Group Number 13-C
Visualization of Code-Breaking
第 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 種類全ての文字が移動するので、他の暗号よりも解読が比較的容易である。
(文責: 大久保貴裕)
Group Report of 2011 SISP
- 18 -
Group Number 13-C
Visualization of Code-Breaking
6.3
プログラム開発過程∼文字の出現頻度計算
頻度分析を行うには「a」から「z」までの 26 文字のアルファベットがそれぞれいくつ存在するの
か調べる必要があった。そのため暗号化した文章から文字を数え、個数を表示させるというプログ
ラムを作成した。この時、文字の頻度を数えることが重要なので、大文字と小文字の区別をせず、
大文字と小文字の個数を合わせて 1 種類のアルファベットとして計算するようにした。
作成したプログラムは、
「a は文章中に○文字存在する」…「z は文章中に○文字存在する」とい
う表示にしていた。しかし、1目見ただけでどのアルファベットが多いかを判断するのが難しかっ
た。頻度分析グループで作成したプログラムは、最終的にはアプリケーション実装グループでも使
われるため、なるべく見やすくわかりやすいプログラムを作成する必要があった。そのため文字数
の多い順番に並べるように改良した。ただし、文字の頻度によって必ずしも文字が決められている
わけではない。そのため文字の出現頻度を確認する専用のプログラムに留まった。
(文責: 大久保貴裕)
6.4
プログラム開発過程∼文字の変換
文章の文字の頻度を調べた後は文字を変換する処理が必要であった. そのため、文字を変換する
プログラムを作成した。変換前の文字とと変換後の文字を入力し、変換した文章を生成するプログ
ラムである。生成する場所は当初テキストファイルを生成して、そこに文章を保存させるような仕
組みにした。しかし、テキストファイルに保存した場合はいちいちテキストファイルを開き、場所
を確認する必要が生じる。暗号解読をしていくには、暗号文中の文字を何度も変換したり、元に戻
したりするため、暗号解読がしずらいという問題点が生じた。
そのため、テキストファイルを開く手間を省くために、プログラム上で文章を常時表示させてお
いた。さらにテキストファイルでアルファベットの変換対応表作成した。そうすることでアルファ
ベットの変換対応表を操作すると、プログラム上で常時表示してある文章が変化するとういうプロ
グラムになった。これにより、テキストファイルをいちいち確認する必要がなくなり、さらに同時
に変換できる文字の量が増えることで、最終的にプログラムの質を向上させることができた。この
プログラムは変換した文字の色を変更させることで、変換後の文字がどこなのかを1目でわかるよ
う工夫した。
アプリケーションに転用した際にも操作性の向上という点で大きく貢献できた。
(文責: 大久保貴裕)
6.5
前期の活動と後期の活動の結びつき
前期での活動によりプロジェクトメンバー全員が PARI/GP を利用した暗号化、復号、解読技
術を学んだ。PARI/GP とは数論に関する様々な代数演算を行うことが可能である計算機代数アプ
リケーションである。数論に関する様々な代数演算を行うことが可能である。それを元に解読の際
に重要とされている素因数分解を行った。PARI/GP を用いてプログラムを組み、RSA 暗号や楕
円曲線暗号の基礎的な暗号化、復号、解読技術を多くの試行を繰り返し学んだ。
さらに暗号の歴史的背景を学ぶことによって、暗号が生活の中でどのように使われてるのかを学
Group Report of 2011 SISP
- 19 -
Group Number 13-C
Visualization of Code-Breaking
ぶことができた。そして日常生活の中で暗号は情報セキュリティでよく使われているということが
わかった。例えば、個人情報を保護したり、企業などの機密情報を守るために存在しているのだ。
また、情報の通信にも使用され、第3者が情報を見れないようにするために暗号が使われている場
合もある。プロジェクト全体で、暗号という言葉を聞いて、一般の人は「暗号」に対して具体的な
イメージがわきにくいのではないかと考えた。これらの問題点を解決するために、グールプ全体で
個人が暗号解読の可視化へ向けての最終発表をするため準備を行ってきた。
また、中間発表では内容や説明が不足しているという声があった。そのためより多くの知識を増
やすため、各自で勉強をして、暗号の知識をつける必要があった。さらにプロジェクトの中で連携
してる様が見えてないという指摘があったため、後期でよりいっそうプロジェクトグループ全体で
仕事を分担し、プロジェクト内の協力体制を強化した。
後期では今までの知識を生かすと同時に、より詳しい知識を学び暗号解読の可視化をするべく、
グループ全体で話し合いを幾度となく重ねた。プロジェクト全体の最終目標として、一般の人たち
にも暗号解読というものをイメージさせやすく、さらにもっと解読の過程を分かりやすく、目に見
えるようにするということが挙げられていた。そのため後期のプロジェクトグループ全体の主な
目標は暗号解読の可視化のアプリケーションの作成をすることに定まった。そのため最終的には
ipad 上で暗号解読のプロセスを可視化をすることに目標を定め、頻度分析グループでは自らが前
期で学んだ知識を生かしてプログラムを作成する必要性があるということで話がまとまった。
アプリケーション実装グループは実装環境の整備を進め、同時進行で頻度分析グループでは PC
上で暗号解読のプロセスを一通りプログラム化してみることにした。そうすることによってお互い
のグループで時間を有効に使うことができ、それぞれの知識を高めあうことができた。
(文責: 大久保貴裕)
6.6
アプリケーションへの引継ぎ
頻度分析グループではアプリケーションの開発まではせず、アプリケーション実装グループに開
発をお願いし、お互いに協力してアプリケーションを開発する体制を整えた。また、頻度分析グ
ループが作成したプログラムは全てアプリケーション実装グループに渡し、アプリケーション実装
グループでアプリケーション用にプログラムを改良した。頻度分析グループでは頻度分析の解読プ
ログラムを作成でき、アプリケーションに利用することができた。
(文責: 大久保貴裕)
Group Report of 2011 SISP
- 20 -
Group Number 13-C
Visualization of Code-Breaking
第7章
7.1
プログラム試験運用
実験の目的
今回の実験をする目的は、プロジェクトで作成したプログラムが果たして、一般の人が理解でき
るように実装されているのか確かめるためである。もし、一般の人がプログラムをうまく使うこと
がでないのであれば、よりわかりやすくプログラムを改良するべきである。もし、一般の人がプロ
グラムをうまく使うことができるのであれば、そのプログラムの何がよかった分析することができ
る。一般の人とこのプロジェクトグループの人とのプログラムの知識には差がありその差はプログ
ラムを動かしたときに、どのように影響するのか知る必要がある。
この実験を通すことで、プログラムを一般の方にもわかりやすいものに近づけることができると
考えた。実験を行わずにアプリケーションに実装してしまうと、一般の人に不都合や操作性のしに
くさが生じてしまう可能性があった。そのためプログラムの動作テストも兼ねて実験を行った。
(文責: 青塚佳祐)
7.2
実験手続き
頻度分析グループで作成したプログラムは、pc 上で動かすプログムラムの状態で1度以上被験
者に触ってもらい、悪いところや意見を貰うようにした。そのためにも被験者を用意する必要が生
じた。まず被験者の対象として、18 歳から 55 歳までの 10 人の人間に実験に参加して頂いた。全
員がプログラムに関して詳しくなく、プロジェクトの対象である「
「暗号」に対して具体的なイメー
ジがわきにくい一般の人」に近い存在であった。
(文責: 青塚佳祐)
7.3
実験内容
被験者にはあらかじめプログラムを動作実験をするということを伝えておいた。実験に用いるプ
ログラムは2つである。1つは文章を暗号化するプログラムで、もう1つは頻度分析による暗号解
読プログラムである。pc を用意し、被験者にプログラムを pc 上で実際に動かして頂いた。動かし
ている最中に操作の仕方を教えて、全員がプログラムを最後まで動かせるように補助した。2 つめ
のプログラムは最後まで解読する必要はなく、動作を確認してもらうだけである。最後に被験者か
ら意見を頂いた。
(文責: 青塚佳祐)
Group Report of 2011 SISP
- 21 -
Group Number 13-C
Visualization of Code-Breaking
7.4
実験結果
今回の実験では暗号化のプログラムは、アルファベットを乱数を使って変換すること自体に抵抗
を覚える人が過半数以上を占めた。理由として「アルファベットを変換した後の文字が最初から用
意されていたのではないかと疑ってしまう」や「そもそも暗号自体よくわからない」などと意見を
頂いた。なので、実際にアプリケーションにした際は、事前に暗号について説明を入れることや、
プログラムの仕様もきちんと説明する必要があるとわかった。
暗号解読プログラムの方は「プログラムの操作性が難しすぎる」や「わけがわからない」、「何を
やっているのかそもそもわからない」とプログラムの基本動作が理解できた人はいなかった。また
プログラムを終了する前に操作をやめた人もいた。このプログラムを見返すと、大掛かりな処理や
操作を利用することが多かった。そのため、プログラムの操作性や基本構造から直す必要があると
わかった。そのため、操作の1つ1つを簡単にして、同時に操作部分を減らすように改良を加えた。
本実験では被験者全員がプログラムを完全に理解することができなかった。10 人の被験者にい
えるのは最初はうまく動かせているのだが、そのあとで次の新しい動作をするときに、操作の混乱
が見られる傾向にあるということだ。操作が多く自分の思考を整理するのが難しいようだった。ま
た、自分で暗号解読していても、それが元の文章に戻っていないと感じた場合、操作を止めてしま
う傾向にある。その中には元の文章に近いところまで解読していた人もいくらかいた。さらに実験
を終えるまでにたくさんの時間を使った人が多かった。
今回の実験の場合は解読を完了することが目的ではないが、暗号解読自体をアプリケーション
として作成した場合、操作の難しさから一般の方の理解が得られにくいと考えた。そのためこの実
験より暗号解読そのものではなく、暗号解読のプロセスを可視化した方がいいと考え、アプリケー
ションでは暗号解読のプロセスの可視化をすることにした。
(文責: 青塚佳祐)
7.5
実験成果
今回の実験では、プログラム開発者にとって想定外の意見を多く聞くことができた。そのため実
験を行ったことは成功したと考える。アプリケーションは便利だが、対象者はプログラムに詳しく
ない人を想定しているので、事前に意見を頂けたことは大きかった。プログラムは簡略にしたつも
りだったが、被験者からは難しいという意見が多く出た。このような実験を繰り返し行うことが重
要であると認識できた。今回の意見を参考にプログラムを改良し、アプリケーション実装に大きく
貢献することができた。
本実験では被験者全員がプログラムを完全に理解することができなかった。10 人の被験者にい
えるのは最初はうまく動かせているのだが、そのあとで次の新しい動作をするときに、操作の混乱
が見られる傾向にあるということだ。操作が多く自分の思考を整理するのが難しいようだった。ま
た、自分で暗号解読していても、それが元の文章に戻っていないと感じた場合、操作を止めてしま
う傾向にある。その中には元の文章に近いところまで解読していた人もいくらかいた。さらに実験
を終えるまでにたくさんの時間を使った人が多かった。 今回の実験の場合は解読を完了すること
が目的ではないが、暗号解読自体をアプリケーションとして作成した場合、操作の難しさから一般
の方の理解が得られにくいと考えた。そのためこの実験より暗号解読そのものではなく、暗号解読
Group Report of 2011 SISP
- 22 -
Group Number 13-C
Visualization of Code-Breaking
のプロセスを可視化した方がいいと考え、アプリケーションでは暗号解読のプロセスの可視化をす
ることにした。
(文責: 青塚佳祐)
7.6
実験を終えて
頻度分析グループでは様々なプログラムを作成したが、1つ1つをアプリケーションにするのは
難しかったため、最終的にアプリケーションに利用されたプログラムは極わずかである。しかしな
がら、プログラムを作成するのにたくさんの知識や技術を身につけることができた。また一般の人
との意見交換ができたことは、アプリケーションの質の向上やプロジェクトグループの活動を大き
く飛躍させることができた。
また、中間発表では内容や説明が不足しているという声があった。そのためより多くの知識を増
やすため、各自で勉強をして、暗号の知識をつける必要があった。さらにプロジェクトの中で連携
してる様が見えてないという指摘があったため、後期でよりいっそうプロジェクトグループ全体
で仕事を分担し、プロジェクト内の協力体制を強化した。 後期では今までの知識を生かすと同時
に、より詳しい知識を学び暗号解読の可視化をするべく、グループ全体で話し合いを幾度となく重
ねた。プロジェクト全体の最終目標として、一般の人たちにも暗号解読というものをイメージさせ
やすく、さらにもっと解読の過程を分かりやすく、目に見えるようにするということが挙げられて
いた。そのため後期のプロジェクトグループ全体の主な目標は暗号解読の可視化のアプリケーショ
ンの作成をすることに定まった。そのため最終的には ipad 上で暗号解読のプロセスを可視化をす
ることに目標を定め、頻度分析グループでは自らが前期で学んだ知識を生かしてプログラムを作成
する必要性があるということで話がまとまった。 アプリケーション実装グループは実装環境の整
備を進め、同時進行で頻度分析グループでは PC 上で暗号解読のプロセスを一通りプログラム化し
てみることにした。そうすることによってお互いのグループで時間を有効に使うことができ、それ
ぞれの知識を高めあうことができた。
(文責: 青塚佳祐)
Group Report of 2011 SISP
- 23 -
Group Number 13-C
Visualization of Code-Breaking
第 8 章 結果
8.1
成果
本プロジェクトの最終目標は、暗号を一般の人に理解しやすいように暗号を可視化することであ
る。具体的には暗号解読の過程を、iPad にアプリケーションを実装するという形で実現すること
である。そのために私たちは暗号・復号についての学習、実装するアプリケーションを製作するた
め Objective-C の学習、そしてアプリケーションを実際に実装した。暗号解読法の学習については
RSA 暗号グループ、楕円曲線暗号グループ、誕生日パラドックスグループが詳しく調査した。そ
の中でアプリケーションに利用するにはどの暗号解読法が適しているのかを調査し、実装に利用
できるものを探した。また実装グループは実装するための開発環境整備、アプリケーション実装に
向けたプログラミングの学習などをおこなった。これにより私たちは暗号・復号についての理解、
Objective-C によりプログラムを実装できる能力、またアプリケーションを iPad に実装する能力
を得た。
今回のアプリケーションでは暗号解読に頻度分析を用い、暗号解読の過程を表示するというもので
ある。頻度分析とは平文と暗号文に使用される文字や文字列の出現頻度を手掛りとして利用する暗
号解読法のことである。この暗号解読法は暗号文が平文に変わっていく様子が目に見えてわかり
やすいため、この暗号法を用いた。画面には暗号文と頻度分析により解読した文字を1文字、暗号
文の下に表示されており、暗号文内ではその置換された文字に色がついて表示される。これを全て
の文字が解読されるまで1文字づつ順々に置換し、それを毎項表示するものとなっている。このア
プリケーションを実装できたことにより、本プロジェクトの目標は達成できた。できたアプリケー
ションは図 8.1 のように動作する。
(文責: 青塚佳祐)
8.2
8.2.1
課題の解決手順
前期での課題
前期では実装の準備と Objective-C の学習をし、後期はアプリケーションの実装を行った。
前期でアプリケーションについての学習と Objective-C の学習、また実装経験が不十分であった
ため後期の本実装するのに遅れが生じた。なので後期では早めにアプリケーション製作に取り組
むことが必要となった。前期で課題となった点について記述する。初めに私たちは Macmini とい
うパソコンで Objective-C を起動することに決めた。Objective-C というのは iPad にアプリケー
ションを実装する際に使うのでこれを利用するのに適しているパソコンはアップル社の MAC で
ある。そのため私たちは Macmini を利用することにした。これは学校側が所有していたためそ
れを利用してほしいといわれたからであるが、Macmini をうまく使いこなすことができずにうま
く Objective-C をインストールできなかった。そのため MacbookAir を購入し Objective-C を
インストールすることで解決した。しかしこれらと Objective-C についての参考文献、荻原剛志
(2010)「詳解 Objective-C2.0 改訂版」ソフトバンククリエイティブ株式会社. と森巧尚 (2011)「よ
Group Report of 2011 SISP
- 24 -
Group Number 13-C
Visualization of Code-Breaking
図 8.1 動作中のアプリ
くわかる iPhone アプリ開発の教科書」毎日コミュニケーションズ. を発注し到着するまでに遅れ
が生じたため、Objective-C についての学習が遅れてしまった。解決手段としてはインターネット
による学習を試みたが、あまりはかど捗らなかった。また発注が遅れたことにより、Objective-C
で実際にプログラミングするという経験が不足してしまったことも前期の課題であった。これに関
しては後期に早めに取り組むという解決手段を取った。以上が前期での課題と解決手段である。
(文責: 青塚圭祐)
8.2.2
後期での課題
アプリケーション実装までの流れについて記述する。初めにアプリケーションについていくつ
かの具体案を出し合い、その中でアプリケーションとして実装できそうなものを試作した。だが有
力であった案が思うようにできず、違う案を採用した。有力な案とはいくつかの暗号解読法を有名
な昔話を暗号文としてそれをアプリケーション内で解読させ、その過程を表示するというもので
あった。だがそのためにアプリケーション内で解読法を多く積まなければならないこととそれによ
Group Report of 2011 SISP
- 25 -
Group Number 13-C
Visualization of Code-Breaking
りプログラムが難解になること、また時間が足りないということが問題となった。プログラムにつ
いて参考文献やインターネットによる検索で調べたが解決策を見つけることができなかった。次に
第二の案についてより具体的な内容を考えた時にどの暗号解読法を利用するのかという問題があ
がった。
第二の案は暗号解読法を一つに絞り、それを実装するというもので、これについては難しい計算が
必要ない頻度分析を用いると一般の人にわかりやすいのではないか、また暗号文を平文に変換して
いく様子が暗号解読の中では一般の人に伝わりやすいのではないかと考えたためである。そしてこ
のアプリケーションはこれらを元に製作した。
続いて製作途中での課題について記述する。まず初めに問題となったのはアプリケーションの
画面上の配置についてである。これは暗号文を解読していく様子をどのように見せるかという課
題で、見やすくわかりやすい配置でないといけないため慎重に話し合った。まず画面に表示する必
要あるものが暗号文と解読した文字である。この暗号文の文字数が多いため、画面内の配置が難し
かった。平文は英文であるため、暗号文も同じ文く英字で構成されるため文字数が多いのである。
そのため丁度良い文字の大きさで暗号文を表示しそれを画面上部へ、下部に解読した文字を表示す
る形にした。これが一番見やすいと判断したのである。暗号文については平分に気をつけ頻度分析
を行いやすいものを選んだ。これにより優しい暗号文を解読するほうがより分かりやすいであろう
と考えたためである。
頻度分析により解読した文字を下に表示する一方で、上の暗号文中でその文字がどこにあるのかが
わかるよう色をつける操作が必要となったが、これが大きな課題となった。参考文献からは一行単
位で色を変える術は載っていたのだが、一文字だけ変える手段が見つからず、何日も試行錯誤した
がついには色を変える手段が見つからず、結局暗号文の文字の色付けは他のソフトを利用し、その
画面を画像にしてアプリケーションの画面に出力する手法をとった。そのため今回のアプリケー
ションは画像を表示し、それを時間通りに表示させていくというものになった。また色については
緑色が現在解読し置換した文字で、以前の解読で置換された文字は灰色、その他のまだ置換されて
いない文字は黒で表示した。さらに英字が大文字で表記されているものは解読済みで、小文字は置
換されていない文字である。これらはどちらも一般の人に人目で分かるように見易さを追求したも
のである。以上が後期でのの課題と解決手順である。
(文責: 青塚圭祐)
Group Report of 2011 SISP
- 26 -
Group Number 13-C
Visualization of Code-Breaking
第9章
9.1
発表会評価
中間発表の評価について
中間発表の評価について記述する。発表技術の評価としてはスライドを見ながら発表している
のが長かったり、前提知識が無い人に分かりにくい説明だったなど、説明の仕方に問題点があると
いうような内容の評価が得られた。また良い点としては、スライドが見やすくクイズ形式を用いた
ことが良いという評価が得られた。次に発表内容の評価として、プロジェクト計画を具体的にして
ほしいというものや、活動の成果物などを見せて欲しかった、今後の目標について分かりにくかっ
たなどプロジェクトの目標または到達点を明白にすべきという評価が得られた。また良い点として
は、暗号の種類をそれぞれ説明されていて分かりやすかったり、身近な例を用いて説明していたの
がよかったなどの評価が得られた。後期の課題として、発表の技術を上げるため視聴者に聞こえる
声で発表したり、内容についてしっかりと暗記する、またスライドなどの説明を十分なものにする
などが挙げられる。また成果物の説明が不十分だったため、後期では完成した成果物についてしっ
かり発表すべきである。
発表技術の評価としてはスライドを見ながら発表しているのが長かったり、前提知識が無い人に
分かりにくい説明だったなど、説明の仕方に問題点があるというような内容の評価が得られた。ま
た良い点としては、スライドが見やすくクイズ形式を用いたことが良いという評価が得られた。次
に発表内容の評価として、プロジェクト計画を具体的にしてほしいというものや、活動の成果物な
どを見せて欲しかった、今後の目標について分かりにくかったなどプロジェクトの目標または到
達点を明白にすべきという評価が得られた。また良い点としては、暗号の種類をそれぞれ説明され
ていて分かりやすかったり、身近な例を用いて説明していたのがよかったなどの評価が得られた。
後期の課題として、発表の技術を上げるため視聴者に聞こえる声で発表したり、内容についてしっ
かりと暗記する、またスライドなどの説明を十分なものにするなどが挙げられる。また成果物の説
明が不十分だったため、後期では完成した成果物についてしっかり発表すべきである。発表技術の
評価としてはスライドを見ながら発表しているのが長かったり、前提知識が無い人に分かりにく
い説明だったなど、説明の仕方に問題点があるというような内容の評価が得られた。また良い点と
しては、スライドが見やすくクイズ形式を用いたことが良いという評価が得られた。次に発表内容
の評価として、プロジェクト計画を具体的にしてほしいというものや、活動の成果物などを見せて
欲しかった、今後の目標について分かりにくかったなどプロジェクトの目標または到達点を明白
にすべきという評価が得られた。また良い点としては、暗号の種類をそれぞれ説明されていて分か
りやすかったり、身近な例を用いて説明していたのがよかったなどの評価が得られた。後期の課題
として、発表の技術を上げるため視聴者に聞こえる声で発表したり、内容についてしっかりと暗記
する、またスライドなどの説明を十分なものにするなどが挙げられる。また成果物の説明が不十分
だったため、後期では完成した成果物についてしっかり発表すべきである。
(文責: 青塚圭祐)
Group Report of 2011 SISP
- 27 -
Group Number 13-C
Visualization of Code-Breaking
9.2
最終発表の評価について
最終発表についての評価を記述する。発表技術について、スライド見すぎて声が前に言ってな
いという意見や暗記して発表すべきというものがあった。またスライドが早くて楕円曲線暗号がよ
くわからないというものや、方式がよくわからないからもっと説明に時間を割いてほしいというも
のもあった。他にも唐突に問題の答えを言われても実感できない(式を成果物として出すといいか
も)という評価もあった。これらとは対象にスライドわかりやすい、スライドの使い方が良かった
という評価もあった。
発表内容については、難しい言葉をつかいすぎ、暗号についての説明はされていましたが、その
計算についてはもう少し丁寧でも良い気がしますというものや、縦軸、横軸が英語でわからない
し、またグラフの具体的な説明がないというもの、他に、RSA 暗号の例がなくイメージしづらいと
いうものや、簡単なところから説明しているのは良かったが、もう少し内容に深みが欲しかったと
いうものもあった。これらの評価は説明内容について不十分であるというものが多かった。他に暗
号のおもしろさを伝える対象に触れていなかったので、一体何が目標なのか分からないというもの
や、目標は決めているもののそれが何をなすのかが理解できしにくく伝わらない、目標としては少
し物足りなさを感じたという、目標に関しての評価が多数があった。また、今までのやってきたこ
とと今後やっていくことの線引きが明確でわかりやすかった、様々な暗号化方式について調べられ
ていて、それら一つ一つを実装に向けて活動しているのが凄いと思いましたなどの良い評価もあっ
た。
今後の課題としては、RSA 暗号などの難しいイメージがあるものを分かりやすく説明するアプ
リケーションがよいというものや、もっと iPad の機能を活かしたアプリケーションがよいといっ
たものがあった。
これらの評価は説明内容について不十分であるというものが多かった。他に暗号のおもしろさを伝
える対象に触れていなかったので、一体何が目標なのか分からないというものや、目標は決めてい
るもののそれが何をなすのかが理解できしにくく伝わらない、目標としては少し物足りなさを感じ
たという、目標に関しての評価が多数があった。また、今までのやってきたことと今後やっていく
ことの線引きが明確でわかりやすかった、様々な暗号化方式について調べられていて、それら一つ
一つを実装に向けて活動しているのが凄いと思いましたなどの良い評価もあった。
今後の課題としては、RSA 暗号などの難しいイメージがあるものを分かりやすく説明するアプ
リケーションがよいというものや、もっと iPad の機能を活かしたアプリケーションがよいといっ
たものがあった。
(文責: 青塚圭祐)
Group Report of 2011 SISP
- 28 -
Group Number 13-C
Visualization of Code-Breaking
第 10 章
相互評価
実装班メンバーの相互評価について記述する。
10.1
大久保貴裕に対する評価
稲熊卓記:グループのリーダーとしてそつなく仕事をしていた。また、プログラミングを一生懸
命に取り組んでいた。
青塚圭祐:グループリーダーでありながら、細かな仕事をこなしていた。アプリケーションの制作
に一役買っていた。
(文責: 大久保貴裕)
10.2
稲熊卓記に対する評価
大久保貴裕:革新的な発想をし、より良いプログラムをつくるのに貢献した。また、ポスターの
制作をする際に、デザインなどをしてくれた。
青塚圭祐:デザインの経験を生かした仕事をこなしてくれた。ポスター制作のときに、図なども
作ってくれた。
(文責: 大久保貴裕)
10.3
青塚圭祐に対する評価
大久保貴裕:グループを影で支えるまとめ役として機能していた。そして、積極的にディスカッ
ションに参加していた。
稲熊卓記:しっかりとした日程を組み、計画的に仕事をしていた。また、プログラミングについて
も頑張っていた。
(文責: 大久保貴裕)
Group Report of 2011 SISP
- 29 -
Group Number 13-C
Visualization of Code-Breaking
第 11 章
11.1
まとめ
プロジェクトの成果
暗号解読の可視化プロジェクトである私たちの目標は一般の人に暗号をわかりやすく説明する
ことであり、その成果物として暗号解読を可視化したアプリケーションを製作したのである。この
ために私たちは4つのグループに別れ作業を行った。それぞれ RSA 暗号グループ、楕円曲線暗号
グループ、誕生日パラドックスグループ、実装グループである。RSA 暗号、楕円曲線暗号、誕生日
パラドックスグループはそれぞれの担当する暗号について詳しく調査し、暗号解読の学習、またア
プリケーション実装に適した暗号解読法の調査をした。実装グループはアプリケーション実装の環
境づくり、またアプリケーションの実装を担当した。こうしてわれわれは目標であったアプリケー
ションを製作した。アプリケーションには頻度分析を用いた暗号解読法で暗号文を平文にする過程
を表示するものとなっている。また暗号について学習し、その内容についてもまとめた。ポスター
などがその成果物である。
(文責: 青塚圭祐)
11.2
各人の役割
実装グループのメンバーはリーダー大久保貴裕、稲熊卓記、青塚圭祐の3人である。大久保貴
裕は主にプログラミングを担当した。またグループリーダーでもあるため周りとの連絡を蜜に取っ
ていた。稲熊卓記は本プロジェクト内の唯一の情報デザインコースなのでポスター製作などが主な
役割であったが、アプリケーションの実案などの助言なども行った。青塚圭祐は主に大久保貴裕の
プログラミングの手助けを担当した。具体的にはプログラミングで手詰まりしたときの改善方法の
検索、またアプリケーション実装までの手順や案などをまとめ具体的なものを提案した。また、全
員がお互いの仕事を助け合っていた。手が空いた時には、なるべく他の人の手伝いをするようにし
ていた。これは、他のグループの人に対してもそうである。プロジェクトのメンバー全員がコミュ
ニケーションをとり、一致団結して協力しあうのが理想とされた。
(文責: 青塚圭祐)
11.3
今後の課題
今後の課題については最終発表のときに頂いた評価から、RSA 暗号などの難しいイメージが
あるものを分かりやすく説明するアプリケーションがよいというものや、もっと iPad の機能を活
かしたアプリケーションがよいといったものが求められる。本来の目標である一般の人に暗号解読
をわかりやすく伝えるというものは、暗号解読法の全般をあくまで簡単に説明するというもので、
暗号解読法の難解なものを簡単に説明するといったものではないのである。だが今後の課題として
Group Report of 2011 SISP
- 30 -
Group Number 13-C
Visualization of Code-Breaking
難解な暗号解読法を分かりやすく説明できるアプリケーションの実装というのも良いのではないか
と思う。また今回の目標でありながらより良いアプリケーションの実装も今後の課題として挙げら
れる。まずアプリケーションに使用する暗号解読法の提案。一般の人に説明するのにより良い暗号
解読法を見つけるということである。そして次にアプリケーションの実装。ここは改善点がたくさ
んあると予想されるので工夫次第でより良いアプリケーションができるであろう。次に iPad の機
能をもっと活用するという点である。これにより体感することでわかりやすくなるものができるこ
とが予想される。また今回は iPad への実装だったが、他の媒体への実装も考えられる改善点であ
る。今主流となってきているスマートフォンへの実装により、携帯できるアプリケーションとして
より親しみやすいものができると予想できる。よって今後の課題としてはより分かりやすい暗号解
読法やアプリケーション、また実装する媒体考察が求められる。
今後の課題としては、RSA 暗号などの難しいイメージがあるものを分かりやすく説明するアプ
リケーションがよいというものや、もっと iPad の機能を活かしたアプリケーションがよいといっ
たものがあった。これらの評価は説明内容について不十分であるというものが多かった。他に暗号
のおもしろさを伝える対象に触れていなかったので、一体何が目標なのか分からないというもの
や、目標は決めているもののそれが何をなすのかが理解できしにくく伝わらない、目標としては少
し物足りなさを感じたという、目標に関しての評価が多数があった。また、今までのやってきたこ
とと今後やっていくことの線引きが明確でわかりやすかった、様々な暗号化方式について調べられ
ていて、それら一つ一つを実装に向けて活動しているのが凄いと思いましたなどの良い評価もあっ
た。 今後の課題としては、RSA 暗号などの難しいイメージがあるものを分かりやすく説明する
アプリケーションがよいというものや、もっと iPad の機能を活かしたアプリケーションがよいと
いったものがあった。
(文責: 青塚圭祐)
Group Report of 2011 SISP
- 31 -
Group Number 13-C
Visualization of Code-Breaking
付録 A
新規習得技術
・PARI/GP
プロジェクトメンバー全員が新規に習得した技術として PARI/GP を利用した暗号化、復号、解
読技術があげられる。PARI/GP とは計算機代数アプリケーションであり、数論に関する様々な代
数演算を行うことが可能である。これにより、解読の際に重要とされている素因数分解を行った。
PARI/GP を用いてプログラムを組み、RSA 暗号や楕円曲線暗号の基礎的な暗号化、復号、解読
技術を多くの試行を繰り返し学んだ。これらの技術を利用してそれぞれの暗号での解読の可視化へ
向けての作業を行ってきた。
・TeX
個人報告書、グループ報告書の作成のために TeX を利用した。TeX とは文章と文章の構造を指
定する命令とが記述されているテキストファイルを読み込み、その命令に従って文章を組版するた
めのソフトウェアである。
・Adobe Illustrator CS4
ポスターの作成のためにグラフィックソフトウェアである Adobe Illustrator CS4 を使用した。
Group Report of 2011 SISP
- 32 -
Group Number 13-C
Visualization of Code-Breaking
付録 B
活用した講義
大型プリンタ講習会 ポスター印刷に必要な知識を得た。
Tex 講座 評価シートの記述や報告書の作成に役立った。
Group Report of 2011 SISP
- 33 -
Group Number 13-C
Visualization of Code-Breaking
参考文献
かみながまさひろ
や ま だ せい
わたなべ た か し
[1] 神永正博, 山田聖, 渡邊高志, Java で作って学ぶ暗号技術, 森北出版, 2008.
つじいしげお
かさはら ま さ お
[2] 辻井重男, 笠原正雄, 暗号理論と楕円曲線 森北出版, 2008.
[3] J.H. シルヴァーマン, J. テイト , 楕円曲線論入門 シュプリンガー・フェアラーク東京株式会
社, 1995.
[4] イアン・F・ブラケ, ガディエル・セロッシ, ナイジェル・P・スマート, 楕円曲線暗号 株式
会社ピアソン・エデュケーション, 2001.
[5] 森巧尚, よくわかる iPhone アプリ開発の教科書 毎日コミュニケーションズ, 2011.
[6] 荻原剛志, 詳解 Objective-C2.0 改訂版 ソフトバンククリエイティブ株式会社, 2010.
[7] PARI/GP,
newblock http://pari.math.u-bordeaux.fr/
[8] 暗号とは,
newblock http://dev.sbins.co.jp/cryptography/crypto
graphy01.html
Group Report of 2011 SISP
- 34 -
Group Number 13-C