สร้างแฟลชไดรฟ์ (Flash drive) ที่มีการเข้ารหัสเพื่อเก็บข้อมูลสำคัญ
บทความนี้เขียนขึ้นเพื่ออธิบายการสร้างแฟลชไดรฟ์ที่มีการเข้ารหัสเพื่อเก็บข้อมูลสำคัญ โดยใช้ซอฟแวร์ Linux Unified Key Setup (LUKS) 1
เมื่อก่อนผมใช้งานระบบปฎิบัติการ Windows ผมเลือกเก็บข้อมูลด้วยการเข้ารหัสโดยการใช้ซอฟแวร์ BitLocker 2 เข้ารหัสทั้งพาร์ติชันของฮาร์ดดิสก์ที่ใช้เก็บข้อมูล หรือใช้ซอฟแวร์ VeraCrypt 3 (หรือ TrueCrypt 4 ชื่อในอดีต) สำหรับสร้างไดรฟ์ข้อมูลเข้ารหัสเสมือน (virtual encrypted disk) โดยใช้เก็บสำรองไฟล์เข้ารหัสลงในแฟลชไดรฟ์ และนำไปใช้งานกับเครื่องอื่นๆ ทั้ง Windows หรือ Linux
แต่เมื่อย้ายมาที่ระบบปฎิบัติการ Ubuntu มากขึ้น ผมต้องการสำรองข้อมูล Public และ Private Key 5 จึงมองตัวเลือกอื่น ในการสำรองข้อมูลและเข้ารหัสเพื่อความปลอดภัย โดยได้เลือกใช้ LUKS 1 สำหรับการสำรองข้อมูลแบบเข้ารหัสในแฟลชไดรฟ์
การเตรียมพาทิชั่นในแฟลชไดรฟ์สำหรับการเก็บข้อมูลเข้ารหัส (Prepare a Partition for Encrypted Data Storage)
- เริ่มต้นด้วยการตรวจสอบแฟลชไดรฟ์ที่จะใช้เพื่อสร้างแฟลชไดรฟ์ที่มีการเข้ารหัส ด้วยคำสั่ง
lsblk
ตามตัวอย่างด้างล่าง ผมเลือกใช้แฟลชไดรฟ์ขนาด 32 GB ชื่อsde
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
...
sde 8:64 1 28.7G 0 disk
...
-
ใช้คำสั่ง
fdisk
ตามด้วย/dev/{DEVICE_NAME}
จากข้อที่ 1 ตัวอย่างเช่นsudo fdisk /dev/sde
สร้างตารางพาทิชั่น (Partition Table) ของแฟลชไดรฟ์แบบ GPT (GUID Partition Table 6) ไดยการพิมพ์
g
จากนั้นกดw
เพื่อบันทึก ตามรูปที่ 1
- ตรวจสอบรูปแบบตารางพาทิชั่นของแฟลชไดรฟ์ด้วยคำสั่ง
sudo fdisk -l /dev/sde
ตามรูปที่ 2
- จากนั้นสร้างพาทิชั่นใหม่ในแฟลชไดรฟ์ด้วยคำสั่ง
sudo fdisk /dev/sde
ตามรูปที่ 3 ดังนี้
- โดยพิมพ์
n
เพื่อสร้างพาทิชั่นใหม่ - ต่อด้วยพิมพ์
1
เพื่อกำหนดหมายเลขพาทิชั่นใหม่ที่กำลังสร้างขึ้น - ต่อด้วยพิมพ์
2048
สำหรับตำแหน่งเริ่มต้นของดัชนี (sector) ของพาทิชั่น - ต่อด้วยพิมพ์
+8G
เพื่อกำหนดขนาดของพาทิชั่น ซึ่งในกรณีสร้างพาทิชั่นขนาด 8 จิกะไบต์ (GB) เริ่มจากตำแหน่งดัชนีก่อนหน้า (2048) - และสุดท้ายพิมพ์
w
เพื่อบันทึกการเปลี่ยนแปลง
- ตรวจสอบพาทิชั่นขนาด 8 GB ที่สร้างขึ้นในข้อที่ 4 ด้วยคำสั่ง
sudo fdisk -l /dev/sde
ตามรูปที่ 4
เข้ารหัสพาทิชั่นของแฟลชไดรฟ์ใด้วย LUKS (Encrypt a Flash Drive with LUKS)
- เลือกรหัสการเข้ารหัสของแฟลชไดรฟ์ และเก็บรหัสในตัวแปลชื่อ
LUKS_PASS
ด้วยคำสั่งexport LUKS_PASS={YOUR_PASSPHRASE}
หรือใช้คำสั่งด้านล่างเพื่อช่วยสุ่มเลือกรหัสผ่าน
export LUKS_PASS=$(shuf -n 5 /usr/share/dict/words \
| tr '\n' '-' \
| sed 's/-$//') ; \
printf "YOUR PASSPHRASE;\n$LUKS_PASS\n\n"
- ล้างข้อมูล (format) ในพาทิชั่นที่สร้างขึ้นพร้อมเข้ารหัสด้วยคำสั่ง
cryptsetup luksFormat
ที่/dev/sde1
ตามตัวอย่างด้านล่าง
echo $LUKS_PASS | sudo cryptsetup -q luksFormat /dev/sde1
- เปิดพาทิชั่นที่สร้างขึ้นด้วยคำสั่ง
cryptsetup open
โดยกำหนดชื่อพาทิชั่นเข้ารหัสเป็นsecrets-device
ที่/dev/sde1
ตามตัวอย่างด้านล่าง
echo $LUKS_PASS | sudo cryptsetup open /dev/sde1 secrets-device
- ตรวจสอบพาทิชั่นที่เปิดเข้ารหัสด้วยคำสั่ง
lsblk
พบพาทิชั่นเข้ารหัสชื่อsecrets-device
ที่sde1
ขนาด 8 GB ตามผลลัพธ์ด้านล่าง
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
...
sde 8:64 1 28.7G 0 disk
└─sde1 8:65 1 8G 0 part
└─secrets-device 252:0 0 8G 0 crypt
...
- สร้างระบบไฟล์
ext2
ในพาทิชั่นเข้ารหัสด้วยคำสั่งmkfs
ตามตัวอย่างด้างล่าง
sudo mkfs.ext2 /dev/mapper/secrets-device -L secrets
- เสร็จสิ้นด้วยการปิดพาทิชั่นที่เปิดเข้ารหัสด้วยคำสั่ง
cryptsetup close
ตามตัวอย่างด้านล่าง
sudo cryptsetup close secrets-device
การเปิดและปิดการใช้งานแฟลชไดรฟ์เข้ารหัส (Mount and Unmount an Encrypted Partition)
การเปิดการใช้งานแฟลชไดรฟ์ที่มีการเข้ารหัส
- เปิด พาทิชั่นเข้ารหัสด้วยคำสั่ง
cryptsetup open
พาทิชั่นเข้ารหัสชื่อsecrets-device
ที่/dev/sde1
ตามตัวอย่างด้านล่าง
echo $LUKS_PASS | sudo cryptsetup open /dev/sde1 secrets-device
- สร้างไฟล์เดอร์สำหรับติดต่อกับพาทิชั่นเข้ารหัสด้วยคำสั่ง
mkdir
ตามตัวอย่างด้านล่าง
sudo mkdir /mnt/encrypted-storage
- เชื่อมต่อพาทิชั่นเข้ารหัสด้วยคำสั่ง
mount
ที่พาทิชั่น/dev/mapper/secrets-device
กับไฟล์เดอร์/mnt/encrypted-storage
ตามตัวอย่างด้านล่าง
sudo mount /dev/mapper/secrets-device /mnt/encrypted-storage
- ตรวจสอบพาทิชั่นที่เปิดเข้ารหัสด้วยคำสั่ง
lsblk
พบพาทิชั่นเข้ารหัสชื่อsecrets-device
เชื่อมต่อไปที่ไฟล์เดอร์/mnt/encrypted-storage
ในข้อ 2 ตามผลลัพธ์ด้านล่าง
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
...
sde 8:64 1 28.7G 0 disk
└─sde1 8:65 1 8G 0 part
└─secrets-device 252:0 0 8G 0 crypt /mnt/encrypted-storage
...
การปิดการใช้งานแฟลชไดรฟ์ที่มีการเข้ารหัส
- ปิดการเชื่อมต่อพาทิชั่นเข้ารหัสด้วยคำสั่ง
umount
กับไฟล์เดอร์/mnt/encrypted-storage
ตามตัวอย่างด้านล่าง
sudo umount /mnt/encrypted-storage
- ปิดพาทิชั่นเข้ารหัสด้วยคำสั่ง
cryptsetup close
ที่พาทิชั่นsecrets-device
ตามตัวอย่างด้านล่าง
sudo cryptsetup close secrets-device