ポリテクカレッジ福山の情報システム系において,「ファイル圧縮・暗号化ソフトウェアの製作」という題目で学生に卒業研究の指導を行ったのでここに報告する。
本校では,情報システム系の場合,卒業研究に計16単位を配分し指導している。その内訳は,2年前期が2単位,2年後期が14単位である。そして,2年後期の集中実習終了後に卒業研究発表会を開催し,研究の集大成の場としている。
本校においては,研究題目の選定は,指導教官があらかじめ指示する場合と学生が自ら決定する場合があるが,今回の場合は後者に相当する。
学生は,卒業研究を始めるにあたり,Visual C++でソフトウェアを開発したいという漠然とした希望しか持っていなかった。Visual C++は,マイクロソフト社製のWindowsソフトウェア開発ツールである。
そこで,2年前期にはVisual C++の使い方を学習させるとともに,学生自身が興味を持っている3次元グラフィックライブラリOpenGL,暗号化技術PGPといった技術分野について資料を調査させた。そして,Visual C++を用いてそれらの技術分野の簡単なソフトウェアを作成させることによって,次第に研究題目を絞り込ませていった。
その結果,学生は圧縮手法と暗号化手法に関する研究題目で卒業研究を行うことに決めた。具体的には,データファイルに対して圧縮と暗号化を同時に行うソフトウェアの製作をすることになった。
インターネットは,1996年以降,急速な普及をみせている。その結果,日本にいながら世界中の情報を瞬時に入手することが可能となった。また,インターネットを利用した通信販売などの分野も急激に成長している。
しかし現在は,通信販売の購入希望者のクレジットカード番号といった大切なデータが暗号化されることなくインターネット上で送受信されている。そのため,クレジットカード番号が盗用され悪用されるケースも発生している。
今回学生が開発したA&Amp;Aは,データファイルに対して圧縮と暗号化を同時に行うというソフトウェアである。これによって,利用者は通信コストを大幅に減らすことができ,しかも安全に通信を行うことができる。
現在,LHAに代表される数多くの圧縮ソフトウェアが普及し,利用されている。それらは,インターネット等で送るデータ量を大幅に減らすことができるため,通信コストの削減の目的で使用されている。しかし,それらは暗号化機能を有していない。
それらのソフトウェアの圧縮アルゴリズムは公開されており,知識があれば復元することは容易である。そのため,インターネット上でクレジットカード番号のような重要なデータを送る場合,第三者にそれが渡り悪用される可能性があるという安全性上の問題点がある。
今回,このような問題点を解決するために,データファイルに対して圧縮と暗号化を同時に行うソフトウェア「A&Amp;A」を製作した。
その実現方式は以下のとおりである。
圧縮には,ハフマン(Huffman)法という,一般的な方式を採用した。通常,データファイルの中で文字が出現する頻度は文字ごとに差がある。そのことを利用し,出現頻度の高い文字は少ないビットで表現し,出現頻度の低い文字は多いビットで表現することによって,データファイルの全体としてのサイズを小さくすることができる。これを推し進め,ファイルサイズが最小になるように文字を可変ビット長のコードに置き換えるのがハフマン法である。
図1に,ハフマン法で10バイトからなる文字列を約3バイトに圧縮する例を示す。
暗号化には,128ビットのキー長を持つ暗号化アルゴリズムを独自に開発し使用した。現在,コンピュータの性能は急速に向上しており,力づく手法(brute-force)によって短いキーしか使用していない暗号化アルゴリズムは,即座に解読されてしまう。表1に,1994年の時点での暗号化アルゴリズムのキーの長さと,それを100万ドルのコンピュータで解読するのに要する時間との関係を示す。キー長を128ビットにすることにより,A&Aに対し力づく手法を用いても解読に1000兆年の歳月がかかることになり安全性を確保することができる(もちろん,コンピュータの高速化は急速に進むので,解読に要する年月は将来確実に短くなっていく)。
A&Amp;Aは,Windows95およびWindowsNTという2つのOS上で動作する。その使用法は,データファイルの送信側と受信側で異なるので別々に説明する。なお前提として,データファイルの送信側と受信側であらかじめ何らかの方法を用いて最大16バイトの長さのパスワードを決めておく必要がある。
データファイルの送信側は,まずA&Aを起動する。これにより,図2に示すA&Aのスタート画面が表示される。ここで「圧縮・暗号処理」を選択し,「処理開始」ボタンを押す。すると,図3に示す入力画面が表示される。この画面で,①パスワード入力,②圧縮・暗号化を行う対象ファイルの選択,③圧縮・暗号化済みファイルの名前の指定を行う。
これによってデータファイルが暗号化されるので,インターネット等の通信手段でそのファイルを送信する。
データファイルの受信側は,A&Aを起動し,図2に示すA&Aのスタート画面が表示されたところで「復元処理」を選択し,「処理開始」ボタンを押す。すると入力画面が表示されるので,この画面で,①パスワード入力,②圧縮・暗号化済みファイルの選択を行う。この際,送信側とあらかじめ決めておいたパスワードを用いて暗号を復元する。これによって受信側は,データファイルを安全に入手することができる。
A&Aは,以下の環境のもとで製作した。
・DOS/Vパソコン(自作)
・CPU:Pentium120MHz
・メモリ:64MB
・ハードディスク:540MB
・開発ツール(言語):Visual C++ Ver4.0
・OS:Windows95
・10人月
・約2000行
この開発環境は,Visual C++でソフトウェアを作成する場合,一応満足できる水準であると考える。特にメモリが少ない場合,ハードディスクに対するスワップ要求が頻発し開発速度を遅らせる原因になる。そのため,メモリについては多量に用意した。
ソフトウェアの開発ツールには,Visual C++を使用した。Visual C++を使った開発を学生が行うのには,いくつかの問題点がある。Visual C++の使用法は複雑であり,Visual Basic等の他のソフトウェア開発ツールに比べて生産性が低い。さらに,オブジェクト指向プログラミングの考え方と,C++言語特有の考え方を習得しなければ,Visual C++を容易に使いこなすことはできないため,学生にかかる負担が大きい。
しかし,今回はあえて,Visual C++を使ってソフトウェアを製作した。その理由は以下の3点である。
第1は,学生が卒業研究を始めるに際し,Visual C++を使ってソフトウェアを開発したいという希望を持っていたからである。卒業研究においては,学生の自主性を重視し,可能な限り学生の希望にそうことによって,彼らのやる気を最大限に引き出すことができるものと考える。
第2は,Windows用のソフトウェアを開発する場合,Visual C++は最も標準的なツールであるからである。特にソフトウェア関連の企業においては,Visual C++を駆使してソフトウェア開発が行える人材は即戦力として期待されている。そのため,学生がソフトウェア関連の企業に就職する場合,Visual C++が使えるということがきわめて有利に働くことが多い。実際,A&Aを製作した学生の1人は,Visual C++でソフトウェアが開発できるということを見込まれて,2学年の早い時期から企業の内定を得ることができた。
第3は,Visual C++は,Visual Basic等の他のソフトウェア開発ツールに比べて,より高速できめの細かいソフトウェアを製作することができるからである。
このような理由から開発ツールにはVisual C++を採用した。
A&Aは,以下のスケジュールで製作した。
Visual C++の使い方の学習
OpenGL,PGP等の技術分野の調査
卒業研究題目の決定
暗号化および圧縮アルゴリズムの調査
A&Aの設計
A&Aの製作(コーディング)
A&Aのデバックおよびテスト
職業能力開発短期大学校卒業製作・研究発表会
福山職能短大情報システム系卒業研究発表会
この中で,OpenGLについてはかなり詳しく調査したが,ライブラリを呼び出すだけで3次元グラフィックが表示でき,技術的には学生の興味を引かなかったため,卒業研究の題目からははずした。
2台のパソコンをTCP/IPプロトコルで接続し,それらの間で,A&Aによる圧縮・暗号化を行ったデータファイルをやりとりした。その結果,パスワードを知らない第三者はそれを解読することはできなかった。これによって,A&Aは従来の圧縮ソフトウェアに比べ高い安全性を有することが確認できた。また,ファイルのサイズも約20%まで圧縮することができ,通信コストの削減にも貢献することが確認できた。
しかし圧縮率については,LHAのような従来の圧縮ソフトウェアには及ばず,さらに改良の余地があることも判明した。
インターネットが普及した現在,通信コスト削減のためのデータ圧縮技術,および不正アクセス防止のためのデータ暗号化技術は高い注目を集めている。そのような技術に関する卒業研究を指導する機会に恵まれたことは,大変幸運であったと考える。
A&A自体は,学生自身が開発したものであり,インタフェースが洗練されていない,暗号化アルゴリズムが差分解読法や線形解読法といった強力な解読方法に対抗できない,圧縮率が不十分であるといった欠点も存在する。しかしこれらの点については,今後この卒業研究の内容を受け継いでくれる後輩が現れ,改良してくれることを期待している。
最後に,A&Aの生みの親である近澤英君と中村達浩君の両名に対し,謝意を表す。