web-dev-qa-db-ja.com

最新のシステムでは、I / O暗号化はどのように処理されますか?

最初:OSの知識、ハードウェアの知識だけでなく、おそらく他のCSフィールドも含まれているため、この質問を投稿するスタックエクスチェンジの質問に苦労しました。より良いスタックサイトの提案を歓迎します。

私は突然気づきました...私は覚えるのに十分な年齢です [〜#〜] pio [〜#〜] ;ご存知のとおり...接続された周辺機器(ハードディスク、CD-ROM、ネットワークアダプタなど)からメモリへのほぼすべてのバイトの転送にCPUが関与していた場所。これは、CPUを集中的に使用するタスクになる場合があります。それでやって来ました [〜#〜] dma [〜#〜] これは基本的にデバイスに次のように伝えました:「ここにあなたのためのメモリのスライスがあります。 「完了」。ドライブのビットロッカーアイコンに気付いたときに気づきました...コンピューター(またはNASまたは電話または...)が使用するOSは何でも:CPUが暗号化を行う責任があります。 ?最近は(通常)複数のコアがあり、CPUなどに特殊なAES命令がありますが、これらすべてが負荷を軽減する可能性があります...基本的にPIOに戻りませんか?

DMAを使用して、データのブロック全体をメモリに入れ、再びストレージデバイスに戻すことができ、その操作中にCPUをストールする必要はありませんが、それぞれを処理するためにCPUが必要です。そして、それを使用する前にすべてのバイト(暗号化/復号化)。それはおそらく非常に高速で、無視できるかもしれません。ただし、デバイスとDMA CPUをその負担から解放する暗号化/復号化現代のシステムにそのような回路はありますか?それはおそらくノースブリッジ/サウスブリッジ/ ICH/FCH/whatchamacallitにありますか?RAIDコントローラーまたは他の専用I/Oコントローラーを想像できます(多分もっと高価なもの?)専用の回路がありますが、「一般的な消費者向けコンピュータ」はどうですか?

また、BitlockerはおそらくOSレベルの構造であると思います。しかし、私は特にビットロッカーには興味がありません。ボリューム、パーティション、またはブロックレベルの暗号化の手段について知りたいです。

1
RobIII

基本的にPIOに戻りませんか?

番号。

CPUが暗号化を実行する場合でも、高速化されているかどうかに関係なく、メモリのある部分からこの読み取りを実行し、メモリの別の部分に書き込むことができます。次に、DMAを使用して、メモリのこの部分をディスクに送信します。

これは、次のバイトの準備が整うのを待つ必要がないため、PIOとは大きく異なります。また、CPUはほとんどの場合、DMAがこのブロックを転送するよりもはるかに速く暗号化を完了します。

ただし、デバイスとDMA)の間に専用回路があり、暗号化/復号化を処理してCPUの負担を軽減できる場合。

さらに良いことに、メモリの1つのブロックを(DMA経由で)読み取り、暗号化または復号化し、結果をメモリ内の別の場所に(DMA経由で)書き込むことができる専用のハードウェアがあれば、結び付けはありません。特定の種類のDMAを使用した特定のストレージメソッドへの暗号化であり、必要に応じて使用できます。

そのようなコプロセッサーは存在しました(そしておそらく存在します)が、通常の暗号化はCPUを介して十分に高速であり、追加コストを正当化できません。

1
dirkt