アカウント名:
パスワード:
動画見た感じだとブラウザで暗号化するのかな。リンクもブラウザで生成してサーバ経由しないなら安心。でも復号キーもリンクに含まれるんだから、結局ダウンロードすればMozilla側に漏洩するってことだよね。
ソース [github.com]を読んでみた。
モダンブラウザーが必要な理由は、暗号化・復号にWebCrypto APIを使っているから。あと暗号化を全部メモリ上でやっているので、(1GB制限しなくても)あまり大きすぎるファイルはメモリ不足で扱えない。
Windowsなら「仮想メモリ」設定で「ページング ファイルなし」にしていない限り、大きいファイルでも仮想メモリが使われるだけなので、メモリ不足で扱えないなんてことは起こりません。
暗号鍵とかそういう機密データがHDDやSSDにスワップするのはセキュリティ上好ましくないからといってもWindowsは欠陥OSなのでアプリ側からスワップを回避するのは困難(というかOSのカーネルレベルを書き換えないと無理)ですだから、WebCrypto APIもスワップを完全
Win32APIのVirtualLock()が機能しないケースがあるってこと? 初めて聞いたしググっても出てこないな。ソースあります?
自己レス。適切な解説 [microsoft.com]を見つけた。
というわけで、WindowsではAWE関数を使えばできるが、セキュリティの目的ならばメモリ上に維持することに血道を上げるのではなく、CryptProtectData()/CryptUnProtectData()を使うのが正しい。これによって、秘密データを生のまま保持する時間を極めて短時間にできる。これによってスワップファイルへのオフラインクラックのリスクも極小になるが、さらにそれも防止したいなら、これにBitLockerを組み合せろということなんだろう。
VirtualAlloc()の動作は、これのAPIが専らパフォーマンス向上目的であることを考えればそんなに不思議でもない。スレッドが停止しているときにメモリだけ確保する意味はないので。停止しない処理に対して使う限りは、意図通りに作用してくれるだろう。
全体として、合理的でセキュアな設計だと思う。TrueCryptの作者がAWE関数群を知らなかったのは、不勉強だったというしかないな。
非常に参考になった。参考になるとか、素晴らしい洞察のモデをあげたいところだが、ACなのでモデ権がないのが残念でならない。
そもそもVirtualLock()の仕様読めよ
元コメだけど、読んだ上で書いたのよ? あなたこそ読んだの?
以下のように、「ページファイルに書かれないことが保障される」とはっきり書いてある(要するにドキュメントの誤り)。
Pages that a process has locked remain in physical memory until the process unlocks them or terminates. These pages are guaranteed not to be written to the pagefile while they are locked.
https://msdn.microsoft.com/en-us/library/windows/desktop/aa366895(v=vs... [microsoft.com]
このドキュメントが誤りであることは、#325824
A.8.4 Pageant は VirtualLock() を使って秘密鍵がディスクに書き込まれないようにできませんか [ranvis.com]
残念ながらできません。 Windows API の VirtualLock() は適切に動作しません。プロセスの動作中にプロセスメモリの一部がディスクにページアウトしないようにできますが、プロセスが長期間非アクティブなときにプロセスメモリ全体をディスクにスワップアウトしないようにはできないのです。
ほかにも罠があって、この関数は成功すると0以外の値が返る仕様なのに、Windows 9x だと常に失敗するのに成功扱いの「0以外」が返っ [microsoft.com]
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
ハッカーとクラッカーの違い。大してないと思います -- あるアレゲ
暗号化 (スコア:0)
動画見た感じだとブラウザで暗号化するのかな。
リンクもブラウザで生成してサーバ経由しないなら安心。
でも復号キーもリンクに含まれるんだから、結局ダウンロードすればMozilla側に漏洩するってことだよね。
Re: (スコア:2, 参考になる)
ソース [github.com]を読んでみた。
メモリ不足でも「仮想メモリ」が使われるだけ (スコア:1)
モダンブラウザーが必要な理由は、暗号化・復号にWebCrypto APIを使っているから。
あと暗号化を全部メモリ上でやっているので、(1GB制限しなくても)あまり大きすぎるファイルはメモリ不足で扱えない。
Windowsなら「仮想メモリ」設定で「ページング ファイルなし」にしていない限り、
大きいファイルでも仮想メモリが使われるだけなので、メモリ不足で扱えないなんてことは起こりません。
暗号鍵とかそういう機密データがHDDやSSDにスワップするのはセキュリティ上好ましくないからといっても
Windowsは欠陥OSなのでアプリ側からスワップを回避するのは困難(というかOSのカーネルレベルを書き換えないと無理)です
だから、WebCrypto APIもスワップを完全
Re:メモリ不足でも「仮想メモリ」が使われるだけ (スコア:0)
Win32APIのVirtualLock()が機能しないケースがあるってこと? 初めて聞いたしググっても出てこないな。
ソースあります?
Re:メモリ不足でも「仮想メモリ」が使われるだけ (スコア:1)
自己レス。適切な解説 [microsoft.com]を見つけた。
というわけで、WindowsではAWE関数を使えばできるが、セキュリティの目的ならば
メモリ上に維持することに血道を上げるのではなく、CryptProtectData()/CryptUnProtectData()を使うのが正しい。
これによって、秘密データを生のまま保持する時間を極めて短時間にできる。
これによってスワップファイルへのオフラインクラックのリスクも極小になるが、さらにそれも防止したいなら、これにBitLockerを組み合せろということなんだろう。
VirtualAlloc()の動作は、これのAPIが専らパフォーマンス向上目的であることを考えればそんなに不思議でもない。
スレッドが停止しているときにメモリだけ確保する意味はないので。
停止しない処理に対して使う限りは、意図通りに作用してくれるだろう。
全体として、合理的でセキュアな設計だと思う。
TrueCryptの作者がAWE関数群を知らなかったのは、不勉強だったというしかないな。
Re: (スコア:0)
非常に参考になった。
参考になるとか、素晴らしい洞察のモデをあげたいところだが、ACなのでモデ権がないのが残念でならない。
Re: (スコア:0)
そもそもVirtualLock()の仕様読めよ
Re: (スコア:0)
元コメだけど、読んだ上で書いたのよ? あなたこそ読んだの?
以下のように、「ページファイルに書かれないことが保障される」とはっきり書いてある(要するにドキュメントの誤り)。
Pages that a process has locked remain in physical memory until the process unlocks them or terminates. These pages are guaranteed not to be written to the pagefile while they are locked.
https://msdn.microsoft.com/en-us/library/windows/desktop/aa366895(v=vs... [microsoft.com]
このドキュメントが誤りであることは、#325824
Re: (スコア:0)
Win32APIのVirtualLock()が機能しないケースがあるってこと? 初めて聞いたしググっても出てこないな。
ソースあります?
A.8.4 Pageant は VirtualLock() を使って秘密鍵がディスクに書き込まれないようにできませんか [ranvis.com]
ほかにも罠があって、この関数は成功すると0以外の値が返る仕様なのに、Windows 9x だと常に失敗するのに成功扱いの「0以外」が返っ [microsoft.com]