Ubuntuの2要素認証によるフルディスク暗号化:方法


9

背景情報

私は最近Windowsから離れたLinux初心者です。現在、ディスク全体を暗号化せずにUbuntu 11.04を使用しています。私のホームディレクトリのみが暗号化され、eCryptFSが使用されます。最近、暗号化が本来あるべきほど透過的でないことに気づき始めました。たとえば、VMWareは、暗号化されたホームディレクトリに格納されている仮想マシンで問題が発生することがあります。そのため、仮想マシンを暗号化されていない場所に移動し、暗号化されたホームディレクトリからリンクしました。しかし、それはポイントの外でもあります。Ubuntuのようなオープンソースのオペレーティングシステムは、秘密にしておくべき情報を漏らすために変更するのが非常に簡単であるため、システムを暗号化しないままにすることは実際にはあまり安全ではないことに気付きました。


ゴール

起動前の認証用に、キーデバイスとパスワードを組み合わせてディスク全体の暗号化を機能させたいのですが。


要件/詳細

  1. ディスク全体を暗号化する必要があります。少なくとも、ディスクはすべて暗号化された個々のパーティションで構成されています。パーティションでさえ暗号化で隠すことが可能なら、私はそれのために行きます。暗号化の透過性が高いほど、優れています。コンピューターを別の方法で使用したり、その他の構成を行ったりする必要はありません。
  2. 暗号化されたパーティションのロック解除と起動に使用するデバイスは、小さな外部ポータブルデバイスである必要があります。これには2つの目的があります。ブートローダーは、使用していないときは私と一緒に保管されるため、悪意のある目的で変更される可能性がはるかに低くなります。また、ディスクを復号化するための主要なファイルは、暗号化されたディスク自体のどの場所にも見つかりません。
  3. キーファイルはパスワードで暗号化する必要があります。コンピューターとUSBデバイスの両方を紛失しても、データとオペレーティングシステムは安全です。USBキーを紛失したり、侵害された場合、バックアップから別のクリーンなキーを作成できます。どちらの場合も情報は漏らされません。もちろん、コンピュータを紛失したとしても、それは取るに足らないことです。

はい、私は多くの場所からガイドを見てきましたが、問題はすべての要件(特に3番目)に対応していないことです。私の要件は、誰かが既にそのようなセットアップを試みて成功裏に実装したほど一般的であると確信しています。Linuxのプロが解決策を共有できれば幸いです。


2
「Ubuntuのようなオープンソースのオペレーティングシステムは情報を漏らすために変更するのが非常に簡単なので、秘密にしておくべきです。」- クローズドソースのOSに同じことをさせるのがいかに簡単であるかに驚くでしょう。プログラムがオープンソースであるという事実は、ローカルの攻撃に対するそのセキュリティまたは不安については何も意味しません
user1686 2011

回答:


2

起動するために特定のサムドライブとパスワードが必要なフルディスク暗号化を行う簡単な方法があります。

完全に暗号化されたハードドライブからLUKSヘッダーを切り離し、サムドライブに保存します。

私はあなたがすでに次の設定を持っていると仮定します:

# /dev/sda1 is the boot partition (100MB)
# /dev/sda2 is the encrypted partition
parted /dev/sda mklabel msdos
parted /dev/sda -- mkpart primary ext2 1M 200M
parted /dev/sda -- mkpart primary ext4 200M -100M
cryptsetup luksFormat /dev/sda2

luksヘッダーのコピーを作成し、ローカルデバイスから消去します。

mkdir /media/ramdisk && mount -t tmpfs -osize=20m,rw tmpfs /media/ramdisk
cryptsetup luksHeaderBackup /dev/sda2 --header-backup-file /media/ramdisk/header.img
dd if=/dev/urandom of=/dev/sda2 bs=1M count=2

高予算の代理店のターゲットである場合は、最後のステップを数回実行します。また、ヘッダーを一時的に保持するRAMディスクを作成しました。これにより、ヘッダーが後で残ることはありません。

/ dev / sdbにUSBデバイスを置いて、2MBのパーティションを作成し、それにヘッダーをロードします。

parted /dev/sdb -- mklabel MSDOS
parted /dev/sdb -- mkpart primary 1M 3M
dd if=/media/ramdisk/header.img of=/dev/sdb1

現在、/ dev / sda2内のすべてがランダムデータのように見え、/ dev / sdb1にヘッダーがあります。暗号化されたドライブに手動でアクセスするには、次を使用します。

cryptsetup luksOpen --header /dev/sdb1 /dev/sda2 rootfs
mount /dev/mapper/rootfs /target

次のステップは、起動時にペンドライブを挿入するように起動プロセスに要求させることです。そこにあると思い込み、それ以外の場合は失敗する方が簡単だと思いました。まず、デバイスのIDとUUIDを確認します。

find -L /dev/disk/by-id/ -samefile /dev/sdb1
/dev/disk/by-id/usb-Generic-_Compact_Flash-part1
find -L /dev/disk/by-id/ -samefile /dev/sda2
/dev/disk/by-id/scsi-SATA_ST3320820AS_5QF28W6V-part2

blkid /dev/sdb1
/dev/sdb1: UUID="63347546-2db3-4bc1-9414-1142739a4c9f" TYPE="crypto_LUKS"

次に、次の/etc/crypttabように行を編集します。

root /dev/disk/by-id/scsi-SATA_ST3320820AS_5QF28W6V-part2 none luks,header=/dev/disk/by-id/usb-Generic-_Compact_Flash-part1

(のオプションをサポートするには、このパッチが必要になる場合がありheaderますcrypttab

最後に重要なことですが、initramを更新します。

update-initramfs -u

これをさらに一歩進め、実際にブートパーティション全体をUSBドライブにロードすることができます。この記事の作成者は、このサイトでフォローアップを行っていました

あり、多く の異なるアプローチ あなたが取ることができ、セキュリティとな便利の様々な程度では、。

セキュリティに関する特別な注意:パスフレーズが侵害された場合、後でパスフレーズを変更しても、ヘッダーのコピーを持っている人はだれでもデータを復号化できます。


1

TrueCryptはOSX、Windows、Linuxで利用できることを知っています。ドライブ全体に対して2つのレベルの暗号化を実行できます。私は、AESフルディスク暗号化を備えたDebianでそれを使用しました。ハードドライブ上のデータにアクセスするには、起動時にパスワードが必要です。


3
TrueCryptフルディスク暗号化はWindowsでのみ機能すると思いました。
Kevin Li

two levels of encryption for the whole drive!=two factor auth
GnP 2015
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.