安心して使ってもらうための工夫
大切なファイルとパスワードを預けてもらうソフトだから、見えないところこそ、ていねいに。
最近は AI を使って、ソフトの弱いところを探したり、そこをねらうファイルを作ったりすることが、ずっと手軽になりました。メールやダウンロードで届く圧縮ファイルは、開く前に中身を確かめにくいので、昔からいたずらや攻撃に使われやすいものです。
Vault-ZIP では、次の 6 つの工夫をしています。「気を付けて作りました」で終わらせず、仕組みと試験で確かめられる形にしているのがこだわりです。
1. ほころびにくい言葉で書いています(Rust)
Microsoft や Google は、自社の製品の深刻な弱点のおよそ 7 割が、メモリの扱い方のまちがい(決められた場所の外を読み書きしてしまう、など)から生まれていると報告しています。こうしたまちがいは、C や C++ という言葉で書かれたソフトで起きやすいものです。
Vault-ZIP の本体は Rust で書いています。Rust は、こうしたまちがいを、プログラムを作る段階で見つけて止めてくれる言葉です。外から届いたファイルにふれる部分(圧縮、展開、暗号、名前のチェック、台帳)の大半が Rust です。
正直にお伝えすると、すべてが Rust というわけではありません。RAR の展開(RAR の作者のライブラリ)、台帳を暗号化して保存するデータベース(SQLCipher)、画面を描く部品(Microsoft の WebView2)は C や C++ の部品です。RAR の展開は、42,000 個の壊れた RAR を読ませても止まらないことを確かめています。
2. 届いたファイルは、まず疑ってみます
展開する前と、展開しているあいだに、こんなことを確かめています。
- フォルダーの外には書かせません:
../などで外へ書き出そうとする名前は、何かを書く前に止めます。 - ショートカットのような仕掛けは作りません:別の場所を指すリンク(シンボリックリンクなど)は作りません。
- 見た目でだまされません:画面では
invoiceexe.pdfと PDF のように見えるのに、本当は .exe のプログラム、という名前があります。名前の途中に、文字の向きを逆にする見えない文字(U+202E)がまぎれているためです。こうした名前は置き換えて、お知らせします。 - 「小さいです」をうのみにしません:書いた量を自分で数えて、開くと巨大にふくらむファイル(ZIP 爆弾)を止めます。
- 壊れたファイルでも慌てません:途中でおかしなところが見つかったら、そこで止めます。作りかけのファイルを完成品として残しません。
3. 弱いところは、先に自分で探します(ファジング)
ファジングは、機械で壊れたファイルや変な名前をたくさん作って読ませ続け、止まってしまうところを探す試験です。弱いところを探す人や AI と同じ方法を、お届けする前に試しています。
- 展開:35 分間、壊れた圧縮ファイルを読ませ続ける
- ファイル名のルール:300 秒で 185,581 通りの名前
- PDF の暗号化:900 秒で 31,581 通りの PDF
- 何のファイルか調べる機能:900 秒
どれも、止まる、固まる、メモリがおかしくなる、といった問題は見つかっていません。さらに、いたずら目的の圧縮ファイルの手口を一つずつ再現した自動テストを、変更のたびに動かしています。
4. 勝手には外とつながりません
インターネットにつながる入口がなければ、そこからねらわれることも、データがもれることもありません。Vault-ZIP には、更新の自動確認、使い方の送信、ライセンスの確認のための通信、アカウントがありません。
画面を描く Microsoft の部品(WebView2)が自分で行う通信も止めています。計測では、起動してから 100 秒のあいだ、外への接続は 0 件でした。
5. パスワードは、人にも記録にも見せません
- コマンドに書かせません:コマンドライン版は、パスワードを標準入力でだけ受け取ります。コマンドの文字列は、ほかのプログラムやログ、お仕事を任せた AI エージェントや RPA の記録から見えてしまうことがあるからです。
- ログに残しません:パスワードは専用の入れ物に入れて、使い終わったらメモリから消します。ログやエラーの文、JSON の出力にも出しません。
- 見る前に本人確認:台帳のパスワードは「表示」を押したときだけ出します。その前に Windows Hello などで本人確認をします。
- クリップボードに残しません:コピーしたパスワードは、クリップボードの履歴やクラウドへの同期に入れず、しばらくすると消します。
- 画面に写しません:設定で、パスワードを表示しているウィンドウを、画面共有や録画、スクリーンショットに写さないようにできます。
6. こわさない、変えられたら気づきます
- 上書きしません:同じ名前があれば (2) を付けます。上書きを選んだときも、別の名前で完成させてから一度に置き換えるので、途中で失敗しても元のファイルは残ります。
- 確かめてから完成:作った ZIP を読み直して、全部のファイルが元どおり取り出せることを確かめます。元のファイルをごみ箱へ移すのは、その確認が済んで、元のファイルが ZIP と一致したときだけです。
- 書き換えに気づきます:AES の ZIP は、ファイルごとの確認用の値(HMAC)が合わなければ失敗にします。これは「暗号化したデータが変わっていない」ことの確認で、作った人が誰かの証明ではありません。
- 台帳をなくしません:バックアップの読み込みに失敗しても、今の台帳と鍵はそのまま残ります。台帳の鍵が見つからないときに、新しい鍵で上書きすることもありません。
できないことも、お伝えしておきます
- ZIP の中のファイル名は、ZIP の決まりで暗号化されません。名前も隠したいときは、ZIP をもう一つの ZIP に入れてください。
- 暗号の強さは、パスワードの強さで決まります。Vault-ZIP が自動で作るパスワードを使うのがおすすめです。
- PC そのものが乗っ取られてしまった場合(管理者の権限を持つウイルスなど)は、どのソフトでも守れません。ウイルス対策ソフトの代わりにもなりません。
- 今はまだコード署名をしていません。ダウンロードしたファイルは、SHA-256 の値で確かめてください(ダウンロード)。
弱いところを見つけたときの連絡先は、セキュリティのページにあります。