ご存知の通り、弊社は初のポスト量子セキュアメール及びクラウドプロバイダーになることを計画しております!
今回のアップデートにより、Tutanotaの全てのデータを暗号化する暗号化キーの生成に使用されるパスワードは、bcryptではなくArgon2で保護されるようになりました。
なぜArgon2に変更するのか?
Tutanotaが登場した当初、bcryptはパスワードを暗号キーに変える最良の方法でした。bcryptは、パスワードを192個のランダムなビットに変換し、暗号鍵として使用することができます。これは、ほとんどの人のパスワードが持つエントロピーよりもはるかに大きい。
というのも、グルーバーのアルゴリズムを実行できる量子コンピューターが登場すれば、128ビットの鍵は安全ではなくなってしまうからだ。しかし、数学に詳しい方なら、256は192より大きいことにお気づきだろう。
** ではどうすればいいのか?
例えばSHA-256でハッシュ化することで192ビットを引き伸ばすことができる。
しかし、もっと良い方法があるのに、なぜそんなことをするのでしょうか?
Argon2の登場
Argon2はパスワード・ハッシュ・コンペティションで優勝した。このアルゴリズムは現在、OWASP Foundationを含むほとんどの最新のガイドラインで推奨されています。
Argon2は、bcryptに比べ、メモリ硬度やサイドチャネル耐性など、多くの改善点をもたらします。
Argon2は全てのクライアントで使用できますか?
私たちが使いたいアルゴリズムが決まったら、私たちがサポートしているすべてのプラットフォームでこれを実際に使うにはどうしたらいいかという問題が残りました:アンドロイド、iOS、デスクトップクライアント、ウェブ。主な問題は、JavaScriptの実装がないこと、少なくとも私たちが使用を検討するようなものがないことだ。しかし、WebAssemblyにコンパイルされたリファレンスC実装のJavaScriptバインディングはいくつかある。
WebAssemblyは、ほとんどすべてのプログラミング言語で書かれたコードをウェブ・ブラウザ上で実行できるようにする技術だ。
私たちもそれを使うことに決めたが、最もきれいなコードで最高の読み込み時間を得るために、私たちは独自の最小限のグルーを書くことにした。
なぜWebAssemblyを使うのか?
WebAssemblyは、長い間すべての主要なブラウザでサポートされてきました。そのため、セキュリティとスピードの面ですべてのTutanotaユーザーに最高の結果をもたらすこのソリューションを選択しました。
小さな欠点として、WebAssemblyはすべての主要なブラウザでサポートされていますが、iOSのロックダウンモードなど、いくつかの状況ではまだ利用できません。
Cコードを純粋なJavaScript(asm.js)にコンパイルすることで、この要件を完全に回避することも考えましたが、それではアプリの動作が遅くなりすぎて実用的ではありません。
しかし、私たちはモバイル・アプリにネイティブ実装を使用する予定であり、これによってパフォーマンスが向上し、これらのクライアントの要件が取り除かれる。
Argon2でよりセキュアな新しいパスワード保護を誰もが使えるようにするため、WebAssemblyで問題を起こす可能性のあるすべての環境の人々に、セキュリティレベルを向上させるためにこれが必要であることを知らせています。
他のプロバイダーは何をしていますか?
GoogleやOutlookのようなプロバイダとは異なり、私たちはパスワードを認証のためだけに使用するのではなく、暗号化されたすべてのデータのロックを解除する鍵を生成するためにも使用します。
Argon2は、上記で説明したように、bcryptよりも優れており、暗号化されたデータをより安全にすることができます。
現在までのところ、弊社の競合他社でArgon2を使用しているところはありません。Argon2へのアップグレードというステップにより、弊社が最も安全なEメールプロバイダーであることを改めて証明することになります。
何をする必要がありますか?
ほとんどのユーザーは何もする必要はありません。
WebAssemblyに問題があるシステムを使用している場合、警告が表示されることがあります。
Torブラウザでこの警告が表示される場合は、以下のいずれかを行ってください:
- Torブラウザのセキュリティレベルを標準に変更する。
- 実行中のTorインスタンスをプロキシとして使い、別のブラウザを起動する。
iOSのLockdown Modeの場合、ブラウザではなくTutanotaアプリを使用することを強くお勧めします。iOSのロックダウンモードでブラウザを使用する場合、Tutanotaウェブクライアントの例外を追加する必要があります。
Androidで問題が発生した場合は、WebViewを更新してください(Androidでブラウザを使用する場合にのみ必要です)。
必ずサポートされているブラウザかTutanotaデスクトップクライアントを使用してください。
bcryptからArgon2に変更することで、お客様のセキュリティレベルを向上できることを嬉しく思います!