web-dev-qa-db-ja.com

VeraCryptがTrueCryptよりも安全なのはなぜですか?

不思議な「TrueCryptの使用は、未修正のセキュリティ問題が含まれている可能性があるため、安全ではありません」( ソース

昨日SlashdotはVeraCryptをより良い代替品として報告しましたsource )それはいくつかのKDF反復値(おそらく#definesコード内:/)

これはなぜですか?まともなサイズのパスフレーズでKDFをハッキングすることは依然として非常に難しいため、TrueCryptの元の問題は反復値であったとは思えません。言い換えれば、そもそもKDFが弱点だったのではないかと思います。そのため、VeraCryptの変更点は、ガラス窓がたくさんある家に鋼の金庫室の扉を設置するようなものです。

では、どの証拠で、VeraCryptはTrueCryptよりも安全であると考えることができますか?

6
DeepSpace101

コードのレビューとテストを通じてのみ。

反復の変更により、コードのこれらの領域は総当たり攻撃に対してより弾力的になる可能性がありますが、反復は考慮する必要のあるアーキテクチャ全体の一部にすぎません。

4
schroeder

プロジェクトのメンテナから直接(クレジット this thread

VeraCryptは、反復回数を増やすことで、元のTrueCryptよりもセキュリティを強化するだけでなく、ソースコードでこれまでに発見されたすべての深刻なセキュリティ問題と弱点も解決します。これらの弱点の良いリストは https://opencryptoaudit.org/reports/iSec_Final_Open_Crypto_Audit_Project_TrueCrypt_Security_Assessment.pdf にあります。

これらのセキュリティの変更はgitコミットで文書化されています。重要なものは、「Windows脆弱性修正」と「静的コード分析」から始まります。 Open Crypto Auditプロジェクトの場合は、リストを使用します。

  1. 弱いボリュームヘッダーキーの派生アルゴリズム:VeraCryptの誕生以来修正されました。 2014年の時点で、セキュリティ専門家は、強力なパスワードと組み合わせて高度なセキュリティを実現するために、PBKDF2を最低10000反復で使用する必要があると言っています。 1000カウントは2004年のものであり、古くなっているため、Open Crypto Auditはこれを最初の脆弱性と位置付けました。 VeraCryptでは、2013年以降、増加するセキュリティ要件を満たすために非常に高い反復回数を選択しています。できれば次の10年間は​​そうする予定です。

  2. ブートローダー解凍器の複数の問題:gitで修正され、バージョン1.0fでリリースされる予定です。ブートローダーのサイズ要件のため、これは非常に困難でした。圧縮解除プログラムを変更する余地を作るために、多くの部分のコードサイズを最適化する必要がありました。

  3. Windowsカーネルドライバーはmemset()を使用して機密データを消去します:バージョン1.0e以降で修正されましたTC_IOCTL_GET_SYSTEM_DRIVE_DUMP_CONFIGカーネルポインターの開示:バージョン1.0e以降で修正されました

  4. IOCTL_DISK_VERIFY整数オーバーフロー:バージョン1.0e以降で修正

  5. MainThreadProc()整数オーバーフロー:バージョン1.0e以降で修正
  6. MountVolume()デバイスチェックバイパス:バージョン1.0e以降修正
  7. GetWipePassCount()/ WipeBuffer()はBSODを引き起こす可能性があります:バージョン1.0e以降修正されました

さらに、2つの静的コードアナライザーツールを使用してVeraCryptソースコードがチェックされ、解決された多くの問題が報告されました(「静的コード分析」で始まるコミット)。最も時間のかかる部分の1つは、脆弱なstring.h関数(ユーザーモードとカーネルモードの両方)の代わりにSafe String関数を使用するための文字列操作コードの完全な書き換えでした。その他の修正が含まれています:

  • メモリリークの修正
  • 悪用される可能性のある言語ファイルを解析する際の潜在的なオーバーフローを修正します。
  • ハイジャックされる可能性のある非絶対DLL /プロセスロードを修正します(Microsoft Security Advisory 2269637)。

TrueCryptのコードの多くを継承しましたが、全体的なセキュリティを大幅に強化する多くの変更と修正を導入しました。もちろん、これらの変更のほとんどは一般ユーザーには見えませんが、セキュリティの専門家はコードの現在の状態を簡単に確認し、アプローチを検証できます。

この機会に、システムブート暗号化(200 000回の反復)のためにSHA-256キーの派生を実装できたことをお知らせします。 TrueCryptは常にシステムパーティションの暗号化のためにRIPEMD-160のみをサポートしており、RIPEMD-160が古くなっているため、パブリック攻撃がない場合でも、アップグレードが明らかに必要でした。ブートローダーのさまざまな制限(コードサイズ、メモリ)のため、これは簡単な作業ではなく、RIPEMD-160およびSHA-256をサポートできるようにするために、VeraCryptフォーマットプログラムに最適化と新しいブートローダー管理を導入する必要がありました。同時に。

ユーザーからのフィードバックを得るために、このSHA-256を含むVeraCrypt 1.0fのベータ版をまもなく公開します。

なぜブートローダーにSHA-512ではなくSHA-256を実装したのか疑問に思う方のための答えは、ブートローダーの16ビット環境でSHA-512を実装することは不可能であったということです。 16ビット演算に効率的に分解しないでください。一方、SHA-256は32ビット操作を使用しており、パフォーマンスが低下した場合でも16ビット環境に容易に適応します。

Voila voila ...私はあなたの質問に答えて、VeraCryptがTrueCryptの降下安全な代替品であることを示すことができたことを願っています。

乾杯、

2
DeepSpace101