Contents

สร้างแฟลชไดรฟ์ (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)

  1. เริ่มต้นด้วยการตรวจสอบแฟลชไดรฟ์ที่จะใช้เพื่อสร้างแฟลชไดรฟ์ที่มีการเข้ารหัส ด้วยคำสั่ง lsblk ตามตัวอย่างด้างล่าง ผมเลือกใช้แฟลชไดรฟ์ขนาด 32 GB ชื่อ sde
$ lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
...
sde            8:64   1  28.7G  0 disk 
...
  1. ใช้คำสั่ง fdisk ตามด้วย /dev/{DEVICE_NAME} จากข้อที่ 1 ตัวอย่างเช่น sudo fdisk /dev/sde

    สร้างตารางพาทิชั่น (Partition Table) ของแฟลชไดรฟ์แบบ GPT (GUID Partition Table 6) ไดยการพิมพ์ g จากนั้นกด w เพื่อบันทึก ตามรูปที่ 1

/images/2025-01-05/example_create_gpt_partition_with_fdisk.png
รูปที่ 1 แสดงการสร้างตารางพาทิชั่นของแฟลชไดรฟ์แบบ GPT ในแฟลชไดรฟ์

  1. ตรวจสอบรูปแบบตารางพาทิชั่นของแฟลชไดรฟ์ด้วยคำสั่ง sudo fdisk -l /dev/sde ตามรูปที่ 2

/images/2025-01-05/example_verify_gpt_partition_created.png
รูปที่ 2 แสดงรูปแบบตารางพาทิชั่นของแฟลชไดรฟ์

  1. จากนั้นสร้างพาทิชั่นใหม่ในแฟลชไดรฟ์ด้วยคำสั่ง sudo fdisk /dev/sde ตามรูปที่ 3 ดังนี้
  • โดยพิมพ์ n เพื่อสร้างพาทิชั่นใหม่
  • ต่อด้วยพิมพ์ 1 เพื่อกำหนดหมายเลขพาทิชั่นใหม่ที่กำลังสร้างขึ้น
  • ต่อด้วยพิมพ์ 2048 สำหรับตำแหน่งเริ่มต้นของดัชนี (sector) ของพาทิชั่น
  • ต่อด้วยพิมพ์ +8G เพื่อกำหนดขนาดของพาทิชั่น ซึ่งในกรณีสร้างพาทิชั่นขนาด 8 จิกะไบต์ (GB) เริ่มจากตำแหน่งดัชนีก่อนหน้า (2048)
  • และสุดท้ายพิมพ์ w เพื่อบันทึกการเปลี่ยนแปลง

/images/2025-01-05/example_create_new_partition_size_8_gigabytes.png
รูปที่ 3 แสดงการสร้างพาทิชั่นใหม่ขนาด 8 GB ในแฟลชไดรฟ์

  1. ตรวจสอบพาทิชั่นขนาด 8 GB ที่สร้างขึ้นในข้อที่ 4 ด้วยคำสั่ง sudo fdisk -l /dev/sde ตามรูปที่ 4

/images/2025-01-05/example_verify_new_partition_size_8_gigabytes_created.png
รูปที่ 4 แสดงผลลัพธ์ของพาทิชั่นใหม่ขนาด 8 GB ที่สร้างขึ้นในแฟลชไดรฟ์

เข้ารหัสพาทิชั่นของแฟลชไดรฟ์ใด้วย LUKS (Encrypt a Flash Drive with LUKS)

  1. เลือกรหัสการเข้ารหัสของแฟลชไดรฟ์ และเก็บรหัสในตัวแปลชื่อ 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"
  1. ล้างข้อมูล (format) ในพาทิชั่นที่สร้างขึ้นพร้อมเข้ารหัสด้วยคำสั่ง cryptsetup luksFormat ที่ /dev/sde1 ตามตัวอย่างด้านล่าง
echo $LUKS_PASS | sudo cryptsetup -q luksFormat /dev/sde1
  1. เปิดพาทิชั่นที่สร้างขึ้นด้วยคำสั่ง cryptsetup open โดยกำหนดชื่อพาทิชั่นเข้ารหัสเป็น secrets-device ที่ /dev/sde1 ตามตัวอย่างด้านล่าง
echo $LUKS_PASS | sudo cryptsetup open /dev/sde1 secrets-device
  1. ตรวจสอบพาทิชั่นที่เปิดเข้ารหัสด้วยคำสั่ง 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
...
  1. สร้างระบบไฟล์ ext2 ในพาทิชั่นเข้ารหัสด้วยคำสั่ง mkfs ตามตัวอย่างด้างล่าง
sudo mkfs.ext2 /dev/mapper/secrets-device -L secrets
  1. เสร็จสิ้นด้วยการปิดพาทิชั่นที่เปิดเข้ารหัสด้วยคำสั่ง cryptsetup close ตามตัวอย่างด้านล่าง
sudo cryptsetup close secrets-device

การเปิดและปิดการใช้งานแฟลชไดรฟ์เข้ารหัส (Mount and Unmount an Encrypted Partition)

การเปิดการใช้งานแฟลชไดรฟ์ที่มีการเข้ารหัส

  1. เปิด พาทิชั่นเข้ารหัสด้วยคำสั่ง cryptsetup open พาทิชั่นเข้ารหัสชื่อ secrets-device ที่ /dev/sde1 ตามตัวอย่างด้านล่าง
echo $LUKS_PASS | sudo cryptsetup open /dev/sde1 secrets-device
  1. สร้างไฟล์เดอร์สำหรับติดต่อกับพาทิชั่นเข้ารหัสด้วยคำสั่ง mkdir ตามตัวอย่างด้านล่าง
sudo mkdir /mnt/encrypted-storage
  1. เชื่อมต่อพาทิชั่นเข้ารหัสด้วยคำสั่ง mount ที่พาทิชั่น /dev/mapper/secrets-device กับไฟล์เดอร์ /mnt/encrypted-storage ตามตัวอย่างด้านล่าง
sudo mount /dev/mapper/secrets-device /mnt/encrypted-storage
  1. ตรวจสอบพาทิชั่นที่เปิดเข้ารหัสด้วยคำสั่ง 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
...

การปิดการใช้งานแฟลชไดรฟ์ที่มีการเข้ารหัส

  1. ปิดการเชื่อมต่อพาทิชั่นเข้ารหัสด้วยคำสั่ง umount กับไฟล์เดอร์ /mnt/encrypted-storage ตามตัวอย่างด้านล่าง
sudo umount /mnt/encrypted-storage
  1. ปิดพาทิชั่นเข้ารหัสด้วยคำสั่ง cryptsetup close ที่พาทิชั่น secrets-device ตามตัวอย่างด้านล่าง
sudo cryptsetup close secrets-device