アカウント名:
パスワード:
> 「計算処理の実行時間が消費電力に依存する」 あたりまえやん。なぜこれで暗号化キーがわかるのか...よくこんなこと思いつくなぁ。すごい。
ものすごく単純なところだと、「入力されたパスワード」と「正しいパスワード」が等しいかどうかを、
for(int i = 0; i < パスワード長; i ++){ if(入力されたパスワード[i] != 正しいパスワード[i]){ return false; }}return true;
みたいな処理で判定していると「1文字目からいきなりが外れ」と「1文字目はセーブで2文字目が外れ」だと、後者の方が、ちょっとだけ処理に時間が掛かる。CPU時間をより多く消費する。
通らないのを前提に、1文
パスワード比較でforの中にreturnがあるようなのはそもそも普通に脆弱性ですね。
消費電力量を測定できるような環境下で、ALUへの入出力に応じて(例えば変化するビットの数に依存して)消費電力が変化することを利用して測定結果から内部の情報がばれることがあるのが前回までのあらすじ。
今回は、消費電力が高くなると発熱が大きくなり、クロックが低下することを利用して消費電力量測定を不要としたのが大きい。
>今回は、消費電力が高くなると発熱が大きくなり、クロックが低下することを利用して消費電力量測定を不要としたのが大きい。
惜しい。最近の CPU は温度だけでなくて、CPU の消費電力を直接見ていて、消費電力が少ないと、自動的にオーバークロックで動作する。このオーバークロックで速くなった部分を観測している。発熱による温度変化は間接的で緩やかだけど、最近の CPU は消費電力に敏感に反応してクロックを変えるので、観測しやすい。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
犯人はmoriwaka -- Anonymous Coward
なるほどわからん (スコア:0)
> 「計算処理の実行時間が消費電力に依存する」
あたりまえやん。なぜこれで暗号化キーがわかるのか...
よくこんなこと思いつくなぁ。すごい。
Re: (スコア:2, 興味深い)
ものすごく単純なところだと、「入力されたパスワード」と「正しいパスワード」が等しいかどうかを、
for(int i = 0; i < パスワード長; i ++){
if(入力されたパスワード[i] != 正しいパスワード[i]){
return false;
}
}
return true;
みたいな処理で判定していると「1文字目からいきなりが外れ」と「1文字目はセーブで2文字目が外れ」だと、
後者の方が、ちょっとだけ処理に時間が掛かる。CPU時間をより多く消費する。
通らないのを前提に、1文
Re: (スコア:0)
パスワード比較でforの中にreturnがあるようなのはそもそも普通に脆弱性ですね。
消費電力量を測定できるような環境下で、ALUへの入出力に応じて(例えば変化するビットの数に依存して)消費電力が変化することを利用して
測定結果から内部の情報がばれることがあるのが前回までのあらすじ。
今回は、消費電力が高くなると発熱が大きくなり、クロックが低下することを利用して消費電力量測定を不要としたのが大きい。
Re:なるほどわからん (スコア:0)
>今回は、消費電力が高くなると発熱が大きくなり、クロックが低下することを利用して消費電力量測定を不要としたのが大きい。
惜しい。
最近の CPU は温度だけでなくて、CPU の消費電力を直接見ていて、消費電力が少ないと、自動的にオーバークロックで動作する。このオーバークロックで速くなった部分を観測している。発熱による温度変化は間接的で緩やかだけど、最近の CPU は消費電力に敏感に反応してクロックを変えるので、観測しやすい。