【IT】業界を根幹から揺るがした脆弱性「Spectre」「Meltdown」はCPUのパフォーマンスにどんな爪痕を残したのか? [すらいむ★]
■ このスレッドは過去ログ倉庫に格納されています
IT業界を根幹から揺るがした脆弱性「Spectre」「Meltdown」はCPUのパフォーマンスにどんな爪痕を残したのか?
2018年初頭に明らかになったCPUの脆弱(ぜいじゃく)性である「Spectre」と「Meltdown」は、当時主流だった大半のCPUの設計に根差した深刻な問題だったため、IT業界全体が対応を迫られるなど大きな混乱をもたらしました。
この2つの脆弱性がCPUのパフォーマンスに残した影響を、Linux関連のニュースサイトPhoronixが徹底的なベンチマーク測定で浮き彫りにしています。
A Look At The CPU Security Mitigation Costs Three Years After Spectre/Meltdown - Phoronix
https://www.phoronix.com/scan.php?page=article&item=3-years-specmelt
3 Years CPU Security Mitigations Performance - OpenBenchmarking.org
https://openbenchmarking.org/result/2101067-HA-MITIGATIO26
「Spectre」と「Meltdown」は、いずれもCPUの高速化に関する手法が原因だったことから、問題が判明した際には「すべてのプロセッサが安全性と高速性を両立できない問題を抱える」と指摘されました。
(以下略、続きはソースでご確認下さい)
Gigazine 2021年01月07日 19時00分
https://gigazine.net/news/20210107-meltdown-spectre-cpu-security/ これを2010年ごろにマイクロソフトからライセンスキーが漏れているとか電話がかかってきたときにCPU
の脆弱性があるのではと聞いてきたらインテルはあるといったら問い合わせると言ってたけど
AMDに聞けと助言した覚えがある >業界を根幹から揺るがした
過去形で語っているが、果たして今のCPUからはそれらの欠陥は完全に
リムーブされたのだろかな? 新しいの買ってもまたすぐに、欠陥発見、
完全には対処できない、などと云われたら、腹が立って買った計算機を
窓から放り投げたくなるだろ? 俺は計算ミスする、という致命的な欠陥を持つ初代Pentium60MHzを積んだパソコンを持ってる。
不良のIntel Pentium Pro 60MHzはインテルに云えば、良品(?)と交換
して貰えたと思う。今でも交換をやっているかは不明。
それ以前にも、386では、32ビットの足し算が数値のパターンによっては
キャリーの伝搬が間に合わないことがあって結果が不正になるなどのバグも
あったが、どういうわけかあまり問題にならなかったようだ。多分ほとんどの
用途がMS-DOSだった時代で、286などとの互換性のある命令だけを使っていて
32ビットの演算をあまり使わなかったのだろう。 Spectreってケイデンス社の回路シミュレータかよ >>4
記事を読むとわかるがcomet lakeは見事に対策しているね
zen3は、ものによっては大きくパフォーマンスを落として、実質comet lakeに追いつかれている
なかなか興味深い検証記事でした >>2
ストロングゼロ飲みながら書いてんじゃねーぞw かつてPentiumPro60MHzでは浮動小数点数の割り算に間違えを起こす
パターンがあることが判明したインテルのCPUだったが、
それでは今現在売られているインテルやAMDなどのCPUの浮動小数点数
の各種演算は、誤りを起こすデーターのパターンは皆無だろうか?
まだ見つけていないだけで、あったりしないのだろうか?
どうやって検査しているのだろうか?
また、設計上は正しくても、製造時に一部のトランジスタや配線が壊れて
いたら、計算結果は出るが間違っていたりするということが、ロット単位
あるいは個体単位としてはありうると思うけれども、そのような誤りを
起こして居ないことをどうやって確証すれば良いのだろうか。マルチコア
ならチップ状の局所的な欠陥なら、複数のコアで同じ計算をさせて結果の
一致を見ながら動作するというような動作モードを設定できるかもしれない。
でもマスクパターンに傷が入っていてどのコアも設計からずれたものに
なっていたらどのコアも同じ間違った答えを返すかもしれないしな。
結局独立な設計で作られた別メーカーのCPUとの結果を突き合わせないと
確かめられないだろうけれども、今のCPUはマルチスレッド化で足し算を
するときに足す順序次第で結果が変わってたりするそうだから、同じCPUで
2回計算しても結果が違うというような調子なので、バグとかミスが見逃されて
いたりするかもしれないな。
あなたのもっている計算機のCPUは正常だろうか?仮に今が正常でも
1年後あるいは2年後、。。。、といつまでも正常だろうか?
正常でなくても気が付いていないだけかもしれない。また今まで正常に
ならないパターンのデーターの組み合わせの演算をたまたましてこなかっただけ
で、ある日特定の二つのデータの割り算をするときには結果が間違うかもしれない。
でもそれに気が付かずに計算結果を受け入れてしまうかもしれない。
あなたが家を留守にしているとき、あなたの家では 80286時代のメモリ管理関係のバグあったなぁ
そのバグのおかげで その後の8086系CPUは
メモリを広大に使えるようになったけど
それをいまでも使ってて
引きずってるとか?まさかねー x_86 のセグメント方式のメモリアクセスって、あれは一体何のメリットがあって
あんなものを採用していたのか、自分は理解に苦しむ。ソフトを書くのがとても
面倒なうえに、セグメントを跨いだアクセスをするたびにセグメントレジスタに
値をロードしてやらないといけなくて、性能が出にくいはずなのに。
でもなぜかMC68000とかもっと素直な命令のCPUは天下を取れなかったな。
286は出て来たときに、7重だか8重のリング保護機構だとか、
(仮想記憶?だったか?)広大なメモリアドレス空間を持てるとか
いろいろ云っていたけれども、実際にはOS/2などでもそのような
機能をロクに使い切れていなくて、たんなるクロックの速い
8086としてだけ使われてたような記憶がある。
386になるまでのインテルのCPUはメモリのアクセスに関しては
よくこんなものが我慢して使えるなと思うほどだったが、過去のソフト
の資産とかいうキャッチフレーズはそれほど強い力があったという
ことなんだろうな。歴史にIFはないけれども、もしもIBM社が
IBMPCにモトローラのMC68000を採用して,それなりのOSを最初
から提供できていたならば、パソコン等はずいぶん違う歴史を
たどったことだろうと思う。あるいはIBM自身が自社の360/370
アーキテクチャーのマイクロチップ版とOSを出していたならば、。。。 Broadwell世代の組み込みXeonを積んだうちのNASがある時期からリードが3割くらい遅くなったのは
この脆弱性対応パッチがNASのファームウェアに含まれてて性能が落ちたからだったりするんだろうか? この脆弱性で一般ユーザーの誰一人も被害をうけていない現実をみたほうがいい >>13
OS呼び出しでMMUがセレクター(セグメント)切り替えをやらない構造でOS設計したからこうなった
一切使われない「CALLゲート」命令つかってAPI呼び出ししていれば何の問題もなかった。
ポインタのアドレスをみれば、メモリ参照の例外処理での保護命令だけでOSのメモリを区別して
合理化したのが事の始まり、
どのアドレスに何が入っているか、ユーザー空間のアドレス部分に何の保護もかかっておらず
アクセス権限さえあれば全てのメモリを読み取り放題状態だってこと。
MMUのメモリ管理でアドレス空間を異世界にすれば物の指標、すなわちアドレスに対するメモリ位置が
全てばらばらになりアドレスから参照して繰り返されるデータモデルが一切機能しないので。
セキュリティなくても解読不能ってものだ。
人間の脳もおなじ記憶してもそれを読み出す検索部分がないなら何も記憶に意味を持たせられないし
思い出せない。
解読できたとしても恐ろしい労力と偶然に頼らなければならず、その辺の攻撃ソフトではどうにもならん。
SSDのファール実態データのこして物理相の管理ブロック情報完全消去してデータ特定するような所業よ
アドレスが共通語になっている時点で、解読は簡単だ。
解読不能の古代文章が解読できないのは言葉の単語も文字も意味が失われているからで文字の模様
だけじゃ意味を成すのは無理があるってこと。
メモリモデルでプロセス空間がOSこみで、どのプロセスも同一の単一メモリ構造になっているからこそ
解読できるってことだ。アドレスがどこをさしているかわからない状況さえ作れば簡単に解読不能にできる せっかくCoreシリーズ以来のすべてのCPUを載せた計算機を動態保存していたのに
ネットワークにつないでいるので、BIOSのパッチを当ててしまった。
するとかつて出せていたはずの性能が再現できなくなってしまったよ。とほほ。 32bitsモードでそれなりに遠いメモリー空間で使っとけばセキュリティー問題ないんじゃなかったっけ?
osは64bitsモードでブラウザだけ32bitsのを使えばいいんじゃないかとおもう このようなセキュリティが問題になると、
限定された使い方をされるシステム用はなんとかなるかもしれないが、
セキュリティを前提にして厳格にCPUないしハードウェアないしOSなどで、
一種の投機的な方法を使って速度を稼ぐことや能率を上げるという機構を
用いることが封じられて、できなくなってしまうんだよね。
仮想記憶のメカニズムも、うまく悪用すれば、他のプロセスなどが
わずかな情報を盗み取ることができたりするわけだし。
ハードウェアなどの資源を共用することを止めればいいのだがね。 L3など共有キャッシュや、ハイパースレッドなどが共有するL2キャッシュなどを経由して
メモリを覗こうとするのは覗いたそれに互換性があるから、
互換性がない解釈不能な状態で機能していれば解読できないので脆弱性などない。
効率的でキャッシュ効率がよいからという前提でOSが設計されたソフトの問題だろ。
OS空間とユーザー空間がセキュリティなしで参照できれば解釈し放題だというのが問題であり
そもそも仮想記憶を正しく使えばユーザー空間からOSの空間のメモリアドレスは意味を
持たずデータを抜き取れたとしてもデータとアドレスの連携ができなければ、暗号化
しているのと同じである。 ■ このスレッドは過去ログ倉庫に格納されています