HD DVDがコピー可能になったのは、、、

アプリケーションの実装が悪かったから、らしいです。
http://www.watch.impress.co.jp/av/docs/20070220/avt001.htm
しかし、ですねぇ、、、。

この実装が悪い実装か?

リンク先より

ちなみにWinDVDは128bitの鍵をメモリ上の連続したアドレスにそのまま配置していた上、
鍵が不要になった時点でメモリ内容をクリアする処理を行なっていたそうだ。
このため、メモリ内部のどこにProcessing Keyがあるか、メモリのモニタを行なっているだけで
類推できるという、非常に単純なミスが原因での鍵流出劇だったそうだ。

私は、鍵の扱い方として充分だと思った。

  1. 鍵自身は暗号化して保持
  2. 必要になったら、メモリ上に複合化
  3. 使い終わったら、クリア

とてもまっとうに思う。
ライブラリによっては、鍵をメモリ上の連続したアドレスに持たざるおえまい。

正解はなんだ?

  1. 鍵自身は特定の入れ替え・ソルト埋め込み後、暗号化して保持
  2. 必要になったら、メモリ上に複合化(入れ替え・ソルト埋め込み後のまま)
  3. 使用する際のみで、メモリ上に鍵を再現(先頭から順番に再現してはいけない)
  4. 鍵が不要になり次第、入れ替え・ソルト埋め込みを行う
  5. ゴミデータで隠滅する(先頭から順番に埋めてはいけない)


こんなところでしょうか。
しかし「特定の入れ替え・ソルト埋め込み」に弱点が残りますし、鍵が必要になるのは、まさに複合化しようとするタイミングそのものでしょうから、これでも丹念にやれば、ばれそうな気がする。
一方向ハッシュじゃあるまいし、完璧な暗号化なんてのはできないのですよね、、、。
(一方向ハッシュですら、破られるのだから、、、)


そういえば、S○NYの○penMG開発に絡んだ時、「特定の入れ替え・ソルト埋め込み」らしきコードを見たことあるなぁ。
暗号化の弱点に対する抵抗としては、スタンダードなのかも。