Nexus 7 を買った。
技術者としてまずやるべきことを書いておく。
セキュリティの確保
Android タブレットは Linux カーネルを採用している。 Nexus 7 でも Linux カーネルに標準搭載されている dm-crypt を利用してタブレットに保存されたすべてのデータを暗号化することが可能だ。技術者たるもの手持ちのタブレットから情報が漏洩してソーシャルネットワークをハックされたり、ましてや自分の管轄するサーバーがクラックされるようなことがあってはならない。もちろん暗号化したから絶対に安全というわけではないのだが、タブレットが盗難にあった場合でも暗号を解除される前にセキュリティを変更して対処することが可能である。
現在はカジュアルに軍事利用可能なレベルの暗号を利用でき FBI も犯罪捜査の暗号解除に失敗するような時代である。技術者なら手持ちのすべてのデータは可能な限り最高レベルのセキュリティで保護するべきであり、脆弱なセキュリティを利用するなど笑止千万である。 128-bit AES のようなレベルの低いセキュリティを採用するアップル製品と異なり Linux カーネルの強力な暗号機構を利用できることも Android の魅力である。
暗号通信経路の確保
デバイスの暗号化が完了したらまずは一安心、次は暗号通信経路の確保である。暗号通信といえば当然 ssh が標準である。 Nexus7 では公開鍵認証に対応した Android 用 SSH クライアントである ConnectBot が利用できる。
手順としてはまず GNU/Linux 等で Nexus7 用のパスフレーズ付き秘密鍵を生成する。次に適当な方法でこれを Nexus7 の /sdcard/ に配置する。ファイルマネージャーとしては ES File Explorer というのが比較的使いやすいのでこれを利用すると良いだろう。次に ConnectBot 側から秘密鍵をインポートして取り込む。インポート後 /sdcard/ に置いた秘密鍵は忘れずに削除しておく。あとは自分の管轄するサーバー側で公開鍵を取り込んでやれば完了である。公開鍵の管理に際しては手動でおこなうとオペレーションミスの原因となるため、スクリプト言語等を利用して一元管理する仕組みを作っておくと良い。 ssh 接続はごく普通に以下のように可能である。
標準のキーボードでも操作は可能だが GNU screen や Emacs を扱うにはさすがにツライので専用のキーボードが必要である。そこで PC とほぼ同等の入力が可能な Hacker's Keyboard を使うと良い。設定変更して 5 段のキー配置にすることで Ctrl などの Modifier key を多用する操作もかなりスムーズにできるようになる。
アプリケーションをむやみに信用しない
さて、せっかく完璧な暗号化を施してもアプリケーションが勝手に情報を第三者に送信していたら一溜まりもない。そこで tcpdump 等を利用して通信経路を検証可能なネットワーク環境を用意し、アプリケーション起動状態で意図しない通信がおこなわれていないか検証するべきである。特にキーボードソフトウェアはキーロガーが仕込まれている脅威を考えると検証が必要であろう。本来なら Android にインストールされたあらゆるソフトウェアをリバース・エンジニアリングする必要があるのだが、さすがに現実的にはそこまではできないので標準的なソフトウェアについては信頼しても良いかもしれない。また最近では悪意のあるリバース・エンジニアリングを防ぐためアプリケーションを難読化するということもおこなわれるようになっており、そういったソフトウェアを利用するときは悪質なコードが含まれていないか十分な注意が必要である。
その他
ここまで来ればひと通り完成である。あとは好きなアプリを入れて適当に使えば良いのだがそういう話は tyoro という人がブログに書いてくれているのでそれを参考にすれば良い。