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

40

## 全文

(1)

### グループ報告書

Future University Hakodate 2011 System Information Science Practice Group Report

### Project Name

Visualization of Code-Breaking

### Group Name

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

### プロジェクトリーダ

1009087 大久保貴裕 Takahiro Okubo

### グループリーダ

1009087 大久保貴裕 Takahiro Okubo

### /Group Member

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

### 指導教員

Masaaki Shirase Osamu Konishi

2012年1月18日

### Date of Submission

(2)

(3)

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

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

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

(4)

### 目次

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

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

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

(5)

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

(6)

(7)

## 1

### 前年度の成果

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

(8)

## 2

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

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

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

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

(9)

### 目的

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

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

(10)

(11)

## 3

### 暗号

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

### 背景

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

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

### が普及に至るまで

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

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

(12)

### 楕円曲線暗号

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

### 概要

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

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

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

### 実装例

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

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

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

(13)

### ベース暗号

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

### 概要

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

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

### 適用法

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

(14)

### )

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

### 公開鍵証明書

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

### ベース暗号の利点

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

### ベース暗号の欠点

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

(15)

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

### タイムリリース暗号

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

### 概要

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

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

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

(16)

## 4

### テキストの読み込み

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

### ビューの切り替え

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

### テキストの色付け

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

(17)

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

(18)

## 5

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

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

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

(19)

（文責:大久保貴裕）

### 青塚佳祐の担当課題

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

### 稲熊卓記の担当課題

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

(20)

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

### 大久保貴裕の担当課題

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

### 担当課題解決過程の詳細

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

### 青塚佳祐

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

(21)

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

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

### 稲熊卓記

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

(22)

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

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

### 大久保貴裕

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

(23)

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

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

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

(24)

## 6

### 頻度分析の概要

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

(25)

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

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

(26)

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

(27)

Updating...

Updating...