T100TA:Truecrypt の力を借りて microSD カードの実用性を上げるメモ

<重要>
14/5/30追記
29日から,Truecrypt 公式ウェブサイトがダウンし,sourceforge 上のプロジェクトページで開発中止の告知と利用中止の呼びかけがされています。しかし不自然,不可解な点が多く,ウェブサイト改竄や米政府当局による圧力などの可能性も指摘されています。まだ正確なことは判明していませんが(考察や議論はここここ,twitter 検索などで),以下の二つを徹底してください。
・現在の Truecrypt ウェブサイトで新規公開されたバージョン「7.2」(復号のみ)は危険な可能性があるので,決してインストールしない。ウェブサイトにもなるべくアクセスしない。
・この騒動以前の最終バージョンである「7.1a」は安全と見られるが,改竄の可能性を指摘する声もあるので,正確な情報が判明して騒動が落ち着くまでは極力使用しないようにする。もちろん,この記事の内容も実践しないこと。

14/8/5追記
Truecrypt の件,今なお詳細が明らかになったわけではありませんし,コード監査も途中のようですが,7.1a 初公開当初のバイナリが世界中から提供され,ハッシュ値から現行 7.1a に改竄がないと判明したことから,世間ではひとまず安全らしいという話になっているようです。が,誰も安全だと保証しているわけではありません。この言葉は嫌いですが「自己責任」でお願いします。

 先月書いた記事の続編?です.
 あの記事で私は microSD の利用について「あくまでも補助的に」と述べました。この判断の理由としては,寿命についての懸念もありますが,やはり「何かの拍子に外れて紛失する恐れがあり,セキュリティ上好ましくない」というのが一番でした。しかしこの判断は,「データは暗号化されずに保存される」という前提に立ったものです。その前提を崩せば,すなわち microSD を暗号化ドライブとして利用すれば,内蔵 eMMC と同様に実用できるようになるはずです。「モバイルデバイスでそんなことしたら遅すぎて/CPU 負荷が大きすぎて使い物にならないんじゃないか」と思われるかもしれません。僕自身,おそらくこの「常識」ゆえにディスクを暗号化して使うという発想が今に至るまで出なかったのかもしれませんし,実際に試してみるまでは半信半疑でした。しかし,これが思いのほか実用的だったのです。
 microSD 上に置いた,Truecrypt で AES 方式で暗号化した仮想ドライブについて,前回と同じ条件(CrystalDiskMark,3回,100MB)でベンチを取ってみました。(画像で貼るほど重要でもありませんが)結果は以下です。
pic-20140426-101624
 以前にも増して物悲しい数字ですが,それでもまあ,きちんと用途を限定すれば使えないことはない速度が出ているかと思います。元が悪いので速度はある程度仕方ないとして,驚いたのは CPU 負荷の低さです。きちんと計測したわけではありませんし,処理の内容にもよって違うのですが,たとえばこのベンチマーク中も,CPU 負荷は最大でも22%までの間で推移しており,ほとんどの場合で10%未満に収まっていました。どうでしょう,まるで暗号化なんてしていないかのような低負荷ではないでしょうか。
 ここまでの低オーバーヘッド・低負荷が実現している理由は,Atom では Bay-trail から新しく追加された AES のハードウェアアクセラレーション機能「AES-NI」にあります。AES-NI 自体は目新しいものではないのですが,長らく Core i5 以上の CPU にしか搭載されてこなかった「贅沢機能」でした。それが,Haswell で全 CPU に搭載されるようになったのに合わせて Bay-trail から Atom/Celeron にも搭載されるようになったようです。Atom が組み込み用 CPU に毛が生えた程度のものだった数年前からすると,もはや隔世の感がありますね。
 寿命の心配は依然として残るわけですが,これで,ダウンロードディレクトリや Dropbox ディレクトリ,(それほど重要でない)ソフトの置き場としてなら,活用できる! というわけです。ただし注意として,あくまでも SD カードとして認識されているためか,Truecrypt では,ドライブやパーティションそのものを暗号化することができません。Windows XP までであれば偽のドライバでシステムを騙すというダーティなテクニックがありましたが,最近は署名のされていないドライバは使えないのでおそらくこれは利用できないかと思います。そのため,microSD に tc ファイルを置いて利用することになります。こうするとシステムの水準での起動時自動マウントはできませんので,利用方法によってはトラブルが発生することがあります。たとえば自分は暗号化仮想ドライブを Dropbox のファイル置き場として利用しているのですが,そのままでは Truecrypt によるマウントの完了より先に Dropbox アプリが起動してエラーになることがあります。そのため,スタートアップに置くスクリプトを少し工夫して書く必要があります。個人的には,以下の vbscript で対応しています(この言語には初めて触れました……)。

set objWshShell = WScript.CreateObject(“Wscript.Shell”)
objWshShell.Run “C:Progra~1TrueCryptTrueCrypt.exe /v (tc ファイルの場所) /lz /q /k (keyfile の場所)”,1,1
objWshShell.Run “C:Users(ユーザ名)AppDataRoamingDropboxbinDropbox.exe”

 Truecrypt の作業完了を待って Dropbox を起動させるという流れです。詳しくは後述の参考サイトをご覧ください。keyfile のありかを平文で記述していてセキュリティも何もないのですが,この用途ではこんなもんで充分なはずです。心配ならシステムドライブを暗号化すれば ok(少なくとも大幅にマシにはなる)でしょう。もっとも,取り外し不可の eMMC を採用しているこの機種でそこまでしても,捜査当局に追われているとかの場合以外には役には立たないと思いますが……
 それでは,よい T100TA ライフを。

参考: