TrueCryptのレビューレポートを読んでみた

TrueCryptの監査が終わったらしいニュースを見つけたのですが、日本語で解説してるサイトが見つからず。
特にSeverityが高い脆弱性2件が気になったので、ちょっとだけ読んでみた。
大雑把な上、内容は保証しないので、以下を読む方は自己責任で。

読んだニュースのページとレポートは以下の場所で公開されている。
ニュースのページ:http://www.extremetech.com/computing/202610-security-review-finds-no-critical-flaws-in-truecrypt-7-1a
レポート:https://opencryptoaudit.org/reports/TrueCrypt_Phase_II_NCC_OCAP_final.pdf

レビューレポート概要

一言で言えばNSAによるバックドアは見つからなかったが、4つの脆弱性が見つかった、とのこと。
見つかった脆弱性は以下の4つで、簡単にセキュリティ機能をバイパスできるようなものはなさそう。

  1. CryptAcquireContext may silently fail in unusual scenarios

    • Severity: High
    • Difficulty: Undetermined
    • mandatory profile(固定ユーザプロファイル)などの環境下ではキーコンテナが正常に初期化されない。
    • 再現する例として、会社管理のマシンでTrueCryptのボリュームを作成した場合が挙げられている。
  2. AES implementation susceptible to cache-timing attacks

    • Severity: High
    • Difficulty: High
    • キャッシュタイミング攻撃に弱いAESの実装が使われており、AESの鍵が解析される可能性がある。
    • 攻撃が成功するかどうかは攻撃者のネイティブコードのスキル次第だが、最近はJavaScriptによる攻撃手法も研究されている。

    • 回避策としてはIntel 64bitのAES-CTRの実装を使うとよい。その他、圧縮テーブルを使うことで攻撃が難しくなる。

  3. Keyfile mixing is not cryptographically sound

    • Severity: Low
    • Difficulty: High
  4. Unauthenticated ciphertext in volume headers

    • Severity: Undetermined
    • Difficulty: High

考察

1.については、これが再現しない環境でボリュームを作成していればリスクはなさそう。
2.についてはキャッシュタイミング攻撃を仕掛けられればの話。
あまり詳しくないのだけど、おそらく暗号化/復号処理が実行されている時の話だと思う(誰か詳しい人いたら教えてほしい)ので、コンテナファイルだけの状態では破れないと思っているんだけど…どうなんだろうか。
推奨されている内容はおそらくいずれもソースコードを修正しないと適用できないと思われる。
Intelの件はハードウェアの実装を使うと良いってことなんだろうけど、ボリューム作成時のアルゴリズムを見るとオペレーションモードはXTSらしいので使われていないはず。

所感

拙い英語力とセキュリティの知識で読んでみたけど、予想以上にディープな内容だった。
簡単に破られるような脆弱性ではないと思うし、自分の用途ではそんなに致命的ではないと思うので使用継続で良いかな、と。
むしろ、個人で開発してたソフトウェアなのにこれだけしか脆弱性が見つからなかった点に感心してしまった。
これだけ読むのでも結構調べながらだったので、もっとすらすら読めるように幅広いセキュリティの知識を身に付けたい。

関連記事


  1. Spring Security + ThymeleafでAjaxリクエストにCSRF対策トークンを適用
  2. 一部のパスだけSpring SecurityのCSRF対策を無効化する
  3. SRIによってCDN上のスクリプト改ざんを検知する
  4. OpenSSL+パスワードでファイルの暗号化/復号処理
  5. Google ChromeのSSL/TLS暗号化アルゴリズム設定

tosi avatar
tosi
Web Application Engineer, Java / Spring / Azure / GCP
comments powered by Disqus