アカウント名:
パスワード:
> 「計算処理の実行時間が消費電力に依存する」 あたりまえやん。なぜこれで暗号化キーがわかるのか...よくこんなこと思いつくなぁ。すごい。
ものすごく単純なところだと、「入力されたパスワード」と「正しいパスワード」が等しいかどうかを、
for(int i = 0; i < パスワード長; i ++){ if(入力されたパスワード[i] != 正しいパスワード[i]){ return false; }}return true;
みたいな処理で判定していると「1文字目からいきなりが外れ」と「1文字目はセーブで2文字目が外れ」だと、後者の方が、ちょっとだけ処理に時間が掛かる。CPU時間をより多く消費する。
通らないのを前提に、1文字目の可能性を全パターン試して、1個だけ結果が帰って来るのが遅かったら、それが1文字目と確定する。1文字目を揃えて、同じように2文字目の全パターンを試して、3文字目を試して、とやってくと、最終的にはパスワード全部が分かる。
というところまでが前回までのあらすじで、今回はリモートでCPUの周波数の変動でその違いを観察できるって話かな。攻撃対象のサーバとそこそこ重たい通信をしつつ、それとは別途、パスワードかなにかをクラックするための通信を始める。クラック用の方の通信であれこれデータを投げつけると、その処理の仕方によってはCPUの周波数が高まって、そこそこ重たい方の通信速度が変動して観察できる、とかそういう。
パスワード比較でforの中にreturnがあるようなのはそもそも普通に脆弱性ですね。
消費電力量を測定できるような環境下で、ALUへの入出力に応じて(例えば変化するビットの数に依存して)消費電力が変化することを利用して測定結果から内部の情報がばれることがあるのが前回までのあらすじ。
今回は、消費電力が高くなると発熱が大きくなり、クロックが低下することを利用して消費電力量測定を不要としたのが大きい。
>今回は、消費電力が高くなると発熱が大きくなり、クロックが低下することを利用して消費電力量測定を不要としたのが大きい。
惜しい。最近の CPU は温度だけでなくて、CPU の消費電力を直接見ていて、消費電力が少ないと、自動的にオーバークロックで動作する。このオーバークロックで速くなった部分を観測している。発熱による温度変化は間接的で緩やかだけど、最近の CPU は消費電力に敏感に反応してクロックを変えるので、観測しやすい。
基本は効率犠牲に失敗内容別にコストが変動しないように設計すると思うが鍵を扱う処理または回路の設計に必要な要件がまた増えちまうなぁ……
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
192.168.0.1は、私が使っている IPアドレスですので勝手に使わないでください --- ある通りすがり
なるほどわからん (スコア:0)
> 「計算処理の実行時間が消費電力に依存する」
あたりまえやん。なぜこれで暗号化キーがわかるのか...
よくこんなこと思いつくなぁ。すごい。
Re:なるほどわからん (スコア:2, 興味深い)
ものすごく単純なところだと、「入力されたパスワード」と「正しいパスワード」が等しいかどうかを、
for(int i = 0; i < パスワード長; i ++){
if(入力されたパスワード[i] != 正しいパスワード[i]){
return false;
}
}
return true;
みたいな処理で判定していると「1文字目からいきなりが外れ」と「1文字目はセーブで2文字目が外れ」だと、
後者の方が、ちょっとだけ処理に時間が掛かる。CPU時間をより多く消費する。
通らないのを前提に、1文字目の可能性を全パターン試して、1個だけ結果が帰って来るのが遅かったら、それが1文字目と確定する。
1文字目を揃えて、同じように2文字目の全パターンを試して、3文字目を試して、とやってくと、最終的にはパスワード全部が分かる。
というところまでが前回までのあらすじで、今回はリモートでCPUの周波数の変動でその違いを観察できるって話かな。
攻撃対象のサーバとそこそこ重たい通信をしつつ、それとは別途、パスワードかなにかをクラックするための通信を始める。
クラック用の方の通信であれこれデータを投げつけると、その処理の仕方によってはCPUの周波数が高まって、
そこそこ重たい方の通信速度が変動して観察できる、とかそういう。
Re: (スコア:0)
パスワード比較でforの中にreturnがあるようなのはそもそも普通に脆弱性ですね。
消費電力量を測定できるような環境下で、ALUへの入出力に応じて(例えば変化するビットの数に依存して)消費電力が変化することを利用して
測定結果から内部の情報がばれることがあるのが前回までのあらすじ。
今回は、消費電力が高くなると発熱が大きくなり、クロックが低下することを利用して消費電力量測定を不要としたのが大きい。
Re: (スコア:0)
>今回は、消費電力が高くなると発熱が大きくなり、クロックが低下することを利用して消費電力量測定を不要としたのが大きい。
惜しい。
最近の CPU は温度だけでなくて、CPU の消費電力を直接見ていて、消費電力が少ないと、自動的にオーバークロックで動作する。このオーバークロックで速くなった部分を観測している。発熱による温度変化は間接的で緩やかだけど、最近の CPU は消費電力に敏感に反応してクロックを変えるので、観測しやすい。
Re: (スコア:0)
基本は効率犠牲に失敗内容別にコストが変動しないように設計すると思うが
鍵を扱う処理または回路の設計に必要な要件がまた増えちまうなぁ……