公立はこだて未来大学 2013 年度システム情報科学実習...

60
公立はこだて未来大学 2013 年度 システム情報科学実習 グループ報告書 Future University Hakodate 2013 System Information Science Practice Group Report プロジェクト名 セキュリティを極めよう Project Name Investigation of the security グループ名 ハードウェア編 Group Name Hardware Group プロジェクト番号/Project No. 4-B プロジェクトリーダ/Project Leader 1011037 日永一輝 Kazuki Hinaga グループリーダ/Group Leader 1010202 田村正志 Masashi Tamura グループメンバ/Group Member 1011144 水野陽介 Yohsuke Mizuno 1011166 古谷卓也 Takuya Hurutani 1011256 中村敏幸 Toshiyuki Nakamura 1010202 田村正志 Masashi Tamura 1205149 畠山遼平 Ryouhei Hatakeyama 指導教員 白勢政明 Advisor Masaaki Shirase 提出日 2014 1 15 Date of Submission January 15, 2014

Transcript of 公立はこだて未来大学 2013 年度システム情報科学実習...

Page 1: 公立はこだて未来大学 2013 年度システム情報科学実習 …sisp/old_report/2013/04/document04_B.pdf · Group Report プロジェクト ... hardware description language

公立はこだて未来大学 2013 年度 システム情報科学実習グループ報告書

Future University Hakodate 2013 System Information Science Practice

Group Report

プロジェクト名セキュリティを極めよう

Project Name

Investigation of the security

グループ名ハードウェア編

Group Name

Hardware Group

プロジェクト番号/Project No.

4-B

プロジェクトリーダ/Project Leader

1011037 日永一輝 Kazuki Hinaga

グループリーダ/Group Leader

1010202 田村正志 Masashi Tamura

グループメンバ/Group Member

1011144 水野陽介 Yohsuke Mizuno

1011166 古谷卓也 Takuya Hurutani

1011256 中村敏幸 Toshiyuki Nakamura

1010202 田村正志 Masashi Tamura

1205149 畠山遼平 Ryouhei Hatakeyama

指導教員白勢政明

Advisor

Masaaki Shirase

提出日2014年 1月 15日

Date of Submission

January 15, 2014

Page 2: 公立はこだて未来大学 2013 年度システム情報科学実習 …sisp/old_report/2013/04/document04_B.pdf · Group Report プロジェクト ... hardware description language

概要

プロジェクト「セキュリティを極めよう」では、情報通信技術の発展に従い重要度が増し続け

ている情報セキュリティについて多面的に調査し、現在の社会情勢における情報セキュリティ

技術の現状を熟知し、また自らが「情報セキュリティ人材」としての知識・能力を得ようとし

た。本グループでは、昨年度から引き継がれた暗号処理ハードウェアに関する部分を担当した。

昨年度のプロジェクトで作成された暗号処理ハードウェアに、PCとの通信機能を付加するこ

とを目標として本グループは活動した。

前期での課題は、これから自分たちが使う暗号処理ハードウェアの理解であり、暗号処理ハー

ドウェアの機能編集に用いるハードウェア記述言語すなわち VerilogHDLおよび VHDLの学

習であった。それらの知識を踏まえることではじめて通信部分の機能付加へと進むことができ

る。前期ではハードウェア記述言語の学習が思うように進まず、実際の機能付加作業は行うこ

とができなかった。シリアル通信を実装するうえで必要な、暗号処理ハードウェアへシリアル

ポートを付加する工作とサンプルプログラムによるシリアル通信機能の動作確認は行うことが

できた。

後期はグループでは実際に必要な情報を、通信に載せて暗号処理ハードウェアと PC間の通信

を成し遂げるという課題のもと活動した。またプロジェクトの目標である「情報セキュリティ

人材」としての知識を身につけるために、暗号技術や暗号技術に使われる計算技術について、

また情報セキュリティを脅かす攻撃手法の様々を調査した。

その結果、グループでは、暗号処理ハードウェアに付加することを望んでいた基礎的な通信を

実現した。PC側のターミナルからシリアル通信を介して乗算する内容を送り、暗号処理ハー

ドウェア内部の乗算器によって計算した結果を、再びシリアル通信を介し PC 側のターミナ

ルに出力するという通信機能である。これにより昨年度作成されていた乗算部分の検算も行っ

た。入出力を確認できたことで、今後この暗号処理ハードウェアを発展させていく上での基礎

を作ることができたのである。また、暗号処理技術と計算技術、攻撃方法の調査は、グループ

全体を通してセキュリティ意識を高めることになり、生活に使われている暗号技術への一定の

理解を得ることができた。

キーワード 暗号, 情報セキュリティ, FPGA

(※文責: 田村正志)

- i -

Page 3: 公立はこだて未来大学 2013 年度システム情報科学実習 …sisp/old_report/2013/04/document04_B.pdf · Group Report プロジェクト ... hardware description language

Abstract

The infomation security is increasing importance according to the development of in-formation and communication technology. In project ”Investigation of the security”,weinvestigate the information security, and are going to get knowledge well in current so-cial conditions, and are going to become ”The information security talented person”. Inthis group, we were in charge of cryptographic hardware that was created in last year.Purpose of this group is to add the communication facility with the PC to cryptographichardware.

The challenges in first half year are to understand cryptographic hardware, and to learnhardware description language namely VerilogHDL and VHDL. To add the communica-tion facility, we need to learn that knowledge. In the first half year, we could not add thecommunication facility because to learn hardware description did not get ahead. Butwe could have already done handcraft of serial port and operation check of the serialcommunication facility by the sample program.

The challenges in latter half year are   to create the communication facility with thePC to cryptographic hardware. We investigated calculation technique which used incryptography, encryption technology and a variety of attack methods that threaten theinformation security. It is one of the goals of this project which is to get knowledge as”The information security talented person”.

As a result, we completed the mission which is to create the communication facility.Its function sends numbers to cryptographic hardware from PC. And cryptographichardware does multiplies and send result to PC. We used this function and checkedcryptographic hardware that was created in last year. This facility will become thebase of development of cryptographic hardware. And this study has us increase securityawareness. This study has us increase security awareness. And we could get under-standing cryptographic technology which has been using in our livelihood.

Keyword cryptogram, information security, FPGA

(※文責: 水野陽介)

- ii -

Page 4: 公立はこだて未来大学 2013 年度システム情報科学実習 …sisp/old_report/2013/04/document04_B.pdf · Group Report プロジェクト ... hardware description language

目次

第 1章 背景 1

1.1 暗号処理とハードウェア . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.1.1 既存のハードウェア . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.1.2 暗号処理ハードウェアが望まれている . . . . . . . . . . . . . . . . . . . . 2

1.2 現状における問題点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

1.3 公開鍵暗号 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.3.1 RSA暗号 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.3.2 ElGamal暗号 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.3.3 楕円曲線暗号 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

1.3.4 公開鍵暗号と乗算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

1.3.5 ペアリング暗号 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

1.4 素因数分解 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.4.1 試行割算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.4.2 p-1法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.4.3 楕円曲線法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.4.4 2次ふるい法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.5 暗号攻撃 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.5.1 総当り攻撃 (Brute Force Attack) . . . . . . . . . . . . . . . . . . . . . . 6

1.5.2 テーブル参照攻撃 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

1.5.3 差分攻撃法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

1.5.4 線形攻撃法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

1.5.5 高階差分解読法 (Higher order differntial cryptanalysis) . . . . . . . . . . 6

1.5.6 サイドチャネル攻撃 (side-channel attack) . . . . . . . . . . . . . . . . . . 7

1.6 実装に対する攻撃 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

1.6.1 実装や運用段階での危険 . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

1.6.2 安全性の指標の必要性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

1.6.3 普及の必要性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

1.6.4 公開鍵使い回し問題 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

1.6.5 BEAST攻撃 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

1.6.6 CRIME攻撃 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

1.6.7 Lucky13攻撃 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

1.7 ハードウェアによる効率化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

1.8 着目点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

1.9 課題の概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

1.10 予想 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

第 2章 到達目標 11

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

- iii -

Page 5: 公立はこだて未来大学 2013 年度システム情報科学実習 …sisp/old_report/2013/04/document04_B.pdf · Group Report プロジェクト ... hardware description language

2.1.1 高速乗算器の必要性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

2.2 前年度の暗号プロジェクトからの引き継ぎ事項 . . . . . . . . . . . . . . . . . . . 11

2.3 一年を通しての目標・課題設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

2.3.1 前期の目標 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

2.3.2 後期の目標 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

2.4 具体的な手順・課題設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

2.4.1 前期 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

2.4.2 後期 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2.5 課題の割り当て . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

2.5.1 前期 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

2.5.2 後期 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

第 3章 課題解決のプロセス 15

3.1 今回のプロジェクトで使った乗算器 . . . . . . . . . . . . . . . . . . . . . . . . . 15

3.2 経過 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

3.2.1 前期の経過 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

3.2.2 後期の経過 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

3.3 シリアル通信による FPGAとの相互通信の習得 . . . . . . . . . . . . . . . . . . 17

3.3.1 シリアル通信の通信速度 . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

3.3.2 シリアル通信の通信方式 . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

3.3.3 シリアル通信の実装 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

第 4章 結果 19

4.1 プロジェクトの結果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

4.2 成果の評価 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

4.3 担当分担課題の評価 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

4.3.1 水野陽介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

4.3.2 古谷卓也 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

4.3.3 中村敏幸 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

4.3.4 田村正志 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

4.3.5 畠山遼平 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

第 5章 考察 26

5.1 目的の確認、回答と新見地 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

5.1.1 当初の目的 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

5.1.2 通信機能への集中 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

5.1.3 課題に対する成果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

5.1.4 新見地 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

5.2 課題解決についての補足 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

5.3 新見地と先行研究との関連性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

5.4 この活動によって何を得られたか . . . . . . . . . . . . . . . . . . . . . . . . . . 28

5.5 最終発表の反省 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

5.5.1 中間成果発表会アンケート結果 . . . . . . . . . . . . . . . . . . . . . . . . 29

- iv -

Page 6: 公立はこだて未来大学 2013 年度システム情報科学実習 …sisp/old_report/2013/04/document04_B.pdf · Group Report プロジェクト ... hardware description language

5.5.2 最終成果発表会アンケート結果 . . . . . . . . . . . . . . . . . . . . . . . . 30

5.5.3 アンケート結果考察 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

第 6章 今後の課題と展望 32

6.1 課題 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

6.2 展望 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

付録A VHDLの記法 34

A.1 簡単な組み合わせ回路の記述例 . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

A.2 ライブラリ宣言 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

A.3 エンティティ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

A.4 アーキテクチャ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

A.5 コンカレントとシーケンシャル . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

A.6 ハードウェア処理とソフトウェア処理 . . . . . . . . . . . . . . . . . . . . . . . . 36

付録 B VerilogとVHDLの違い 37

B.1 ライブラリ宣言の有無 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

B.2 ハードウェア構造の宣言 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

B.3 信号とその代入演算の違い . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

B.4 演算子の違い . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

B.5 まとめ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

付録 C 楕円曲線Diffie-Hellman 鍵共有(ECDH鍵共有) 39

C.1 楕円曲線 Diffie-Hellman 鍵共有(ECDH鍵共有)とは . . . . . . . . . . . . . . 39

C.2 実用例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

付録D 情報の数値化 40

D.1 コーディング . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

D.2 暗号システム . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

D.3 解読の危険性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

付録 E モンゴメリ乗算 42

E.1 モンゴメリ写像 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

E.2 モンゴメリ乗算とモンゴメリリダクション . . . . . . . . . . . . . . . . . . . . . 42

E.3 モンゴメリ乗算を用いた除算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

付録 F ナップザック暗号 45

F.1 ナップザック問題 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

F.2 実装 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

F.2.1 鍵生成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

F.2.2 鍵の公開 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

F.2.3 メッセージの送信 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

F.2.4 受信者による暗号文の復号 . . . . . . . . . . . . . . . . . . . . . . . . . . 47

付録G QuartusIIの使い方 48

- v -

Page 7: 公立はこだて未来大学 2013 年度システム情報科学実習 …sisp/old_report/2013/04/document04_B.pdf · Group Report プロジェクト ... hardware description language

G.1 QuartusIIの入れ方 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

G.2 プロジェクトの作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

G.3 ファイルの作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

G.4 ソースの流し込み . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

G.5 補足 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

付録H 使用した講義 50

付録 I プロジェクトでの習得技術 52

参考文献 53

- vi -

Page 8: 公立はこだて未来大学 2013 年度システム情報科学実習 …sisp/old_report/2013/04/document04_B.pdf · Group Report プロジェクト ... hardware description language

Investigation of the security

第 1 章 背景

現在、情報通信技術において欠かすことのできない分野と認められている情報セキュリティであ

るが、社会的な認識は十分とは言えない。インターネットバンキングや、企業秘密情報のやり取

り、私信などあらゆる情報がインターネットを介して通信されている現在は、軍事、国家、企業、

個人など、どのような水準でも秘密情報が盗み取られる危険は常に存在するといえる。秘密情報・

秘密通信の漏洩を防ぐ技術的な手段として暗号技術がある。近年発展を遂げた公開鍵暗号方式はそ

の安全性を含めた高い有用性から、現在広く使われている暗号技術である。公開鍵暗号の処理に、

従来のソフトウェア的な手法ではなく、暗号処理の繰り返し処理に特化したハードウェアを用いる

ことで数倍高速に処理できることがシミュレーションの結果明らかにされている。従来は大規模な

ハードウェアを作成することは極めて難しく予算がかかるものであったが、書き換え可能な LSIで

ある FPGAとその開発ボードの普及によりハードウェアの材料が安価に、容易に手に入るように

なった。またこのような開発ボードとハードウェア記述言語の開発環境を用いることで、比較的小

さな資源しか持たなくとも強力なハードウェアの開発ができる環境が整ってきている。暗号に対す

る攻撃は常に進化し続けており、暗号利用者や研究者は攻撃方法を知り対応しなければならない。

暗号自体の安全性に問題が無くても処理の過程や通信の過程で攻撃にさらされる危険もあるため、

安全な暗号通信のためには攻撃に対応することが必ず必要となる。

(※文責: 田村正志)

1.1 暗号処理とハードウェア

現在広く使われている公開鍵暗号方式のひとつであり、このプロジェクト学習で主な対象として

いる RSA暗号では、暗号処理すなわち暗号化と復号の過程で多量の乗算をする必要がある。この

暗号方式では、破られにくい、破るために時間のかかる暗号を作ろうとすればするほど、さらに計

算量が増える。そのため、より強力な暗号を求めようとすれば、より高速な乗算器が必要となるの

である。汎用の CPUにも乗算機能は搭載されており、現在は通常、こうした CPUの機能を用い

て暗号処理に必要な乗算を行っている。本プロジェクト学習で開発しようとする暗号処理ハード

ウェアとは、このような汎用の CPUとは異なり、暗号処理に必要な多量の多ビット乗算に特化し、

剰余算や入出力などの暗号処理に必要な機能を持った、暗号処理専用のハードウェアである。こう

したハードウェアは従来よりも効率的に回路資源を設計することにより、高速な暗号処理を行う

ことができ、暗号の研究に役立てることができる。また将来使われる、より強力な暗号を処理する

チップを開発する足掛かりとなることも期待している。

(※文責: 田村正志)

1.1.1 既存のハードウェア

本プロジェクトでもWallace tree乗算器を扱ったが、Intel社が開発している ItaniumCPUに

は 64bitのWallace tree乗算器が使用されている。Wallace tree乗算器とは、通常の乗算方式で

Group Report of 2013 SISP - 1 - Group Number 4-B

Page 9: 公立はこだて未来大学 2013 年度システム情報科学実習 …sisp/old_report/2013/04/document04_B.pdf · Group Report プロジェクト ... hardware description language

Investigation of the security

は n ステップかかるところを log3/2n ステップで計算できるため、計算速度が速い乗算方式であ

る。暗号ハードウェアにおいては乗算は数千ビット単位で行われるため、多倍長演算をするとき

に、計算速度が速くビット長が長い乗算器であればあるほど暗号化、復号の計算速度が速くなるた

め、高速かつ長いビット長の乗算器が求められる。

 また、岡山大学では、暗号強度を 256から 5120ビットまで自在に調整でき、次世代の多様な暗

号システムに柔軟かつ効率よく対応できる FPGAボードを開発している。他にも産総研と東北大

学大学院でも、暗号機能 (AES)を実装した FPGAボードを開発している。

(※文責: 中村敏幸)

1.1.2 暗号処理ハードウェアが望まれている

暗号計算アルゴリズム研究の中には計算機による、より高速な処理方法を研究する分野がある。

この研究では AES暗号や RSA暗号の処理をハードウェア化することで飛躍的に暗号処理が高速

化できるということがシミュレーションを通して明らかになっており、シミュレーション通りに設

計したハードウェアの実際の能力の検証が望まれている。

 実際にハードウェアを作成することで、動作速度や消費電力、必要な外部処理を研究することに

役立ち、高速暗号処理ハードウェアの実現と普及に役に立つと期待される。

(※文責: 田村正志)

1.2 現状における問題点

公開鍵暗号方式は安全性は高いと言われているが膨大な量の乗算処理を行う必要があり、その計

算量の多さから処理に時間がかかる。また汎用の CPU を使って公開鍵暗号の計算処理を行うと

CPU の利用を占有してしまう。特に携帯デバイスなどでは十分に強力な暗号を利用しなければ安

全性が確保できないことと、CPU性能が比較的低いことから対策が必要になる。また、なぜこの

プロジェクトで暗号処理ハードウェアを製作するのかということにも関わってくることであるが、

現在は暗号処理ハードウェアの実証的な研究はあまりなされておらず、実物を製作して性能を確

認する要求が存在する。即ち、暗号処理ハードウェアが研究段階でも普及していないというのが問

題点である。暗号処理ハードウェアの製作が遅れると、サイドチャネル攻撃などの暗号処理ハード

ウェアを対象とした攻撃への対策も遅れることになり、将来の情報通信環境の機密保持性が危うく

なる。昨年度のセキュリティプロジェクトに於いても問題となったように、ハードウェア開発の学

習のための資料がないことも問題である。FPGAを用いた開発環境が整備されつつあるとはいえ、

日本語の学習資料を見つけるのは容易ではないようである。多くのネット利用者がセキュリティに

無関心であるのも問題である。今まで以上にわかりやすく情報セキュリティについて解説するメ

ディアが必要となる。情報セキュリティに対するとっつきにくいイメージを改善し、関心を持って

もらう必要がある。

(※文責: 田村正志)

Group Report of 2013 SISP - 2 - Group Number 4-B

Page 10: 公立はこだて未来大学 2013 年度システム情報科学実習 …sisp/old_report/2013/04/document04_B.pdf · Group Report プロジェクト ... hardware description language

Investigation of the security

1.3 公開鍵暗号

公開鍵暗号とは、世界中のだれが見ても問題ない公開鍵と、自分だけしか知らない秘密鍵からな

る暗号のことである。一般に公開される公開鍵から秘密鍵を計算して求めることは現実時間では不

可能であることを利用することで、安全性を確保している。

 使用用途としては、コンピュータ間で個人情報を保護するため、インターネットサービス上で実

装される SSLなどがあげられる。このように、公開鍵暗号は情報通信の分野において技術基盤と

なっている。公開鍵暗号の具体的な手法としては、RSA暗号や楕円曲線暗号などがある。

(※文責: 中村敏幸)

1.3.1 RSA暗号

RSA暗号とは、「素数と素数の掛け算は簡単だが、その逆の素因数分解は困難である」という数

学的な性質を用いて実現している。RSA 暗号では、鍵の長さによって暗号強度が変わる。現在、

鍵長 1024bitの強度で RSA暗号が使われるのが一般的である。

しかし、今後 5年間でコンピュータ技術の発展や暗号研究の面から鍵長 1024bitの強度では安全性

が失われるであろうという懸念から、近年、鍵長 2048bitの強度の RSA暗号を使用するケースが

増えてきている。

 具体的な計算方法としては、素数 p, q、合成数 n = p× q を求める。このとき、nが暗号強度の

ビット数になるように素数を求める必要がある。素数 p, qはフェルマーの小定理の対偶を使用する

ことで求めることができる。公開鍵 (e, n)、秘密鍵 (d, n)を得る。具体的な e, dの算出方法に関し

ては割愛させていただく。公開鍵 (e, n)を使用することで平文メッセージMを暗号化することが

できる。C = Me (mod n) (1.1)

ただし、メッセージM は n ≥ M とする。この暗号化されたメッセージ C から、以下の式で平文

メッセージM を取り出すことができる。

M = Cd (mod n) (1.2)

(※文責: 中村敏幸)

1.3.2 ElGamal暗号

Elgamal暗号とは、離散対数問題の難しさを利用した暗号で、楕円曲線暗号の原型となる暗号で

ある。はじめに、

y ≡ xs (mod p) - (a)

を満たす十分に大きな s, x, yを選ぶ。このとき、sを秘密鍵、x,yを公開鍵とする。次に、平文m

と、乱数 rを使って、e1, e2を次のように与える。

e1 ≡ xr (mod p)

e2 ≡ yr+m (mod p)

これは暗号化された平文を表す。実際にこの暗号文を復号すると、

Group Report of 2013 SISP - 3 - Group Number 4-B

Page 11: 公立はこだて未来大学 2013 年度システム情報科学実習 …sisp/old_report/2013/04/document04_B.pdf · Group Report プロジェクト ... hardware description language

Investigation of the security

e2 - e1s ≡ yr + m - xrs (mod p)

≡ yr + m - xsr (mod p)

≡ yr + m - yr (mod p)   ( (a)より、y = xs (mod p) )

≡ m (mod p)

となり、復号されていることがわかる。これは現状において、xと yから sを求められないという

ことを用いてる。すなわち、効率の良いアルゴリズムが開発されれば、この暗号の安全性が著しく

低下する。

(※文責: 古谷卓也)

1.3.3 楕円曲線暗号

楕円曲線暗号の暗号強度は、RSA暗号と比べビット長が短くても同じ強度のものになる。した

がって、RSA暗号と同じ安全度で、処理が短く、ビット数が少ないため、メモリ使用量も少ない。

また、前節でも書いたように近年 2048bit化が進んでいる RSA暗号は処理に時間がかかるように

なってきたため楕円曲線暗号に移行する動きが大きくなってきている。

 なぜ、楕円曲線暗号は、RSA暗号に比べビット長が短くても同じ安全度を持つかというと、楕

円曲線暗号は、3次元楕円曲線上の離散対数問題を用いているので、RSA暗号で使用されている素

因数分解と比較しても、公開鍵から秘密鍵を見つけ出すことが難しいからである。

 上記のような楕円曲線暗号の特性は、ETCや ICカードなどで使用され始めている。処理速度

が高いので、小型の電子素子にしようしやすいからである。

(※文責: 中村敏幸)

1.3.4 公開鍵暗号と乗算

公開鍵暗号方式では、累乗の計算を多量に行うため、乗算が多量に行われている。そのため、乗

算速度を高速化することが、技術的に求められる。この高速化を解決するため、技術者たちによっ

てアルゴリズムの改良による解決策などが考えられてきた。ソフトウェア的に解決するのではな

く、ハードウェア的に解決しようとした方式にワレスツリー乗算器がある。これは、シフト演算後

の加算を並列処理で行うことによって乗算速度を速くしたものである。本プロジェクトでは、ワレ

スツリー乗算器を PCと接続可能な状態にすることである。

(※文責: 中村敏幸)

1.3.5 ペアリング暗号

ペアリング暗号とは公開鍵暗号の一種であり、「ペアリング」とよばれる双線形写像を用いた暗

号技術のことである。ペアリング暗号のベースになっているのは楕円曲線暗号で、ペアリング暗号

は従来の公開鍵暗号では実現できなかった高機能暗号として使用できることで期待されている。高

機能暗号とは従来の暗号とは違い、「IDベース暗号」、「検索可能暗号」、「関数型暗号」などといっ

た機能を持った暗号のことである。たとえば、その暗号が、復号資格のある人のみ復号が可能であ

るようなものや、その時間だけ復号が可能な暗号をつくることができる。

Group Report of 2013 SISP - 4 - Group Number 4-B

Page 12: 公立はこだて未来大学 2013 年度システム情報科学実習 …sisp/old_report/2013/04/document04_B.pdf · Group Report プロジェクト ... hardware description language

Investigation of the security

(※文責: 中村敏幸)

1.4 素因数分解

素因数分解は暗号の読解に必須である。ここでは簡単に素因数分解の種類を一部紹介する。

1.4.1 試行割算法

素因数分解の対象の数を小さな素数から順に割っていく方法である。

1.4.2 p-1法

Fermatの小定理を利用して求める方法である。

1.4.3 楕円曲線法

楕円曲線の位数を利用する方法である。

1.4.4 2次ふるい法

x2 = y2 (mod n) を満たす x と y を求めて x ± yと素因数分解の対象の数との最大公約数を求

めて計算していく方法である。

(※文責: 古谷卓也)

1.5 暗号攻撃

暗号攻撃は主に、暗号文単独攻撃 (Ciphertext Only Attack)、既知平文攻撃 (Known Plaintext

Attack)、選択平文攻撃 (Chosen Plaintext Attack)、選択暗号文攻撃 (Chosen Ciphertext Attack)

の4つに分類される。暗号文攻撃は、暗号文のみを用いて、平文を求める攻撃であり、通常の盗聴

が自由にできる場合である。既知平文攻撃は、既知の平文に対応する暗号文を得られる条件で、暗

号文から平文を求める攻撃であり、様式の決まった定型文などを暗号化して送る場合などが該当す

る。例えば、通信プロトコルによってデータの最初のブロックが固定されている場合などである。

選択平文攻撃は、任意の平文に対応する暗号文を得られる条件で、暗号文から平文を求める攻撃で

あり、暗号装置がネットワークにつながれ自動的に応答する場合が想定できる。公開鍵暗号の場合

には、公開鍵を用いて任意の平文を暗号化できるため、選択平文攻撃に対して安全であることが必

須である。選択暗号文攻撃は、解読対象の暗号文以外の任意の暗号文に対応する平文を得られる条

件で、ある暗号文から平文を求める攻撃であり、鍵を内蔵した回線暗号装置などを盗み出し非破壊

状態で中の状態を推定しようとする場合などである。さらに細かい分類を次にあげる。

(※文責: 水野陽介)

Group Report of 2013 SISP - 5 - Group Number 4-B

Page 13: 公立はこだて未来大学 2013 年度システム情報科学実習 …sisp/old_report/2013/04/document04_B.pdf · Group Report プロジェクト ... hardware description language

Investigation of the security

1.5.1 総当り攻撃 (Brute Force Attack)

総当り攻撃とは、暗号や暗証番号などで理論的にありうるパターン全てを入力し解読する暗号解

読法である。時間的制約が無い限りは、確実に暗号を解読できる方法である。よって、暗号に用い

られる秘密鍵の長さは、すべてのパターンを試してみる行為が現実的な時間で実現できない長さで

設計しなければならない。

(※文責: 水野陽介)

1.5.2 テーブル参照攻撃

テーブル参照攻撃とは、攻撃者はあらかじめすべての鍵で暗号化した暗号文を表にしておき、暗

号文が与えられたらその表から鍵を求める攻撃法である。この攻撃法は、事前計算に総当り攻撃と

同じだけの時間がかかり、テーブルを格納するための非常に大きな記憶容量が必要である。

(※文責: 水野陽介)

1.5.3 差分攻撃法

差分攻撃法とは、入力差分がどのように出力差分に影響を及ぼすか考察することである。差分と

は、2つのデータの排他的論理和であり、2つの平文の排他的論理和が入力差分で、それぞれの平

文に対応する暗号文の排他的論理和が出力差分である。差分攻撃法は、攻撃者が自由に選択した平

文に対する暗号文が入手できるという条件で可能な攻撃法であり、選択平文攻撃の一種である。主

にブロック暗号に対して用いられる。

(※文責: 水野陽介)

1.5.4 線形攻撃法

線形攻撃法は、入力の特定ビットの排他的論理和と出力の特定ビットの排他的論理和に関係が成

立するときに可能な攻撃法であり、既知平文攻撃の一種である。一般に、暗号アルゴリズムの出力

ビットを、入力ビットや鍵ビットのブール式で表現しようとすると、ブール式の次数や項数が爆発

的に増加してしまい困難である。線形攻撃はこのブール式を低い次数の少数の項数のみで近似する

ことにより、その近似式に現れる鍵ビットを確率的に求める。線形攻撃は、秘密鍵の総当たりより

も少ない計算量で DESを解読できたことで有名である。主にブロック暗号の解読に用いられる。

(※文責: 水野陽介)

1.5.5 高階差分解読法 (Higher order differntial cryptanalysis)

高階差分解読法 (Higher order differntial cryptanalysis) は、差分解読法を一般化したブロック

暗号に対する攻撃である。差分解読法は 2つの平文および暗号文の差分に着目したものだったが、

高階差分解読では 3つ以上の平文および暗号文の差分に着目する。場合によっては通常の差分攻撃

Group Report of 2013 SISP - 6 - Group Number 4-B

Page 14: 公立はこだて未来大学 2013 年度システム情報科学実習 …sisp/old_report/2013/04/document04_B.pdf · Group Report プロジェクト ... hardware description language

Investigation of the security

法よりも効率が良いことがある。

(※文責: 水野陽介)

1.5.6 サイドチャネル攻撃 (side-channel attack)

上記の暗号攻撃法とは違い、暗号装置の動作状況を様々な物理的手段で外部から観察することに

より、秘密情報の取得を試みる攻撃方法である。暗号機能を内蔵した ICカードなど、暗号処理機

能の組み込まれた電子機器や半導体製品が主な攻撃対象である。具体的な攻撃方法としては、処

理時間に注目したタイミング攻撃(timing attack)や、消費電力に注目した電力解析攻撃 (power

analysis attack)、装置から漏洩する電磁波に注目した電磁波解析攻撃などがある。暗号機能付き

の ICカードなどのように攻撃者が処理時間や消費電力を精密に測定できる場合には、平文や暗号

文だけではなく、これらの情報チャネルから漏洩する情報も考慮することが必要である。このよう

に、暗号方式が安全であっても暗号の実装が脆弱であると暗号を安全に利用することはできない。

(※文責: 水野陽介)

1.6 実装に対する攻撃

1.6.1 実装や運用段階での危険

暗号アルゴリズムに固執すると、実装(プロトコル)や運用の段階で発生している思わぬ落とし

穴に気づかない可能性がある。もちろん、研究者ではなく悪意のある攻撃者が見つけたセキュリ

ティホールを親切に教えてくれるわけではない。暗号アルゴリズムの安全性は一部分の安全性に過

ぎない。アルゴリズムでは入出力や処理中のセキュリティ(主に秘匿性)はハードウェアで実現し

ているという前提にある場合が多い。しかしハードウェアへの攻撃手法が見つかっており、情報セ

キュリティを語るうえで、実装面、運用面での安全性の議論を省くことはできない。ハードウェア

を対象とした攻撃によって生まれる脆弱性は、それでも暗号アルゴリズム本体を突破されることに

比べればまだ、対処可能である。例えばタイミング攻撃に対してはタイミングの差を埋める処理を

行えばよいわけであり、脆弱性が見つかってしまえば対処可能である場合が多い。とはいえこれは

暗号アルゴリズム研究者の専門分野ではないため、情報セキュリティはさらに関連分野の連携が必

要になってきている。情報セキュリティ人材は、危険な実装や運用を見つけられる力や、危険性を

わかりやすく伝え、管理者に移行や更新の方向を指し示すことにより、危険を未然に防ぐための知

識や、コミュニケーション能力も必要とされるであろう。

(※文責: 田村正志)

1.6.2 安全性の指標の必要性

しかし、安全性を保つために新たな技術へ移行するためにはコストがかかる。移行する必要性を

示す危険性の開示や、移行することによる安全性がどれほどのものか指標を得たいというのが、情

報機器を管理する者の要求であろう。安全性を指標化して移行コストとの比較を行いたいという需

要がある。しかし、暗号技術の性質上、それぞれの技術でそれぞれの安全性の根拠があり、異なる

種類の暗号技術では安全性の評価基準も異なるので、指標化するには評価方法を定めなければなら

Group Report of 2013 SISP - 7 - Group Number 4-B

Page 15: 公立はこだて未来大学 2013 年度システム情報科学実習 …sisp/old_report/2013/04/document04_B.pdf · Group Report プロジェクト ... hardware description language

Investigation of the security

ない。

(※文責: 田村正志)

1.6.3 普及の必要性

通信に暗号を使うというのは、自分と相手の双方が関わっているため、自分だけの意識を高める

ことでは危険性は解消されない。安全な暗号やプロトコルが世界中で利用される必要がある。当然

多くの機関、場面で、盗聴されない通信が望まれているが、コストのかかる移行や更新はいつでも

嫌われてしまう。

(※文責: 田村正志)

1.6.4 公開鍵使い回し問題

公開鍵を収集して共通の秘密鍵を明らかにするという攻撃がある。これは情報機器の初期設定な

どで同一の鍵を使用している場合に、初期設定から鍵を変更せずに利用してしまうことにより、複

数の機器で同一の鍵を使用する状況が生まれるため、攻撃対象となるのである。また鍵生成を行う

ときに同一の鍵が生成される確率は理論上極めて低いものであるが、鍵生成の方法が適切ではない

場合、同一の鍵を使用する状況が生じる可能性がある。RSA暗号では素因数分解の困難さに暗号

の安全性の根拠を置いているが、素因数分解が出来なくても秘密鍵がわかってしまうこのような攻

撃に対してはこの理論上の安全性が確保できないので危険が生じる。攻撃の対象になった場合、盗

聴や証明書偽造によりシステムへの侵入が行われる可能性がある。

(※文責: 田村正志)

 

1.6.5 BEAST攻撃

(2011年 9月) SSL/TLS使用ブラウザの CBCモードへの選択平文攻撃。ブラウザ内の Cookie

を奪取。

(※文責: 田村正志)

1.6.6 CRIME攻撃

(2012年 9月) SSL/TLSの圧縮機能への攻撃。圧縮サイズの違いにより平文を予想し、暗号化

データを復元する。

(※文責: 田村正志)

Group Report of 2013 SISP - 8 - Group Number 4-B

Page 16: 公立はこだて未来大学 2013 年度システム情報科学実習 …sisp/old_report/2013/04/document04_B.pdf · Group Report プロジェクト ... hardware description language

Investigation of the security

1.6.7 Lucky13攻撃

(2013年 1月) SSL/TLS、CBCモードへのタイミング攻撃。ハードウェアに対して行われるサ

イドチャネル攻撃に似た手法が、ネットワークを介して行われた。サイドチャネル攻撃の一種が、

ネットワーク上でも利用されたと言うこともできる。

(※文責: 田村正志)

1.7 ハードウェアによる効率化

一般のコンピュータに搭載されている演算装置はリソースを分配することで複数のプロセスが

同時に並行して処理されている。だが、暗号化処理は巨大な数を計算する必要があることからプロ

セッサに対して一度に要求するリソース量が大きく、処理を行うためのリソースの確保や処理中の

リソースの圧迫により他のプロセスの処理が遅延しやすくなってしまう。この問題を解消するため

に、暗号の処理に特化したハードウェアを外部に用意し、暗号化処理を行わせることを考案した。

専用ハードウェアでは他のプロセスとの競合が起きないことからリソースを暗号処理のみに注力さ

せ、演算装置となる乗算器も巨大な数を扱うことを前提に設計することで暗号化処理に最適化させ

ることでメインシステム側への負荷を減らすとともにより高速での処理を可能にし、効率化させる

ことができる。

(※文責: 畠山遼平)

1.8 着目点

専用ハードウェアの最大の特徴は用途に特化し他の要素を極力排除して処理の最適化を図るとと

もに独自のリソースで処理を行うことでクライアント側のリソースへの負荷を最低限に抑えられる

点である。

演算の高速化を行うためには、アルゴリズムの最適化というソフトウェア的な手法と演算器その

ものの高速化というハードウェア的な手法が存在するが、本プロジェクトでは前者は暗号理論の修

得難易度の高さや現状既にある程度最適化されているアルゴリズムをさらに最適化しようとするこ

との時間対効果の小ささから見送り、高速で暗号を処理することに特化したハードウェア実現と性

能向上を目指している。

(※文責: 畠山遼平)

1.9 課題の概要

暗号処理などに用いられる多倍長乗算は数が大きすぎて一度の計算で答えを出すことはできず、

大きな数を乗算器が扱える大きさの数の和に分割し、それぞれの積を合算するなどの方法で計算し

ている。だが、この分配と合算のプロセスを踏む回数が増えるほど計算回数が増えロスが生じてし

まう。このロスを減らすためには一度に積を出せる大きさを増やすことで分配する回数を減らせば

よく、乗算器の扱えるビット数が2倍になるごとに分配によるロスはおよそ半分となる。

Group Report of 2013 SISP - 9 - Group Number 4-B

Page 17: 公立はこだて未来大学 2013 年度システム情報科学実習 …sisp/old_report/2013/04/document04_B.pdf · Group Report プロジェクト ... hardware description language

Investigation of the security

そのためより巨大な数を一度に扱える乗算器が必要とされているが、乗算器作成に要求される論

理素子の数は単純計算でビット数が倍になるごとに2乗に増えてしまう。一般に市販されているプ

ロセッサに搭載されている乗算器を超えるような乗算器の実現のためには相当量の素子が必要とさ

れ、単純な設計の乗算器では現行の FPGAに実装できなくなってしまう。この容量問題の解決と

計算速度の向上のために乗算器の最適化が必要とされている。

また、高速乗算器を始めとする暗号ハードウェアは暗号処理に大半のリソースを割けるが、暗号

ハードウェアとクライアントを連動させるためにクライアントとの間で演算に必要な情報および演

算結果をやり取りするための相互通信機能が必要である。このデータ通信によって開始時と終了時

にある程度遅延が生じてしまうため、最終的にはある程度高速で大量にデータをやりとりできる通

信手段を取り入れる必要がある。

(※文責: 畠山遼平)

1.10 予想

FPGA で暗号用高性能乗算器を作製することで何ができるか、以下のようになると予想する。

暗号用高性能乗算器は、大規模サーバなどの運用施設において、必要な暗号処理を高速かつ別ハー

ドで行うことができるため、サーバにおいて暗号化や復号の処理で負担をかける必要がなくなると

考えられる。よって暗号化ネットワークが高速化されると容易に予想できる。また、近年の暗号研

究においてペアリング暗号などの高機能暗号が注目されている。このような暗号研究のシーンにお

いて暗号用高性能乗算器は、現在ある非常に高速な CPUにも劣らない性能を出すことが可能であ

れば、必要とされるだろうと予想される。また、暗号解読などの研究においても必要とされると考

える。暗号解読の研究は、攻撃者よりも先んじて研究者が暗号解読に成功することによって、暗号

の安全性を保つことができるため、このようなシーンにおいても暗号用高性能乗算器は重要な位置

をしめると思われる。

 プロジェクトは引き継がれていくにあたって FPGA で暗号用高性能乗算器を作製していくが、

最終的には以下のようになると予想する。高性能な乗算器と比較してパソコンとの通信が、シリ

アル通信では速度が遅いため PCIeの学習を進め QuartusII 付属のハード IPを使用し PCIeでの

PFGA-PC間の接続を可能にする。FPGA上に乗算の演算のみではなく、多倍長演算やモンゴメ

リ乗算、制御コードでの処理などができるようになると予想される。

(※文責: 中村敏幸)

Group Report of 2013 SISP - 10 - Group Number 4-B

Page 18: 公立はこだて未来大学 2013 年度システム情報科学実習 …sisp/old_report/2013/04/document04_B.pdf · Group Report プロジェクト ... hardware description language

Investigation of the security

第 2 章 到達目標

本プロジェクトの目的は、実際に使える暗号ハードウェアを作ることである。前年度のプロジェ

クトでは 128ビットの乗算器の VHDLを記述し、FPGAによるプロセッサを作成したが、これは

乗算器のみで実用的ではない。そこで、この乗算器を実際に使えるようにするため、前年度のプロ

ジェクトで作成された暗号処理ハードウェアに、PCとの通信機能を付加することを目標として本

グループは活動する。

(※文責: 水野陽介)

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

昨年度作成した 128ビットの高速乗算器を人間が扱いやすいように設計することにより、実際に

暗号を作成するハードウェアを作成することである。また、暗号処理をハードウェアのみで行うこ

とにより、今までとは異なり、その他のシステムに負荷をかけずに暗号を解くことができるように

なる可能性がある。

(※文責: 水野陽介)

2.1.1 高速乗算器の必要性

現在広く使われている RSA暗号などの公開暗号での処理では乗算を大量に行う。よって、128

ビットの高速乗算器を設計することにより、暗号処理能力が向上し、既存の暗号処理をより高速に

解くことができるようになる。より高速に乗算ができるようになれば、扱える暗号処理の幅も広が

り、さらに強力な暗号を扱えるようになる。また、暗号処理をハードウェアのみで行うことにより、

今までとは異なり、その他のシステムに負荷をかけずに暗号を解けるようになる可能性がある。

(※文責: 水野陽介)

2.2 前年度の暗号プロジェクトからの引き継ぎ事項

前年度のプロジェクトでは「暗号ハードウェア・乗算器編」というタイトルで、乗算器の構造の

アルゴリズムについて解析し、いかに乗算器を早く効率化することができるのかという調査や乗算

器を作成するための VHDLの記述、ハードウェアの実装をした。しかし、前年度作成した乗算器

は、FPGAのボードについているスイッチと LEDによって入出力を行うので人間が扱うにはとて

も大変だった。よって、今年度のプロジェクトでは昨年度作成した乗算器を人が扱いやすくするこ

とを目標に開発を行う。具体的には FPGAと PCを接続するための電子工作を行い、乗算器の入

出力を PC上でできるようにする。これをすることによって、乗算が正しくできているかを確認す

ることができ、暗号用乗算器として扱うことができるようになる。

(※文責: 水野陽介)

Group Report of 2013 SISP - 11 - Group Number 4-B

Page 19: 公立はこだて未来大学 2013 年度システム情報科学実習 …sisp/old_report/2013/04/document04_B.pdf · Group Report プロジェクト ... hardware description language

Investigation of the security

2.3 一年を通しての目標・課題設定

前期と後期に分けて具体的な目標・課題設定を以下に示す。

(※文責: 水野陽介)

2.3.1 前期の目標

前期の目標は昨年度のプロジェクトで作成した暗号処理ハードウェアを理解すること。そして、

暗号処理ハードウェアを編集するために用いるハードウェア記述言語すなわち VerilogHDL およ

び VHDLを学習すること。FPGAと PCを接続するための電子工作を行い、サンプルプログラム

によるシリアル通信の動作確認をすることである。

(※文責: 水野陽介)

2.3.2 後期の目標

後期では実際にシリアル通信を用いて設計したハードウェアと PCとの相互通信を行い、暗号化

処理を代行するハードウェアの雛形の完成を目指す。

また、本年度は学習に割いた時間が多すぎたことが前期の進行が遅れてしまった原因であり、今

後同じ轍を踏まないよう来年度以降の参加者がスムーズにプロジェクトに参加するための工夫を

行う。

(※文責: 畠山遼平)

2.4 具体的な手順・課題設定

前期と後期に分けて具体的な手順・課題設定を以下に示す。

(※文責: 水野陽介)

2.4.1 前期

1. 昨年度乗算器の構造の理解

 本プロジェクトで使用する乗算器は、昨年度のプロジェクトの成果物である。この成果か

ら発展して我々がハードウェアの開発に取り組むため、昨年度の報告書や指導担当の先生の

持っている資料を解説してもらうことにより、乗算器の構造を学習し、昨年度実装された機

能の使い方を確認する。また PCに、ハードウェア記述言語の開発環境を構築する(ハード

ウェア記述言語の開発環境として使用した ALTERA社の”QuartusII”については本報告書

末尾の付録 Gに詳しく載せた)。この開発環境を実際に使用し、ハードウェア記述言語が想

定通りにハードウェアに書き込まれて動作することを確認する。

2. シリアル通信機能の付加

Group Report of 2013 SISP - 12 - Group Number 4-B

Page 20: 公立はこだて未来大学 2013 年度システム情報科学実習 …sisp/old_report/2013/04/document04_B.pdf · Group Report プロジェクト ... hardware description language

Investigation of the security

 暗号処理ハードウェアのシリアルポートを、基板上の端子から配線しコネクタを付けるハ

ンダ作業により PCと接続可能にする。コネクタを付加して接続可能になったら、サンプル

プログラムを使いプログラム通りにシリアル通信が機能することを確認する。

3. 公開鍵暗号の調査

 情報セキュリティ人材に必要な暗号の知識を学習する。とりわけ暗号ハードウェアに実装

を目指している公開鍵暗号について調査する。方法としては書籍やインターネットを使う。

不明な点や、調査の中で疑問が生じたとき、指導担当の先生から教えてもらう方法をとった。

4. 暗号処理ハードウェアの動作確認

 乗算器として暗号処理ハードウェアが正確に動作しているか確認し、実際の暗号処理に使

えるようにする。

(※文責: 田村正志)

2.4.2 後期

小目標:シリアル通信による FPGAとの相互通信の習得

ハイパーターミナルを用い、設計したハードウェアとの間で asciiコードによる簡単な文の

やり取りを行う。今回は本格的な通信が目的ではないので単純な送信・受信をマスターする

ことを優先し、通信効率の最適化などは考慮しない。

中目標:シリアル通信を用いた平易な暗号化ハードウェアの実装

暗号鍵を設定できる 8bitバーナム暗号器を設計する。バーナム暗号は平文以上の長さを持

つ二進数を暗号鍵として平文と XOR演算を行って暗号化し、暗号文を同じ暗号鍵で XOR

演算することで復号する秘密鍵暗号である。単純な暗号ではあるが同じ暗号鍵を別の文書に

用いないならば暗号文の情報から平文を予測することが不可能となる強固性を持つ。バーナ

ム暗号を選択したのは暗号鍵と復号鍵が完全に同一であるため、ハードウェアで暗号化され

たデータをそのまま送信し返すだけで復号化され、暗号化の成功が簡単に実証できるためで

ある。

大目標:シリアル通信を用いた強度の低いRSA暗号ハードウェアの実装

剰余計算を用いた暗号アルゴリズムである RSA暗号を用いたハードウェアを設計する。今

回は理論の実証とモデルの作成が目的であるため手計算でも暗号化が行える程度の小さな数

で暗号化を行う。剰余計算器として除算器を用いるものと除算を極力回避するモンゴメリ乗

算を用いるものの2つを設計し、それを用いて暗号化処理を行い、中目標で作成した暗号器

のノウハウを応用して入力と出力を行えるようにする。実装に成功した場合2つの暗号器が

必ず同じ演算結果を返すか、現状で確認できるほどの性能差があるかなどを調べる。

副目標:プロジェクト学習用テキストの作成

メンバー全員の理解度の確認と向上を兼ねて来年以降の参加者向けに VHDLおよび本プロ

ジェクトについての導入テキストを作成する。最低でもメンバー全員が読んで理解できるよ

Group Report of 2013 SISP - 13 - Group Number 4-B

Page 21: 公立はこだて未来大学 2013 年度システム情報科学実習 …sisp/old_report/2013/04/document04_B.pdf · Group Report プロジェクト ... hardware description language

Investigation of the security

うな難易度のテキスト作成を目指す。

(※文責: 畠山遼平)

2.5 課題の割り当て

各人の得意分野及び関連性、時間軸のスケジュールを基準に以下のように割り当てた。

(※文責: 田村正志)

2.5.1 前期

1. シリアル通信機能のハードウェア記述言語による開発 (中村・畠山)

ハードウェア記述言語について興味を持った中村、ハードウェア記述言語での開発経験があ

る畠山を担当とした。

2. シリアル通信機能の動作準備 (中村・水野)

ハンダ作業に慣れており、暗号処理ハードウェアの通信仕様を理解した中村と水野を担当と

した。

3. 公開鍵暗号の調査 (田村・古谷)

暗号の理論的な面に興味を持った田村と古谷を担当とした。

(※文責: 田村正志)

2.5.2 後期

1. VHDLの学習 (田村、水野、古谷、中村、畠山)

 後期のはじめに、どの担当でも全メンバーが VHDLを知っていることが必要になること

を確認し、全員が VHDLを学習することにした。VHDLの学習は個人の進度が異なるため

に個人学習が中心となる。

2. 通信回路の記述 (中村、畠山)

 前期で通信回路を記述していた中村が、引き続き開発を進めていくことにした。また畠山

も自ら通信回路を作る意欲があり、ハードウェア記述言語の理解が進んでいたので、通信部

分の開発を行うこととした。

3. 暗号分野の調査 (田村、水野、古谷)

  VHDLの理解が遅れていた田村、水野、古谷は、VHDLの学習は進めるが、自ら回路を

記述する役割を果たすことは難しいため、暗号ハードウェアや今回の乗算ハードウェアの応

用範囲、すなわち暗号分野について書籍や web資料を元に調査をすることにした。

(※文責: 田村正志)

Group Report of 2013 SISP - 14 - Group Number 4-B

Page 22: 公立はこだて未来大学 2013 年度システム情報科学実習 …sisp/old_report/2013/04/document04_B.pdf · Group Report プロジェクト ... hardware description language

Investigation of the security

第 3 章 課題解決のプロセス

実際に使える暗号ハードウェアを作成するためにしなければならないことは、RSA暗号の仕組

みと用途の勉強、初歩的な乗算器および Wallace tree 乗算器の仕組みの理解、シリアル通信によ

る乗算器と PC間での接続を可能にするために必要なシリアル通信の仕組みの勉強、目的達成のた

めの VHDL、Verilog の勉強である。また、その勉強をもとに前年度のプロジェクトで作成された

暗号処理ハードウェアに、PCとの通信機能を付加する。

(※文責: 水野陽介)

3.1 今回のプロジェクトで使った乗算器

Wallace tree 乗算器は現代に理論的に存在する高速乗算器の 1 つである。一番初めに作られた

乗算器は半加算器と全加算器を組み合わせて、手計算で掛け算をするときに使う筆算を電気回路で

置き換えたものである。この回路であると、手計算でする筆算の段数より 1つ少ない数だけ縦の列

で加算を行う必要がある。それに対し、Wallace tree乗算器は同じ縦列の加算部分の計算にも半加

算器と全加算器を組み合わせて同じ縦の列の部分をある程度計算し、最後に残りのデータを既存の

乗算器に入れて計算結果を出力するというものである。この高速化は、加算機にとって加算よりも

乗算の方が容易に計算できるという特性を用いている。

(※文責: 古谷卓也)

3.2 経過

3.2.1 前期の経過

セキュリティを極めるために前期でしたことは、RSA暗号の仕組みと用途の勉強、初歩的な乗

算器およびWallace tree乗算器の仕組みの理解、シリアル通信による乗算器と PC間での接続を

可能にするために必要なシリアル通信の仕組みの勉強、目的達成のための VHDL、Verilogの勉強

である。有名な暗号のひとつの RSA暗号の仕組みを勉強したのは、現在広く使われているセキュ

リティ技術であるからである。実際に RSA暗号という題材から、場所に応じて暗号の種類を変え

る必要があることがわかった。初歩的な乗算器およびWallace tree乗算器の仕組みを勉強する理

由は、乗算器の計算速度を詳しく知るためである。乗算器の計算速度に応じて暗号化と復号の速度

が変化するため、暗号の強度に大きく影響する。そのため、乗算器の勉強をすることで暗号の強度

を勉強できると考えた。シリアル通信は Verilog、乗算器は VHDL で記述されているため、シリ

アル通信のプログラムを VHDL にすることを目標と定めた。そのため、シリアル通信、VHDL、

Verilogの勉強が必要となる。

(※文責: 古谷卓也)

Group Report of 2013 SISP - 15 - Group Number 4-B

Page 23: 公立はこだて未来大学 2013 年度システム情報科学実習 …sisp/old_report/2013/04/document04_B.pdf · Group Report プロジェクト ... hardware description language

Investigation of the security

3.2.2 後期の経過

乗算ハードウェアの開発

前期でシリアル通信の送信側部分を作成したため、後期でシリアル通信の受信側をハードウェア

記述言語で記述することから始まった。受信側の記述は送信側の記述に比べて、学習が進んでいた

ため短時間で記述した。受信と送信のテストを行い、送受信が確認された。乗算器と入出力の間の

部分を設計し、開発した。この部分に後期の活動期間のほとんどが使われた。使用する乗算器は

64bit の入力を二つ受け取り 128bit の長さの乗算結果を出力するものである。その数値をシリア

ル通信を使用して入出力するのだが、シリアル通信の信号を直接使えるわけではない。また乗算器

は順次処理的に信号を出力する構造ではないため、乗算回路から出力された信号を順番に出力する

処理を行う必要があった。そのため、信号の変換とタイミングを制御する中間処理を行う部分を作

成した。この中間の処理の方法は乗算器の入出力の方法に沿って設計した。設計段階では指導教員

との検討を経て、回路図と状態遷移図を作成した。設計をもとに作成する際には、処理させたい内

容をハードウェア記述言語ではどのように記述すればよいのか、またハードウェア記述言語で書く

ことができる機能についてなど、ハードウェア記述言語の学習を進めながらの作業であったため、

作業内容の複雑さを考えて予想していたよりもさらに多くの時間がかかった。シリアル通信によっ

て入力した信号を元に乗算処理がされて、シリアル通信により出力させるという、設計時に計画し

た通りの動作を行うまでには、成果発表会の直前まで時間がかかった。

 成果発表会では、実際に乗算器を使った入出力の実演を行うことができ、乗算器の機能がどのよ

うなものであるのか、具体的に発表することができた。

(※文責: 田村正志)

暗号の調査

 前期はハードウェア記述言語の学習と、通信機能の開発に集中したが、後期は開発以外のことに

目を向け、暗号技術について調査を行った。暗号技術については web上にも書籍にも情報が多く、

求める情報を入手しやすかった。しかし特に web上の資料では、不完全な情報も多かったが、ほ

とんどの疑問点は指導教員に教えてもらうことにより解決することができた。暗号技術に使われる

計算技術については複雑なものもあるが、指導教員に教えてもらうことにより理解を深めることが

できた。また暗号処理に使われる計算を調べることを通して、暗号処理ハードウェアの必要性をよ

り広い視野から知ることができ、発表会や報告書に活かすことができた。

(※文責: 田村正志)

実装プロトコルの調査

 現在使われている暗号はどのような環境で使われているのかを調査した。実際に調べてみると、

RSA暗号だけでなく楕円曲線暗号もすでに実際の webサービスで使われていることや、暗号の強

度もより強いものが求められており、コンピュータの世界一般と同じく暗号や情報セキュリティの

世界も進歩が速いことが分かった。そのため暗号処理を飛躍的に高速化するハードウェア処理が重

要であることを実感した。

 攻撃事例を調査した。巧妙な攻撃法により安全と思われていたシステムのセキュリティが破ら

れる事件が相次いでいることを知り、暗号アルゴリズム以外の実装や運用段階での安全性も、情報

セキュリティを保つためには必要であるとわかった。攻撃事例をひとまとめに見ることができる

メディアが無いので地道に探す必要があるが、IPA(独立行政法人 情報処理推進機構)の情報セ

Group Report of 2013 SISP - 16 - Group Number 4-B

Page 24: 公立はこだて未来大学 2013 年度システム情報科学実習 …sisp/old_report/2013/04/document04_B.pdf · Group Report プロジェクト ... hardware description language

Investigation of the security

キュリティ関連の情報は非常に充実しており、暗号が破られる以外にも様々なセキュリティの脅威

があることを知ることができた。

(※文責: 田村正志)

共同作業について

 前期の反省を踏まえて、後期のはじめに目標と役割分担をはっきりさせるために会議を行った。

会議の内容は VHDLを全員が学習することや、あまり学習が進んでいないメンバーは学習の目標

としてまずはチップ LED と 7segLED とスイッチの制御を目標とするという提案が確認された。

同会議で乗算ハードウェアの開発に必要な機能(パーツ)にはどのようなものがあるかをリスト

アップした後に、優先する機能を決めた。

 このような始まりは良かったのだが、その後継続しなかったことで結局、後期もそれぞれの時間

にそれぞれのメンバー個人が各自で勝手にやることを決めて活動する事態になってしまった。特に

機能パーツ単位で開発が可能なハードウェアの開発で共同作業を行えなかったので、ハードウェア

開発を担当した二人がそれぞれに異なる方法でハードウェアを開発するという非効率な活動をし

てしまった。役割分担は、能力や興味関心の差によって自然にできた役割を追認するような形にな

り、グループの目標に向かって一致して取り組むことはできなかった。結果的にはそれぞれの得意

分野がわかり、得意分野に応じて自らの役割を担った。

 理由が十分でなく別個の作業を行うというメンバーは小一時間問い詰めるべきであった。また目

標もわからない状態で活動させるリーダーを、小一時間問い詰めるべきであった。そのようなこと

を変えようとしない他人任せで主体性のない人間が集まった時に、変えるのはあなたしかいない。

他人任せにしてはいけなかった。

(※文責: 田村正志)

3.3 シリアル通信による FPGAとの相互通信の習得

シリアル通信とは、通信規格の一種であり、通信規格の中でも歴史のある規格である。中でも

RS232は、IBM互換 PCに搭載されているシリアル接続規格であったことや、通信方式が単純で

あることもあり、今でもマイコンなどに使用されている。現在は、PCにデフォルトで搭載するこ

とが少なくなったため、USBに互換する装置も販売されており、こちらのほうが主流になってき

ている。

(※文責: 中村敏幸)

3.3.1 シリアル通信の通信速度

シリアル通信の通信プロトコルは、ボーレートと呼ばれる通信速度があり、300bps(bit per

second)から 115200bpsくらいまで、速度を設定することができる。しかし、あまり速度を高く設

定すると機器によっては通信できない場合があるので注意する必要がある。また、非同期式通信で

正常に送受信するためには、機器側と PC側のボーレートが一致している必要があり、正しく設定

する必要がある。

(※文責: 中村敏幸)

Group Report of 2013 SISP - 17 - Group Number 4-B

Page 25: 公立はこだて未来大学 2013 年度システム情報科学実習 …sisp/old_report/2013/04/document04_B.pdf · Group Report プロジェクト ... hardware description language

Investigation of the security

3.3.2 シリアル通信の通信方式

シリアル通信には、大きく分けて 2つの方式がある。一つは、同期式通信といい、相手装置もし

くは自分の発生したクロックに同期してデータの送受信を行う方式で、もう一つは、非同期式通信

(別名:調歩同期式通信)といい、お互いの装置自らで発生したクロックに同期して送受信を行う方

式がある。非同期式通信の方が、同期式通信と比べ、実装が容易である。そのため、本プロジェク

トでは、非同期式通信の実装を行った。

 通信は以下のような手順で行われる。ストップビットと呼ばれるデータとしては”1”を送信して

いる間は、送受信を行わない。スタートビットと呼ばれるデータとしては”0”が送信されることに

よって通信が開始される。スタートビット以降の 8ビットがデータとして送信できる。その後、ス

トップビットである”1”を 1ビット (1.5ビットや 2ビットに変更することも可能)送ることで、1

通信とする。連続してデータを送る場合は、上の手順を繰り返す。

図 3.1 シリアル通信

(※文責: 中村敏幸)

3.3.3 シリアル通信の実装

実際に FPGA でシリアル通信を実装するには、PC からデータを受信する受信側 (RX) と PC

へデータを送信する送信側 (TX)を作る必要がある。

 送信側は、普段、送信していないときはデータ”1”を出力する。また、送信する際は前節で記述

した通信方式の方法で送信すれば送信できる。そのために必要なのは、ボーレートのクロックを生

成する部品と、そのクロックを使用して送信する部品である。この部品をそれぞれ作成し、その後

組み合わせることで送信側を実装することができる。

 受信側は、スタートビットである”0”を受信したときに、データを格納する機能が必要である。

そのため必要な部品は、(サンプリング定理より)ボーレートのクロックの 2倍もしくは 3倍のク

ロックを生成する部品と、そのクロックを使用してデータを格納する部品である。この部品をそれ

ぞれ作成し、その後組み合わせることで受信側を実装することができる。

(※文責: 中村敏幸)

Group Report of 2013 SISP - 18 - Group Number 4-B

Page 26: 公立はこだて未来大学 2013 年度システム情報科学実習 …sisp/old_report/2013/04/document04_B.pdf · Group Report プロジェクト ... hardware description language

Investigation of the security

第 4 章 結果

4.1 プロジェクトの結果

本プロジェクトでは、前年度作成された乗算器を PC上で操作することを目的に、VHDLの勉

強から始め、最終的には乗算器にシリアル通信の機能を追加した。

 追加した機能の使い方は、PCと FPGAをシリアル通信の状態にしたことを確認し、TeraTerm

などのターミナルソフトを起動し (この際、受信の改行コードを CR+LFとした方がよい)、COM

接続されている FPGAを選択し、乗算したい数と数を 16進数 16桁 (64bit)で入力しエンターを

押すことで、演算結果 32桁 (128bit)の乗算された数が出力されるようになっている。

 具体的な、中身の構造に関しての説明を以下に述べる。

 この機器の状態遷移回路は、s0, s1, s2, s3, s4, s5の 6つの状態からなる。s0, s2, s4では、受信

状態、送信状態への移り変わる際に counter12 という回路で遅延を行っている。また、リセット

ボタンを押すと、s0の状態に遷移するようになっている。s1, s3は、16桁の乗算する数を入力す

る状態である。セレクタを使うことによりどのレジスタにデータを格納するかを変えている。エン

ターキーの ASCiiコードが入力されたとき、パルスを送り状態を遷移させる。s5は、32桁の乗算

した数を出力する状態である。

図 4.1 ステートマシン

 この機器の簡易な回路図は以下のようなものになっている。

図 4.2 簡易回路図

(※文責: 中村敏幸)

Group Report of 2013 SISP - 19 - Group Number 4-B

Page 27: 公立はこだて未来大学 2013 年度システム情報科学実習 …sisp/old_report/2013/04/document04_B.pdf · Group Report プロジェクト ... hardware description language

Investigation of the security

4.2 成果の評価

乗算器にシリアル通信の機能を付加させることができたが、乗算器を人が扱うには実用的でな

いものになってしまった。理由としては、十分な速度が出ない・タイミングが悪いと 1 文字表示

されないことがあるためである。十分な速度が出ない問題は、通信手法の問題と、VHDLの問題

がある。通信手法の問題としては、シリアル通信は、速度が早くても 10Mbps が最高で、実験で

は 9600bpsで通信していたので 32文字送るだけでも約 33msかかる計算となってしまう。また、

VHDLで、1文字送信する速度を遅く設定しているため、さらに遅くなってしまった。

 しかし、暗号ハードウェアを実装するにおいては実用的な乗算ハードウェアが記述されたと考え

られる。なぜなら、暗号ハードウェアを実装するにおいて通信部分は記述されているので、次期プ

ロジェクトに引き継ぐことができると考えられるからである。

(※文責: 中村敏幸)

4.3 担当分担課題の評価

以下でハードウェア編のメンバー各々が、担当した課題についてどのような達成が得られたか、

またどのような課題が残されたかを記す。

(※文責: 田村正志)

4.3.1 水野陽介

乗算器の仕組みの勉強

昨年度のプロジェクトで作成した 128bit乗算器を参考に、2 進数の乗算の方法、乗算器の仕組み

などを学習した。

シリアル通信の実装

シリアル通信の実装にあたり、暗号処理ハードウェアにシリアルポートを付加する電子工作をし

た。

VHDLの勉強

QuartusII というソフトウェアをインストールし、使い方の練習をした。さらに簡単な

VHDL の記述方法を調べ、動かしてみた。記述したプログラムは 10 種類で add,adder, and

gate,andN,counter, FlipFlop,flopr,inverter, mux2,sillyfunctionである。

中間発表の準備

中間発表に向けてスライド製作した。スライドを製作するにあたり、わかりやすく伝えるために図

や表をなるべく多く使用し、できるだけシンプルなデザインにした。

コンバーターの作成

後期では、前期で学習した VHDL の記述方法をもとに ASCII コードを 16 進数に変換するための

Group Report of 2013 SISP - 20 - Group Number 4-B

Page 28: 公立はこだて未来大学 2013 年度システム情報科学実習 …sisp/old_report/2013/04/document04_B.pdf · Group Report プロジェクト ... hardware description language

Investigation of the security

コンバーターを作成した。

暗号攻撃法の調査

暗号についての知識を深めるため、暗号攻撃法について調べた。調べた暗号攻撃は主に、暗号

文単独攻撃 (Ciphertext Only Attack)、既知平文攻撃 (Known PlaintextAttack)、選択平文攻撃

(Chosen Plaintext Attack)、選択暗号文攻撃 (Chosen Ciphertext Attack)である。

最終発表の準備

最終発表に向けてスライド製作した。スライドを製作するにあたり、中間発表よりも、さらにわか

りやすく伝えるために図や表をなるべく多く使用し、できるだけシンプルなデザインにした。

(※文責: 水野陽介)

4.3.2 古谷卓也

前期

私に課せられた課題は、VHDL、Verilog、RSA 暗号のすべてを勉強することである。RSA 暗号

は理解することができたが、VHDL は簡単なプログラムから内容を把握する程度しか理解できて

おらず、Verilog に関してはプログラムを読むことすらできていない。まだ担当課題を達成させて

いないため、私は目標達成に貢献することができないでいる。この問題を解決するために今後の課

題は、VHDL、Verilog でプログラムを記述できるようになることと定める。

後期

VHDLを用いてコンバータを作成し、他の有名な暗号も勉強した。VHDLを完全にマスターした

わけではないが、グループに少しは貢献できたと思う。

(※文責: 古谷卓也)

4.3.3 中村敏幸

私が担当した課題の一つは、VHDLでシリアル通信を記述し、前年度プロジェクトの成果物で

ある乗算器にシリアル通信の機能を付加した機器を製作することであった。シリアル通信を実現す

るために、まずハードウェア記述言語の勉強を行った。

 具体的には、FPGAの開発ボードである DE0に付属していた VerilogHDLの回路を VHDLに

記述しなおすことで VHDLの記述方法に関する理解を深めた。なぜ、VHDLの記述方法を学んだ

かというと、乗算器に使用している記述言語が VHDLであるからであり、記述する言語を統一す

る必要があると思われたからである。ハードウェア記述言語にふれたことがなかったため、思う

ように VHDLに関する理解が進まなかった。なぜ、理解が進まなかったかを考察すると、ハード

ウェア記述言語なのにも関わらず、ハードウェアであることを毛頭に記述せず、ソフトウェアプロ

グラミングと似たようなものと考えて VHDLを学習してしまったためだと考えられる。

 以上より、VHDL の学習に時間をとってしまったため、前期ではシリアル通信の送信側のみ

VHDLで記述するだけという結果になってしまった。後期には、シリアル通信の受信側の VHDL

を記述し始めた。前期の成果もあってか、シリアル通信の受信側は比較的短い時間で完成させるこ

Group Report of 2013 SISP - 21 - Group Number 4-B

Page 29: 公立はこだて未来大学 2013 年度システム情報科学実習 …sisp/old_report/2013/04/document04_B.pdf · Group Report プロジェクト ... hardware description language

Investigation of the security

とができた。

 その後、実際に乗算器とシリアル通信を接続するための VHDLを記述する作業に入った。この

時、白勢先生にいただいたアドバイスは、「まず回路図を作ってみること」と「状態遷移図」を作っ

てみることだった。そのアドバイス通り、私は回路図と状態遷移図を作成し、VHDLでの実装を

準備し始めた。しかし、私の作製した状態遷移回路では、タイミングを作るための部品を作成する

ことをしなかったため、プロセス中で予期しない動作をしてしまった。これは、あとになってから

わかったことだが、状態遷移回路をシリアル通信の送信完了や受信完了などの信号を別プロセスで

管理しなかったことや、状態遷移回路に入れるクロックが (教科書ではあっていたのだが)この機

器の作製にあったっては間違っていたためであった。

 課題の一つに、セキュリティについて学ぶこともあった。私は、札幌で開催された SECCON

に参加した。SECCON では、実際のセキュリティがどのように行われているか。実際にプログ

ラムを攻撃する手法に関して、バイナリを解析することによって攻撃する方法に関して学んだ。

SECCONでやっとことは、マシン語で記述されたプログラムを解析し、プログラムがどのような

動作をするかを解析することと、バイナリカルタというバイナリに対する 16進数を当てるという

ゲームを行った。

 また、CTF(Capture The Flag)という大会にも参加した。CTFとは、プログラムやサーバの

脆弱性を破りフラグを獲得することで点数を競うという大会である。この大会の前日の勉強会で

は、パケットを解析する手法 (wire shark) や、アクセスされた IP がどの国であるかを判断する

GeoIP についてのこと、nmap コマンドを使うことで、OS を解析することができることなどを

学んだ。また、パケットの読み方を学ぶためのサンプルとして、Scan23についても教わった。パ

ケットに関しては ARPキャッシュポイズニングについても学ぶことができ非常に有意義な勉強会

であった。大会当日までに、Windowsで解析に使用したソフトがあるので記述しておく。Nmap,

UsaMimi, IDA Pro Free, WireShark, NetworkMiner, Virtual box。特にWindows 環境であれ

ば、Linux環境を使うために仮想マシンを入れておくとよい。

(※文責: 中村敏幸)

4.3.4 田村正志

前期について

 田村が担当した課題は、暗号処理ハードウェアへの通信機能実装である。また並行して暗号技術

とりわけ公開鍵暗号技術のしくみを勉強した。またグループリーダーとして役割分担やスケジュー

ル管理をする必要があった。暗号処理ハードウェアへの通信機能実装ために、ハードウェア記述言

語の学習をした。いくつかの教科書レベルのサンプルコードを参考にコードを記述し、実際にコン

パイルすることで、初歩的な論理回路の記述方法を理解した。また VerilogHDLと VHDL間の記

法の違いを確認することができた。また暗号処理ハードウェアボード上の FPGAに、キット付属

のサンプルプログラムを書き込み、動作させることを通して、ボード上の FPGAへの書き込みを

行うときの設定方法を確認することができた。その後、ハードウェア記述言語による初歩的な論理

回路の記述から、通信部分の記述へと発展して取り組むという課題があったが、この課題について

は明確な役割分担を行わなかったことにより、田村は率先して取り組まなかった。このような役割

分担の不明確さは前期に於いてプロジェクト全体の進行を遅らせる結果となり、課題が残った。公

開鍵暗号技術の勉強に関しては、前期期間中に学んだことは多く、暗号技術への理解を深めること

ができた。

Group Report of 2013 SISP - 22 - Group Number 4-B

Page 30: 公立はこだて未来大学 2013 年度システム情報科学実習 …sisp/old_report/2013/04/document04_B.pdf · Group Report プロジェクト ... hardware description language

Investigation of the security

VHDLの学習

 当初から VHDLの学習を始め、VerilogHDLから VHDLに記述しなおす方法で VHDLの記法

を身につけようとした。前期では思ったような成果が挙げられず、後期に再び目標を定めて学習を

始めた。始めにスイッチと LEDの制御と 7segLEDの制御を目標にした。

  9 月は、学習が進んでいた中村の書いたコードを真似する形で、基礎的な論理回路の動作確認

と、FPGAボードのピン・アサインを学び、FPGAボードのスライドスイッチの入力に対して論

理ゲートを通して LEDを点滅させるなどを行った。これが田村の VHDLの学習から得られた成

果のすべてである。

 当然、次にスイッチに拠らない制御に興味が出たので、クロックを使って状態を変化させるタイ

マーを作成しようとした。ここでも中村のコードを参考にし、また白勢先生に教わることによって

試行錯誤を繰り返したが、数週間の取り組みの後にも上手く動作させることができず、タイマー

の動作がうまくいかない原因を CASE 文の書き方にあると予想し、クロックを用いない状態で

CASE文がうまく動作するかどうかを、汎用カウンタの作成で確かめようとした。しかし今度は、

参考資料の汎用カウンタに用いられている 7segLEDデコーダーの動作が上手くいかず、こうした

基礎的な制御をも完全に動作させることができなかった。このような遅々として進まぬ学習のうち

にもグループの乗算ハードウェアの開発は進められており、田村はその開発に追いつくことがで

きなかった。結果を振り返ってみれば、グループの開発に参加できないまでも基礎的な記法を理解

し、資料を作成していれば後の学習者の役に立つものが作成できたのではないかと悔やまれるが、

田村個人としての成果物は何も残すことができなかった。

 残された課題は数多いが、最も心残りなのは、上記したような VHDLの学習法についての資料

を作成できなかったことである。このプロジェクトが来年度に引き継がれ、暗号ハードウェアの開

発が続けられるとすれば、まずはじめに我々と同じように VHDLの学習から始めることは、大幅

に状況が変わらない限り確実である。そのような状況で少ない資料の中模索的に学習しなければな

らないという状況を、変えることができなかった。この原因は、暗号ハードウェアの開発に参加す

るという、自らの能力では不可能なことに気を取られすぎたあまり、足元のなすべきことについて

ほとんど計画を立てようとしなかった怠惰さにある。また期間中に最終目標のみを設定しただけで

満足してしまい、段階的な目標を立てなかったために、多くのメンバーが息切れを起こし、意欲が

低いままであった。また結果的に一部のメンバーや担当の先生に乗算ハードウェアの通信部分の設

計からコーディングまで任せたのであるが、期間中にはっきりと開発を任せ、自分には自分のでき

る目標を立てるということをすれば良かったのである。いつかは開発に参加するという思い込み続

けたのは時間的にも大変な無駄であり、プロジェクトの成果が、多彩なメンバーに対してやや狭視

野的であるのは、暗号ハードウェア開発以外の副目標を立てることを嫌ったためであった。

暗号分野の調査

 プロジェクト開始時からネットワーク上での暗号の使われ方に興味があった田村は、VHDLの

学習が行き詰り、再び暗号分野の調査を始めた。思えばこれも行き当たりばったりな調査であり、

上手く計画されたものではなかった。そのため成果も着実なものにはならなかった。

 得られた成果は、暗号通信を行っていても安全とは言えない様々な場合があり、暗号の強度を高

めるだけでは安全な通信は実現できないという理解である。

例えば今回のプロジェクトの乗算ハードウェアなどは開発ボードという性質から、多数の内部状況

へのアクセス方法があり、内部情報も積極的に公開されている FPGAボードである。それ故に開

Group Report of 2013 SISP - 23 - Group Number 4-B

Page 31: 公立はこだて未来大学 2013 年度システム情報科学実習 …sisp/old_report/2013/04/document04_B.pdf · Group Report プロジェクト ... hardware description language

Investigation of the security

発ボードがいくら普及したところで、実際の暗号ハードウェアを量産する段で開発ボードに類似し

た構造のハードウェアではクラックの危険が大きいのである。

 またインターネットへの実装の段でも、RSA暗号が使われているのにもかかわらず攻撃された

例があり、それは論理的な安全性以外の手段、即ちタイミング攻撃などの、計算機の性質に着目し

たものが多い。そのため、暗号技術が安全な通信を実現するためには、実装技術も進歩させてゆか

ねばならない。これについては(ハードウェアへの攻撃)(ネットワークからの攻撃)の項に記し

た。

 残された問題は、このような脆弱性を知ったうえで具体的ななすべきことや、現在とられている

対策、こうした新たな攻撃手法に対する安全ガイドラインの調査まではできなかったこと、これに

より暗号ハードウェアへの応用がいかにして可能であるかはっきりとした報告ができない。この

調査が行き当たりばったりであり、上手く目標設定できていないこと、それにより調査は甘くなっ

てしまった。また調査の進度についても、不十分なものでありさらなる調査が必要であることであ

る。

成果の総括

 プロジェクト学習の目的として、「プロジェクト遂行に必要となる技術を学習する」の項目の中

に、共同作業の項目がある。複数のメンバーで 1つの問題を解決する、共同作業の技術を学ぶとい

う目的があるのである。田村個人の成果として、グループリーダーの目標と成果として、この「複

数のメンバーで 1つの問題を解決する共同作業の技術」を学ぶというのは非常に重要であったが、

プロジェクト学習期間中にはこの技術を十分に身につけることはできなかった。しかしかつてない

人間関係や一年を使ったプロジェクトを通して、共同作業の技術を学ぶ機会になった。成果物がい

かに完成しようとも、共同作業の技術を学ぶという重大な目的を果たせなかったことになる。これ

は個人の感想としてではなくグループリーダーとして、また一人のグループメンバーとしてプロ

ジェクト学習の目的達成について述べるのであるが、プロジェクト学習の大きな目的を果たせな

かったことが残念でならない。

(※文責: 田村正志)

4.3.5 畠山遼平

前期

ハードウェア作成における私の担当は暗号ハードウェア作成のための VHDLの習得および FPGA

と PC間のシリアル通信の実装である。そのために VHDLを用いたハードウェア設計と乗算器の

構造を中心に学習した。VHDLの習得については問題なく進められ、暗号ハードウェアの中心とな

る乗算器の仕組みの理解もほぼ問題なく進められたが通信を行うハードウェアを設計したことがな

かったため個人では糸口が見えず、シリアル通信の習得が難航したまま前期は終わってしまった。

後期

後期に入った後、他メンバーの進行状況を聞いたところシリアル通信のサンプルコードの存在が発

覚。サンプルコードを解析することで RS-232シリアル通信プロトコルの基本構造についてを理解

し、基本的なデータの送受信に成功した。

シリアル通信ユニットについて一区切りついたところで、次に暗号化処理を行わせるための制御

ユニットの作成を目指すことにする。まず、より高速な処理のためには通信ユニットと乗算器は完

全に独立して動作させるほうが良いと考えたのだが通信ユニットはシリアル通信のために意図的に

Group Report of 2013 SISP - 24 - Group Number 4-B

Page 32: 公立はこだて未来大学 2013 年度システム情報科学実習 …sisp/old_report/2013/04/document04_B.pdf · Group Report プロジェクト ... hardware description language

Investigation of the security

クロックを遅らせているため非常に反応性が低く、シリアル通信のため時間単位の処理量も少な

い。このため乗算結果の送信が終わる前に次の乗算の処理が始まってしまった場合演算結果の信号

を共用しているとデータが途中で上書きされて破壊されることが懸念されたため、データ保持を行

う緩衝材として送信するジョブを溜め込み送信が完了したら次のジョブを渡すためのジョブレジス

タが必要だと考え、リングバッファ形式のジョブレジスタの実装を目指した。

だが、設計したジョブレジスタはシミュレーションではうまくいくものの実機で動かすと回路間

の動作に不具合が生じ、保持したデータが壊れていたりデータの受け渡しがうまくいかなかったり

と問題が多発。難航しているうちに成果発表会までに実装できるほどの時間がなくなってしまい

ここで断念。発表物としてはシリアル通信で受信したデータを乗算器に渡し、乗算結果を送信する

『遠隔操作式乗算器』で手を打つことになる。

成果発表会が終わった後、今年の成果物がシリアル通信の実装だけというのは非常にふがいない

と思い、来年のプロジェクトで生かすために今年のプロジェクトがあまりうまくいかなかった原因

を洗い直すことにする。

まずはメンバーの連携不足。メンバーの学習進度が各々バラバラだったことからそのまま惰性で

個人主義が慣習化し、個人個人が勝手に自分のしたいことをするようなまとまりのない状態になっ

てしまったことが個人の停滞が全体の停滞となる状態を招き、結果としてプロジェクト全体として

の成果を予想未満にしてしまった。

次に学習効率の悪さ。本プロジェクトは参加する際に必要な基礎知識の量が多くカリキュラム内

で既習の知識だけで参加することは難しいため前提となる学習に時間がかかってしまう。学習にか

かる時間で最初の数ヶ月を浪費してしてしまい学習がうまくいかないと貢献できる割合の小さいメ

ンバーが出てしまうのは本プロジェクトの問題点の1つである。

来年のために何をすべきかについて模索した結果、本来は副目標だった来年の学習期間を短縮で

きるように自分が本プロジェクトで学んだことをまとめた『虎の巻』を作ることが浮かび、これを

今年の自分の最終目標に変更する。以降は自分がプロジェクトで知り得た限りの知識を詰め込んだ

『暗号ハードウェアプロジェクト導入マニュアル』の作成に注力した。

反省点

もっとメンバー間で協力すべきだった。学習レベルの差から戦力になる度合いに差があるとはいえ

単独がもっとも効率が良くなると高をくくるのは傲慢であり、現にシリアル通信の解決の糸口を見

つけたのは他メンバーの協力あってこそだった。来年以降のプロジェクトでは基本となる学習内

容を統一することで平均レベルが向上しそれによって意思統一がスムーズになることを期待して

いる。

目標を切り替えることをもっと早くすべきだった。後に思い直すとシリアル送信速度は確かに遅

いが受信速度も同じ速度であり、乗算の速度のほうが遥かに速いのでジョブが溜まる可能性はあま

り高くはなかった。暗号処理の制御ユニットの作成に注力していればもう少しいい成果が残せただ

ろう。個人の嗜好を優先しすぎたためにプロジェクト全体を害してしまったのではないかと後悔し

ている。

今年の本プロジェクトは成功とは言い難いものなってしまった。だがしかしこういった失敗があ

るということを踏まえて来年以降のプロジェクトがより先に進んでくれることを願いたい。

(※文責: 畠山遼平)

Group Report of 2013 SISP - 25 - Group Number 4-B

Page 33: 公立はこだて未来大学 2013 年度システム情報科学実習 …sisp/old_report/2013/04/document04_B.pdf · Group Report プロジェクト ... hardware description language

Investigation of the security

第 5 章 考察

5.1 目的の確認、回答と新見地

本考察では、プロジェクト学習の目的であった実用的な乗算ハードウェアを作ることについて論

じる。この課題に取り組むことによってプロジェクト学習の期間を通じてどのような成果、回答が

得られたのか。

(※文責: 田村正志)

5.1.1 当初の目的

 このグループの課題は当初から具体的であり、書き換え可能なハードウェアである FPGA

ボードに、ハードウェア記述言語により回路を作成し、乗算器を利用するために必要な機能を付加

してゆく、というものであった。必要な機能とは、乗算器を応用し、実用的な暗号ハードウェアと

するあらゆる機能を想定していた。その中でもっとも基礎的な機能が、乗算器との入出力であっ

た。従ってハードウェア編のグループは乗算器との入出力を最初の目標としたのである。

(※文責: 田村正志)

5.1.2 通信機能への集中

 ハードウェア記述言語の学習を進めていくうちに、当初の目的のうち、プロジェクト期間中に

できることがそれほど多くないことが、次第に分かり始めてきた。学習がなかなか進まずに前期を

終えたときに、多くのことができないという認識は決定的になった。プロジェクト期間中にまず実

現すべきことは、通信機能の付加であった。

(※文責: 田村正志)

5.1.3 課題に対する成果

 当初の目的に対する成果は、成果物として、乗算ハードウェアに通信機能を付加し、結果の章

で述べた乗算ハードウェアを作成したことである。実装した通信機能はシリアル通信による低速

なもので、また搭載した乗算器も大きなものは載せられず 64bit乗算器であるため、実用性のある

乗算ハードウェアとまでは言えないものである。今回のプロジェクト学習では、実用性のある乗算

ハードウェアを作ることはできなかったが、その過程となる基礎的な通信を実現した。

(※文責: 田村正志)

Group Report of 2013 SISP - 26 - Group Number 4-B

Page 34: 公立はこだて未来大学 2013 年度システム情報科学実習 …sisp/old_report/2013/04/document04_B.pdf · Group Report プロジェクト ... hardware description language

Investigation of the security

5.1.4 新見地

 実用性のある乗算ハードウェアを作ることはできなかったので、この点では先行研究にない新

たな成果というものを上げることはできなかった。ハードウェア記述言語による通信の記述が行え

たことにより、今後の開発に際して役に立つ一定の成果となるであろう。より安定させる、より高

速化する、通信の方法を工夫するなどの手段で実用的な乗算ハードウェアを開発しようとするとき

に、今回のプロジェクト学習で得られた記述例が参考にされることによって、開発者は機能の開発

に専念することができる。

(※文責: 田村正志)

5.2 課題解決についての補足

当初設定した乗算ハードウェアについての課題解決では、結果的に時間が足りないために完全な

達成が難しく、主要な部分である通信と入出力回路を開発することで、今後の足掛かりになる通信

機能を持つ乗算ハードウェアを作成した。

 後期のはじめに立てた目標では入出力以外に、簡単な暗号処理機能を付加するという目標を立て

たが、こちらは通信と入出力機能ありきでの機能であるために、今回のプロジェクト学習では実現

しなかったわけである。

 また、後にハードウェア記述言語を学ぶ者のために学習用の資料を作成するという目標について

は、各人の割り当てられた中で乗算ハードウェアの設計開発や、暗号の調査、暗号実装の調査を優

先して活動したために、ハードウェア記述言語学習用の資料を作成することを優先していなかっ

た。ハードウェア記述言語学習用の資料を作成する割り当てを、特にメンバーを決めて割り当てら

れていなかったこともある。これは、ハードウェア学習用資料の作成は、暗号処理ハードウェアを

作ることに優先するものではなく、まず暗号処理ハードウェアを作成してからハードウェア記述言

語学習用資料を作成しようという認識があったため、早い時点からハードウェア記述言語学習用の

資料を作成するメンバーを決める必要がないと判断されたことに原因がある。前述したように、後

期の中盤以降はスケジュールがうまく回っていなかったので、この後回しにしたハードウェア記述

言語学習用資料の作成という課題を思い起こすことはなかった。

 もしも再び課題解決のスケジュールを設定することがあれば、主要な課題のほかに設定した副課

題についても、メンバーの能力を判断し、スケジュールを設定するようにすべきである。主要な課

題のみのスケジュールを決めたのでは主要な課題が行き詰った時に回復するのが難しくなるし、副

次的な課題は無視されてしまう可能性がある。また、今回のプロジェクト学習での我々のグループ

のように主要な課題解決のために長い学習期間が必要とされる課題に於いては、学習進度の差が生

じる。学習進度の差が生じると一つの課題に全員が参加することが難しいため、メンバー全員の力

を生かすことができなくなって、メンバーの一部が無力感を味わったり、課題と無関係なことを始

めてしまい、プロジェクト学習の期間を十分に生かすことができなくなってしまう。一部が課題解

決に消極的になるとほかのメンバーにも伝播し、共同作業が逆効果になってしまう。

(※文責: 田村正志)

Group Report of 2013 SISP - 27 - Group Number 4-B

Page 35: 公立はこだて未来大学 2013 年度システム情報科学実習 …sisp/old_report/2013/04/document04_B.pdf · Group Report プロジェクト ... hardware description language

Investigation of the security

5.3 新見地と先行研究との関連性

 暗号処理に必要な演算は、繰り返し処理が多く、ハードウェア処理によって高速化される余地

があることは知られており、ハードウェア化するためのアルゴリズムの研究や、実際に FPGAに

書き込むことを想定した設計もハードウェア記述言語により行われている。これらの研究において

はアルゴリズムの検討により高速化を目指したり、ハードウェア化することの効果が大きいことを

明らかにしている。また、シミュレーションにより、ハードウェア化の有用性を定量的に予測する

試みがなされている。このプロジェクト学習で目的としたのは、このような暗号処理のハードウェ

ア化の有用性を示す先行研究を裏付けることであり、提案されているアルゴリズムを実装し計測す

るような実際のハードウェアを作ることであった。またシミュレーションでは、暗号処理の性能を

評価しつつも、通信や実装した場合の動作速度と安定性の関係などには触れていないため、実装し

た時の値と予測値に差が生じる可能性が考えられる。

 すなわち、アルゴリズム開発やシミュレーション開発といった基礎研究を、実機でテストする段

階へと発展させようというのが、このプロジェクトで取り組んだ乗算ハードウェアの実用化であ

る。乗算ハードウェアに、先行研究のアルゴリズムを利用した暗号機能を載せてハードウェア上で

実験・計測が行えるようになれば、製品としての利用に耐えうるか、製品化した場合に有用性が

あるかを評価できるようになり、製品化という暗号処理ハードウェアの最終段階へ至ることがで

きる。

(※文責: 田村正志)

5.4 この活動によって何を得られたか

グループで課題を解決しようとすることに、この活動の意義があったとすればこの活動によって

得られたことは、グループで活動するときにおいて計画を立てておくことの必要性を学んだこと

と、各々の得意分野を活かすためにはグループにおける話し合いの時間の必要性を学んだことであ

る。特に、グループ活動における計画の必要性は、重要で目標の設定や納期、学習にかける時間な

どは前もって決めておいた方がよいことを学ぶことができた。

 技術的な面では、VHDLの記述方法や、ハードウェアの基礎知識を学びなおすことができたこ

と、暗号技術に関する知識、暗号処理に関する知識を得ることができた。具体的には、VHDLの

記述方法に関して全く無知であったグループ員も、比較的簡単な回路であれば記述できるように

なったこと。VHDL の記述を通して、ハードウェアの基礎知識を学びなおすことができたこと。

暗号技術である SSLや、具体的な攻撃手法に関して知識を得ることができたこと。暗号処理であ

る RSAや、楕円曲線暗号に関して知識を得ることができたことである。

(※文責: 中村敏幸)

Group Report of 2013 SISP - 28 - Group Number 4-B

Page 36: 公立はこだて未来大学 2013 年度システム情報科学実習 …sisp/old_report/2013/04/document04_B.pdf · Group Report プロジェクト ... hardware description language

Investigation of the security

5.5 最終発表の反省

5.5.1 中間成果発表会アンケート結果

中間成果発表会で聞いてくれた人にアンケートを実施し、発表を聞いて、発表技術について、発

表内容についてどのように思ったのかをアンケートに記入してもらった。その結果を以下に示す。

発表技術について

・聞こえない

・カンペを持ちながらスライドを見てしゃべるのはよくわからない

・ハード班はスライドと発表のバランスがまだ良い

・発表内容が聞き取りにくかったです

・もう少し声が通るように話した方がよいと思います

・質問に丁寧に答えていただきよかったです

・あまりカンペを見ない方がいいかもしれない

・何をどう改良するのかわからなかった

・下を向きながら話しても声が通らない

・お客さんに背中を見せないで

・お客さんを見て話してください

・スライドを読むのは良くないと思う

・紙を読んでいるだけ

・声が周りに負けていた・スライドにプロジェクト名とページ番号を入れた方がいいのではないか

・少しさみしい

・原稿を見ない

・もう少し大きな声で、ハキハキと言うともっと良いと思う

・何を伝えたいのか分かりづらい

・身振り手振りで発表するとよくなると思う

・聞いている人とアイコンタクトをとって、プレゼンした方が分かっているか、分かっていないか

などが分かると思います

・スライドは発表の補助に使うものだと思う

・元気がない

・言っていることは分かるが、何がしたいのかわからない

発表内容について

・いきなり乗算にいったのが不明

・頑張って何かやっているのは分かるが、理解できなかった

・最終目的がよくわからず、実用性が分からなかった

・内容は良いのですが、前期に何をしてどういう成果を得られたか、少しわかりにくかったです

・前期に行ったことを踏まえて後期どうするかも欲しい

・もう少し目的を明確にしてほしい

・目標設定、ゴール、計画、活動内容、それらの関係が分からなかった

・目標を達成するため自分たちが何をすればよいかはっきりさせよう

Group Report of 2013 SISP - 29 - Group Number 4-B

Page 37: 公立はこだて未来大学 2013 年度システム情報科学実習 …sisp/old_report/2013/04/document04_B.pdf · Group Report プロジェクト ... hardware description language

Investigation of the security

・わからない用語がいくつかあったので説明がほしい

・場を仕切る人がいない

・技術だけをのせるのではなく、なぜこの技術をのせているのか、どのように使われるのかが分か

らなかった

・成果があるのに対するものがないので何かあったほうがいいのではないか

・知識のない人にもよくわかるように、もう少しかみくだいて説明してほしかった

・成果発表というよりは語句の説明がメインで講義を聞いているような印象だった

・専門的な内容なので、見せ方を工夫しないとわからなくてもったいない

・後期の活動内容をもう少し明確に

・セキュリティを極めてどうするのか前面におす

・このプロジェクトで学びはなかったのか

・乗算器は複雑なものなので、もう少し分かりやすく、ゆっくり説明してほしかった

・説明が丁寧で分かりやすかった

(※文責: 水野陽介)

5.5.2 最終成果発表会アンケート結果

最終成果発表会で聞いてくれた人にアンケートを実施し、発表を聞いて、発表技術について、発

表内容についてどのように思ったのかをアンケートに記入してもらった。その結果を以下に示す。

発表技術について

・例などが含まれていて分かりやすく聞けた

・図もあり見やすいものだった

・わかりやすかった

・よくまとまっている

・しっかりしていました

・スライドと最後の乗算器の紹介は好印象

・実演を入れたのは良かった

・声が小さくて聞き取りにくかった

・準備不足、紙を何度も見るのは恥ずかしい

・見にくいスライドがあった

・声が小さい

・何を伝えようとしているのかが分からなかった

・聞いている人の方を向いてお話ししてもらった方が、声がよく聞こえると思いました

・リハーサルをもっとしてみてください

・前を向いて、もっと練習してほしい

・スクリーンを指すなら、手で示すのではなく、道具を使うべき

・ある程度ハードウェアに精通している人向けに説明しているように思えました

・設計図の説明があったが、もっと良く見せてほしかった

・工夫とか大変だったこととか言えるともっといいと思う

Group Report of 2013 SISP - 30 - Group Number 4-B

Page 38: 公立はこだて未来大学 2013 年度システム情報科学実習 …sisp/old_report/2013/04/document04_B.pdf · Group Report プロジェクト ... hardware description language

Investigation of the security

発表内容について

・とても見やすくわかりやすかった

・未来が楽しみ

・ポスターもスライドも字の量がかなり多くて、内容があまり分からなかった

・「情報セキュリティー」をこのプロジェクトがどうとらえているのか伝わってこないので、内容も

伝わらない

・最終的に何を目指しているのかがよくわからない

・意義が分かりづらかった

・専門用語が多すぎて理解できない

・乗算とセキュリティのつながりが分からない

・目的がもう少しはっきりした方がよいと思った

・問題に対してどうしてこの方法で解決するのかわからなかった

・何を学んだのかを発表してほしかったです

・ハードの構成説明がもっと必要であるように思った

・乗算器が必要な理由は分かったが、それ以外はさっぱり

・デモも何をやっているのかさっぱり

・知識のない人向けではない

・このプロジェクトのセールスポイントがいまいち伝わってこなかったです

(※文責: 水野陽介)

5.5.3 アンケート結果考察

アンケートの考察の結果、全体的に悪い意見が多かったが、悪い意見はほぼ同じような内容だっ

た。中間発表では声が聞こえにくかったという意見が多かったが、それは紙を見ながら発表してい

たことにより、声が聞こえにくくなったと反省し、最終発表では聞いている人を見ながら発表する

ようにした。その結果、最終発表では、中間発表より声が聞こえにくかったという意見が減った。

また中間発表では内容が分かりづらかったという意見が多かったため、最終発表ではスライドに

図や例などを増やし、その結果「例などが含まれていて分かりやすく聞けた」「図もあり見やすい

ものだった」などの意見も出るようになった。最終発表ではスライドやポスター制作に時間をとっ

てしまったため、発表練習の時間が取れなかった。その結果「リハーサルをもっとしてみてくださ

い」「前を向いて、もっと練習してほしい」などの意見もあった。今後は、もっと練習をしてから

発表するべきだと改めて思った。

(※文責: 水野陽介)

Group Report of 2013 SISP - 31 - Group Number 4-B

Page 39: 公立はこだて未来大学 2013 年度システム情報科学実習 …sisp/old_report/2013/04/document04_B.pdf · Group Report プロジェクト ... hardware description language

Investigation of the security

第 6 章 今後の課題と展望

今回のプロジェクト学習によって 4章に記述した成果が得られた、このプロジェクトの成果を受

けて、当初の目標の達成ができずに残った課題と、プロジェクト学習の経験を振り返って、同じ経

過を繰り返さないための反省点がある。また、結果を受けて新たに見出された見地から、さらなる

発展によって今後期待される乗算ハードウェアの展望が新たに見出された。

(※文責: 田村正志)

6.1 課題

一年間の成果を受けて、マネジメント面で以下のような課題を得られた。この課題は次のプロ

ジェクトに活かしていってもらいたいと考えている。

 まず、プロジェクトを行っていくうえで、スケジューリングをプロジェクトの始めに明確に示し

ておく必要があると考える。中間報告書などの提出課題の提出期限などの確認、月ごとの目標の設

定などを予め行っていくことである。これを行うことによって、プロジェクト自体の進行がスムー

ズに行うことができる。

 次に、各々の得意分野を確認しあい、プロジェクトにおける作業を分担することである。これに

よって各自の目標を明確にし、それぞれ目標に向かって作業することができる。

 最後に、各自の課題の達成状況を担任の先生を交えて確認しあう場を設けることで、プロジェク

トメンバーの課題達成状況を把握しあうことができる。

 プロジェクト学習において、グループ全体での活動は、どのように VHDLなどのプロジェクト

で使用する開発言語を皆で学習するか、どのような年計画でプロジェクトを遂行するか、このプロ

ジェクトで何が必要かなどの議論を学生主体で考えることができる。その機会を失うことは、プロ

ジェクト学習において意味をなさないと考える。また、一つの大きなプログラムをプロジェクトを

組み作成していく作業は社会においても同じような仕組みで多くなされている。つまり、このプロ

ジェクト学習の時間においてそのような経験ができるのは、ほかの学校ではあまり見受けられな

い。通常の社会におけるプロジェクトではプロジェクトマネージャーと言ってプロジェクトをマ

ネージメントするプロジェクト員がいる。このような立場の人物を据えて、各週にプロジェクトの

進捗状況やどう改良すればいいかなどの議論を積極的に行うことが、本プロジェクトにおいて大事

であったと考える。

 また、プロジェクトのプログラムの管理に関してや、進捗管理には積極的に OSS(GitHub や、

Redmine、Backlogなど)を使用することで、誰にそのプログラムの責任があるかなどを明確にす

ることができる。私は、このような OSSについて無知であったため使用しなかったが、途中から

入った別プロジェクトで作業の効率化がこれらを使用することによりできることを知ったため、こ

こに書かせていただく。

(※文責: 中村敏幸)

Group Report of 2013 SISP - 32 - Group Number 4-B

Page 40: 公立はこだて未来大学 2013 年度システム情報科学実習 …sisp/old_report/2013/04/document04_B.pdf · Group Report プロジェクト ... hardware description language

Investigation of the security

6.2 展望

本プロジェクトでは、乗算器とシリアル通信を実装したハードウェアを作製したが、シリアル通

信では速度が限られてしまう。そのため、PCIeで通信が可能になれば、十分な速度で通信ができ

るため暗号ハードウェアとして付加したいところである。具体的に PCIe の実装は ALTERA 社

QuartusII付属の hip(ハード IP)*1を使用するとよいと思う*2が、難しいと思われるので、何人か

のグループでハード IPを FPGAに実装する方法や、実際に乗算器の回路と合わせる手法などを

調査する必要があると思われる。なぜ、そう考えるかというと、ハード IPの実装方法に関しては、

ネット上の資料では英語で書かれた文献が多いためである。これに関しては、プロジェクト開始の

時に、これらの使用方法が記述された著書を購入し、学習するのが円滑にプロジェクトを進める

ために必要と考える。学習自体に関しては、[1]「ディジタル回路設計とコンピュータアーキテク

チャ」でもよいと思われるが、ほかにも VHDLなどの HDL言語を学ぶには「HDL独習ソフトで

学ぶ CQ Endeavor VHDL」や、QuartusIIの使い方を本格的に学ぶには「FPGA ボードで学ぶ

組込みシステム開発入門  Altera編 」などの著書を読むとよいと思われる。

 また、暗号ハードウェアとして必要なモンゴメリ乗算や多倍長演算、制御コードがあれば暗号

ハードウェアとして十分に機能するので付加したいところである。これらもまた、何人かのグルー

プで組み合わせる回路の接続先や、それぞれの担当を決め各々で作成したのち組み合わせた回路を

作製するとよいと思われる。ただし、後期は日数が少ないので、前期中に回路をほぼ完成させる勢

いでプロジェクトを進行するよよいと思われる。

(※文責: 中村敏幸)

*1 IPコア…intellectual property coreとは、LSIや ASICを構成する部分的な回路情報のこと。*2 2014 年 1 月現在、次の URI から情報が入手できる http://www.altera.co.jp/technology/high_speed/

protocols/pcie-hard-ip/pro-hard-ip.html

Group Report of 2013 SISP - 33 - Group Number 4-B

Page 41: 公立はこだて未来大学 2013 年度システム情報科学実習 …sisp/old_report/2013/04/document04_B.pdf · Group Report プロジェクト ... hardware description language

Investigation of the security

付録 A VHDL の記法

VHDL は (Variable high-speed integrated circuit) hardware description language の略であ

り、ハードウェア記述言語の標準規格の作成を目的としてアメリカ国防省の主導のもと開発された

ハードウェア記述言語である。ハードウェアの入出力形式を設定するエンティティと動作を設定

するアーキテクチャがはっきり分離しており、Verilogと比較してデータの型が細かく決められて

いることが特徴である。以下では簡単な例を挙げ、それを元に VHDLの基本的な記法について述

べる。

A.1 簡単な組み合わせ回路の記述例

ここでは入力された信号を元に簡単な論理演算を行って結果を出力する組み合わせ回路を記述

する。

Library IEEE;

use IEEE.std_logic_1164.all;

Entity test1

port( input1,input2 : in std_logic;

output : out std_logic);

end;

Architecture combi_logic of test1 is

begin

output <= input1 XOR input2; //input1と input2の排他的論理和を outputに出力する

end;

上は単純な XOR 演算を出力する組み合わせ回路である。上の VHDL ソースをもとに VHDL

の記法の基本についてを説明する。

A.2 ライブラリ宣言

言語にはそれぞれに記述と処理にルールが存在する。VHDLはハードウェア記述言語であるの

で論理回路を形成するためのルールが必要である。言語処理におけるルールをあらかじめまとめた

ものをパッケージ、複数のパッケージを一まとめにしたものをライブラリと言い、これらを共有す

ることでルールを定義する手間を減らすとともに製品の規格を揃えることができる。VHDLにおいてライブラリとパッケージの使用は以下のように宣言される。

library <ライブラリ名>;

use <ライブラリ名>.<パッケージ名>;

VHDLの標準ライブラリ IEEE内の基本パッケージ std logic 1164は1ビット信号の状態を表

現する STD LOGIC型など回路設計の基本となる情報が定義されており、本プロジェクトでもほ

ぼ全てのハードウェア設計において使用している。

Group Report of 2013 SISP - 34 - Group Number 4-B

Page 42: 公立はこだて未来大学 2013 年度システム情報科学実習 …sisp/old_report/2013/04/document04_B.pdf · Group Report プロジェクト ... hardware description language

Investigation of the security

A.3 エンティティ

VHDLでハードウェアの外部との入出力の信号形式を宣言している部分をエンティティ (entity)

と呼ぶ。エンティティはいわば回路を外部に繋ぐためのプラグを設計する部分である。同じヘッド

ホンであってもプラグの穴の形が合わなければ使うことができないように、接続される機器の形式

に合わせて信号の形式を定める必要がある。

エンティティは VHDLにおいては以下のように記述される。

Entity <エンティティ名>

port( <信号名> : <入出力形式> <信号の型>);

end;

エンティティ名は予約語など禁則に抵触しない限りユーザーが自由に決めることができるが、目

的や型名など用途がわかりやすい名前がふさわしい。

ハードウェア記述言語においては信号は変数のように扱われており、ユーザーが設定した信号名

と型と値を与えられている。信号の型は様々な形式があるが、ハードウェア設計においては1ビッ

ト信号を表現するための形式 STD LOGIC型を主に使う。

入出力形式はその信号が外部からの入力を受け取る (in) のか外部に信号を送り出す (out) かを

記述する。先の例で言えばヘッドホンをつなぐプラグは出力なので out、マイクをつなぐプラグは

入力なので inとなる。信号は通常は入力か出力の一方通行であるが、場合によってどちらも行う

形式も用意されている。

A.4 アーキテクチャ

VHDLでハードウェアの動作を記述したものをアーキテクチャ (architecture)と言い、エンティ

ティに対応したアーキテクチャを記述することでそれらは初めて1つのものとして機能する。アー

キテクチャは以下のように記述される。

Architecture <アーキテクチャ> of <エンティティ名> is

[使用するリソースの宣言]

begin

[動作の記述]

end;

アーキテクチャ名はエンティティ名と同様に自由につけることができるが、エンティティ名はそ

のアーキテクチャに対応したエンティティ名でなくてはならない。エンティティとアーキテクチャ

はハードウェアに対するソフトウェアにような関係にあり、場合によっては同じエンティティでも

アーキテクチャの違いによって全く別の動作を行わせることができる。

アーキテクチャ内で利用できるリソースはエンティティで宣言されている信号に加え beginの前

に宣言しているリソースも使用でき、演算や情報保持のための信号を宣言したり、他の設計した回

路そのものを1つの演算回路と見立てて取り込んだりすることもできる。

動作は単純な代入や論理演算を始めとし、プログラム次第で様々な動作を行わせることがで

きる。

Group Report of 2013 SISP - 35 - Group Number 4-B

Page 43: 公立はこだて未来大学 2013 年度システム情報科学実習 …sisp/old_report/2013/04/document04_B.pdf · Group Report プロジェクト ... hardware description language

Investigation of the security

A.5 コンカレントとシーケンシャル

ハードウェア記述言語と C言語などのプログラミング言語の最も大きな違いは、通常のプログ

ラムは書かれた順序通りに命令を実行していくのに対し、ハードウェアではそれぞれの文1つ1つ

が回路として独立して機能しているためアーキテクチャ内に書かれた順番に従って演算が行われる

保証が一切ないという点である。この性質をコンカレント (concurrent)といい、対して順番通り

に動作することをシーケンシャル (sequential)という。

コンカレントな回路は常に全体が動作し続けるためシーケンシャルな回路と比較して全体として

の計算能力は高くなるが、常に想定した結果が返ってくる保障がなくなってしまう場合が存在して

しまう欠点がある。だが、ハードウェア記述言語ではで複数の回路を「決まった順で演算する」と

いう機能を持たせた1つの回路として動作させることでこれを解決している。シーケンシャルな回

路は VHDLでは主に process文として宣言されており、シーケンシャルな動作が保障されている

範囲内では if文や case文などの条件分岐やループ文などを使用することができる。

(※文責: 畠山遼平)

A.6 ハードウェア処理とソフトウェア処理

計算の手順がわかっている以上、暗号処理の計算はソフトウェアで行わせることも可能である。

別のマシンを用意してソフトウェア上で暗号処理を代行させる方法もあるのにも関わらず専用ハー

ドウェアでの実装を目指しているのは、本プロジェクトが極限の高速性を求めているが故である。

既存のマシン上のプログラム言語によるソフトウェア上で演算を行った場合、演算装置上での計

算に置き換えられるがその処理速度は演算装置の計算能力を超えることはできない。ハードウェ

ア、特に組み合わせ回路によるコンカレントな演算は途中に命令の翻訳による手間が生じないこと

などもありソフトウェアで同じことを行うより遥かに高速である。

だが、ハードウェアによる処理は物理的な制約がある以上最初に決められた範囲の演算以外を行

うことはできない。例を挙げれば 8bitの乗算を行う回路で 4bitの乗算を擬似的に行うことはでき

ても必ず 8bit の入力が必要になってしまい、8bit を超える範囲を一度に計算することはできず、

別途として演算を補助する回路を接続するか乗算器そのものを再設計しなくてはならない。また

データを一時保存するレジスタの数も決められているのでハードウェアに想定された範囲を超えた

数の変数を用いた演算もできないが、ソフトウェアでの処理はメモリやプロセスを柔軟に作成消滅

させることが可能なため、多彩な状況に対応することのできる点に優れている。

本プロジェクトにおける暗号処理のように処理の形式が決められている場合はハードウェアで処

理したほうが高速な場合が多いが、単純にソフトウェア上で行う処理をハードウェア上で同じよう

に行うように置き換えるだけでは汎用性がなくなってしまう。そのためハードウェアによる高速な

処理を効率的により汎用的に活用できるようにハードウェア上でもソフトウェアのように状況に合

わせた柔軟な対応を行えるような設計の研究が行われている。

(※文責: 畠山遼平)

Group Report of 2013 SISP - 36 - Group Number 4-B

Page 44: 公立はこだて未来大学 2013 年度システム情報科学実習 …sisp/old_report/2013/04/document04_B.pdf · Group Report プロジェクト ... hardware description language

Investigation of the security

付録 B Verilog と VHDL の違い

Verilog HDL(以下 Verilog)は 1990 年にパブリックドメインとして公開されたハードウェア記

述言語であり、現在では VHDLとともにハードウェア記述言語の2大標準規格となっている。本

プロジェクトは VHDLを用いることを前提にしているので、本項では VHDLとの大まかな差異

について述べるに留める。

以下の2つのハードウェア記述文はほぼ同じ内容を示しており、入力 Aが最初から 0のままだ

と最初は Bに何をしても Cに変化はないが入力 Aを一度でも 1にした後は Cの値が入力 Bと同

期するようになる回路である。VHDL

library IEEE;(B.1 ライブラリ宣言の有無)

use IEEE.std_logic_1164.all;

entity example(B.2 ハードウェア構造の宣言)

port(A in : STD_LOGIC;

B in : STD_LOGIC;

C out : STD_LOGIC);

end;

architecture test of example is

signal D : STD_LOGIC :=’0’; (B.3 信号とその代入演算の違い)

begin

D<= A or D;

C<= B and D; (B.4 演算子の違い)

end;

Velilog

(B.1 ライブラリ宣言の有無)

module Example(A,B,C);(B.2 ハードウェア構造の宣言)

input A;

input B;

output C;

wire D = 1’b0;(B.3 信号とその代入演算の違い)

assign D = A | D;(B.4 演算子の違い)

assign C = B & C;

endmodule

B.1 ライブラリ宣言の有無

VHDLはソースの冒頭で使用するライブラリとパッケージを宣言する必要があるが、Verilogに

はそもそもライブラリという概念がないためすぐに記述を開始できる。必要なライブラリとパッ

ケージを探す手間がないが、拡張性がないとも言える。

Group Report of 2013 SISP - 37 - Group Number 4-B

Page 45: 公立はこだて未来大学 2013 年度システム情報科学実習 …sisp/old_report/2013/04/document04_B.pdf · Group Report プロジェクト ... hardware description language

Investigation of the security

B.2 ハードウェア構造の宣言

VHDLは宣言したエンティティに対してアーキテクチャを対応させることで1つのモジュール

を形成するが、Velirogは VHDLのようにエンティティとアーキテクチャが分離されておらず、モ

ジュール内で構造を宣言する。ただし先に宣言しないと後の記述で使えないため、通常はモジュー

ルの冒頭でまとめて宣言する。

B.3 信号とその代入演算の違い

VHDLではハードウェア内のみで使用される信号はあらかじめ大きさの決まった型を与えて宣

言されるが、Verilogでは信号の値の型について必ず宣言する必要がなく、代わりに信号の型とし

て wireで宣言されるネット型と regで宣言されるレジスタ型が存在する。この2つは機能的には

ほぼ同じであるが、ネット型は assign文でしか代入できないためシーケンシャルな記述内では使

用できず、逆に reg型への代入は assign文ではできず、シーケンシャルな記述内でしか使えない

ので使い分ける必要がある。

なお、VHDLにおける代入演算子には信号への代入を表す¡=と変数の代入を表す:=の二種類が

存在するが、Verilogでは等号ひとつ=は代入を表し、Verilogにおける等号には二重等号==が用

いられる。

B.4 演算子の違い

VHDLと Velilogは同じ演算子でも役割がほとんど違っており、論理演算子は VHDLでは主に

予約語 (and,orなど)、Verilogでは主に記号 (&,—など)で表記される。Verilogの演算子は C言

語と共通しているものが多い。

B.5 まとめ

VHDL はライブラリの存在もあり Verilog に比べ拡張性に富む。一方型の種類や必要なライブ

ラリなど最初に覚えることが多い。

Verilog は演算子や命令文の文法など C 言語と共通している部分が多く C 言語経験者は導入が

多少楽。VHDLと比較すると拡張性に乏しいものの必要な機能は揃っているので単純に VHDLに

比して劣っているとは言い切れない。

(※文責: 畠山遼平)

Group Report of 2013 SISP - 38 - Group Number 4-B

Page 46: 公立はこだて未来大学 2013 年度システム情報科学実習 …sisp/old_report/2013/04/document04_B.pdf · Group Report プロジェクト ... hardware description language

Investigation of the security

付録 C 楕円曲線 Diffie-Hellman 鍵共有(ECDH 鍵共有)

C.1 楕円曲線Diffie-Hellman 鍵共有(ECDH鍵共有)とは

楕円曲線を利用する暗号は送受信者間で共通鍵を共有しなければならないことが多い。安全に共

通鍵を共有する方法として、楕円曲線 Diffie-Hellman 鍵共有というものがある。その方法を以下

に述べる。メッセージをやりとりする Aと Bは素体 Fp 上の楕円曲線 Eとその曲線上の点 Pを互

いに知っているものとする。以下のようなやりとりをすることで、Aと Bは共通の鍵を持つこと

ができる。

(1)Aは dA を乱数により生成し、Pを dA 倍した PA(=dA・P)を計算して Bに、Bは dB を乱

数により生成し、Pを dB 倍した PB(=dB・P)を計算して Aにそれぞれ送る。

(2)PB を受け取った Aは KA = dA・PB を計算する。また、PA を受け取った Bは KB = dB・

PA を計算すると、

KA = dA・PB = dA・dB・P

KB = dB・PA = dA・dB・P

よって、KA = KB となり、Aと Bは共通した鍵を持つことができる。このようにして、共通鍵

をもつ方法を楕円曲線 Diffie-Hellman 鍵共有(ECDH鍵共有)という。

C.2 実用例

ECDH鍵共有を ECElGamal 暗号を例にやってみる。

Aを送信者、Bを受信者とする。

(1)(送受信の準備段階)

受信者 Bは、乱数により秘密鍵 dB の生成、それに対する公開鍵 PB (= dB・P)の計算を予めやっ

ておき、PB を公開しておく(dB は厳重に保管しておく)。

(2)(送信者 AのメッセージMに対する暗号文 Cの送信)

送信者 Aは乱数を用いて rを生成し、PA (= r・P)を計算する。次に K (= r・PB) を計算する。

そして、C = K + M を計算し、暗号文として (C, PA)を受信者 Bに送る。

(3)(受信者 Bによる暗号文 Cの復号)

Kは共通鍵で ECDH鍵共有により生成されているから 計算 K = dB・ PA により共通鍵は得られ

る。ゆえに、暗号 Cの復号は

M = C - K

の計算により得られる。

このようにして、ECDH鍵共有は使われる。

(※文責: 古谷卓也)

Group Report of 2013 SISP - 39 - Group Number 4-B

Page 47: 公立はこだて未来大学 2013 年度システム情報科学実習 …sisp/old_report/2013/04/document04_B.pdf · Group Report プロジェクト ... hardware description language

Investigation of the security

付録 D 情報の数値化

D.1 コーディング

文章(文字列)を送るとき、文章を構成する各文字は数値に置き換えられて送られる(デジタル

計算機やデジタル通信は全ての情報を 2進数に変換して送る)。このように、文字を数値化するこ

とをコーディングという。特に、文字を数値に変換する操作をエンコード、数値を文字に変換する

操作をデコードという。以下、コーディングの例をいくつか挙げる。

・ASCII

2進数 8桁で A ⇔ 01000001, B ⇔ 01000010, ・・・というように、8bitの 2進数とアルファベッ

トを対応させてコーディングしている。

・シーザー暗号

これはアルファベット 26文字を 0から 25までの整数に対応させている。この操作がコーディン

グとなる。

暗号としては、送信者は送りたい文字列を数値化し、ある整数 Kをそれぞれの数値に足して送る。

このとき、数値の列を構成する各数値で 26以上の値をとるものがあったとき、その数値を 26で割

り、その余りをもとの数値と置き換える。そして、受信者は受け取った数列の各成分と Kの差を

とる。すると、もとの数列が得られる。これをデコードすると平文となる。

FUNを例にしてシーザー暗号の流れを説明する。

FUNをエンコードすると、

FUN → 5, 20, 13

となり、k=3で暗号化すると、

8, 23, 16

となる。

これを相手に送信する(このとき、送信された数列をデコードしても得られる文字列は IXQとな

るため、たとえ通信を傍受されても一見するだけならばわからない)。そして、暗号文を受信した

受信者は各数を kで引く。

すると、

8-3, 23-3, 16-3 ⇒ 5, 20, 13

となる。これをデコードすると、FUNという文字列が得られて復号されたことになる。

D.2 暗号システム

(1) P:可能な文の集合 (plain text)

(2) C:可能な暗号化文の集合 (cipher text)

(3) K:鍵の集合 (key)

(4) e:K × P → C:暗号化関数 (encryption function)

(5) d:K × C → P:復号化関数 (decryption function)

の5つ組で、次の公理を満たすものを暗号システムという。

∀ x ∈ P, ∀ k ∈ K, d(k, e(k,x))=x

Group Report of 2013 SISP - 40 - Group Number 4-B

Page 48: 公立はこだて未来大学 2013 年度システム情報科学実習 …sisp/old_report/2013/04/document04_B.pdf · Group Report プロジェクト ... hardware description language

Investigation of the security

通信をするとき、何らかの安全な手段であらかじめ鍵 kを共有しておく。送信者は送信メッセージ

xに対し、その鍵 kを用いた暗号化文 e(k, x)を送信する。受信者は受け取った暗号文に d(k,-)を

施すことにより、d(k,e(k,x))=xを復元できる。このとき、kがわからないので通信を傍受しても

暗号文を復号できない。

シーザー暗号ならば、K=C=P= { 0,1,2,・・・,25} 内で計算したものを 26で割った余りで

e(k, x) =x+k, d(k, y) =y - k

とすればよい。

D.3 解読の危険性

英単語のスペルで最も出現頻度が高いのは eである。このことから、攻撃者に暗号文(Cの元)

を多量に入手されてしまったとき、出現頻度順のヒストグラムを製作され、どれが e を暗号化し

たものか特定される可能性が生じる。また、c, s, l, o などの特定の文字が二連続で現れる英単語

success, balloon などは少ない。この事実を用いて、統計的手法で解読することもされる。鍵が 1

つである限り、コーディングは一意にされる。つまり、送信するメッセージ中に同じ値が何度も現

れると危険である。そのため、Pの要素数を 2128 から 2256 以上にして、このような弱点を小さく

している。

(※文責: 古谷卓也)

Group Report of 2013 SISP - 41 - Group Number 4-B

Page 49: 公立はこだて未来大学 2013 年度システム情報科学実習 …sisp/old_report/2013/04/document04_B.pdf · Group Report プロジェクト ... hardware description language

Investigation of the security

付録 E モンゴメリ乗算

ここでは次の公式を多用する

(a mod n) mod n = a mod n

ab mod n = (a mod n)(b mod n) mod n

モンゴメリ乗算はモンゴメリリダクションを用いることにより、高速に剰余を求めるアルゴリズム

である。まず、モンゴメリ写像について説明する。

E.1 モンゴメリ写像

X = { x| 0 ≦ x< N, N は 2以上の自然数 } とし、R を gcd(R, N) = 1 となる自然数とする。

これらを用いて、モンゴメリ写像 f:X→ X を以下のように定義する。

  f(x) = Rx mod N

 すると、R−1R mod N = 1 なる R−1 ∈ X が存在する。これより、

a = b ⇒ Ra mod N = Rb mod N

⇒ f(a) = f(b)

f(a) = f(b) ⇒ Ra mod N = Rb mod N

⇒ R−1 Ra mod N = R−1 Rb mod N

⇒ a = b

が従う。つまり、

  a = b ⇔ f(a) = f(b)

 が成り立ち、fは単写であることがわかる。また、f:X→ Xであるから、fは全写である。

以上より、モンゴメリ写像は全写かつ単写である。

ゆえに、モンゴメリ写像 fには逆関数 f−1 が存在する。

E.2 モンゴメリ乗算とモンゴメリリダクション

モンゴメリ乗算は以下のような演算となる。

f(ab mod N)

=R(ab mod N) mod N

=(R mod N)( (ab mod N) mod N ) mod N

=(R mod N)(ab mod N) mod N

=(R mod N)( (a mod N)(b mod N) mod N ) mod N

=( (R mod N) mod N)( ( (a mod N)(b mod N) mod N ) mod N) mod N

=( (R mod N) mod N)( (a mod N)(b mod N) mod N) mod N

=(R mod N)(a mod N)(b mod N) mod N

=Rab mod N

Group Report of 2013 SISP - 42 - Group Number 4-B

Page 50: 公立はこだて未来大学 2013 年度システム情報科学実習 …sisp/old_report/2013/04/document04_B.pdf · Group Report プロジェクト ... hardware description language

Investigation of the security

=Ra・Rb・R−1 mod N

=(Ra mod N)(Rb mod N)(R−1 mod N) mod N

=f(a) f(b) (R−1 mod N) mod N

=( f(a) mod N )( f(b) mod N )( (R−1 mod N) mod N ) mod N

=( f(a) mod N )( f(b) mod N )(R−1 mod N) mod N

=f(a) f(b) R−1 mod N ここで、A=f(a), B=f(b) とおくと、

       f(ab mod N) = ABR−1 mod N

これを、

     A〇 B = f(ab mod N) = ABR−1 mod N

とおき、演算○をモンゴメリ乗算呼ぶ。

さらに、T = ABとおくと、モンゴメリ乗算 A○ Bは

       A○ B = TR−1 mod N

が従う。

そして、モンゴメリ乗算 A○ Bを Tの関数と考え、その関数をMRとする。このとき、MR(T)

をモンゴメリリダクションと呼ぶ。

また、モンゴメリリダクションは関数 fの逆関数である。すなわち、

f−1(A) = MR(A) = AR−1 mod Nが成り立つ。

実際に、

f( f−1(A) ) = R(AR−1 modN) mod N

= (R mod N)( (AR−1 mod N) mod N) mod N

= (R mod N)(AR−1 mod N) mod N

= RAR−1 mod N

= A mod N

= A (∵ 0 ≦ x< N)

となり、MR(T)は fの逆関数であることがわかる。

E.3 モンゴメリ乗算を用いた除算

このアルゴリズムの目的であるモンゴメリリダクションを用いた剰余 X mod Nを求める。

S = R2 mod Nとする。このとき、MR( MR(X)S )を計算すると、

MR( MR(X)S )

= ( MR(X)S )R−1 mod N

= ( MR(X) mod N )(S mod N)(R−1 mod N) mod N

= ( MR(X) mod N )( (S mod N) mod N )( (R−1 mod N) mod N ) mod N

= MR(X)(S mod N)(R−1 mod N) mod N

= (XR−1 mod N)(S mod N)(R−1 mod N) mod N

= XR−1SR−1 mod N

= XR−1・R2・R−1 mod N

Group Report of 2013 SISP - 43 - Group Number 4-B

Page 51: 公立はこだて未来大学 2013 年度システム情報科学実習 …sisp/old_report/2013/04/document04_B.pdf · Group Report プロジェクト ... hardware description language

Investigation of the security

= X mod N

となる。つまり、MR( MR(X)S )を計算することで X mod Nを得る事ができる。

(※文責: 古谷卓也)

Group Report of 2013 SISP - 44 - Group Number 4-B

Page 52: 公立はこだて未来大学 2013 年度システム情報科学実習 …sisp/old_report/2013/04/document04_B.pdf · Group Report プロジェクト ... hardware description language

Investigation of the security

付録 F ナップザック暗号

1978 年に Merkle と Hellman が新しい公開暗号としてナップザック暗号を考案した。そのた

め、MH型ナップザック暗号とも呼ばれる。ナップザック暗号の強度は NP完全問題であるナップ

ザック問題に依存している。実用的な時間でナップザック問題を解くアルゴリズムの開発とナップ

ザック暗号の改良は何度か行われたが、結果的に安全性が十分でないものとされた。しかし、この

暗号は近年実装されるであろう量子コンピュータよる暗号読解が難しいとされているため、最近再

び注目を集めている暗号である。

F.1 ナップザック問題

k個の正の整数からなるベクトル (v1, v2, ・・・, vk)と正の整数 Vが与えられたとき

V =

k∑i=1

εivi, εi ∈ {0, 1}(1 ≤ i ≤ k)

となるベクトル n=(ε1,ε2,・・・,εk)が存在するかどうか判定し、存在するのであればすべての解

を求める問題をナップザック問題という。そして、ナップザック問題において、与えられたベクト

ル (v1, v2, ・・・, vk)の任意の成分が

vi >i−1∑j=1

vi(i = 2, 3,・・・, k)

という超増加数列になっているものを超増加ナップザック問題という。例えば

1, 2, 4, 10, 20, 40, ・・・, vk -(*)

といったような数列が超増加数列に該当する。また、超増加ナップザック問題では

εk = 1 ⇔ vk ≤ V         − (∗∗)

という同値関係が成立する。上で与えた超増加数列 (*)を見てみると Vは

V = 1・ε1 + 2・ε2 + 4・ε3 + 10・ε4 + 20・ε5 + 40・ε6 +・・・+ vk・εk

となる。εk ∈ {0, 1}より、たとえε1からεk−1番目までが 0をとってもεk = 1であれば、vk ≤ V を

満たすことがわかる。さらに i ∈ {1, 2,・・・, k − 1}に対し、

vi ≤ V −k∑

j=i+1

εjvj ⇔ εj = 1

が成立する。これは任意の番号 iについて (**)が成立することを意味している。同様に超増加数

列 (*)を用いて確かめると

Group Report of 2013 SISP - 45 - Group Number 4-B

Page 53: 公立はこだて未来大学 2013 年度システム情報科学実習 …sisp/old_report/2013/04/document04_B.pdf · Group Report プロジェクト ... hardware description language

Investigation of the security

V−k∑

j=i+1

εjvj = (1・ε1+2・ε2+4・ε3+10・ε4+20・ε5+・・・+vk・εk)−(vj+1・εj+1+vj+2・εj+2+・・・+vk・εk)

= 1・ε1 + 2・ε2 + 4・ε3 + 10・ε4 + 20・ε5 + 40・ε6 +・・・+ vj・εj

∴ V −k∑

j=i+1

εjvj =i∑

j=1

εjvj ≥ vj

(**)より

V −k∑

j=i+1

εjvj ≥ vj ⇔ εj = 1

は確かに従う。

このような数列を扱う事で、ベクトル nの任意の成分は Vを超えないことになる。この条件を用

いると、一般的なナップザック問題よりもベクトル nを容易に見つけ出すことができるため超増加

ナップザック問題は容易に解ける。そのため、ナップザック暗号では超増加するベクトルをはじめ

に選び、それを超増加しないベクトルに変換して公開鍵として使う。暗号文の受信者は秘密鍵を使

うことで送られてきた暗号文を超増加するベクトルと平文(ベクトル)の内積に変換できるため、

秘密鍵の所有者は超増加ナップザック問題を解く問題に変換できる。つまり、ナップザック暗号は

秘密鍵を持ってない人を一般的ナップザック問題に直面させることで安全性を得ている。しかし、

公開鍵のもとは超増加するベクトルであるため、公開鍵は特殊なものとなる。そのために当初から

本当に安全性の高いものなのか疑問を抱かれていた。

F.2 実装

F.2.1 鍵生成

送信者は超増加となるベクトル (v1, v2,・・・, vk)と m ≥k∑

i=1

vjを満たす mを選ぶ。それらに

対して、(a,m) = 1, 0 < a <mを満たす aを選び

b ≡ a−1 (mod m)

wi ≡ avi (mod m)

を計算する。そして、ベクトル (w1,・・・,wk)を導出する。

F.2.2 鍵の公開

送信者は (v1, v2, ・・・, vk), m, a, bを秘密鍵とし、暗号化鍵KE = (w1,・・・,wk) を公開す

る。このとき復号鍵はKD = (b, m)となる。

Group Report of 2013 SISP - 46 - Group Number 4-B

Page 54: 公立はこだて未来大学 2013 年度システム情報科学実習 …sisp/old_report/2013/04/document04_B.pdf · Group Report プロジェクト ... hardware description language

Investigation of the security

F.2.3 メッセージの送信

k bitからなる平文メッセージ P = (ε1, ε2,・・・, εk) とする。暗号化は PとKE の内積をとる

ことで行われる。これを Cとして送信する。すなわち、暗号文 Cは

C =k∑

i=1

εiwj (P とKE の内積)

という形をとる。

F.2.4 受信者による暗号文の復号

暗号文 Cに秘密鍵 bを掛けて、mで割った余りをとると

bC mod m = bk∑

i=1

εiwj mod m

ここで、bwi ≡ bavi ≡ vi (mod m)より

bk∑

i=1

εiwj ≡k∑

i=1

εivj (mod m)

∴ bC ≡k∑

i=1

εivj (mod m)

さらに、0 < bC mod m ≤ mとなるように bC をとると、0 <

k∑i=1

εivj ≤k∑

i=1

vjより

bC =k∑

i=1

εivj

が得られる。

したがって、超増加ナップザック問題に変換されるため平文 (ε1, ε2,・・・, εk) を容易に計算で

きる。

(※文責: 古谷卓也)

Group Report of 2013 SISP - 47 - Group Number 4-B

Page 55: 公立はこだて未来大学 2013 年度システム情報科学実習 …sisp/old_report/2013/04/document04_B.pdf · Group Report プロジェクト ... hardware description language

Investigation of the security

付録 G QuartusII の使い方

ALTERA社で開発されている QuartusIIを使用することで、VHDL、VerilogHDLなどのハー

ドウェアの記述をする言語を扱うことができ、FPGAにデータを流し込むことができる。

G.1 QuartusIIの入れ方

”Quartus II ソフトウェア ウェブ・エディション”をインターネット上でダウンロードすること

ができる。*120GBほどのディスク容量が必要になるので、パソコンの空き容量を増やしておく必

要がある。

 また、ソースを流し込むときに必要になる usb-blaster が QuartusII に同梱されているため、

FPGAと PCを接続する前に、QuartusIIをインストールする必要がある。

G.2 プロジェクトの作成

Quartus II Web Edition を起動。[Create a New Project] をクリック、もしくはメニューの

[File]-[New Project Wizard]からプロジェクトを作成することができる。

  Directory, Name, Top-Level Entity[page 1 of 5]の画面では、プロジェクトを設置するディレ

クトリを選択する。このとき、ディレクトリが日本語の場所に設置するとコンパイルできない場合

があるので、必ず英数字にすること。また、プロジェクト名と Top-Level Entityを決めることが

できる。プロジェクト名を入力すると、自然に Top-Level Entityも同じ名前になるようになって

いる。Top-Level Entityというのは、C言語でいうmain関数のようなもので、どのプログラムが

メインなのかを示すものです。

  Add Files[page 2 of 5]の画面では、ほかの VHDLファイルや VerilogHDLファイルを追加し

たい場合、追加することができますが、通常は何も触れなくてもよい。

  Family & Device Settings[page 3 of 5]では、使用するデバイス (FPGA)のバージョンを記述

します。DE0の Familyは、Cyclone IIIで、Name filterで EP3C16F484C8を入力、もしくは、

画面下の Avairable devicesから EP3C16F484C8選び、[Finish]を押せば決定となる。(これ以降

の作業は必要になったときに使用することができるが、本プロジェクトでは使用しなかった。)

G.3 ファイルの作成

VHDLファイルもしくは、VerilogHDLファイルを作成するにはメニューから [File]-[New]をク

リックし、Design Filesの VHDL File、Verilog HDL Fileを選択し [OK]を押すことで作成する

ことができる。

 また、ハードウェア設計において、部品を作成してから接続することが多くあるので、VHDLや

Verilog HDLでは、複数の部品 (プログラム)を同じファイル、もしくは別ファイルに保存するこ

とができ、その部品同士の接続に関しては、ポート数や、ポートの名前さえ同じであればプロジェ

*1 2014年 1月現在では http://dl.altera.com/?edition=web

Group Report of 2013 SISP - 48 - Group Number 4-B

Page 56: 公立はこだて未来大学 2013 年度システム情報科学実習 …sisp/old_report/2013/04/document04_B.pdf · Group Report プロジェクト ... hardware description language

Investigation of the security

クト上で複数のファイルを作成してもかまわない。

G.4 ソースの流し込み

[Assignments]-[Pin Planner] を開き、ピンを設定することができる。ピンを設定しなければ、

FPGAに流し込んだところで、正しくハードウェアがセットされないため必ずこの操作が必要に

なる。ソースを流し込むには、FPGAを接続し、[Tools]-[Programmer]を選択すると、ソースを流

し込む画面が表示される。usb-blaster(ドライバ)が正しくインストールされていれば、Hardware

Setupに表示される。表示されない場合は、(Windowsの場合)デバイスマネージャで接続されて

いるか確認する。ほかにも、認識されていない場合もあるので、抜き差しして確認、FPGAの電

源の確認をしてみるとよい。接続が確認されたら、[Start] を押すことでソースを流し込むことが

できる。

G.5 補足

ハード IP を使用するには、MegaWizard Plug-In Manager を使用するのだと考える。これを

使用することで、PCIeなどの ALTERA社付属のハード IPを使用できると考えられる。これを

使用するには、QuartusII画面上メニューバーの [Tools]-[MegaWizard Plug-In Manager]から選

択すればよい。これに関する詳細な説明に関しては、ALTIMA社の資料にも記述されており、こ

れを参考にするとよいと思われる。*2

(※文責: 中村敏幸)

*2 2014年 1月現在 http://www.altima.jp/members/japanese/download/bdf_v10_0.pdf

Group Report of 2013 SISP - 49 - Group Number 4-B

Page 57: 公立はこだて未来大学 2013 年度システム情報科学実習 …sisp/old_report/2013/04/document04_B.pdf · Group Report プロジェクト ... hardware description language

Investigation of the security

付録 H 使用した講義

プロジェクトで役に立った講義を以下に示す

1. 情報機器概論

パソコンの取り扱いについて基本的なことを学んだ

2. プログラミング基礎

プログラミングについて基本的なことを学んだ

3. ハードウェア基礎

論理回路について学んだ

4. 情報処理演習 I

プログラミングについて学んだ

5. 情報処理演習 II

プログラミングについて学んだ

6. ハードウェア設計

VHDLについて学んだ

7. 科学技術リテラシ

レポートの書き方について学んだ

8. 認知心理学演習

レポートの書き方について学んだ

9. 情報数学

コンピュータ科学・情報科学の発展を支える「離散数学」の基本を学んだ

10. 形式言語とオートマトン

コンピュータによる記号・計算・言語処理の基礎を学んだ

11. アルゴリズムとデータ構造

アルゴリズムを設計し、効率的なプログラムを作成するための基礎を学んだ

12. ソフトウェア設計論 I

Group Report of 2013 SISP - 50 - Group Number 4-B

Page 58: 公立はこだて未来大学 2013 年度システム情報科学実習 …sisp/old_report/2013/04/document04_B.pdf · Group Report プロジェクト ... hardware description language

Investigation of the security

大規模なソフトウェアをチームで高品質かつ効率的に開発する手法を学んだ

(※文責: 水野陽介)

Group Report of 2013 SISP - 51 - Group Number 4-B

Page 59: 公立はこだて未来大学 2013 年度システム情報科学実習 …sisp/old_report/2013/04/document04_B.pdf · Group Report プロジェクト ... hardware description language

Investigation of the security

付録 I プロジェクトでの習得技術

1. VHDLの使い方

2. FPGAの使い方

3. Quartus II の使い方

4. 暗号についての知識

5. 乗算器についての知識

6. Texの使い方

7. ポスターの作り方

(※文責: 水野陽介)

Group Report of 2013 SISP - 52 - Group Number 4-B

Page 60: 公立はこだて未来大学 2013 年度システム情報科学実習 …sisp/old_report/2013/04/document04_B.pdf · Group Report プロジェクト ... hardware description language

Investigation of the security

参考文献

[1] David Money Harris, Srah L. Harris. ディジタル回路設計とコンピュータアーキテクチャ, 翔

泳社, 2009.

[2] 今井秀樹. 明るい暗号の話 ネットワーク社会のセキュリティ技術, 裳華房,1998.

[3] ナザ M. ボドロス, 鎌田芳郎訳. VHDLと Verilogプログラミングの基礎, センゲージ ラーニン

グ株式会社,2007.

[4] 辻井重男,岡本栄司編. 暗号のすべて~ユビキタス社会の暗号技術~, 電波新聞社, 2002.

[5] 岡本栄司. 暗号理論入門 [第2版], 共立出版, 2002.

[6] 白勢政明,木村圭吾,村山広行,加藤翔,小林悠太,畠山 遼平. 公開鍵暗号ハードウェアのための

多ビット乗算器について,2012

[7] 森岡澄夫. HDLによる高性能ディジタル回路設計, CQ出版, 2002.

[8] 伊豆哲也, ”楕円曲線暗号入門”. [PDF], http://written.4403.biz/source/ecc_rev30r.

pdf(最終アクセス 1月 15日)

[9] 松本眞, ”暗号理論と代数”. [PDF], http://www.math.sci.hiroshima-u.ac.jp/~m-mat/

TEACH/network-algebra.pdf(最終アクセス 1月 15日)

[10] ”修士論文報告書 暗号理論と素因数分解”. [PDF], http://gbb60166.jp/cipher/master.

pdf(最終アクセス 1月 15日)

[11] ”モンゴメリ乗算”. [PDF], http://www.geocities.jp/midarekazu/Montgomery.pdf(最

終アクセス 1月 15日)

Group Report of 2013 SISP - 53 - Group Number 4-B