以下のサイトで、安全なメッセージアプリの比較・採点が行われています。採点項目は7項目あり、全てをクリアしているのは
https://www.eff.org/secure-messaging-scorecard
以下の記事もほぼ同様のアプリを指示している結果を示しています。
The State of Mobile, Cross-Platform, Encrypted Messaging
https://missingm.co/2014/02/fighting-dishfire-the-state-of-mobile-cross-platform-encrypted-messaging/
- ChatSecure
- XMPPという方式による暗号化メッセージ、無料iPhone・Androidアプリ
- Cryptocat
- 暗号化メッセージ、無料iPhoneアプリ、ブラウザ機能拡張、互いが同時に起動していないとメッセージのやりとりができない
- Signal
- 暗号化通話、無料iPhoneアプリ、Whisper Systems
- RedPhone
- 暗号化通話、無料Androidアプリ、上記Signalと互換性あり、Whisper Systems
- Silent Phone
- 暗号化通話、有料iPhone・Androidアプリ、Silent Circle社、性能はよさそうだが高額なのが難点
- Silent Text
- 暗号化メッセージ、有料iPhone・Androidアプリ、Silent Circle社、性能はよさそうだが高額なのが難点
- TextSecure
- 暗号化メッセージ、無料iPhoneアプリ、Whisper Systems
以上の7つのアプリが、7項目の厳しい基準をクリアした安全な通信が可能なものということになります。この中でも、無料であること、iPhoneでもAndroidでも利用可能なこと、から、Whisper systemsのiPhone用アプリSignalと、同じくAndroid用アプリRedPhoneが優れているということになります。これらは通話用なので、メッセージのやりとりはできませんが、非常の高いレベルでセキュリティーが守られていることになります。
ちなみに、Whisper Systemでは、近い将来Signal, RedPhone, TextSecureを統合して、Signalという一つのあぷりでiPhone用とAndroid用を用意し、一つのアプリで暗号化通話と、暗号化メッセージの両方に対応する予定だそうです。そうなると、セキュリティ対策として非常に役立つアプリになります。
チェック項目は、
- 「Encrypted in transit?(トランジットで暗号化がされているか?)」ユーザーの通信経路は全て暗号化されている必要がある、とのこと。ただし、ユーザーネームやアドレス情報のようなメタデータの暗号化までは考慮していない。
- 「Encrypted so the provider can’t read it?(プロバイダーに分からないように暗号化が施されているか?)」この基準は、ユーザーの通信がエンドツーエンドで暗号化されているべき、という理念から設けられた項目。通信経路でメッセージの内容が傍受されないように、メッセージを暗号化するわけですが、これを届けた後は暗号化されたメッセージを解読する必要があります。その解読のための鍵が生成されたり保存されたりするのは、通信経路にあるサーバーやメッセージを送信したユーザーの元ではなく、メッセージを受け取る側のところであるべき、とのこと。
- 「Can you verify contacts’ identities?(連絡先を確認可能か)」例えばサービスプロバイダーやその他の第三者が危険にさらされた場合に、ユーザーや通信相手の身元を確認する方法が存在するかどうかをチェックする項目がコレ。なお、以下のスコアカードではメカニズムが実行されることを要求しているだけで、その有用性やセキュリティ面は評価の対象となっていない。
- 「Are past communications secure if your keys are stolen?(鍵が盗まれた場合でも、過去の通信が安全かどうか)」全ての通信が暗号化され暫時の鍵で解読されるわけですが、鍵は期間を過ぎると削除されてしまいます。これらの鍵が復元不可能であることは、暗号化にとって絶対に必要な要素である、とのこと。
- 「Is the code open to independent review?(コードが開かれているか?)」これは、互換性を持つインプリメントを独立してコンパイルできるくらいに、ソースコードがしっかりと公開されているかどうか、というもの。全てがオープンソースである必要はありませんが、バグやバックドア、構造的欠陥がないかを確認できるだけのコードの開示は必要、ということのようです。
- 「Is security design properly documented?(セキュリティ・デザインは正しく文章化されているか?)」アプリケーションで使用されている暗号化の方法が明確に説明されているかどうか。
- 「Has the code been audited?(コードがしっかりと監査されているか?)」これは、独立したセキュリティ調査が12カ月以内に行われたかどうか、という項目。