IT業界を震撼させたメルトダウンとスペクター ~ OSは信頼出来るのか ?(その1)
米国時間2018年1月3日、Intel製プロセッサに 深刻な脆弱性が発見されたとするとする報道がありました。
この脆弱性は、大きく「Meltdown(メルトダウン)」と「Spector(スペクター)と言う」2種類の脆弱性になります。
どちらも、プロセッサの根幹を成す処理の脆弱性のため、IT業界のみならず、全世界でニュース配信されました。気が付きましたか ?
そして、この報道を受け、Intel社は、急遽、次のようなプレスを発表したのですが、これが、また酷い内容で・・・
『 これらのシステム上の弱点(exploits)を「バグ」、「欠陥」と呼び、Intelプロダクト固有の問題だとする現在のメディアの報道は正しくない。
現在までの調査の結果が、多種類のコンピューティング・デバイス、つまり多数のベンダーが製造するプロセッサや複数のOSに共通してこの弱点が存在することが明らかになっている。 』
つまり、Intel社としては、『 この問題は、Intelだけの問題じゃない!! 』と言いたかったのだと思いますが、余計にヒンシュクを買う結果になってしまったそうです。
これら一連の報道を受け、多くの人は、「また、コンピューターの脆弱性が発見されたのか~ 早く治して欲しいな~」位の感じしか抱かなかったと思います。
--------------------------------------------------------------------------------------------------------
しかし、私は、このニュースを見た時、正直、『 あ~、この世は終わった!! 』と思いました。
少しでもコンピューターやCPUに関する知識があれば、これまでに何度も伝えられた「脆弱性」と、今回の「CPUの脆弱性」とは、全く次元が異なるものだと言う事が、直ぐに分かると思います。
まず、大きな違いとしては、これまでの脆弱性は「ソフトウェア」対する脆弱性であって、今回の脆弱性は「ハードウェア」に対する脆弱性である点が挙げられます。
そして、今回の「脆弱性」の原因が「CPU」に対する脆弱性と言う点が非常に重要です。
「CPU(Central Processing Unit:中央演算処理装置)」に関しては、以降の章で詳しく説明しますが、コンピューターの心臓とも頭脳とも呼ばれるハードウェアです。
つまり、この「CPU」に脆弱性があると言う事は、悪意のある犯罪者集団が、この脆弱性を利用するマルウェアを開発し、コンピューターから機密情報を盗み出す事が出来てしまう事を意味します。
そして、現在、世界に流通しているCPUのほとんどは、Intel、AMD、そしてARMと言う3社のメーカー製品となっており、今回の脆弱性は、この3社の製品に共通して存在しています。
このため、この脆弱性を攻撃するマルウェアを作成すれば、全世界のコンピューターの、ほぼ全てから機密情報を盗み出す事が可能となります。
以上の事が理由で、私が「あ~終わった」と思った事は理解して頂けたかと思います。
しかし、幸いにも、事件が発生してから1年以上経過しますが、まだ世界は安泰なようです。
--------------------------------------------------------------------------------------------------------
とは言いつつ、まだ安心は出来ません。何故なら、1年以上経過した現在でも、CPU供給メーカーが、脆弱性を修正出来ていないからです。
本当に、「何やってんだ!!」となるのですが、脆弱性が見つかった箇所の処理が、CPUの高速化処理の根幹を成す場所なので、そう簡単に修正できないと言う事情もあるようです。
ところが、この脆弱性、実は、今に始まった事ではなく、何と!! 20年以上前から解っていたと言う事実も明らかになっています。
つまり、CPUメーカーは、設計ミスがある事が解っていながら、その事実には目をつぶり、20年以上も利用者を欺いていた事になります。
私は、この事実を知った時、アメリカ政府を始め、各国政府は、どうしてCPUメーカーを犯罪者として処罰しないのかと不思議に思っていました。
今では、世界中の政府や軍隊が、コンピューターを利用しています。そのコンピューターに脆弱性がある事が解っているならば、早急に対応するのがメーカーとしての最低限の義務ではないかと思います。
そこで、本ブログでは、今回見つかったと言うか、その昔からCPUに存在していた脆弱性に関して、紹介内容を2回分けて次の情報を紹介します。
【 1回目 】
- コンピューターの仕組み
- CPUとは
【 2回目 】
初回は、主に、コンピューターの仕組みを説明する内容になってしまいますが、まずは、コンピューターが、どのような仕組みで動いているのかを理解しないと、今回発見された脆弱性が、どんなに危ないのかを理解出来ないと思います。
若干、小難しい話になってしまいますが、最後までお付き合い下さい。
それでは今回も宜しくお願いします。
■コンピューターの仕組み
今回問題となったCPUの高速化処理に伴う脆弱性である「Meltdown(メルトダウン)」、および「Spector(スペクター)」の問題を取り上げる前に、まずは、コンピューターが、どのような仕組みでプログラムを動かしているのかを簡単に説明します。
下方に掲載した図が、私が数十年前、会社に入社した当時に学んだ「コンピューターがプログラムを動かす仕組み」です。
まあ、私が学んだのは、「IBM/S370」全盛時代、俗に言うメインフレームと呼ばれるコンピューターの仕組みでした。
当時は、コンピューターと言えば、左図のような巨大なハードウェアを備えた「メインフレーム・コンピューター」を意味していました。
当然、「パーソナル・コンピューター」、つまりPCも存在していたのですが、こちらは希少品種というか、マニア、今で言う「オタク」の人しか持っていませんでした。
今では、結構、高性能なPCでも5万円程度で購入する事ができますが、、当時のPCは、性能は、現在よりかなり低かったのですが、それでも1台100万円近くの値段がしましたので、本当に「オタク」の人しか購入できませんでした。
その後、1980年代になると、NECが「PC-9800」、俗に言う「PC98」の発売を開始し、日本の社会に、ようやくPCが流通し始める事になりますが・・・
この「PC98」は、日本で大ヒットしたPCと言われていますが、それでも、フル装備にすると40万円近くの費用が掛かる贅沢品でした。
当時の40万円ですから、現在以上の価値があったと思います。やはり、余程の「オタク」じゃないと購入出来ない代物です。
そして、1995年になると、今では、もう伝説レベルの話になってしまいますが、Microsoft社が「Windows 95」を発売した事で、一気に、PCは一般家庭にも広がり始めます。
私も、この頃、初めて、今では「HP(ヒューレットパッカード)」に買収されてしまい会社は存在しませんが、「COMPAQ(コンパック)」社製のPCを購入したのを覚えています。
当時も、モニタと装置は分離しているのが普通だったのですが、COMPAQは、モニタ一体型PCを発売し、「PC98」の牙城を崩し始めていました。
私は、NEC製のメインフレームが大嫌いでしたので、COMPAQ製のモニタ一体型PCを購入しました。
PCの価格も、だいぶ低価格にはなってきていましたが、10万円以上したような記憶があります。
その頃は、ようやくインターネットも電話回線で使えるようになってきましたので、このインターネットの普及もPCの流通拡大に、一役買っていたのだと思います。
--------------------------------------------------------------------------------------------------------
さて、そんな時代でしたが、私が覚えた「コンピューターの仕組み」は、次のような感じでした。
(1)コンピューターには、「OS(Operating System)」と呼ばれるソフトウェアが組み込まれている。
(2)この「OS」がインストールされていないと、PCは「単なる邪魔で重たい箱」でしかない。
(3)PCの電源を入れると、最初に「OS」が稼働し、さらに「OS」内の「基本ソフトウェア」が処理を開始する。
(4)また、「基本ソフトウェア」の中でも、「カーネル(スーパーバイザー)」と言うソフトウェアが起動し、PC内の複数の処理(タスク)が処理を開始する事で、PCを使う事が出来るようになる。
(5)PCにインストールしている、「Word」や「Excel」等の「応用ソフトウェア」、俗に言う「アプリケーション(Application)」を起動すると、基本ソフトウェアの「タスク管理」が、「CPU(中央演算処理装置:Central Processing Unit)」に制御を渡し、プログラムを実行させる。
(6)CPUは、ファイルに格納されているプログラム情報を読み取り、PC内の「実メモリー(実記憶域)」にローディングする。
(7)ちなみに、メインフレームでは、JCL(Job Control Language)をJES(Job Entry Subsystem)が読み取って必要リソースの獲得/割振りを行った後、実記憶域にプログラムをローディングする事になる。
(8)ローディングされたプログラムは、実記憶域でプログラムに書かれた命令を逐次実行して行くことになるが、実記憶域の大きさには制限があるので、一度に沢山の命令を実行する事は不可能となっている。
(9)このため、OSでは、「仮想記憶域(Virtual Memory)」を多数作成し、ローディングしたアプリケーションの大部分を、この仮想記憶域で管理する事になる。
(10)CPUは、仮想記憶域にあるプログラムを、必要に応じて、ページ単位に実記憶域に配置(スワップ・イン)して、命令を実行して行く。(ページング処理)
(11)処理が終了した命令は、再び仮想記憶域に戻される事になる。(スワップ・アウト)
(12)プログラムが終了するまで、CPUは、スワップ・インとスワップ・アウトを繰り返しながら命令を実行して行く。
--------------------------------------------------------------------------------------------------------
と、まあ、大体、コンピューターの処理の仕方を、大雑把に説明すると、こんな感じになりますが、しかし、実際の処理の仕方は、こんなに単純ではなく、メチャクチャ複雑です。
元々、私が、その昔に使用していた「メインフレーム」と言う汎用大型コンピューターは、現在の、ような「マイクロプロセッサ」が誕生する前に生まれた言葉です。
当時のコンピューターには、複数の「プロセッサ」が搭載され、かつ、これら「プロセッサ」が使用する多くの周辺機器がフレーム構造の枠の中に格納されていました。
そして、それら多くのフレームの内、CPUを格納する枠(フレーム)を、他の枠と区別して呼ぶために、「メインフレーム」と呼ぶようになったとされています。
それでは、次にコンピューターの心臓部とも言える「CPU」について、こちらも簡単に紹介します。
■CPUとは
前章ではメインフレームにおけるOSの処理の仕方を説明したのですが、PCの世界でも、大体の流れは同じだと思っています。
そして、数あるOSの処理の中でも、重要な役目を果たすのが、「CPU」と言うハードウェアです。まあ、その他も全て重要ではありますが・・・
「CPU」とは何 ? と思う人も多いと思いますが、別名「チップ」、あるいは「MPU(Micro Processing Unit)」とも呼ばれるハードウェアです。
この「チップ」の中には、各種演算処理や転送処理等を行うための大量の電子部品が組み込まれています。
そして、これら電子部品を繋ぐ回路(回線)も大量に組み込まれており、これら大量の回路を積み重ねて格納する事から「集積回路(IC:Integrated Circuit)」とも呼ばれています。
そして、さらに、これら大量の集積回路を集めたものを大規模集積回路(LSI:Large Scale Intelligence )と呼び、回路の線幅を細くする事で電子部品の集積率を向上させる事で処理能力を向上させて来ました。
他方、現在のCPUの主流は、記憶域にプログラムをローディングしてから命令を実行する「プログラム内蔵方式」と言う仕組みを採用しています。
この方式は、別名「ストアド・プログラム(Stored Program)方式」)とも呼ばれますが、この方式を最初に考案したのが、オーストリア出身の「ジョン・フォン・ノイマン(John von Neumann)」と言う人物です。
このため、この方式のコンピューターを「ノイマン型コンピューター」と呼び、さらに、彼を「コンピューターの父」と呼んで称えていますが・・・
彼は、俗に言う「マッド・サイエンティスト」系の学者とも言われております。
彼は、上記の様に、コンピューターの原理を考案した優秀な科学者でもあり、さらに、アメリカの核開発計画「マンハッタン計画」にも関わり、広島に投下された原爆「ファットマン」の開発でも重要な役割を果たしています。
そして、原爆の投下地点を決める際、「京都は、日本国民にとって深い文化的意義をもっている場所だから、京都に原爆を投下して殲滅すべきである。」と進言したとして、「マッド・サイエンティスト」の称号を得たとされています。
この件は、次の過去ブログでも紹介しています。
・岩手の先達 ~ 地味な岩手にも有名人 Vol.1(blog/20151219.html)
・AI(Artificial Intelligence) - その恐怖と現実 その2(20190209.html)
この事実は、コンピューターに関わる日本人としては、ちょっと残念に感じる部分でもありますが、「ジョン・フォン・ノイマン」が優秀だった事実は変わりありません。
--------------------------------------------------------------------------------------------------------
これまでは、Microsoft社のWindows PCには、米Intel社のCPUが、ほぼ全てのPCに採用されてきました。
このため、Microsoft社とIntel社との関係は、「Win-tel」と呼ばれる程、密接な関係を築いて来ました。
皆さんも、TVで「インテル入ってる」と言うコマーシャルを見たり、聞いたりしたことがあると思います。
Intel社製の最新のCPUは、第9世代Coreプロセッサのフラッグシップモデル「Core i9」だと思います。
しかし、「Win-tel」と呼ばれ、「Microsoft社のWindows PCには、必ずIntel製CPUが搭載される。」という蜜月関係も、近頃では終わりを迎えつつある、と言うのがもっぱらの噂です。
近頃では、AMD社(Advanced Micro Devices)の「Ryzen」もシェアを伸ばしています。
特に、2019年7月に発売を開始した「Ryzen 9 3900X」の性能は、上記Intel社製「core i9」の性能を、大幅に凌駕しているとされています。
この新型プロセッサは、Zen 2アーキテクチャを採用した7nm世代の新型CPUで、AMD社の第3世代CPUと言われています。
元々、CPU業界では、Intel社が圧倒的な支配力を示し、前述の通り、Microsoft社と密接な関係を築くことでシェアを大幅に伸ばしてきました。
ところが、半導体チップの線幅を「10ナノメートル」する計画が大幅に遅れてしまった事で、ライバルであるAMD社や台湾TSMC社に出遅れてしまったそうです。
加えて、最近では、易摩擦の影響をモロに受けてしまい、中国のデータセンター向けのチップの生産が激減し、新規設備投資もままならない状況に陥ってしまっています。
現在の半導体チップの線幅は「7nm(ナノメートル)」が主流になりつつあり、前述の「Ryzen」等も「7nm」で設計された最新チップですが、この「7nm」チップのリリースにも遅れ、現在では、AMD社の後塵を拝す状況になってしまったそうです。
--------------------------------------------------------------------------------------------------------
さて、肝心の「CPU」ですが、前述の様に、命令が書かれたプログラムをメモリーにローディングし、この命令を、1個ずつ順番に実行することで、様々な処理をこなして行きます。
今回、単純な例として、次のような処理を行う「プログラムA」を作成して、コンピューターで処理を行わせます。
『 今年の売上げと去年の売上げを比較し、前年比を算出し、売り上げが低下したら赤字にする。 』
この場合、プログラムは、次の様な命令を順番に実行して行きます。
(1)処理を開始する。
(2)去年の売上げを獲得する。
(3)今年の売上げを獲得する。
(4)今年の売上げを去年の売上げで割って前年比を算出する。
(5)前年比はプラスか ?
・前年比プラスなら黒字にする。
・前年比プラスじゃないなら赤字にする。
(6)処理を終了する。
まあ、本当は、数値を獲得するために、ファイルを読み込んだり、数値が格納されている場所を参照したりする命令が必要なのですが、今回は、それらの命令は割愛します。
「CPU」における処理は、通常、このように上から順番に、プログラムに書かれた命令を実行して行く事になります。
しかし、実際の業務処理は、こんなに単純な処理ではありません。もっと複雑な処理を大量に実行する必要があります。
私が、作成していたプログラムは、企業の業務処理を自動的に実行させるシステムだったのですが、1個のプログラムで、5,000個程度の命令が記述されたプログラムが数百個もありました。
左の画像は、私が使っていたIBM互換のアセンブラ言語です。1行が1個の命令になります。
例えば、上から10行目くらいに「MVC」と言う英語がありますが、次の意味を持っています。
【 命令「MVC」 : Move Character(文字列を移動せよ) 】
MVC USRGPR+00(12),20(1)
→ 意味:レジスター1が指している場所(アドレス)から20バイト目の場所にある12バイトの内容を、USRGPRと言う名前の場所(アドレス)に移動しろ。
「CPU」は、このような複雑で、大量の命令が書かれているプログラムを瞬時に実行しなくてはいけません。(※レジスター:数値やアドレスを格納する器。非常に高速で処理する事が可能)
私が作ったシステムを使っていた「某電話会社」様では、夜間バッチと言う業務で、一晩(8時間程度)の間に、10,000個以上もの業務を実行していました。
--------------------------------------------------------------------------------------------------------
その昔の「CPU」には、プログラムに書かれた命令を、自動で、かつ正しく実行する事だけが求められていました。
もちろん、処理速度も、人間より早く行う事も求められていましたが、あくまでも「人間が行うより速く」が基準でした。
ところが、現在の「CPU」は、自動で、かつ正しく処理を実行するだけでなく、「速く」処理を行う事も求められており、そのために「スーパー・コンピューター」が作られるようになってきています。
「スーパー・コンピューター」は、「CPU」、つまりPCを大量に並列稼働させる事で、処理速度を大幅に向上させてきましたが、それにも限界があります。
CPUの性能を向上させ、かつCPUを大量に並列稼働させる事で、スーパー・コンピューター「京(けい)」を作ったのですが、この「京」とは、1秒間に「1京回」の計算(浮動小数点演算)が出来る性能を持つことから命名されたコンピューターです。(1京回:10,000,000,000,000,000回)
しかし、上の画像が「京」の設置状況ですが、見て分かる通り、膨大な場所が必要になります。
また、コンピューターや周辺機器は、大量の熱を放出しますので、大規模な空調設備を設置しなければなりません。
このため、「京」のように、大量のPCを並列稼働させるためには、大規模な空間と空調設備も必要になります。
確かに、PCを無制限に並列稼働させれば、それだけ処理速度も上げる事は可能ですが、上記のような制限があるので、どこまでも無制限にPCを並列稼働させる訳にも行きません。
--------------------------------------------------------------------------------------------------------
そこで、現在は、従来からの考え方に加え、量子力学の考え方を加えた、新しい設計思想で構築するコンピューターである「量子コンピューター」が実現されつつあります。
従来のコンピューターは、2進数でしか物事を考えられなかったのですが、この「量子コンピューター」においては、その2進数の考え方を垂直方向に重ね合わせた考え方が出来るのが特徴です。
従来のコンピューターでは、処理を、「1」、あるいは「0」と言う、半導体の1ビットで管理できる2進数でしか管理する事が出来ませんでした。
しかし、これが「量子コンピューター」になると、「量子ビット」と言う半導体1ビットの情報を、垂直方向に重ね合わせた様な「量子ビット」で管理するので、「2進数n倍」で管理する事が可能になります。
つまり、 量子コンピューターは、『 1回の処理で、2n乗回の処理を行う事が可能になる。 』コンピューターなのです。
例えば、「50量子ビット」の性能を持つ量子コンピューターがあった場合、「250乗 = 1125兆8999億684万2624」回分の処理を1度に行う事が可能になる、と言う仕組みです。
この簡単な例を見ただけで、量子コンピューターの処理速度が、どんなに凄まじいか解かると思います。
ところで、現在、実際に稼働している量子コンピューターが存在するのか ? と言う事ですが、現在、商用運用している量子コンピューターは、下記2機種だけだと思われます。
項番 |
企業 |
製品名 |
量子数 |
発売日 |
方式 |
1 |
D-Wave Systems |
D-Wave Two |
28 |
2019年1月 |
量子焼きなまし方式 |
2 |
Qシステムワン |
20 |
2007年7月 |
ゲート方式 |
さらにIBM社では、2020~2022年頃を目途に、現在のスーパー・コンピューターの処理能力を超える、「50量子ビット」性能を持つ「量子コンピューター」の実用化を目指していると伝えられています。
もう、こうなると、私の様に、「レガシー」とか「恐竜」とか言われているメインフレームの知識しかない人間には、ついていけない世界になってしまいます。
今後の量子コンピューターへの取り組みは、楽しみでもあり、悲しくもあります。
■最後に
今回は、「IT業界を震撼させたメルトダウンとスペクター ~ OSは信頼出来るのか ?(その1)」と題して、2018年1月に世間を騒がせたCPUの脆弱性「Meltdown」と「Spector」に関して、次のような情報を提供しましたが、如何でしたか ?
- コンピューターの仕組み
- CPUとは
今回は、脆弱性の紹介と言うよりは、その前段階、コンピューターの歴史と仕組みを紹介する内容になってしまいました。
結構、専門的な内容だったので、コンピューターに詳しくない人には、分かり難い内容だったかもしれません。
現在、「GAFA」と呼ばれる巨大IT企業が、世界のITデータを独占している事ばかり取り沙汰されていますが、コンピューターに搭載されるプロセッサも、次の3社に独占されている点も問題にされるべき事柄だと思います。
・AMD
・ARM
※GAFA:Google、Apple、Facebook、Amazon
IntelとAMDで、PCに搭載されているCPUのほぼ90%以上、ARMは、スマートフォンに搭載されているCPUに関しては、やはり90%以上のシェアを占めています。
そして、これらのCPUのほほ全てで、今回紹介する予定の脆弱性を抱えています。
つまり、CPUメーカーの寡占状態が続くことで、CPUの価格も高止まりし、かつ全てのCPUにおいて同じ脆弱性の危機を抱えている状況になっています。
なおかつ、データセンター自体もGAFAによって寡占化が進んでいる状況ですので、IT業界は、今後、何らかの対策を取る必要があると考えられています。
とは言え、ここまでCPUとデータセンターの寡占化が進むと、今さら過去に状況に戻る事も不可能です。
今から、新しい設計思想を持つCPUを作るとなると、時間も金も掛かる大変な作業になります。
「CPUとは」の章で、これまでとは全く異なる思想で設計された「量子コンピューター」を紹介しました。
実際、既に実用化されてはいますが、これを市販のPCに搭載するとなると話は全く異なります。
現状では、量子コンピューターに搭載するプロセッサの小型化は出来ているようですが、汎用化までは至っておりません。
特に、この新型プロセッサは、「絶対零度(-273℃)」にまで冷却して、内部に電気的が行らなくなる「超電導」状態にする必要があります。
ノートPC内部を「絶対零度」にする事など、今の技術では不可能だと思います。
但し、この点に関しては、日本の「革新的研究開発推進プログラム(ImPACT)」が、2017年、室温でも稼働できる量子コンピューター「量子ニューラルネットワーク(QNN)」を開発して一般公開しています。
量子コンピューターには、現在、次の3種類の方式があり、それぞれ様々なメーカーや大学が、他分野での実用化に向けて取り組みを進めています。
|
ゲート型 |
アニール型 |
ネットワーク型 |
基本原理 |
線形干渉形 |
量子トンネリング |
非線形発振器 |
主要開発元 |
D-WAVE/MIT |
NTT/Stanford |
|
ビット数(現状) |
20ビット |
2,000ビット |
2,000ビット |
ビット数(将来) |
50~100ビット |
8,000ビット |
100,000ビット |
回答可能問題サイズ(2N) |
- |
N < 70程度 |
N < 2,000 |
動作温度(ケルビン:K) |
極低温(10mK) |
極低温(10mK) |
室温(300K) |
条件 |
超高真空 |
超高真空 |
常圧 |
物理系 |
超電導量子回路 |
超電導量子回路 |
光パラメトリック発振器 ネットワーク |
消費電力 |
- |
25kw |
1kw |
まあ、こんな比較表を作っても、私のような素人、特に文系の素人には、さっぱり理解できません。
他方、現在、通信ネットワークも加速度的に進化しており「5G」と呼ばれる次世代高速通信規格も実用化されつつあります。
この「5G」規格では、現在使われている「4G」規格と比べ、「高速」、「大容量」、「低遅延」、および「同時多接続」と言うメリットがある事が明らかかになっています。
そうなると、この「5G」と「量子コンピューター」を組み合わせると、PC本体に「CPU」を保持する必要はなくなります。
PCと量子コンピューターを5Gで接続し、PCから要求された処理を、サーバー側に設置した量子コンピューターで処理し、その処理結果を高速でPCに返す事が可能になります。
今後は、これら「量子コンピューター」の汎用化と「5G」通信網の広がりで、新しいIT化が進んで行く事になると推測されます。
それでは次回も宜しくお願いします。
以上
【 画像・情報提供先 】
・Wikipedia(http://ja.wikipedia.org/)
・「メインフレーム・コンピューター」で遊ぼう(http://www.arteceed.net/)
・富士通「コラム・セキュリティ記事」(https://www.fujitsu.com/jp/solutions/business-technology/security/secure/column/)
・トレンドマイクロ「脆弱性」(https://blog.trendmicro.co.jp/archives/16735)