ソフトを開発しようと思った動機、背景
インターネットを安全に使うために作成しました。オンラインストレージやメール添付など、インターネットでは同じパスワードを使って、大量の暗号ファイルを晒します。このため、どうしても平文攻撃によって解かれてしまう危険性が高くなっています。一度解かれると、パスワードが同じなので、ほかもすべて解かれてしまいます。
そこで、同じパスワードを使い続けても実際の暗号化の鍵は毎回、ランダムに変わる無限鍵暗号を作成しました。鍵のパターンは、フリー版で約300兆通りです。鍵が毎回異なっているので、運悪く鍵が解かれたとしても、その鍵ではほかの暗号ファイルは解読できません。平文攻撃を無力化できます。鍵を解くという暗号解読の常識そのものが覆されます。
未知のリスクとセキュリティホールに対処するために、AES256で暗号化したZipファイルを、さらに無限鍵で暗号化する2重暗号にしました。AES256と無限鍵では数学的原理がまったく異なっていますので、どちらかにセキュリティホールが見つかっても、どちらかは生き残ります。
開発中に苦労した点
現代暗号とは数学的発想がまったく異なっているので、過去の知識が役立たず、その検証作業に多大な時間が掛かってしまいました。
現代の主流暗号である算術暗号(計算式によって暗号文を作る方式)は、作成された暗号文の中に演算規則が残っています。当たり前ですね。その演算規則を利用して復号(計算で元に戻す)しているわけですから。ところが、この暗号文の中に残っている規則性は、解読者に解読の手掛かりを与えてしまいます。作業の途中でそれに気がつきました。その規則性を利用すれば、解けてしまう可能性が見つかったのです。
そこで基本に立ち返って、計算によらないで暗号文を作る方式に変更しました。最大1億枚のランダムな乱数表を、1文字ごとにランダムに変更し、適用する置換暗号として実装しました。その元ネタになる、1億枚のユニークな乱数表を準備するのが結構大変でした。本当にユニークになっているのか、重複した乱数表が混じっていないか、作成と確認に数ヵ月かかりました。
ユーザにお勧めする使い方
このソフトは、ユーザとして下記の方々を想定しています。
- インターネットに大量のファイルを晒す人
- 海外との取引がある会社
- 複数の相手先とファイルをやり取りしている会社
- おっちゃんやおばちゃん
インターネットを使う場合、2重暗号をお勧めします。AES256単体でも暗号としては十分な強度を持っていますが、未知のリスクへの耐性がより高くなります。AES256をアメリカがこっそり解いている場合も有効です。このソフトでは、複数のパスワードを名前を付けて登録できます。相手先が多い場合は便利かと思います。通常のZipツールとしても使えます。
おばちゃんを想定しています。機能と操作性をできるだけ単純化しました。アイコンにファイルやフォルダをドラッグ&ドロップしてもそれなりに、期待した通りに動くように設計しています。
今後のバージョンアップ予定
余力があれば、Android等への移植をやってみたいと思っています。
読者プレゼント
鍵のサイズを6byteから10byteに拡張する解除キーです。使用する鍵の長さが長くなるので約40億倍、余分に解読時間がかかるようになります。鍵のパターン数は約10の24乗です。互換性には問題ありません。パスワードもそのまま同じものを使い続けても問題ありません。
【解除キーの登録方法】
- メイン画面のメニューバーの「オプション」→「解除キー登録」で、解除キー登録画面を開いてください
- 名称欄に「ニイタカヤマノボレ」、解除キー欄に「HJEM BEOO MDOM KNME」を入力してください
再起動後、画面左上の表示が「6・12]から「10・14」に変わります。鍵長が10byte(元は6byte)、使用する乱数表の数が2の14乗=約16,000枚(元は4,000枚)になります。ぜひ、安全なインターネットライフをお楽しみください。
(三好 清二)