# 自己暗号化ドライブのSSDをLinuxから使う ## 自己暗号化ドライブ ハードウエアによる暗号化ができるSSDは、最近では珍しくないものになってきました。とくに、企業ユースむけのPCでは、自己暗号化ドライブを選択できるようになっています。 自己暗号化ドライブ(Self-Encrypting Drive, SED)は、ドライブに搭載された専用のチップによりドライブ全体が常に暗号化/復号化(Full-Disk Encryption: FED)されるため、オペレーティングシステムによるソフトウエア処理が基本的には不要であり、性能の問題が発生しにくい、という利点があります。 ## OPAL規格とは Trusted Computing Group によって開発された自己暗号化ドライブの規格です。OPAL規格登場以前は、各ハードウエアベンダーによる独自のATA/IDE ハードディスク暗号化をBIOSに搭載している例がありましたが、暗号化したHDD/SSDを他のベンダーのハードウエアでは復号化できないなどの問題がありました。 OPAL規格は、ベンダー中立の規格で、各HDD/SSDメーカーにより準拠されたドライブが販売されています。 ## 鍵管理の仕組み 現在、大抵の場合、暗号化の方法はAESによる共通鍵暗号化になります。この鍵は、OPAL2.0の標準仕様に準拠したSED(今後単純にSEDとよぶ)では、認証鍵(Authentication Key, AK)とデータ暗号鍵(Data Encryption Key: DEK)による鍵管理をしています。 AKは、ユーザが使用するパスフレーズで、DEKを復号化します。このDEKを用いて、データを暗号化・複合化します。 SEDでは、出荷時にランダムに生成されているDEKを用いて、常に暗号化を実施しています。ユーザがAKを設定することで、起動時に入力するパスフレーズによりDEKを取得できるようになり、復号化が開始します。 そのため、ユーザは、なにも設定しなくても、データが暗号化して保管されるようになっているため、あとでSEDのFEDを有効にするときに、データを再暗号化する必要がなくなります。 また、DEKを破棄(変更)すると一瞬で、それまでのデータには(暗号学的に安全に)アクセスできなくなります。 ### SEDの弱点と対策 鍵管理の仕組み上、起動後電源が入っている間はディスク上のデータはOSから透過的に見えるため、保護されていない状況になります。そのため、サスペンドしている場合には、ディスクの電源がオフになるためディスクの盗難からは安全です。しかし、サスペンドから復帰後、データ利用できるように、サスペンドしている間もメモリ上にキーが保持されているため、ハードウエア的な盗難に対してデータ漏洩のリスクがあるといえます。 シャットダウンすると、つぎの起動時にパスフレーズを聞かれるようになるため、データが保護されます。同様に、ハイバネート(メモリ上の内容をDISKにかきこんで、次回起動時に前回ハイバネート時の状態をもどす方法)を行なう場合は、復旧時にパフレーズをもとに、改めてDEKを取得するため、データが保護されます。 ## Linuxのサポート Linuxでは、Drive-Trust-Allianceが管理するオープンソース(GPLv3)のsedutilを利用することで、SEDを扱えるようになります。 ### ArchLinux ArchLinuxでは、AURにより sedutil が提供されており、Wikiに詳細な説明があります。 ### Ubuntu/Mint Linux Ubuntu LinuxおよびMint Linuxでは、まだArchLinuxのようなSEDサポートがありませんので、マニュアルでソースからコンパイルするなどの、すべての作業をおこなう必要があります。 ### OpenSuSE/CentOS sedutilパッケージが提供されているので、ツールの導入は容易です。 ### 参考文献 - https://github.com/Drive-Trust-Alliance/sedutil/wiki/Encrypting-your-drive - https://wiki.archlinux.jp/index.php/%E8%87%AA%E5%B7%B1%E6%9A%97%E5%8F%B7%E5%8C%96%E3%83%89%E3%83%A9%E3%82%A4%E3%83%96