RSA - 公立はこだて未来大学

公立はこだて未来大学 2011 年度 システム情報科学実習
グループ報告書
Future University Hakodate 2011 System Information Science Practice
Group Report
プロジェクト名
暗号解読の可視化
Project Name
Visualization of Code-Breaking
グループ名
RSA・楕円曲線暗号グループ
Group Name
RSA Code・Elliptic Curve Cryptograrhy Group
プロジェクト番号/Project No.
13-B
プロジェクトリーダ/Project Leader
1009087
Takahiro Okubo
大久保貴裕
グループリーダ/Group Leader
1009064
Takumi Ito
伊藤拓海
グループメンバ/Group Member
1009064
伊藤拓海
Takumi Ito
1009067
亀井謙斗
Hanako Hakodate
1009076
永井善孝
Yoshitaka Nagai
1009145
及川真那実
Manami Oikawa
指導教員
白勢政明
小西修
Advisor
Masaaki Shirase Osamu Konishi
提出日
2012 年 1 月 18 日
Date of Submission
January 18, 2012
概要
本プロジェクトでは暗号の解読を可視化し暗号に興味のない人にも楽しんでもらえるような装
置を実装する。前半は誕生日パラドックスグループ、RSA 暗号グループ、楕円曲線暗号グルー
プ、実装グループの 4 つのグループに分かれて暗号について学習した。後半では RSA 暗号グ
ループと楕円曲線グループを合わせ学習した。
RSA 暗号は桁の大きい数の素因数分解の難しさより安全性が確保されている暗号であり、広
く一般的に使われている。また楕円曲線暗号は比較的新しい暗号で RSA 暗号よりも計算時間
が短く処理も早いが RSA 暗号と同等の処理ができる。広く一般的に使われており、一般の人
がイメージする共通鍵暗号の解読には頻度分析のような考え方が必要となる。これに対して公
開鍵暗号である RSA 暗号や楕円曲線暗号は誕生日パラドックスの考え方を利用して解読する
ことができる。そのため誕生日パラドックスは暗号の世界ではとても重要である。本プロジェ
クトではこのようなことをわかりやすく可視化するためのアプリケーションを実装したい。
キーワード
キーワード 公開鍵暗号,誕生日パラドックス,RSA 暗号,楕円曲線暗号
(文責: 伊藤拓海)
-i-
Abstract
This project implements a device for person who are not interested in cryptography to
enjoy by visualization of break. Then, we divide into four groups, Birthday paradox,
RSA cryptography, Elliptic Curve Cryptography, Implementation and learn it about a
code the first term. The RSA cryptograph group and the Elliptic Curve Cryptography
were united and learned the second term.
RSA cryptography is generally used widely because safety is secured by the hardness
prime factoring of big numerical. Elliptic Curve Cryptography is a relatively new cryptography. Elliptic Curve Cryptography can handle the processing that is equal to RSA
cryptography in short time. Attacker 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 fild of the cryptography. 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
到達目標
2
第2章
2.1
本プロジェクトにおける目的
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
2.2
具体的な手順・課題設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
課題解決のプロセスの概要
4
3.1
前期 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
3.2
後期 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
暗号とは
5
4.1
平文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
4.2
暗号化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
4.3
復号 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
4.4
アルゴリズム . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
4.5
鍵 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
4.6
公開鍵 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
4.7
秘密鍵 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
4.8
公開鍵暗号 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
4.9
共通鍵暗号 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
4.10
DES 暗号 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
4.11
デジタル署名 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
4.12
ユーザ認証 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
4.13
情報の保護 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
4.14
暗号の安全性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
RSA 暗号とは
11
5.1
特徴 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
5.2
秘密鍵と公開鍵 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
5.3
暗号化と復号 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
5.4
安全性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
5.5
ρ法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
5.6
RSA 暗号の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
暗号に必要な 4 つの条件
15
6.1
機密性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
6.2
完全性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
第3章
第4章
第5章
第6章
- iii -
6.3
認証 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
6.4
否認防止 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
暗号化と復号
16
7.1
RSA 暗号の実装例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
7.2
ユークリッドの互除法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
7.3
拡張されたユークリッド互除法 . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
7.4
暗号化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
7.5
復号 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
7.6
ρ法による解読 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
楕円曲線暗号
21
8.1
楕円曲線とは . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
8.2
楕円曲線上での演算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
8.3
加算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
8.4
2倍算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
8.5
スカラー倍算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
8.6
楕円曲線上の離散対数問題 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
8.7
楕円曲線暗号とは
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
8.8
特徴 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
8.9
楕円エルガマル暗号 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
8.10
成果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
26
課題解決のプロセスの詳細
28
9.1
全体のプロセス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
28
9.2
各人の課題の概要とプロジェクト内における位置づけ
. . . . . . . . . . . . . . .
28
9.3
担当課題と他の課題の連携内容 . . . . . . . . . . . . . . . . . . . . . . . . . . .
35
第7章
第8章
第9章
9.3.1
伊藤拓海 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
35
9.3.2
亀井謙斗 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
35
9.3.3
永井善孝 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
35
9.3.4
及川真那実 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
35
第 10 章 発表会評価
10.1
10.2
36
中間発表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
36
10.1.1 発表技術について . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
36
10.1.2 発表内容について . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
36
10.1.3 中間発表の評価まとめ . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
37
最終発表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
38
10.2.1 発表技術について . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
38
10.2.2 発表内容について . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
39
10.2.3 最終発表の評価まとめ . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
第 11 章 結果
11.1
42
成果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
- iv -
42
11.2
結論 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
42
第 12 章 今後の展望
44
第 13 章 相互評価
45
付録 A
新規習得技術
50
付録 B
活用した講義
51
参考文献
52
-v-
Visualization of Code-Breaking
第1章
背景
情報化社会の現代においてインターネットというのは身近な存在になっている。携帯電話やパソ
コンから誰でも気軽にアクセスができるようになった。インターネットがつながっている場所なら
ばどこでも世界中の人とコミュニケーションが取れたり、どのようなことが起こっているかなどの
情報を得ることができる。しかしこれは第三者が簡単に他人の情報を得ることができたり他人にな
りすましたりすることができるようになってしまったといえる。インターネットを利用する上でこ
のようなことを防ぐためにもセキュリティ技術は欠かすことができないものである。
セキュリティ技術の中でも暗号技術というのは広く使用されているものである。暗号化は第三者
に通信内容を見られても読めないように変換する表記法で特殊な知識がない限りは見ることができ
ない。通信のみでなく保管する文章などにも使用できる。
しかしインターネット利用に置いて重要で身近なものでも一般には認識が薄いところがある。パ
スワードを覚えやすい簡単な文字列にしたり、他人に分かってしまうようなものにしてしまうなど
意識の低さが見られるところがある。
(文責: 伊藤拓海)
1.1
現状における問題点
非常に重要で身近に使われている暗号だが一般にはあまり関心が持たれていない。暗号と聞くと
難しく堅苦しいなどのイメージを持っている人が多いかもしれない。さらにインターネットを使う
上でもパスワードを自分で設定することがあっても暗号に直接触れる機会は少ない。
(文責: 伊藤拓海)
1.2
課題の概要
暗号というものは誰もが直接目に見えて使うものではない。そこで私たちは暗号の解読を目に見
える形で行いさらに楽しんでもらえるような形で行うことで暗号というもののマイナスのイメージ
を消し、もっと身近に感じてもらおうとした。
(文責: 伊藤拓海)
Group Report of 2011 SISP
-1-
Group Number 13-B
Visualization of Code-Breaking
第 2 章 到達目標
2.1
本プロジェクトにおける目的
今、世界中でインターネットが普及している。このように世界がつながっている中で安全にイン
ターネットを利用できている理由として挙げられるのが「さまざまな暗号の利用」である。私たち
のプロジェクトの目標としては、多くの人に暗号に興味を持ってもらうために、さまざまな暗号
(RSA 暗号や楕円曲線暗号など)を目に見えるように可視化しようというものである。このような
可視化をしようと思った理由は、多くの人が暗号に対して「複雑なイメージがある」や「大変そう」
といった学ぶことに対してのマイナスの考えが多いだろうということで、暗号をより身近に感じて
もらおうと考えたからである。これにより、現在私たちが生きている中で暗号が広く使われている
ことを感じ取ることができ、暗号の大切さ・重要さを再認識できるだろう。これらのことを学びな
がら暗号の基礎を知り、可視化するための方法などについて考えていく。
(文責: 伊藤拓海)
2.2
具体的な手順・課題設定
本プロジェクト全体の目的は、上で挙げた通り暗号の可視化である。前期には暗号を学ぶために
誕生日パラドックス班・RSA 暗号班・楕円曲線暗号班の 3 つのグループとアプリ作成の準備のた
めの実装班の計 4 つのグループで行い、後期にはさらに深く学習するため RSA 暗号班・楕円曲線
暗号班を合わせた RSA・楕円曲線暗号班と頻度分析を学習するための頻度分析班、アプリを作成
するための実装班の計 3 つのグループにして行なった。
誕生日パラドックス班の前期の目標は、誕生日パラドックスの基礎を学び、スライドを使って他の
人に説明できることとした。また、換字式暗号のプログラム作成や頻度分析についても理解しよう
というのを目標とした。
RSA 暗号班の前期の目標は、まずは RSA 暗号の基本的な構造を学ぶということである。RSA
暗号の考え方や使用例などを学び、数学的な考えや誕生日パラドックスとの関連性などについても
理解することを目標とした。また、RSA 暗号の複雑さを理解するために RSA 暗号の解読プログラ
ムの作成も目標として掲げた。
楕円曲線暗号班の前期の目標は、まず楕円曲線暗号の基本構造を理解することとした。その後、
楕円曲線暗号の実装プログラムを組むことを目標とし、解読のプログラム作成のためのρ法を学
び、解読プログラムの作成をしようと考えた。
実装班の前期の目標は、暗号解読の可視化をするためにアプリケーション開発に関しての知識を
増やしたり、アプリケーション開発環境の整理などとした。また、中間発表の際のポスターをイラ
ストレーター使い製作することを目標とした
RSA・楕円曲線暗号班の後期の目標は前期で学んだことを生かし二つの暗号の共通点や相違点
などを話し合いもっと二つの暗号についての理解することを目標とした。
頻度分析班の後期の目標は、頻度分析の基本的な構造を学ぶということである。さらに頻度分析
の中では暗号の歴史について調べることも目標とした。
Group Report of 2011 SISP
-2-
Group Number 13-B
Visualization of Code-Breaking
実装班の後期の目標は学習班の作成したプログラムをアプリとして iPad で実行できることを目
標とした。
(文責: 伊藤拓海)
Group Report of 2011 SISP
-3-
Group Number 13-B
Visualization of Code-Breaking
第 3 章 課題解決のプロセスの概要
本プロジェクトの目的は可視化ということなのでその方法について考えた。大きな考えとしては
iPad を使った可視化である。本プロジェクトのプロセスとして、RSA 暗号班・楕円曲線暗号班は
まずは PARI/GP という高速計算機の使い方を学んだ。また、暗号というものには共通鍵暗号と
公開鍵暗号があるので、その 2 種類についての概要を学んだ。後期には新たに 2 つの班をあわせて
目標を立て行なった。ここからプロセスについて前期と後期に分けてまとめる。
(文責: 伊藤拓海)
3.1
前期
RSA 暗号班の課題に対するプロセスは、RSA 暗号の基本的な構造の理解や数学的な考えの理
解をし、素因数分解の重要性などを学んだ。他にも誕生日パラドックスとの関連性を学び、それを
実装する段階で理解した。また、PARI/GP という高速計算機を用いて RSA 暗号の解読プログラ
ムの作成も行った。
楕円曲線暗号班のプロセスとしては、まず数学的な楕円曲線について学び、その後楕円曲線暗号
の基本的な構造の理解を行った。解読のために必要なρ法という解読方法を学んだ。また、楕円曲
線暗号のプログラム作成や解読プログラムの作成なども行った。
(文責: 伊藤拓海)
3.2
後期
後期のプロセスは、まず前期に行なったことを復習し互いの活動内容や PARI/GP で行なっ
た作業を確認しあった。そして二つの暗号の共通点や相違点などを話し合い暗号についての理解を
深めあった。さらに暗号に欠かせないρ法を中心に学び、プログラムを作成した。
(文責: 伊藤拓海)
Group Report of 2011 SISP
-4-
Group Number 13-B
Visualization of Code-Breaking
第4章
暗号とは
暗号とは当事者以外には意味がわからないように、当事者間でのみ理解できるように取り決め
た、特殊な記号や文字、またはその手順の方式のことである。
(文責: 亀井謙斗)
4.1
平文
暗号化するときに送信者が送りたい元の文章のことである。
(文責: 亀井謙斗)
4.2
暗号化
平文を暗号文に変換する作業のことである。暗号化が複雑になればなるほど復号に時間がかかっ
たり、暗号化プログラムも大きなものになる。
(文責: 亀井謙斗)
4.3
復号
受信者が暗号文を元の文章 (平文) に戻すことである。
(文責: 亀井謙斗)
4.4
アルゴリズム
暗号化や復号を行うための手順である。
(文責: 亀井謙斗)
4.5
鍵
暗号化に用いるパラメーターのことである。
(文責: 亀井謙斗)
4.6
公開鍵
公開鍵暗号でデータの暗号化に用いる鍵で、あらかじめ他の人に公開している鍵である。
Group Report of 2011 SISP
-5-
Group Number 13-B
Visualization of Code-Breaking
(文責: 亀井謙斗)
4.7
秘密鍵
公開鍵暗号で使用される一対の鍵の組のうち、一般的に誰にも公開されない鍵である。
(文責: 亀井謙斗)
4.8
公開鍵暗号
公開鍵暗号とは、公開鍵と秘密鍵の対になる 2 つの鍵を使ってデータの暗号化と復号を行う暗号
方式である。公開鍵暗号では、暗号文を作り出す鍵と暗号文を元に戻す鍵が異なる。暗号通信をし
たい人は、まず独自に対になる 2 つの鍵を作成する。1 つは平文を暗号化して暗号文を作り出す鍵
で公開鍵と呼ばれ、通信相手に知らせる鍵としてインターネット上でもやりとりできる。だれでも
この公開鍵で暗号文を作成でき、鍵を公開している人に送ることができる。暗号文の受け手は、公
開鍵と対になっている、本人だけが分かるように厳重に管理された秘密鍵で復号する。そのため、
暗号化されたメッセージが途中で第三者に見られることになっても中身を解読されることはない。
公開鍵暗号は公開鍵の共有が容易なことや、相手の数に関係なく公開鍵は1つのみでいい等、鍵の
管理が容易で安全性が高い。
公開鍵暗号は共通鍵暗号よりも処理が複雑であり、より多くの計算資源や時間を必要とする。この
ため、暗号通信に利用する場合は、実際の通信内容の暗号化には即興で鍵を生成した共通鍵暗号を
使い、その鍵を送信者と受信者の間で安全に交換するために公開鍵暗号を使うといった使い方をす
ることが多い。また、公開鍵暗号は非対称な鍵を用いる特徴から、デジタル文書の正当性を保証す
るデジタル署名にも応用されている 。
公開鍵暗号方式を用いれば、送信者が通信の事実を後で否認したり、他人が偽造することを不可能
にするデータ転送が可能になる。公開鍵暗号の欠点としては、暗号化通信中の計算負荷と通信負荷
がともに大きいことである。計算負荷を比較すると、公開鍵暗号は通常、共通鍵暗号よりも 2 桁か
ら 3 桁以上、速度で劣る。公開鍵暗号の速度を制限する要因は、べき剰余演算である。RSA 暗号
では送信者側で 1 回+受信者側で 1 回=合計 2 回、ElGamal 暗号では送信者側で 2 回+受信者側
で 1 回=合計 3 回行わなければならない。通信負荷を比較すると、DES では 64bit の平文が同じ
く 64bit の暗号文に変換されて送られるので、通信オーバヘッドは発生しない。初期ベクトルが必
要なモードで利用したとしても、通信オーバヘッドでは 64bit である。それに対して、1024bit の
素数を用いた ElGamal 暗号では 1024bit の平文が倍の 2024bit の暗号文に変換されて送られる。
すなわち、1024bit もの通信オーバヘッドが加わることになる。RSA 暗号ではオーバヘッドは発生
しないが、平文も暗号文も RSA 合成数サイズ単位で処理されるので、サイズの小さなデータのや
り取りに用いればパッティングのオーバヘッドは大きいことになる。また、任意長の平分を扱う場
合は大きな通信オーバヘッドが必要となる。鍵のビット長や平文(元のデータ)長を長くとる必要
があるため、暗号化と復号が複雑化し、処理時間を要することなどがある。
公開鍵暗号を使用するための具体的な暗号方式がいくつか存在している。最も有名なのは、巨大な
整数の素因数分解の困難さを利用した RSA 暗号で、現在最もよく使われている暗号方式で様々な
分野で利用されている。他には、離散対数問題の解の困難さを利用した ElGamal, 暗号楕円曲線上
の離散対数問題を利用した楕円曲線暗号などがある。
Group Report of 2011 SISP
-6-
Group Number 13-B
Visualization of Code-Breaking
(文責: 亀井謙斗)
4.9
共通鍵暗号
共通鍵暗号とは、暗号化するときと復号するときに同じ鍵を利用する暗号方式である。また,そ
れぞれの鍵を秘密に管理する必要があるため,秘密鍵暗号方式と呼ばれる場合もある。共通鍵暗号
の代表的な例としては DES がある。
共通鍵暗号の長所は,処理が比較的高速であるという点である。共通鍵暗号のアルゴリズムは色々
あるので,共通鍵暗号のアルゴリズム間で比較すると差はある。しかし、公開鍵暗号と比べれば総
じて高速であるといえる。このため,大量デー タの暗号化に向いている。短所となるのは,鍵の配
送・管理に気を使わなければならないという点です。共通鍵暗号の仕組みを利用するには,受信者
があらかじめ鍵を入手しておく必要がある。したがって、大勢で相互に共通鍵暗号を利用してデー
タをやり取りするときは鍵の数が増えてしまうので管理が大変になる。
また、安全性のために、鍵は暗号額的にランダムに生成されるべきである。要するに、統計学的に
ランダムではなく、予測不可能性も満たさなければならない。しかし、本質的に一意決定的な動作
指向で設計されているデジタル計算機は、そのような乱数生成は苦手である。
さらに、鍵に関してはいくつかの留意する必要がある。それは、鍵の長さが長いほど処理速度が遅
くなる、鍵の長さが不十分であれば、所望の安全性は得られない、同じ鍵を使えば使うほど、攻撃
が容易になる、使用する共通鍵暗号方式に独特のある既存の攻撃に弱く、破られやすいことがわ
かっている鍵がある場合には、それを秘密鍵として採用しないなどといったことである。
(文責: 亀井謙斗)
4.10
DES 暗号
DES は、データを 64 ビット長のブロックに分割し、各ブロックを 56 ビット長の鍵で暗号化す
る共通暗号鍵アルゴリズム。トリプル DES は、DES を 3 重に繰り返すことで、暗号強度を高めて
いる。DES は仕様が公開されている。
UNIX システムにおけるログイン時のパスワードによるユーザー認証で DES が使われているのは
有名である。UNIX のパスワードは DES の鍵として機能しており、ある固定したデータを、ユー
ザーが打ち込んだパスワードを鍵として暗号化する。その出力された暗号文を、/etc/passwd に記
録されたユーザーの暗号文データと一致するかどうかをチェックすることによって、ユーザー認証
を行っている。UNIX のパスワードが 8 文字までしか有効ではないのは、DES の鍵が 56 ビット
であることと関連している。トリプル DES が採用されていれば、16 文字あるいは 24 文字まで有
効である。
(文責: 亀井謙斗)
4.11
デジタル署名
デジタル署名はインターネットを通じてやり取りされるデータの正当性を保証するために用いら
れる電子書名を公開鍵暗号の技術を用いて、暗号化された署名情報のことである。また、デジタル
Group Report of 2011 SISP
-7-
Group Number 13-B
Visualization of Code-Breaking
署名を行うための技術および一連の手順のことである。公開鍵暗号を応用したもので、文書の送信
者を証明し、かつその文書が改竄されていないことを保証する。送信者は、メッセージの原文から
一定の計算手順で割り出した短いデータを文書に添付して送信する。受信者は受け取った署名デー
タを一定の手順でこれを検証することにより、文書に署名を行ったのが送信者本人であることや、
文書が通信途上で改ざんされていないことなどを確認することができる。
デジタル署名は電子署名を実現するための方式の一つであり、電子署名とは紙に署名する行為を電
子的に代替する技術の一般的な総称のことを指す。
デジタル署名の安全性を保つためには、偽造できない、偽造されないといった、次の3つの偽造不
可能性が必要である。1つ目は、一般的偽造不可能性である。これは、署名を偽造できないメッ
セージが存在することである。2つ目は、選択的偽造不可能性である。これは、ある特定のメッ
セージには署名を偽造できるが、それ以外のメッセージには書名を偽造できないことである。3つ
目は、存在的偽造不可能性である。これは、いかなるメッセージに対しても署名を偽造できないこ
とである。
ここでは、デジタル署名に対する3つの攻撃の種類を説明する。1つ目は、受動攻撃である。これ
は、公開鍵だけを使って署名の偽造を試みる攻撃である。2つ目は、一般選択的文書攻撃である。
これは、攻撃者があらかじめ選択しておいたメッセージに対して正規ユーザに署名をさせ、その結
果を参考にして別のメッセージに対する署名の偽造を試みる攻撃である。3つ目は、適応的選択文
書攻撃である。これは、攻撃者が選択したメッセージに対して正規ユーザに署名をさせ、その結果
を見て攻撃者が次のメッセージを選択し、それに対して正規ユーザに署名の偽造を試みる攻撃であ
る。一般選択文書攻撃と適当的選択文書攻撃は、いくつかの選択メッセージ、署名対を入手できる
かという個数でさらにランク付けすることもできる。但し、実際のネットワークアプリケーション
で具体的に何個の選択メッセージ、署名対を入手できるかは推測困難なことである。
(文責: 亀井謙斗)
4.12
ユーザ認証
ユーザ認証とは情報にアクセスしようとするユーザが何らかの形で身元保証されているユーザで
あることを確認することをいう。相手が人である場合はこれを個人認証と呼び、パスワードのよう
な記憶による方法、IC カードなどの持ち物による方法、指紋、虹彩パターンなどバイオメトリッ
クスによる方法がある。
記憶、持ち物、バイオメトリックスのいずれもユーザの持つ固有情報または固有の能力に基づいて
ユーザを確認していることになる。持ち物の場合も、持ち物の持つ情報または能力により確認して
いるわけである。持ち物の場合、それがコピーされて悪用されることを防ぐためには、その持ち物
に耐タンパー性を持たせるか、あるいはその持ち物に対し固有で改竄の難しい情報を利用しなけれ
ばならない。このような情報としての例としては、磁気記録において記憶されたパルスの感覚の微
妙な揺らぎ、磁気繊維を漉き込んでできる磁気のランダムなパターンがある。
最もよく用いられる個人認証はパスワードによるものであるが、簡単なだけに、管理が杜撰である
と攻撃を受けやすく、盗まれてしまうことが多い。自分の名前やタレントの名前などをパスワード
として用いるのは論外であるが、辞書に載っているような言葉であれば、パスワード攻撃用のプロ
グラムで推定されてしまう恐れがある。
最近では推定しやすいパスワードは管理者が警告を発するなどして改善が図られているが、弱いパ
Group Report of 2011 SISP
-8-
Group Number 13-B
Visualization of Code-Breaking
スワードが不正侵入を誘う最大の入り口であることは変わりないのである。そのために、パスワー
ドの作り方、管理のしかたに対する啓蒙が必要である。しかし、誰でも使うインターネットなどの
システムにおいては、パスワードの管理を徹底するのは難しいと考えれれている。
また、インターネットでパスワードをそのまま相手に渡したり、流すのは非常に危険なことであ
る。それはネットワークを流れるパスワードを採集するようなプログラムも存在するからである。
もしパスワードの交換を行う際にはパスワードを暗号化して行うか、または毎回パスワードが変わ
る、ワンタイムパスワード方式を用いるのが好ましい。
人以外の認証も、その対象が持つ固有情報または固有能力を利用することは変わりのないことであ
る。このような場合は、不正アクセスがありえる環境では、暗号的な認証が基本となる。これは、
その対象がある秘密の暗号鍵を用い得る事を確かめることにより行われる認証である。例として
は、与えられた乱数をこの秘密の鍵で暗号化できるかどうかを確認するのである。正しく暗号化さ
れていることが確かめられれば、この対象は秘密の暗号鍵を使える立場にあることが確認できて、
それによってある資格を持つことが認証できるのである。
このようにして認証される側がある固有情報を持つことを確認したとしても、認証する側が認証
される側をよく知らなければ、認証される側を信用することができないのである。そのため、この
ような場合は、認証する側の信頼する人は機関が認証される側が必要な資格をもつことを証明す
る必要がある。これは、認証される側の固有情報と資格との結びつきを、機関の署名などにより保
障した証明書を提示することにより行われる。言い換えれば、認証する側が信頼している人または
機関に認証される側を紹介してもらうようなものである。それにより、信頼の移管が行われるので
ある。
(文責: 亀井謙斗)
4.13
情報の保護
情報の保護とは、対象となる情報への定められた形のアクセスを、定められた情報を持つものに
だけ許して、それ以外のアクセスを排除することをいう。本来許されないアクセスを不正アクセス
と呼ばれている。この不正悪性の代表的な例として、盗聴、改竄、偽造などがある。情報保護には
2 通りの方法が存在する。1 つは防止であり、もう 1 つは検知による抑止である。
防止は、施設、設備などの物理的安全性に基づく方法、ソフトウェアによる方法があり、それぞれ
重要であるが、特に重要となるのは暗号的な手法である。これは暗号化することにより仮に情報を
見られたとしても、情報は漏洩しないようにする方法である。
検知による抑止は、不正アクセスが生じたときに、それを検知し警告を発したり、その情報を無効
にして被害を防いだり、不正アクセスの証跡に基づいて何らかの制裁を加えるなどの手段により不
正アクセスの意欲を削ぎ、抑止することをいうのである。このためには不正アクセスを検知するこ
とが必須であり、さらには不正アクセス者の検知、不正アクセスの証跡の保持も重要である。
(文責: 亀井謙斗)
Group Report of 2011 SISP
-9-
Group Number 13-B
Visualization of Code-Breaking
4.14
暗号の安全性
暗号を守秘に用いる場合、解読ができるだけ難しくなるように暗号を設計しなければならない。
このとき、解読者の入手可能な情報が何であるかによって、暗号に対する攻撃を暗号文攻撃、既知
平文攻撃、選択平文攻撃の 3 つに分けることができるのである。
暗号文攻撃は、解読者が暗号文のみを入手可能と想定したときの攻撃である。但し、暗号文は大量
に入手できると考える。既知平文攻撃は、平文と暗号文の対が入手可能な場合の攻撃である。これ
は暗号文のみによる攻撃より厳しい攻撃であるが、このような状況は実際にしばしば生じることが
るので、暗号を設計する場合は、少なくとも既知平文攻撃を想定すべきことである。さらに、通常
は選択平文攻撃に耐えるように設計するとより強力な暗号になる。選択平文攻撃は、解読者が任意
に選んだ平分に対する暗号文が得られるという状況であり、最も厳しい攻撃である。
暗号の安全性には、情報理論的安全性と計算量的安全性がある。しかし、情報論理的に安全な暗号
は、膨大な秘密鍵を要するため、実用的ではない。商用や世間一般的に使われている暗号は、ほと
んどが計算量的に安全な暗号である。
計算量的に安全であるとは、原理的には解読でても、膨大な計算量を要し、実際には解読不可能で
ある場合をいう。商用暗号のほとんどは計算量的な安全性を目指して設計されている。たとえば、
DES は、既知平文攻撃の場合、入手した平文と暗号文の対に対して、すべての鍵を確かめるとい
う総当り攻撃を行えば原理的には鍵が求まり、解読可能となる。しかし、鍵の総数は2の56乗で
あり、1000万分の1秒で1つの鍵を調べたとしても、すべての鍵を調べるには200年以上か
かる計算となり安全であると考える。
(文責: 亀井謙斗)
Group Report of 2011 SISP
- 10 -
Group Number 13-B
Visualization of Code-Breaking
第 5 章 RSA 暗号とは
Ronald Rivest 氏、Adi Shamir 氏、Leonard Adleman 氏の 3 人が 1978 年に開発した公開鍵暗
号の一つで、現在インターネットなどで最も使用されている暗号方式である。RSA 暗号を解読す
るには、巨大な整数を素因数分解する必要があり、効率の良い鍵の発見方法はまだ見つかってい
ない。
(文責: 亀井謙斗)
5.1
特徴
RSA 暗号は暗号化も復号化も行える公開鍵暗号の一つであり,鍵の長さは可変長である。RSA
暗号の作成し使用する際には,安全性の強化のためには鍵の長さを非常に長くする必要があり,効
率を良くするのためには鍵の長さが短い鍵を作成する必要がある。RSA 暗号の平文の長さ(暗号
化されるデータのサイズ)もまた可変長である。平文の長さは,鍵の長さよりも小さい必要があ
る。暗号文の長さは鍵の長さと同じにする必要がある。
(文責: 亀井謙斗)
5.2
秘密鍵と公開鍵
RSA 暗号では平文を暗号化する前に公開鍵と秘密鍵を作成する必要がある。それを以下で説明
する。
1.2つの大きな異なる素数 p,q を選択する。
2.n = p * q とφ (n) = (p − 1)(q − 1) を計算する。この n を係数と呼ばれている。
3.gcd(e, φ (n))= 1 の関係をもつ乱数 e(公開指数) を選択する。gcd とは2つの引数の最大公
約数を意味している。この公開指数 e と係数 n が公開鍵(e,n)となる。
4.1= de mod φ (n) となる d(秘密指数)を計算する。この秘密指数 d と係数 n が秘密鍵(d,n)
となる。
5.公開鍵(e,n)を公開する。p,q,d は誰にも知られないようにしておく。
(文責: 亀井謙斗)
5.3
暗号化と復号
送信者が送りたいメッセージを元の意味の通る文章のことを平文という。また。平文を鍵を使用
して一見しただけでは意味の通らない文章に変換したものの事を暗号文という。そして暗号化と
は、鍵を使用して暗号のアルゴリズムに従い、平文を暗号文に変換することをである。これに対し
て復号とは、暗号化の反対の操作を行って、元の文章を (平文) に戻す操作のことである。以下で
は暗号化と復号のときに実際に行われる操作についてを説明する。
Group Report of 2011 SISP
- 11 -
Group Number 13-B
Visualization of Code-Breaking
平文をM,暗号文をCとすると,M<nであれば,次の関係式が必ず成り立つ。
(1. C = M e mod n
(2. M = C d mod n
RSA 暗号の原理は,これらの関係式が必ず成り立つという数学的特性を利用している。 1 は暗号
化の操作を示していて、2は復号の操作を示している。
(文責: 亀井謙斗)
5.4
安全性
RSA 暗号の安全性は,大きな数を素因数分解するのが難しいというプロセスであり,それはい
くら暗号文C,係数nおよび公開指数eの値を知っていたとしても, 秘密指数dの値を知らなけ
れば暗号文Cから平文Mを得ることは計算量的に殆ど不可能であることを示している。つまり、攻
撃者が暗号文を復号することが計算量的に困難であるという期待に基づいている。
また,RSA 暗号はこれまで多くの人々の間で使われてきたが, 誰もその素早い解読方法を見つけ
られていないということによって信頼性を得ているわけである。もし素因数分解を簡単に行うこと
ができれば,RSA 暗号を解読することは可能である。 公開鍵(e, n)を知っていて,さらにもし
nを因数分解してpとqを知ることができるのであれば, 秘密指数dはそれらから簡単に求めら
れる。 しかし,nを素因数分解することだけが RSA 暗号を解読する唯一の方法かどうかは分かっ
ていないというのが現状である。
(文責: 亀井謙斗)
5.5
ρ法
ρ法とはポラードにより 1975 年にいくつかの合成数の素因数を速く見つける方法として考えら
れたものである。Ρ法は n を合成数、d を n の未知の真約数、f(X) を既約 (因数分解できない) 多
項式を使用する。実用上、X 2 + 1 のようなものを使う。整数 X0 から始めて、次の漸化式により
数列を生成する。
Xi = f (Xi − 1) mod n
例として X0 = 2, f (X) = X 2 + 1, および n=1133 とすると、数列は次のようになる。
X0 = 2, X1 = 5, X2 = 26, X3 = 677....... また、Y i = Xi mod d とおく。d=11 とすると Yi の
列は次のようになる。
Y 0 = 2, Y 1 = 5, Y 2 = 4, Y 3 = 6........ となる。Xi = f (Xi − 1) mod n であるから Yi は d を法
として f (Y i − 1) に合同である。d を法とする同値数は有限個しかない (すなわち、d 個) から、い
ずれ、ある i と j について、Y i = Y j が成り立つ。しかし、ひとたびこれが成り立つと以後循環
し、任意の正の t について、Y i + t = Y j + t が成り立つ。
Yi が Yj に等しければ、Xi = Xj(mod d) であり、d は Xi − Xj を割り切る。Xi と Xj が同じで
ない場合がほとんどであり、そうであれば gcd(n, Xi − Xj) は n の真の約数となる。循環の長さ
を c とすると、いったん尻尾を離れたら、c が j-i を割り切るような任意の i と j が使える。
(文責: 亀井謙斗)
Group Report of 2011 SISP
- 12 -
Group Number 13-B
Visualization of Code-Breaking
図 5.1
5.6
ρ法
RSA 暗号の例
RSA 暗号の例を実際に使われているものよりも小さい数で以下では表す。
p と q の素数を、
p = 7, q = 13 として,
n = p ∗ q = 72 とする。また,
e = 5 とします。ここで,φ (n) = (p − 1) ∗ (q − 1) = 220 と e との最大公約数は 1 となる。そこで,
ed ≡ 1(mod φ (n))
となる n 未満の正整数 d を計算する。実際に求めてみると,
d = 29
となる。
そこで,e と n の組 (e, n) = (5, 72) を公開し,n 未満の非負整数 x に対して,
xe (mod n)
によって暗号化する。例えば,x = 33 を暗号化する。
xe (mod n) = 335(mod 72) = 6 6 が暗号文である。これを受け取った側は,これを d 乗してもとの文を求める。実際,これを計
算すると,
6d (mod n) = 33
が得られ,復号されたことが分かる。
d の計算には,φ (n) = 72 が必要であった。しかし,φ (n) の計算には n の素因数分解が必要で
す。以上のことから個々では小さな数値で計算を行っているが実際には非常に大きな数で計算を行
Group Report of 2011 SISP
- 13 -
Group Number 13-B
Visualization of Code-Breaking
うことになるので n の素因数分解には非常に時間がかかり、p と q を知らない場合,φ (n) の計算
は難しくなる。
(文責: 亀井謙斗)
Group Report of 2011 SISP
- 14 -
Group Number 13-B
Visualization of Code-Breaking
第6章
6.1
暗号に必要な 4 つの条件
機密性
機密性とは、アクセスを認可された者だけが情報にアクセスできることを確実にすることであ
る。その様にする事で、第三者が見ることができなくなるので情報を漏えいや不正アクセスから保
護することができる。
(文責: 亀井謙斗)
6.2
完全性
完全性とは、情報及び処理方法が、正確であること及び完全であることを保護することである。
その様にする事で、情報の改ざんや間違いから保護するできる。
(文責: 亀井謙斗)
6.3
認証
認証とは、正当性を検証する作業である。ユーザ名とパスワードの組み合わせを使って、コン
ピュータを利用しようとしている人にその権利があるかどうかや、その人が名乗っている本人かど
うかなどを確認することである。利用者を識別してユーザごとに異なるサービスを提供するために
利用したりもする。認証の際に用いられる情報 (ユーザ名やパスワードなど) が他人に発覚すると
不正利用が行われてしまう恐れがある。そのため、金銭移動を伴うサービスなど、特に認証データ
の機密性が要求される場合には、認証データを暗号化するなど、漏洩防止に細心の注意が払われて
いる。成りすまし防止のための本人確認を行う認証については、認証サービスを行う企業から入手
したデジタル署名が用いられている。
(文責: 亀井謙斗)
6.4
否認防止
否認防止とは、インターネットなどで利用者が事後になってその利用事実を否定することができ
ないように証拠を残すことである。デジタル証明を利用した商取引などが挙げられる。デジタル署
名は、本人確認を行うための技術であり、これを利用することで、防止することが可能である。普
段から利用する顧客にデジタル証明を発行し、顧客はそのデジタル証明を利用して、商取引を行え
ば、事後にその取引を否認できなくなる。
(文責: 亀井謙斗)
Group Report of 2011 SISP
- 15 -
Group Number 13-B
Visualization of Code-Breaking
第 7 章 暗号化と復号
7.1
RSA 暗号の実装例
RSA 暗号の実装例として、RSA 暗号を使った文章を変換させるプログラムを C 言語を用い
て作成した。今回は ASCII 文字コード表を用いてアルファベット、数字及び記号を数値化して扱
うプログラムを作成した。RSA 暗号を実装するにあたって、2つの異なる素数 p,q、その2つを掛
け合わせた N、暗号化するための整数 e、復号するための整数 d を用意する。e の条件としては、
(p − 1) ∗ (q − 1) 未満であり、さらに互いに素である必要がある。d は (p − 1) ∗ (q − 1) を法とし
た e の逆数とする。この d は拡張されたユークリッドの互除法を使って求めることが可能である。
また RSA 暗号は N を法として暗号化が行われる。
(文責: 永井 善孝)
7.2
ユークリッドの互除法
暗号化されたものを復号するために必要な方法であるユークリッドの互除法について記す。
ユークリッドの互除法は、2つの自然数または整式の最大公約数を求める手法の一つである。2
つの自然数(または整式) a, b (a ≧ b) について、a の b による剰余を r とすると、 a と b との
最大公約数は b と r との最大公約数に等しいという性質が成り立つ。この性質を利用して、 b を
r で割った剰余、 除数 r をその剰余で割った剰余、と剰余を求める計算を逐次繰り返すと、剰余が
0 になった時の除数が a と b との最大公約数となる。
例 1071 と 1029 の最大公約数を求める。
1071 を 1029 で割った余りは 42
1029 を 42 で割った余りは 21
42 を 21 で割った余りは
よって、最大公約数は 21 である。
アルゴリズム
1. 入力を m, n (m ≧ n) とする。
2. n = 0 なら、 m を出力してアルゴリズムを終了する。
3. m を n で割った余りを新たに n とし、更に 元の n を新たに m とし 2. に戻る。
(文責: 永井 善孝)
Group Report of 2011 SISP
- 16 -
Group Number 13-B
Visualization of Code-Breaking
7.3
拡張されたユークリッド互除法
整数 m, n の最大公約数を gcd(m,n) と表すときに、拡張されたユークリッドの互除法を用い
て
am + bn = gcd(m, n)
の解となる整数 a, b の組を見つけることができる。上の 1071 と 1029 の場合の例を以下に記す。
1071 = 1 ∗ 1029 + 42
1029 = 24 ∗ 42 + 21
42 = 2 ∗ 21
であるから、
21 = 1029 − 24 ∗ 42
= 1029 − 24 ∗ (1071 − 1 ∗ 1029)
= − 24 ∗ 1071 + 25 ∗ 1029
となる。
特に、m, n が互いに素(最大公約数が 1)である場合、am + bn = c は任意の整数 c に対して整
数解 (a, b) をもつことが分かる。これを利用して e の逆元である d の値を導いていく。
(文責: 永井 善孝)
7.4
暗号化
暗号化の流れを p=7、q=13、e=5、変換したい文章(平文)を April として以下に示す。
まず平文を数値化する
P r e s s
80 114 101 115 115
ASCII コード表の文字と対応させるために値から 33 を引き、e 乗(mod N) する
47 81 68 82 82
73 9 87 10 10
この値に 33 を加えて文字として表示すると暗号化できる
Group Report of 2011 SISP
- 17 -
Group Number 13-B
Visualization of Code-Breaking
j * x + +
このような流れで暗号化が行われる。
(文責: 永井 善孝)
7.5
復号
(p − 1)*(q − 1)、e の値から復号するための d の値を拡張されたユークリッド互除法によっ
て求める。
(p − 1) ∗ (q − 1) = 6 ∗ 12 = 72、e = 5 より
72 = 5 ∗ 14 + 2
5 = 2 ∗ 2 + 1
1 = 5 − 2 ∗ 2
= 5 − (72 − 5 ∗ 14) ∗ 2
= 5 ∗ 29 − 72 ∗ 2
よって、d = 29 となる
暗号化された文章を数値化し、33 を引く
j * x + +
73 9 87 10 10
この値を d 乗する
47 81 68 82 82
この値に 33 を加えて文字として表示すると復号できる
80 114 101 115 115
P r e s s
このような流れで復号が行われる。
(文責: 永井 善孝)
Group Report of 2011 SISP
- 18 -
Group Number 13-B
Visualization of Code-Breaking
7.6
ρ法による解読
前節とは違って2つの異なる素数 p、q がわからない場合の解読のためのプログラムも作成し
た。暗号化された文章を解読するためには公開鍵である N、e から p、q を求め、そこから更に d
の値を求める必要がある。つまり公開鍵である N を素因数分解しなければいけない。ここではρ
法による素因数分解、暗号化された文章の解読の流れを具体例を通して記す。
公開鍵 N=91、e=7、暗号化された文章が Me[6vC とする
素因数分解すべき整数を N、擬似乱数発生関数を f (x) = x2 + 1 mod N とする
初期値 x = 2、y = 2、d = 1 とする
x = f (x)
=5
y = f (f (y))
= f (5)
= 26
d = gcd(|x − y|, N )
= gcd(21, 91)
=7
素因数 p = 7 を求めることができた。次に擬似乱数発生関数の定数部分を変えてもうひとつの
素因数 q を求める。
f (x) = x2 + 10 mod N とする
x = f (x)
= 14
y = f (f (y))
= f (14)
= 24
d = gcd(|x − y|, N )
= gcd(10, 91)
=1
d の値が 1 なので繰り返す
x = f (x)
= 24
Group Report of 2011 SISP
- 19 -
Group Number 13-B
Visualization of Code-Breaking
y = f (f (y))
= f (40)
= 63
d = gcd(|x − y|, N )
= gcd(39, 91)
= 13
素因数 q = 13 を求めることができた。
次に求めた p、q と公開鍵である e の値を使って復号するための秘密鍵である d を拡張された
ユークリッド互除法によって求める。
(p − 1) ∗ (q − 1) = 6 ∗ 12 = 72、e = 7 より
72 = 7 ∗ 10 + 2
7 = 2 ∗ 3 + 1
1 = 7 − 2 ∗ 3
= 7 − (72 − 7 ∗ 10) ∗ 3
= 7 ∗ 31 − 72 ∗ 3
よって秘密鍵 d = 31 が求められた。
暗号化された文章を数値化し、33 を引く
M e [ 6 v C
44 68 58 21 85 34
この値を d 乗して、33 を加えて文字として表示する
119 101 105 103 104 116
w e i g h t
このように暗号化された文章をρ法を使って解読することができる。
(文責: 永井 善孝)
Group Report of 2011 SISP
- 20 -
Group Number 13-B
Visualization of Code-Breaking
第8章
楕円曲線暗号
この章では、楕円曲線、楕円曲線暗号について記す。
(文責: 永井 善孝)
8.1
楕円曲線とは
楕円曲線とは、以下の式で定まる3次曲線である。
y 2 = x3 + ax + b
ここで、4a3 + 27b2 ≠ 0 である必要がある。
楕円曲線は上記の式を満たす有限個の点の集合であり、無限遠点も楕円曲線上の点として考え
る。また、楕円曲線上には整数点は有限個しか存在しない。
(文責: 永井 善孝)
8.2
楕円曲線上での演算
楕円曲線上での演算は、一般的な方法と異なるので、その方法について以下に記す。
(文責: 永井 善孝)
8.3
加算
楕円曲線の有理点の集合は加法群となる、つまり有理点同士の加算、減算を計算することが可
能である。このときの加算の計算ルールはとても特徴的になっている。単純に点同士の x 座標、y
座標を足しあわすわけではない。計算方法を以下に記す。
楕円曲線 E : y 2 = x3 + ax + b 上の2点 P、Q の和 R = P + Q を以下のように定める。
1. 2点 P、Q を通る直線 L を引く
2. 楕円曲線 E と直線 L の3つ目の交点を R’ とする
3.R’ の x 軸に関する対称点を R とする
途中で得られた R’ を R の逆元と呼び、R’ = − R とかくことが多い。このようにして得られた
点 R が P + Q となる。
次に楕円曲線上での加算を数式で以下に表す。
楕円曲線 E : y 2 = x3 + ax + b 上の2点 P(x1,y1)、Q(x2,y2) の和 R(x3,y3) を以下のように定
める。
Group Report of 2011 SISP
- 21 -
Group Number 13-B
Visualization of Code-Breaking
P ≠ Q の場合
x3 = λ2 − x1 − x2
y3 = λ (x1 − x3) − y1
λ = (y2 − y1)/(x2 − x1)
P = Q の場合
x3 = λ 2 − 2x1
y3 = λ (x1 − x3) − y1
λ = (3x12 + a)/2y1
このように数式で表される。
(文責: 永井 善孝)
8.4
2倍算
加算のように2倍算の場合でも単純に点の x 座標、y 座標を2倍にするのではない。
楕円曲線 E : y 2 = x3 + ax + b 上の点 P の2倍算 S = 2P を以下のように定める。
1. 点 P における接線を引く
2. 楕円曲線 E と接線との交点を S’ とする
3.S’ の x 軸に関する対称点を S とする
このようにして得られた点 S が点 P の2倍算である 2P となる。
(文責: 永井 善孝)
8.5
スカラー倍算
楕円曲線上の点 P を選び(この点をベースポイントと呼ぶ)、適当な整数 d に対し、ベースポ
イント P を d 倍した点
d * P = P + ・・・ + P
を求める計算をスカラー倍算と呼ばれる。
実際にスカラー倍算を計算するには、加算を繰り返して適用していく。
スカラー倍算 d * P を計算する場合、加算を d ? 1 回適用すれば計算することができる。例とし
て、
8 * P = P + P + P + P + P + P + P + P
Group Report of 2011 SISP
- 22 -
Group Number 13-B
Visualization of Code-Breaking
は加算を7回適用することによって計算可能である。しかし、
8 * P = 2 * (2 * (2 * P))
と表せることを利用すれば3回の加算で計算可能である。このように加算と2倍算を組み合わせる
ことによって効率的にスカラー倍算を計算することができる。
(文責: 永井 善孝)
8.6
楕円曲線上の離散対数問題
普段我々が用いている整数の集合 Z の要素を p で割った余りの集合 Z mod p について考え
る。この場合の有理点の数 m は必ず以下のような範囲
(√ p - 1)2 ≦ m ≦ (√ p + 1)2
に収まるため、有限個の点から成り立つ群であることがわかる。これにより有限体と同様に離散対
数問題を定義することができる。
楕円曲線上の有理点 P、Q に対して
iP = Q
を満たすような整数解 i を求める問題を楕円曲線上の離散対数問題という。
(文責: 永井 善孝)
8.7
楕円曲線暗号とは
楕円曲線暗号とは、楕円曲線上の離散対数問題を安全性の根拠とする暗号である。楕円曲線暗
号では、上で説明した楕円曲線の式 y 2 = x3 + ax + b を使用する。四則演算の考え方も楕円曲線
での方法を適用する必要がある。
楕円曲線上の点 P とそれを s 倍(s 回繰り返し加算を行う)した点 Q、Q = sP の Q と P を公
開鍵とし、s を秘密鍵とされる。楕円曲線上の点における計算は複雑であるという楕円曲線上の離
散対数問題によって、P、Q から s を求めることは困難なため、この s を秘密鍵として利用できる。
つまり暗号化は公開鍵 P、Q を使用して行い、復号は秘密鍵 s を使用する。
(文責: 永井 善孝)
8.8
特徴
楕円曲線暗号の特徴やメリットを、公開鍵暗号のデファクトスタンダードである RSA 暗号と
比較しつつ以下に記す。
Group Report of 2011 SISP
- 23 -
Group Number 13-B
Visualization of Code-Breaking
RSA 暗号に比べ短い鍵長で同等の安全性が確保できる。(RSA 暗号で1024ビット長の暗号
化鍵を使用した場合と、楕円曲線暗号で160ビット長の暗号化鍵を使用した場合、同程度の安全
性を保つ)
高速処理が可能であり、ハードウェアを実装した場合も、より小規模で実現可能である。
楕円曲線暗号においての安全性は鍵の長さだけではなく、曲線パラメタの選択に大きく左右され
る。
このように RSA 暗号と比べて、同レベルの安全性をより短い鍵で実現でき、処理速度も速いこ
とをメリットとして、ポスト RSA 暗号として注目されている。
図 8.1
楕円曲線暗号
(文責: 永井 善孝)
8.9
楕円エルガマル暗号
楕円曲線暗号には様々なアルゴリスムがある。ここではそのひとつである楕円エルガマル暗号
の構成、数値を使った例を紹介する。
楕円エルガマル暗号の構成方法は以下のとおりである。
秘密鍵 k
公開鍵 P, Q = kP , 楕円曲線 y 2 = x3 + ax + b
暗号化 (送信側)
Group Report of 2011 SISP
- 24 -
Group Number 13-B
Visualization of Code-Breaking
平文 (楕円曲線上の点) X
適当な乱数 r を選び、A = rP と B = X + rQ を計算する。この A と B のペア (A,B) が暗号文
となる
平文 (楕円曲線上の点)
秘密鍵 k を用いて
B − kA
を計算する。この式は
B − kA = (X + rQ) − k(rP )
= X + rkP − krP
= X
であるので復号される。
数値例
公開鍵 P, Q = kP , 楕円曲線 y 2 = x3 + x + b
秘密鍵を k = 13 とする
公開鍵を P = (1, 1) とすると曲線上の点は
P = (1, 1), 2P = (2, 16), 3P = (13, 9), 4P = (16, 8), 5P = (11, 7)
6P = (18, 4), 7P = (7, 8), 8P = (15, 8), 9P = (8, 5), 10P = (8, 14)
11P = (15, 11), 12P = (7, 11), 13P = (18, 15), 14P = (11, 12), 15P = (16, 11)
16P = (13, 10), 17P = (2, 3), 18P = (1, 18), 19P = (0, 0) ←無限遠点
この曲線の法は 19 である
Q = kP = 13P = 13(1, 1) = (18, 15) となる
暗号化
平文を X = (15, 11) とする
乱数 r = 3 として暗号文を作成する
A = rP
= 3(1, 1)
= (13, 9)
B = X + 3 ∗ Q
= (15, 11) + 3(18, 15)
= (15, 11) + 3 ∗ 13P
= (15, 11) + (13, 10)
= (9, 2)
暗号文 = ((13, 9), (9, 2))
復号
秘密鍵 k = 13 を用いて
(9, 2) − 13(13, 9)
= (9, 2) − (13, 10)
= (− 4, − 8)
= (19 − 4, 19 − 8)
= (15, 11)
Group Report of 2011 SISP
- 25 -
Group Number 13-B
Visualization of Code-Breaking
=X
となるため復号できた。
(文責: 永井 善孝)
8.10
成果
楕円曲線暗号の解読プログラムを作成した。 今回のプログラムの言語は PARI/GP を用い
た。この言語を使うことで、解読の際、重要である素因数分解の計算を効率よく行なうことが可能
になった。
今回の楕円曲線暗号の解読プログラムは、暗号文を作成し、その暗号文を解読するようなプログ
ラムを作成した。解読のプログラムでは 「s」 が秘密鍵、
「p」、
「q」 を公開鍵としている。このと
き、
「q = sp」 という関係があり、この「p」
、「q」 から秘密鍵を 「s」 を求める。
楕円曲線暗号の解読の流れを以下のプログラムの一部とともに説明する。
・暗号化する
公開鍵となる 「p」、「q」を決定する。このとき 「p」 は 100 億の次の素数を用いている。
p = 1000000000;
p = nextprime(p);
q = p + 1 − ellap(e, p);
このとき、楕円曲線上の点 P の座標 (x, y) は 以下の式で求められる。
x = M od(1, p);
y = M od(2, p);
秘密鍵 「s」 は以下の式で求める。
s = 1 + random(q − 1);
「m」 を暗号化する。このとき、「p」から数字をランダムに選びその数字を 「m」とする。
m = random(p);
ある数「m」 を暗号化するため1以下の乱数を使い、ランダムに選び、
「m」 を暗号化した 暗号
文「C1」を作る。
r = 1 + random(q − 1);
C1 = ellpow(e, P, r);
Group Report of 2011 SISP
- 26 -
Group Number 13-B
Visualization of Code-Breaking
・復号する
楕円曲線の式より、係数「a」、
「b」
、
「a1」、
「b1」 の値を、楕円曲線上の座標の点「A1」と公
開鍵 「q」 用いることで値を決定する。
A1 = f (a1, b1, R1);
a = A[1]b=A[2]a1 = A1[1]b1=A1[2]
さらにこの 「a」、
「b」
、「a1」、
「b1」 を用いて、秘密鍵 「s」 と思われる 「s1」 を求める。
if (gcd(b − b1, l) == 1,
s1 = M od((a1 − a)/(b − b1), l);
s1 = lif t(s1);
ここで出てきた 「s1」と 暗号化の際に決めた秘密鍵 「s」 と同じ数値であればこの「s1」は秘
密鍵 「s」 であるといえる。この秘密鍵 「s」 を使い 暗号文を復号することで、暗号化した「m」
を求めることができる。
以上より、楕円曲線暗号の暗号化、復号のプログラムを数値の段階という限定されたものであ
るが作成することができた。
(文責: 及川真那実)
Group Report of 2011 SISP
- 27 -
Group Number 13-B
Visualization of Code-Breaking
第 9 章 課題解決のプロセスの詳細
9.1
4月
全体のプロセス
暗号についての基礎知識をつける学習を行なった。
どのようにプロジェクト学習を行なっていくか話し合った。
5月
暗号解読のプログラムを作成するため PARI/GP の学習を行なった。
グループ分けを話し合い、今後の進め方について話し合った。
6月
グループに別れ RSA 暗号、楕円曲線暗号の暗号解読のプログラムを作成した。
7月
引き続き RSA 暗号、楕円曲線暗号の暗号解読のプログラムを作成した。
中間発表に向け、スライド作成、ポスター作成、発表練習を行なった。
8月
中間発表の反省から、今度について話し合いを行なった。
9月
今度の進め方を話し合った。
新しいエディタのインストールを行なった。
10 月 成果物についてどうしていくのか話し合いを行なった。
RSA 暗号、楕円曲線暗号において重要となるρ法を学習した。
RSA 暗号をアプリケーションにするためのプログラムを作成した。
11 月 最終発表の担当分けを行なった。
最終発表に向けてスライド、ポスター作成に取り組んだ。
最終発表に向けて発表練習を行なった。
12 月 最終発表に向けてスライド、ポスター作成に取り組んだ。
最終発表に向けて発表練習を行なった。
最終発表の反省を行なった。
1月
個人報告書、最終報告書の作成を行なった。
(文責: 伊藤拓海)
9.2
各人の課題の概要とプロジェクト内における位置づけ
伊藤拓海の担当課題は以下の通りである。
Group Report of 2011 SISP
- 28 -
Group Number 13-B
Visualization of Code-Breaking
4月
どのようにプロジェクト学習を行なっていくか話し合った。
暗号についての基礎知識をつける学習を行なった。
PARI/GP という言語の高速計算機を学んだ。
PARI/GP の背景を学習した。。
PARI/GP の基礎を学び、簡単な四則演算のプログラムを作成した。
5月
誕生日パラドックス班、RSA 暗号班、楕円曲線暗号班、実装班にわかれた。
誕生日パラドックス、RSA 暗号、楕円曲線暗号について学習した。
素因数分解、素数について学習した。
割った数の余りを表す Mod について学習した。
PARI/GP の基礎を学び、簡単な四則演算のプログラムを作成した。
PARI/GP で関数のプログラムを作成した。
6月
RSA 暗号についての学習、関連プログラム作成した。
PARI/GP で RSA に関する簡単なプログラムを作成した。
中でも Mod を使用したものを中心に作成した。
素因数分解についての学習もした。
7月
中間発表に向けての準備。
スライド・ポスターの作成。
発表者を担当した。
8月
中間発表の反省から、今度について話し合いを行なった。
わかりにくいという意見が多かったのでさらに深い学習が必要だと考えた。
9月
前期までの復習。
新しいエディタのインストール。
グループを新しくして RSA・楕円曲線暗号グループに所属した。
解読法を中心に学習していくことにした。
10 月 成果物について考えた。
ρ法について学習。
ρ法に関する学習では解読に欠かせないものなんでしっかりと理解を深めるようにした。解
読のプログラムの作成。
11 月 ポスター作成。
最終発表に向けた、発表練習。
ポスター作成ではメンバーの作成したものをまとめた。
発表者を担当した。
12 月 最終発表に向けた、発表練習。
発表においては中間発表で出ていた反省点をしっかりと確認して行なった。
前期より多くの練習時間をとった。
Group Report of 2011 SISP
- 29 -
Group Number 13-B
Visualization of Code-Breaking
個人報告書、グループ報告書作成。
1月
個人報告書、グループ報告書作成。
(文責: 伊藤拓海)
亀井謙斗の担当課題は以下の通りである。
4月
どのようにプロジェクト学習を行なっていくか話し合った。
暗号についての基礎知識をつける学習を行なった。
PARI/GP という言語の高速計算機を学んだ。
PARI/GP の背景を学習した。。
PARI/GP の基礎を学び、簡単な四則演算のプログラムを作成した。
5月
誕生日パラドックス班、RSA 暗号班、楕円曲線暗号班、実装班にわかれた。
誕生日パラドックス、RSA 暗号、楕円曲線暗号について学習した。
素因数分解、素数について学習した。
割った数の余りを表す Mod について学習した。
PARI/GP の基礎を学び、簡単な四則演算のプログラムを作成した。
PARI/GP で関数のプログラムを作成した。
6月
実際に RSA 暗号のプログラムの作成をした。
プログラムを作成するにあたり、公開鍵、秘密鍵の生成方法や擬似乱数発生関数の作り方を
学んだ。
PARI/GP で最初は簡単な Mod の計算から行い、徐々に複雑な計算を行った。
7月
中間発表の準備。
中間発表では、主に発表で使うスライド、ポスター作りに携わった。
プレゼンテーションの流れや内容を理解しつつ発表の練習や準備をおこなった。
発表練習から聞いている人に発表内容を理解してもらえるように大きな声ではきはきと話す
ことを心がけた。
実際の発表ではスムーズに行うことができた。
発表のときに質問に対してはあらかじめ予想を立てたりしていたので、あたふたせずに答え
ることができた。
予想外の質問に対してはうまく答えることができない場面もあった。
スライドとポスターはできる限り文字を少なくして図や表を加えることで、見栄えのよいも
のを作成した。
8月
今後の話し合いを行った。
中間発表で失敗した事を最終発表でもしないように対策を練った。
9月
新しいエディタのインストール。
後期の活動内容を把握し、スケジュール管理を行った。
RSA 暗号の復号するときの過程で、素因数分解を素早く行うために、非常に重要なρ法の
Group Report of 2011 SISP
- 30 -
Group Number 13-B
Visualization of Code-Breaking
ことを知った。
ρ法のことが書かれている本を読み、ρ法について学習した。
10 月 ρ法について学習。
ρ法を説明するための方法を考えた。
ρ法を発表のときに理解してもらうための方法として、図やグラフで表すとわかりやすいと
いうことが話し合われた。
11 月 最終発表の担当分け。
最終発表の担当は、ポスター作成とスライド作りであった。
ポスター作りでは、ρ法に関する事をまとめて、ポスターを見ただけで、ρ法がどのような
ものかわかるようなものを作成した。
スライドではρ法に関する事と、RSA 暗号に関することを説明する文章を考えた。
ポスターとスライド作りは、中間発表と同様に文字をできる限り少なくして、図やグラフを
加えることで見栄えのよいものを作成した。
12 月 最終発表に、向けた練習。
最終発表会では発表を担当した。
発表の時には他のプロジェクトの声で発表の声が聞こえないということがないように、大き
な声で発表をすることを心がけた。
発表を聞く人の中には高校生もいたので、できるだけ専門用語を使わないようにして、簡単
な言葉で発表するように心がけ、発表を理解してもらえるように努力した。質問に対して
も、中間発表のときと同様にあらかじめ予想を立てていたので、スムーズに答えることがで
きた。
個人報告書の作成。
グループ報告書の作成。
1月
個人報告書の作成。
グループ報告書の作成。
(文責: 亀井謙斗)
永井善孝の担当課題は以下の通りである。
4月
どのようにプロジェクト学習を行なっていくか話し合った。
暗号についての基礎知識をつける学習を行なった。
PARI/GP という言語の高速計算機を学んだ。
PARI/GP の背景を学習した。。
PARI/GP の基礎を学び、簡単な四則演算のプログラムを作成した。
5月
誕生日パラドックス班、RSA 暗号班、楕円曲線暗号班、実装班にわかれた。
誕生日パラドックス、RSA 暗号、楕円曲線暗号について学習した。
素因数分解、素数について学習した。
割った数の余りを表す Mod について学習した。
Group Report of 2011 SISP
- 31 -
Group Number 13-B
Visualization of Code-Breaking
PARI/GP の基礎を学び、簡単な四則演算のプログラムを作成した。
PARI/GP で関数のプログラムを作成した。
6月
楕円曲線の性質を理解した上で、楕円曲線上での点の計算法や簡単な楕円曲線のプログラム
作成を行った。
プログラムを自分たちのパソコン上で動作させることで楕円曲線ではどういった計算が行わ
れているのかといったことをより実感することができた。
これらの楕円曲線についてのプログラムや学んできた知識を基に楕円曲線暗号についての勉
強を始めた。
暗号化や復号についてを先生から学び、数値を使った楕円曲線暗号の簡単なプログラム作成
を行った。
暗号化されたものをρ法という素因数分解法を用いて解読していくということを学んだ。
このρ法を使った楕円曲線暗号の暗号化から解読までのプログラム作成を行った。
7月
前期にやってきたことをグループ内でまとめ、中間発表で話す内容について話し合った。
発表者として楕円曲線及び楕円曲線暗号についての発表、質疑応答を担当した。
個人報告書、及びグループ報告書の作成を行った。
8月
夏季休業という長い時間を使ってプログラム作成に使用している C 言語などの復習を行っ
た。
後期へ向けて今まで学んできた暗号についての情報をまとめ、今後どのようなことをしてい
けばよいかを考えた。
9月
後期のプロジェクト学習が始まり、また新たにグループ分けを行った。
後期では、RSA 暗号、楕円曲線暗号グループ、頻度分析グループ、実装グループの3つに
分け、RSA 暗号、楕円曲線暗号グループに所属した。
RSA 暗号と楕円曲線暗号の解読において重要となるρ法の更なる理解を目指して活動を始
めた。
10 月 自分のパソコン上で動く簡単な RSA 暗号を使用したプログラムを作成した。
暗号化や復号、解読の流れがよくわかるようなプログラムにするために最初は Java を使用
したが、なかなかうまく動作させることが出来ないという結果になったしまった。
この結果を得て Java ではなく C 言語を用いて作成し始めた。アルファベット、記号及び数
字のみだが、これらを何か別な文字に変換させる RSA 暗号を使ったプログラムを作成する
ことが出来た。
暗号化から復号までの過程を文字を数値に置き換えて変換させていくというプログラムを作
成した。
11 月 暗号化と復号ができるプログラムは作成できたので、これらを使って今度は解読ができる
プログラム作成を始めた。
解読にはρ法という素因数分解法を利用して行っていく。
Group Report of 2011 SISP
- 32 -
Group Number 13-B
Visualization of Code-Breaking
まずは簡単な素因数分解プログラムを作成した。
これらを基に解読のためのプロセスに必要な過程としてユークリッド互助法を学んだ。
更にそれを発展させた拡張されたユークリッド互助法を学びこれらのことを用いて暗号化か
ら復号そして解読もできるプログラム作成を行った。
日本語などの文字は使用できないが、アルファベット、記号や数字を変換させる RSA 暗号
を使ったプログラムを作成できた。
暗号化、復号そして解読も行えるようになった。
12 月 プロジェクトの最終発表会が近づき、グループ内で情報をまとめ、発表内容に話し合いを
はじめた。
私は最終発表会においての発表者となり、RSA 暗号、これを基に作ったプログラム、アプ
リの説明の担当となった。
グループ報告書作成においては主に楕円曲線や楕円曲線暗号の説明や、これを使った暗号の
例の紹介、ρ法を使用した素因数分解法の具体例、RSA 暗号の暗号化から復号、そしてρ
法を使用した解読法の流れの数値を使った具体例の紹介などを担当して書いた。
1月
個人報告書、グループ報告書を作成した。
(文責: 永井善孝)
及川真那実の担当課題は以下の通りである。
4月
どのようにプロジェクト学習を行なっていくか話し合った。
暗号についての基礎知識をつける学習を行なった。
PARI/GP という言語の高速計算機を学んだ。
PARI/GP の背景を学習した。。
PARI/GP の基礎を学び、簡単な四則演算のプログラムを作成した。
5月
誕生日パラドックス班、RSA 暗号班、楕円曲線暗号班、実装班にわかれた。
誕生日パラドックス、RSA 暗号、楕円曲線暗号について学習した。
素因数分解、素数について学習した。
割った数の余りを表す Mod について学習した。
PARI/GP の基礎を学び、簡単な四則演算のプログラムを作成した。
PARI/GP で関数のプログラムを作成した。
6月
二項演算、有限集合について学習をした。
楕円曲線、楕円曲線暗号についての学習を行なった。
楕円曲線暗号の解読プログラムを作成するために、解読の流れを考えた。
楕円曲線暗号の解読プログラムについて話し合いをグループ内で行なった。
楕円曲線暗号の解読プログラムの作成を行なった。
中間発表に向けて、楕円曲線、楕円曲線暗号について文章でまとめた。
中間発表に向けて、発表会で使うスライド、ポスターの作成を行なった。
7月
楕円曲線、楕円曲線暗号について学習をした。
Group Report of 2011 SISP
- 33 -
Group Number 13-B
Visualization of Code-Breaking
楕円曲線暗号の解読プログラムを完成させるため、話し合いをグループ内で行なった。
楕円曲線暗号の解読プログラムの作成を行ない、完成させた。
楕円曲線、楕円曲線暗号について文章でまとめた。
中間発表についての担当わけを行なった。
中間発表に向けて、発表会で使うスライド、ポスターの作成を行なった。
中間発表のため、発表の練習を行なった。
中間発表を行なった。
グループ報告書の割り振りを行なった。
個人報告書、グループ報告書の作成を行なった。
中間発表の反省を行なった。
8月
個人報告書、グループ報告書を修正する作業を行なった。
中間発表の評価を受けて反省を行なった。
今度のプロジェクトの方向を話し合いを行なった。
9月
今度のプロジェクトの方向を話し合いを行なった。
成果物についてどういう形にするか話し合いを行なった。
中間発表の評価を受けて反省を行なった。
今後グループ分けを話し合いを行った。
新しいエディタのインストールをした。
10 月 今度のプロジェクトの方向を話し合いを行なった。
成果物についてどういう形にするか話し合いを行なった。
頻度分析班、SAR 暗号・楕円曲線暗号班、実装班にわかれた
SAR 暗号、楕円曲線暗号において重要であるρ法について学習を行なった。
ρ法の説明方法について実装するかどうか考えた。
ρ法についての実装方法について話し合いを行なった。
11 月 SAR 暗号、楕円曲線暗号において重要であるρ法について学習を行なった。
ρ法についての実装方法について話し合いを行なった。
ρ法に関するスライドの画像を作成した。
最終発表についての担当わけを行なった。
最終発表に向けて、発表会で使うスライド、ポスターの作成を行なった。
最終発表のため、発表の練習を行なった。
12 月 最終発表の仕方について話し合いを行なった。
最終発表に向けて、発表会で使うスライド、ポスターの作成を行なった。
最終発表のため、発表の練習を行なった。
最終発表を行なった。
最終発表の反省を行なった。
グループ報告書の割り振りを行なった。
個人報告書、グループ報告書の作成を行なった。。
Group Report of 2011 SISP
- 34 -
Group Number 13-B
Visualization of Code-Breaking
最終発表の評価を受けて反省を行なった。
1月
個人報告書、グループ報告書の作成を行なった。
最終発表の評価を受けて反省を行なった。
前期、後期を通してのプロジェクトの反省を行なった。
グループ報告書のまとめを行なった。
個人報告書、グループ報告書を修正する作業を行なった。
(文責: 及川真那実)
9.3
9.3.1
担当課題と他の課題の連携内容
伊藤拓海
RSA 暗号に関係性の高い素因数分解について調べた。それをもとに簡単なプログラムを作成し
た。このプログラムの作成により RSA 暗号と誕生日パラドックスとのかかわりを表すことがで
きた。
(文責: 伊藤拓海)
9.3.2
亀井謙斗
RSA 暗号に関係するプログラムを作成した。また、素因数分解と RSA の関係をわかりやすくま
とめた。これは中間発表の際に役立った。
(文責: 亀井謙斗)
9.3.3
永井善孝
楕円曲線の暗号解読に使うプログラムを作成した。このプログラムは最終発表に使おうと考えて
いる。
(文責: 永井善孝)
9.3.4
及川真那実
楕円曲線暗号の解読をした。プロジェクト内での楕円曲線暗号の理解が深まった。
(文責: 及川真那実)
Group Report of 2011 SISP
- 35 -
Group Number 13-B
Visualization of Code-Breaking
第 10 章
発表会評価
ここには、発表会における評価を記す。
(文責: 及川真那実)
10.1
中間発表
10.1.1
発表技術について
良かった点について
・スライドが見やすかった。
・クイズ形式を用いたことが良かった。
・発表の時の声は大きくて良かった。
・発表の進行の早さが、とても良かった。
・発表の時の、説明が丁寧で分かりやすかったので良かった。
・図やグラフが多く入っていてわかりやすかった。
・活動内容の説明が分かりやすかった。
・暗号で用いている方式を数式で丁寧に説明されていて良かった。
・様々な暗号の仕組みが理解できたのでよかった。
問題点について
・スライドを見ながら発表しているのが長い。
・用語の説明や解説が早かった。
・前提知識が無い人に分かりにくい説明だった。
・発表のときにスライドを見ている時間が長かったので、気をつけたほうがいいと思う。
・文字や文章が多すぎていたと思うし、図などをもっと取り入れて欲しかった。
・プロジェクトの設定目標の説明がわかりづらかった気がした。
・なぜ可視化によるものが必要なのかもっと説明が欲しかった。
・はじめて聞く人には難しすぎる言葉が多く出てきた。
・もっとスライドに、グラフや図を入れるとわかりやすいと思った。
(文責: 及川真那実)
10.1.2
発表内容について
良かった点について
Group Report of 2011 SISP
- 36 -
Group Number 13-B
Visualization of Code-Breaking
・暗号の種類をそれぞれ説明されていて分かりやすかった。
・身近な例を用いて説明していたのが良かった。
・様々な暗号について知ることができて良かった。
・RSA暗号が良く使われている身近な暗号だということがわかった。
・素因数分解の説明が分かりやすかった。
・用語の解説が丁寧でよかった。
・楕円曲線暗号は安全性が高いということがわかった。
・共通鍵暗号と公開鍵暗号についてわかった。
・図や絵、グラフが入っていてわかりやすかった。
・暗号を身近に感じることができたの良かった。
・発表が簡単で、わかりやすかったし素直に理解できたと思う。
問題点について
・プロジェクト計画を具体的にしてほしかった。
・難しい言葉が多く感じられた。
・活動の成果物などを見せて欲しかった。
・今後の目標について分かりにくかった。
・用語解説が不十分であると感じた。
・数式が難しかったので、もっと丁寧に説明してほしかった。
・可視化する必要性を詳しく聞きたかった。
・RSA 暗号、楕円曲線暗号の説明が難しいと感じた。
・なぜアプリでの可視化が必要なのかわからなかった。
・内容が全体的に難しいと思った。
・たとえをもっと出して欲しかった。
・文字で説明しすぎてて、内容が入りにくかった。
(文責: 及川真那実)
10.1.3
中間発表の評価まとめ
中間発表の評価として、発表技術の点数の平均は、10 点満点中 6.54 点で、発表内容の点数の平
均として、10 点満点中 6.5 点であった。
発表技術に関しては、反省点すべき点が多くあったと考えられる。
発表技術の評価のコメントで「スライドを見ながら発表しているのが長い」や「用語の説明や解説
が早かった」などの指摘を受けたのは発表者の練習不足があったのではないかと考えられる。
最終発表の際には、練習をしっかりと行なって、改善していく必要があると思った。
発表内容に関しては、「難しい言葉が多く感じられた」や「今後の目標について分かりにくかっ
た」など、前提の知識が無い人にも分かりやすい説明の仕方を心がけていく必要があると感じた。
また、可視化についての具体的な説明を行うことで、それぞれの班の関連性について明確にするこ
とができ、暗号の可視化についてより上手く伝えられるのではないかと思った。
良かった点としては、発表技術の評価のコメント、発表内容の評価のコメントで「発表の時の声
は大きくて良かった」や「身近な例を用いて説明していたのが良かった」など意識して行なってい
Group Report of 2011 SISP
- 37 -
Group Number 13-B
Visualization of Code-Breaking
たことが評価されたのはとても良かったと思うので、最終発表の際にも良かったと評価されるよう
に意識して行なって生きたいと思う。
全体的に反省すべき点が多く感じられたので、最終発表の際には同じ指摘をされないように、ス
ライドを作成したり、発表練習を行なったりすることで改善していきたいと考えている。
(文責: 及川真那実)
10.2
最終発表
ここには、最終発表会における評価を記す。
図 10.1
(文責: 及川真那実)
10.2.1
発表技術について
良かった点について
・発表の際の声の大きさが良かった。
・発表の時の、説明が丁寧で分かりやすかった。
・何も見ないで発表していたのが良かった。
・プレゼンテーションの説明の流れが分かりやすくて良かった。
・i Pad での実演の説明が分かりやすかった。
・アプリでの実演での見せ方がスライド式で良かった。
・活動内容の説明が分かりやすかった。
Group Report of 2011 SISP
- 38 -
Group Number 13-B
Visualization of Code-Breaking
・作ったプログラムの流れの説明が良かった。
・成果物を発表のときに見せたのが良かった。
・暗号で用いている方式を数式で丁寧に説明されていて良かった。
・様々な暗号の方式の仕組みが分かって良かった。
・具体的な数字を用いての説明があるため理解しやすい発表だった。
・発表の進行の早さはちょうど良かった。
・難しい内容を分かりやすく発表していた。
問題点について
・発表のときにスライドを見ている時間が長かった。
・文字や文章が多すぎていたので、図などをもっと取り入れて欲しかった。
・ポスターが少し見づらかった。
・アプリの実演をスクリーンで投影したほうが見やすい。
・プロジェクトの目標の説明が分かりづらかった。
・可視化による有用性やニーズの説明が欲しかった。
・スライドが少し分かりづらかった。
・初めて見る人には分からない言葉が多い。
・質問に答えられてないところが少々あった。
・成果物が形に残るものでないので、分かりにくい所があった。
・発表者を複数にしていたので、聞きにくかった。
(文責: 及川真那実)
10.2.2
発表内容について
良かった点について
・中間発表ときに言っていたアプリを実際にみることができて良かった。
・素因数分解などの説明が分かりやすかった。
・用語の解説が丁寧だった。
・暗号を可視化することで、暗号が何なのかというのが分かった。
・様々な暗号解読の方法を知ることができて良かった。
・目標を達成できたかどうかが明確で良かった。
・暗号を身近に感じるアプリを作っていたのが良かった。
・暗号を身近に感じることができて良かった。
・シンプルな発表の流れで、話に入りやすかった。
・暗号の一例が分かりやすく説明されていた。
・暗号の可視化アプリが利用しやすそうでいいと思った。
・アプリの実演で、暗号に興味が湧いた。
Group Report of 2011 SISP
- 39 -
Group Number 13-B
Visualization of Code-Breaking
・暗号について学ぶ人にとって良いアプリだと思った。
問題点について
・可視化することでの目的が分かりづらかった。
・短い時間ではρ法について理解できなかった。
・専門用語が多く、内容の理解に時間がかかった。
・頻度分析の説明がもう少し欲しかった。
・アプリの実用性が低いと思った。
・セキュリティに関してもう少し精度が上がると良いと思った。
・例をもっと増やして欲しかった。
・もっとアプリを見やすくして欲しかった。
・ρ法のアルゴリズムの説明が分かりづらかった。
・頻度分析以外の可視化も見たかった。
・成果物に端末を選んだ理由が欲しかった。
・RSA が何ビットの素数を解読できたなどの説明が分かりにくかった。
(文責: 及川真那実)
10.2.3
最終発表の評価まとめ
最終発表の評価として、発表技術の点数の平均は、10 点満点中 6.46 点で、発表内容の点数の
平均として、10 点満点中 6.53 点であった。以上の評価から、様々な問題点や、良かった点が分
かった。中間発表での問題点を克服していた項目もあれば、今回の最終発表で初めて出た問題点も
あった。
発表技術の良い評価として、発表技術の評価のコメントでは「発表の際の声の大きさが良かっ
た」や「発表の進行の早さはちょうど良かった」など中間発表の際にも良かった点として挙げられ
ていたものがまた評価されて良かったと思う。また、中間発表の際に、問題点として挙げられてい
た内容を最終発表では、「何も見ないで発表していたのが良かった」や「難しい内容を分かりやす
く発表していた」など良かった点として評価されていたので、しっかりと改善することができたの
はと考えられる。また、成果物についても中間発表の際には発表することができなかったのだが、
「i Pad での実演の説明が分かりやすかった」や「アプリでの実演での見せ方がスライド式で良かっ
た」などの発表技術の評価でのコメントが多かったので、良かったといえることができると思う。
しかし、問題点として、
「文字や文章が多すぎていたので、図などをもっと取り入れて欲しかった」
や「可視化による有用性やニーズの説明が欲しかった」など中間発表の際にも指摘されていた点な
ど、まだまだ不十分な点があったと感じるので、しっかりと反省し、見直すことが必要であると
思った。
次に発表内容の良い評価として、発表内容の評価のコメントでは「用語の解説が丁寧だった」や
「シンプルな発表の流れで、話に入りやすかった」など中間発表の際にも良かった点として挙げられ
ていたものが再びしっかりと評価されて良かったと思う。また、本プロジェクトの目標である「可
視化」について中間発表では「今後の目標について分かりにくかった」や「なぜアプリケーション
Group Report of 2011 SISP
- 40 -
Group Number 13-B
Visualization of Code-Breaking
での可視化が必要なのかわからなかった」などの指摘を受けたが、最終発表での発表内容の評価の
コメントでは「暗号の可視化アプリが利用しやすそうでいいと思った」や「アプリの実演で、暗号
に興味が湧いた」などの声を聞けた。他の意見として、「暗号を身近に感じることができて良かっ
た」や「アプリの実演で、暗号に興味が湧いた」などの意見を多く聞けたので、このことから本プ
ロジェクトの目標を達成させることができたといえる。しかし、問題点としては、発表内容の評価
のコメントで「もっとアプリを見やすくして欲しかった」や「頻度分析以外の可視化も見たかった」
などの指摘を受けた。発表の際に聴く側にたって、さらに工夫し、改善していくことが必要だと感
じた。また、頻度分析以外のものとして RSA 暗号、楕円曲線暗号もアプリケーションとして作成
すべきだったのは重要な反省点であると感じている。
(文責: 及川真那実)
Group Report of 2011 SISP
- 41 -
Group Number 13-B
Visualization of Code-Breaking
第 11 章
11.1
結果
成果
本プロジェクトでは暗号に興味のない人でも、暗号解読というものに関心をもてるような、暗号
解読の過程をわかりやすいものを作成することを目標とした。その目標を達成するため、目に見え
るものにしようと考え、暗号解読を可視化するためのアプリケーションを作成しようと考えた。
RSA 暗号班、楕円曲線暗号班は、PARI/GP という高速計算機 を用いて RSA 暗号、楕円曲線
暗号の解読プログラムを作成することを目標にした。目標を達成するために、はじめに全体で数字
を割ったときの余りを表すM od について学習したり、素因数分解など、暗号の解読に必要な知識
を取り入れた。
また、今回の RSA 暗号、楕円曲線暗号を解読するプログラムを作成するために、 高速計算機で
ある PARI/GP も基礎的は学習から行なった。 PARI/GP についてはじめは、入力した数字を計
算式により計算を行い、計算によって導き出された答えを出力するという簡単なプログラムから学
んだ。基本的な操作を学ぶ事ができたら、素因数分解などを用いて、解読の一部となるプログラム
を作成し、RSA 暗号、楕円曲線暗号の解読のプログラムを作成するための経験を積むことができ
た。
全体で RSA 暗号、楕円曲線暗号の解読に必要な知識、PARI/GP の技術を習得した後、グルー
プごとに分かれ RSA 暗号、楕円曲線暗号の暗号の解読プログラムを作成した。
後期は、RSA 暗号、楕円曲線暗号の中で重要とされている、ρ法について学んだ。ρ法とはポ
ラードにより 1975 年にいくつかの合成数の素因数を速く見つける方法であり、素因数分解を行な
う RSA 暗号、楕円曲線暗号を解読するプログラムの中で用いた。ρ法を学ぶことにより、より
RSA 暗号、楕円曲線暗号の解読のプログラムについて理解を深めることができた。さらに、RSA
暗号、楕円曲線暗号の解読を解説する際に、ρ法についても最終発表の際スライド、ポスターで説
明することにより、より深く解説することへと繋がったと思う。
(文責: 及川真那実)
11.2
結論
中間発表でのアンケート評価の平均は発表技術 6.54 点、発表内容 6.5 点であった。この結果
から、さらにわかりやすい内容、発表の仕方の工夫などを行ったが、最終発表でのアンケート評価
の平均を発表技術 6.46 点、発表内容 6.53 点という結果であった。
「暗号を身近に感じることができて良かった」や「アプリの実演で、暗号に興味が湧いた」などの意
見を多くいただき、多くの人に暗号に興味を持ってもらい、わかりやすく伝えるという本プロジェ
クトの目標を達成することができたのではないかと考えられる。このことから本プロジェクトの目
標を達成させることができたといえる。
反省すべき点としては、発表内容の評価のコメントで「もっとアプリを見やすくして欲しかっ
た」や「頻度分析以外の可視化も見たかった」などの問題点の指摘を受けた。今回、RSA 暗号、楕
円曲線暗号ともに暗号解読のプログラムは RARI/GP で作成することができた。しかし、RSA 暗
Group Report of 2011 SISP
- 42 -
Group Number 13-B
Visualization of Code-Breaking
号、楕円曲線暗号ともにそれぞれの暗号を解読し、解説する可視化するためのアプリケーション作
成を行なうことができなかった。なぜ RSA 暗号、楕円曲線暗号ともにそれぞれのアプリケーショ
ンを作成することができなかったのか考えてみると、反省すべき点としていくつか挙げられる。一
つ目としてアプリケーションにするためのプログラムの作成を進めることができなかったこいう点
である。前期に作成した PARI/GP での RSA 暗号、楕円曲線暗号のプログラムをアプリケーショ
ンに上手く応用できなかったのが原因である。これはプロジェクトのはじめにしっかりとした計画
を行なうことで改善できたのではと思う。二つ目の反省すべき点としては実装班との連携を上手く
とることができなかったという点である。どの段階まで行なえばアプリケーションとして成果物を
作成することができるのかを明確にすることで、RSA 暗号、楕円曲線暗号を解読するプログラム
をしっかりと生かすことができたのではと考えられる。
また、暗号解読のプログラムにおいても数値の段階までの解読しか対応させることができず、文
字列を解読するような応用まで取り組むことができなかったのも反省点である。以上のことよ、
RSA 暗号、楕円曲暗号ともに、可視化するためのアプリケーションを作成することが今度として
考えられる。
(文責: 及川真那実)
Group Report of 2011 SISP
- 43 -
Group Number 13-B
Visualization of Code-Breaking
第 12 章
今後の展望
今回、RSA 暗号、楕円曲線暗号ともに暗号解読のプログラムは RARI/GP で作成することが
できた。しかし、これらの暗号を可視化するためのアプリケーション作成を行なうことができな
かった。また、暗号解読のプログラムにおいても数値の段階までの解読しか対応させることができ
ず、文字列を解読するような応用まで取り組むことができなかったのが反省点である。今後の展望
としては、RSA 暗号、楕円曲暗号ともに、可視化するためのアプリケーションを作成することが
挙げられると考える。
(文責: 及川真那実)
Group Report of 2011 SISP
- 44 -
Group Number 13-B
Visualization of Code-Breaking
第 13 章
相互評価
伊藤拓海に対する評価
亀井謙斗:話し合いの時に意見を積極的に出していてよかったです。ポスター作りでは見栄えのい
い様にデザインしていてよかったです。また、皆の意見を聞き出してくれたりとスムーズに進行で
きるように手助けとなっていてよかったです。グループ報告書のまとめも行なってくれ、スムーズ
に作成できてよかったです。
RSA 暗号に関係性の高い素因数分解について調べ、それをもとに簡単なプログラムを作成したも
のは理解しやすくてよかったです。また、プログラムの作成により RSA 暗号と誕生日パラドック
スとのかかわりを表しグループ間で教えうなどしていてよかったです。
最終発表会では一緒に発表者として、答えにくい質問にも積極的に答えてくれていて非常に心強
かったです。また、グループリーダーとして、グループ間で話し合いをするときにはメンバーの都
合のいい時間を選んで行っていたので、統率力もあると感じました。さらに、グループリーダーと
しての自覚を持ち、遅刻や欠席もせずに毎回早く来ていてよかったです。
永井喜孝:前期では RSA 暗号の基礎的な計算方法や実装を、後期では RSA 暗号の応用方法など
についてまとめたり、発表会でのポスター作成を積極的にやってくれた。中間、及び最終発表会で
も発表者として主に話す内容を考えてくれていた。とても聞きやすく大きな声で発表しており大変
良かったという印象が残っている。グループなどの話し合いにおいて意見をまとめてくれたり、場
の雰囲気を良くしてくれたりといったように、全体のまとめ役として大きくこのプロジェクト学習
に貢献してくれていた。またみんながあまり使い慣れていないポスター作成のためのアプリケー
ションなども自ら積極的にやってくれて結果としてポスター作成のほとんどを彼がやってくれてい
た。グループ報告書の作成においても作業分担の指示やみんなが書いた文章のチェックやまとめを
やってくれるなど、グループみんなの支えとなって常に行動してくれていた。
通常のプロジェクト学習においてはもちろんだが、さらに時間外の作業も嫌がることなく積極的
にみんなのために作業をしてくれるなど、彼の人の良さをよく知ることができた。今回のプロジェ
クト学習のほとんどの作業に関わってくれていて、彼なしではうまくこなしていくことは出来な
かっただろうと考えられる。
及川真那実:RSA 暗号・楕円曲線暗号班のグループリーダーとして、グループ内をまとめてくれ
るとともに、自分の役割としての、RSA 暗号の解読プログラムの作成や、ポスター制作、中間発
表、最終発表の発表者、報告書のまとめ役としてしっかりと取り組んでいた。
RSA 暗号の解読プログラムの作成については、プログラムの流れをしっかりと把握し、計画的
に作業していました。また、上手く SA 暗号の解読プログラムの作成が進まないときには、率先し
てグループ内での話し合いの場を設けてくれ、グループ内での進み具合の差が大きくならなかった
のでとても良い気遣いをしてくれていたと思った。
ポスター制作においては、積極的に行なってくれたので最終発表までの期間に慌てることなくス
ムーズに準備ができたと思った。
Group Report of 2011 SISP
- 45 -
Group Number 13-B
Visualization of Code-Breaking
中間発表、最終発表の時には発表者として、一番発表の仕方について、どうすればもっと上手く
伝わるのか、どうすれば聴く側にとって聴きやすいかなど考えていた。その結果、中間発表、最終
発表でも聴きやすかったなどの意見を得られ、良い評価に繋がったと思った。
報告書のまとめ役としては、報告書の割り振りを考えてくれたり、グループのメンバーがそれぞ
れが書いた内容をまとめる作業をしていた。特に、グループのメンバーそれぞれが書いた内容を一
つのグループ報告書にまとめるだけでなく、間違っていた内容や、あやふやな点を指摘してくれた
りしたので、よりより報告書を書くに当たって重要な作業を行なってくれたと思う。
亀井謙斗に対する評価
伊藤拓海:暗号に関する学習の中で多くのことを調べてくれた。RSA 暗号と楕円曲線暗号以外の
暗号に関しても熱心に調べて、いろいろな暗号の関係性や相違性を学習する大きな助けになってく
れた。
特にρ法に関する学習では一番力を発揮してくれた。ρ法の学習をするときにいろいろと文献を調
べたりしながら学習し、プロジェクトメンバーにわかりやすく教えてくれた。暗号の解読には欠か
すことのできないものだったのでとても助かった。
普段の活動では活動が詰まった時や皆が困っているときに多くの意見を出してくれたり工夫をして
くれてスムーズに作業を進めていくことができた。発表の練習においてもいかに相手に伝えやすい
発表ができるかを熱心に考えてくれて最終発表でわかりにくい暗号をなるべくわかりやすいように
伝えてくれた。発表練習も一番長く時間をとり最終発表を成功できるようにしてくれた。
永井喜孝:前期では RSA 暗号の基礎について、そして後期では RSA 暗号や楕円曲線暗号の解読
のときに重要となるρ法についての知識の習得に励んでいた。話し合いの場などにおいていつも積
極的に自分から意見を出したり、司会役をやってくれていた。中間発表、そして最終発表の両方で
発表役として積極的にやってくれていた。自分たちが行ってきた作業や調べた内容、実際に作成し
たアプリなどについてどのように言葉にして伝えればよいかということを一生懸命真面目にみんな
と話し合ってくれた。また先生にいろいろと質問に行くなどといった、知識の習得に対するやる気
もとても感じられる機会が多かった。
普段のプロジェクト学習においても毎回遅刻することもなく少し早めにいつもいるということか
ら、彼のプロジェクト学習に対するやる気があるということも多く感じられた。最終報告書作成に
おいても嫌がることなく自分がやってきたことを淡々とまとめるという作業をこなしていた。
及川真那実:主に RSA 暗号の解読プログラムの作成、ρ法についての学習、中間発表や最終発
表の発表者として真面目に取り組んでいた。
RSA 暗号の解読プログラムの作成は PARI/GP という言語の高速計算機で行なったが、プロ
ジェクトのメンバーの全てが初めて使うもので上手くプログラムを作成できなかったとき、しっか
りとまわりを見て全体で基礎の学習を行なうことを提案してくれた。そのおかげで、RSA 暗号の
解読プログラムを作成するグループだけでなく、楕円曲線暗号の解読プログラムを作成するグルー
プや誕生日パラドックスのグループもスムーズにそれぞれのプログラムを作成することへ繋がった
と思う。
Group Report of 2011 SISP
- 46 -
Group Number 13-B
Visualization of Code-Breaking
ρ法については中心となって学習を進めてくれていた。ρ法とは RSA 暗号、楕円曲線暗号につ
いて重要なものであるので、しっかりと簡潔に要点をまとめてくれたので、グループメンバー全員
がより深く理解することができたと思う。
中間発表と最終発表では発表者として誰よりも、発表の仕方に気を使ってくれていた。「スライ
ドの内容を読んでいた時間が多かった」という中間発表の反省点を改善するため、発表者全員で詳
しく自分の言葉で説明できるように練習の時間を作ってくれていた。発表の練習時間をしっかりと
設けてくれたおかげで、中間発表よりも良い発表を行なうことができたと思った。
永井善孝に対する評価
伊藤拓海:暗号解読ののプログラムに関して積極的に取り組んでくれた。解読については一番熱心
に学習してくれて他のプロジェクトメンバーが学習していてわからないところをわかりやすく教え
てくれた。プログラム作成ではプロジェクト時間外にも多くの時間をとってくれてより良いものを
作成してくれた。プログラム作成の中心となって最後までやってくれたのでほかのメンバーも学習
する時間を多く確保できた。
前期・後期あわせて活動の中心メンバーとしてほかのグループからも頼られている存在だった。そ
れでも時間をとって説明してくれプログラムのエラーの解消やよりよいプログラムの作成をしてく
れた。中間発表と最終発表の発表者にもなってくれて暗号解読に関してわかりやすい説明を考えて
くれた。
亀井謙斗:RSA 暗号や楕円曲線暗号のプログラム作成を自ら積極的に取り組んでいました。最
終発表では発表者として、発表練習から大きな声で発表し視聴者に聞きやすく、理解しやすい発表
を行っていてよかったです。また、最終発表では臨機応変に質疑応答などに取り組んでいて、パー
トナーの人に信頼されていたと感じました。
楕円曲線暗号に関しての知識はグループの中でも非常に高く、わからないことがあれば何でも答え
て教えてくれていたので、グループ間の楕円曲線暗号の知識は高まったと感じました。また、RSA
暗号のプログラムの実装の際には、大学に早く来て作成していたり、グループのメンバーのわから
ないところを教えていてよかったです。また、自分の作業が終わったら、他のメンバーの作業にも
積極的に手伝いにいっていたりして、非常に助かる場面も多かったです。さらに報告書の作成の際
には、その知識を生かして、RSA 暗号や楕円曲線暗号の実装の部分を詳しく丁寧で、理解しやす
いものを書いてくれてよかったと感じました。
及川真那実:主に楕円曲線暗号の解読プログラムの作成、RSA 暗号の実装に向けたプログラム
の作成、中間発表や最終発表の発表者として取り組んでいた。
楕円曲線暗号の解読プログラムの作成では、プログラムの完成に大きく貢献してくれた。グルー
プのメンバーの中で一番、プログラムの流れをしっかりと理解し、完成まで進めてくれた。また、
メンバーの中で遅れが出た人がいるときには一緒になってエラーの部分を探してくれ、解決するま
で助けてくれていた。さらに解決するだけでなく、プログラム内の意味も解説してくれたのでただ
プログラムを作成して終わることなくメンバーそれぞれがプログラムを理解するのに繋がったと思
う。
Group Report of 2011 SISP
- 47 -
Group Number 13-B
Visualization of Code-Breaking
RSA 暗号の実装に向けたプログラムの作成では、前期に RSA 暗号グループが作成したプログ
ラムをもとに可視化に向けたアプリケーション用のプログラムを作成していた。RSA 暗号グルー
プとも実装グループとも随時話し合いの場をしっかりと持ち、無駄なく作成を進めていた。随時話
し合いを行なっていたので、あますことなく効率的に RSA 暗号の実装向けのプログラムを作成す
ることができたと思う。
及川真那実に対する評価
伊藤拓海:しっかりと意見を出し話し合いを円滑に進めてくれた。話し合いの空気が悪くなったと
きも場を明るくしてくれた。そのおかげでいつも明るい話し合いができた。
ポスター・スライドの作成にも力を発揮してくれて作業が上手くできました。ポスター作成のとき
にはデザインのアイディアを出してくれて見やすいポスターの作成ができた。さらに最終発表のス
ライドでもわかりやすくて見やすいものを一生懸命作成してくれた。
暗号の学習にも一生懸命取り組んでくれてグループメンバーとともに多くの暗号について調べてく
れた。前期には楕円曲線暗号のみだったが後期に入り RSA 暗号についても積極的に取り組んでく
れてとても助かった。
亀井謙斗:楕円曲線暗号を逸早く理解し、その知識をグループ間で共有するために、グループのメ
ンバーに教えてくれてよかったです。発表のときには、スライドを視聴者に理解しやすいように作
成しわかり、発表者が発表しやすいようにしてくれていてよかったです。スライドの作成の際にも
視聴者が理解しやすいように図や表を多く取り入れて、いいスライドに仕上げてくれたので発表の
ときは非常に助かりました。
話し合いの時には積極的に意見を出してくれて、様々な作業をスムーズに進めることができまし
た。また、グループの中でも提出物の期限や提出場所をしっかりと把握していて、助かる場面も何
度もありました。
ρ法の説明方法を一緒に考えるときも、どうしたら理解しやすく、見やすいものを作れるか積極的
に考えて意見を出してくれたので、非常に助かりました。また、ρ法に関するスライド作成の際に
は、視聴者が理解しやすいように図や表を作成し、はじめてみる人でもわかるものになってよかっ
たです。
永井喜孝:前期では楕円曲線、及び楕円曲線暗号の基礎について、後期では楕円曲線暗号や RSA
暗号の解読のためのρ法について、発表会などで使用するスライド作成を積極的にやってくれてい
た。中間発表や最終発表では発表者ではなかったが、どのように発表すればよりよく伝わるといっ
たことなどを、客観的な視点から多く指摘してくれていた。全体の話し合いにおいても自分の意見
を多くだしてくれたり、みんなから出た意見をまとめさらにそこからどう発展させていくかといっ
たように、話し合いをどんどん活発にさせてくれていた。発表会が近くなると自分たちが言いたい
こと、伝えていきたい事をまとめそれらを発表のスライドにまとめてくれるといった作業を自ら積
極的にやってくれていた。またプロジェクト時間内にだらけている人がいたり遅刻や欠席をする人
たちに対して、みんなが言いにくいようなことをかわりに言ってくれたりなどほどよい緊張感を持
たせてくれたりといったこともしてくれていた。
普段から何事においても手を抜くことなく一生懸命努力してくれていて、それがグループなどま
Group Report of 2011 SISP
- 48 -
Group Number 13-B
Visualization of Code-Breaking
わりによい刺激、影響を与えてくれることが多くありプロジェクトメンバー全体を引き締まるよう
な感じにさせてくれていた。
Group Report of 2011 SISP
- 49 -
Group Number 13-B
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
- 50 -
Group Number 13-B
Visualization of Code-Breaking
付録 B
活用した講義
大型プリンタ講習会 ポスター印刷に必要な知識を得た。
Tex 講座 評価シートの記述や報告書の作成に役立った。
(文責: 及川真那実)
Group Report of 2011 SISP
- 51 -
Group Number 13-B
Visualization of Code-Breaking
参考文献
かみながまさひろ
や ま だ せい
わたなべ た か し
[1] 神永正博, 山田聖, 渡邊高志, Java で作って学ぶ暗号技術, 森北出版, 2008.
つじいしげお
かさはら ま さ お
[2] 辻井重男, 笠原正雄, 暗号理論と楕円曲線 森北出版, 2008.
[3] J.H. シルヴァーマン, J. テイト , 楕円曲線論入門 シュプリンガー・フェアラーク東京株式会
社, 1995.
[4] イアン・F・ブラケ, ガディエル・セロッシ, ナイジェル・P・スマート, 楕円曲線暗号 株式
会社ピアソン・エデュケーション, 2001.
[5] 今井秀樹, 松浦幹太, 情報セキュリティ概論 昭晃堂出版, 1999.
[6] PARI/GP, http://pari.math.u-bordeaux.fr/
[7] 暗号とは, http://dev.sbins.co.jp/cryptography/crypto graphy01.html
Group Report of 2011 SISP
- 52 -
Group Number 13-B