رمزنگاری یک پارتیشن و سوار کردن خودکار آن

اشتراک وفاداری (ماهی یک چایی)

می‌توانید از محتویات این باکس بگذرید و یک‌راست به سراغ نوشته اصلی بروید. قبل از خرید اشتراک وفاداری، مزایای آن را از طریق این پیوند مشاهده کنید. لطفا تنها بعد از خواندن «مزایای خرید اشتراک» اقدام به خرید کنید.

شاید فکر کنید که «خب ده تا فولدر داخل هم درست می‌کنم و فیلم‌های فلان و عکس‌های بیسارم که خیلی خیلی شخصی‌اند را داخل یکی از آن‌ها جاسازی می‌کنم. خب کی این همه فولدر را برای پیدا کردن فایل‌های شخصی من زیر و رو می‌کنه؟ نهایتش دو سه تا از فولدرها را می‌گردد و بی‌خیال ماجرا میشه.»

ولی کافی‌ست که یک نفر با قابلیت جستجوی سیستم عامل فقط چند ثانیه یا حالا دقیقه وقت بگذارد تا یک لیست کاملی از همه‌ی فایل‌های شما را به ترتیب نوع، سایز، تاریخ یا غیره ردیف کند.

سوال اینجاست که پس راه‌حل چیست؟ پاسخ: ساخت یک پارتیشن رمز شده.

پارتیشن رمز شده در ویندوز

تمرکز این آموزش بر روی ساخت پارتیشن رمز شده در لینوکس است، ولی برای ویندوزی‌ها هم برنامه‌ای به صورت پیش‌فرض در سیستم‌عامل تعبیه شده که به راحتی هرچه تمام‌تر از پس این وظیفه برمی‌آید. BitLocker اسم این ابزار است. شما می‌تواند یا کل هارددیسک را با BitLocker رمز کنید یا صرفا یکی از پارتیشن‌ها را! برای اینکه یک پارتیشن را رمز کنید بر روی پارتیشن راست کلیک کرده و گزینه‌ی Turn on BitLocker را بزنید.

گزینه‌ی اول را تیک بزنید و پسورد مورد نظرتان را دو بار در دو فیلد بنویسید. در دیالوگ بعدی ذخیره‌ی کلید ریکاوری نمایش داده می‌شود. کلید را بر روی یک حافظه‌ی فلش برای روز مبادا ذخیره کنید و بر روی Next بزنید. حالا منتظر شوید تا ویندوز پارتیشن را رمز کند.

توصیه اکید می‌کنم که برای رمز کردن از یک پارتیشن خالی استفاده کنید تا عملیات رمز شدن سریع‌تر صورت بپذیرد. بعد از رمز شدن پارتیشن، با هر بار ری‌استارت شدن سیستم، از شما برای باز کردن پارتیشن پسورد می‌خواهد. کار ما با ویندوز تمام شد. به سراغ لینوکس برویم.

پارتیشن رمز شده در لینوکس

در زدن دستورهای زیر خیلی‌خیلی‌خیلی دقت کنید. یک عدد اشتباه، ممکن است پارتیشن اشتباهی را فرمت و اطلاعات شما را نابود کند. اول از همه هر چیز اضافی اعم از فلش‌مموری، هارد اکسترنال، هارد اینترنال اضافی و غیره را از سیستم جدا کنید. تنها حافظه‌ای را به سیستم متصل کنید که سیستم‌عامل بر روی آن نصب شده و پارتیشنی که قرار است رمز شود بر روی آن قرار دارد.

ابتدا ابزار زیر را نصب کنید:

برای اوبونتو:

$ sudo apt-get install cryptsetup

برای فدورا یا RHEL یا CentOS

$ sudo yum install cryptsetup

و خب برای سایر توزیع‌های لینوکسی هم بسته‌ی cryptsetup را در مخازن جستجو و سپس نصب کنید.

حالا کدام پارتیشن را می‌خواهید رمز کنید؟ ابتدا با دستور blkid لیست از پارتیشن‌های موجود را بالا بیاورید:

$ sudo blkid
[sudo] password for me:
/dev/sda1: UUID="fe04c927-9404-4f2c-bb4b-e9747d26a402" TYPE="ext4" PARTUUID="48fde2ff-01"
/dev/sda2: UUID="fe04c927-da70-4028-8e9a-8ef67a14f43a" TYPE="swap" PARTUUID="48fde2ff-02"
/dev/sda3: LABEL="ARCHIVE" UUID="6EAEEFC2AEEF8147" TYPE="ntfs" PARTUUID="48fde2ff-03"
/dev/sdb1: LABEL="STEAM" UUID="fe04c927-3af8-4d90-bb45-7cedaf511168" TYPE="ext4" PARTUUID="2723130c-01"
/dev/sdb5: LABEL="Files-1TB" UUID="B80CB5DB0CB5953A" TYPE="ntfs" PARTUUID="2723130c-05"
/dev/sdb6: UUID="fe04c927-0e3a-49fe-8c2f-fa362ac0943a" TYPE="crypto_LUKS" PARTUUID="2723130c-06"
/dev/sdc1: UUID="fe04c927-03a1-4d7d-a251-f29f116163aa" TYPE="ext4" PARTUUID="6d3e07da-01"
/dev/sdc2: LABEL="Home" UUID="fe04c927-1f4a-4160-b913-d333d1188adc" TYPE="ext4" PARTUUID="6d3e07da-02"
/dev/sdc3: LABEL="Swap" UUID="fe04c927-a45b-4301-9368-e3bc72b77def" TYPE="swap" PARTUUID="6d3e07da-03"
/dev/sdd9: LABEL="8GiB" UUID="7FD5-952E" TYPE="vfat" PARTUUID="c3072e18-011"

ما در این مثال پارتیشن sdd9 را رمز می‌کنیم. پر واضح است که این شناسه برای شما مطمئنا فرق می‌کند. بایستی در تمامی دستورات و خطوط زیر شناسه‌ی پارتیشن خود را با sdd9 ما عوض کنید. مثلا اگر بر روی پارتیشن دوم هارد دیسک سوم قرار است که این عملیات را انجام دهید، بایستی در تمام خطوط زیر sdd9 را با sdc2 عوض کنید. البته برای به دست آوردن شناسه به خروجی بالا از سیستم خود مراجعه کنید.

دستور زیر را در ترمینال صادر کنید:

$ sudo cryptsetup --verbose --verify-passphrase luksFormat /dev/sdd9

برنامه از شما تایید می‌خواهد. YES را با حروف بزرگ تایپ کنید و Enter را بزنید. حالا بایستی رمزی که در نظر دارید را وارد کنید. سپس دو مرتبه آن را تایید نمایید. مراقب باشید که پسورد را به هیچ عنوان فراموش نکنید چرا که با فراموش کردن آن، با تمام اطلاعات آن پارتیشن به طور قطع خداحافظی خواهید کرد.

خروجی شبیه به این خواهد بود:

$ sudo cryptsetup --verbose --verify-passphrase luksFormat /dev/sdd9

WARNING!
========
This will overwrite data on /dev/sdd9 irrevocablyy.

Are you sure? (Type uppercase yes): YES
Enter passphrase:
Verify passphrase:
Command successful.
$

اگر از فلش‌مموری استفاده می‌کنید و خطای حافظه‌ی در حال استفاده را می‌دهد، دستور زیر را صادر و یک بار دیگر دستور بالا را اجرا کنید:

$ sudo umount /dev/sdd9

خب حالا درایو من آماده‌ست و نوبت چک‌کردن پیکربندی LUKS پارتیشن است. دستور زیر را تایپ کنید:

$ sudo cryptsetup luksDump /dev/sdd9

خروجی بایستی چیزی شبیه به این باشد:

LUKS header information for /dev/sdd9

Version: 1
Cipher name: aes
Cipher mode: cbc-essiv:sha256
Hash spec: sha1
Payload offset: 4096
MK bits: 256
MK digest: 18 1d 6d 3e e9 44 2a fe bf 67 78 8f aa 02 7f 91 2a f4 f2 17
MK salt: 26 cc 29 9f 0b 7d ea ff 44 9f fe 34 91 40 6e 9b
af 1e bd 8f d0 d2 1c 3a 70 30 35 5f 2d 49 9a 95
MK iterations: 222875
 UUID: 5acc17e0-80be-40ba-beae-626e47b57379

Key Slot 0: ENABLED
Iterations: 891733
Salt: 26 20 29 39 a5 1d 02 7b ca 8c bd 18 bc 29 64 7e
28 dc 06 65 78 0e 16 95 1a 67 14 66 12 2d a3 c1
Key material offset: 8
AF stripes: 4000
Key Slot 1: DISABLED
Key Slot 2: DISABLED
Key Slot 3: DISABLED
Key Slot 4: DISABLED
Key Slot 5: DISABLED
Key Slot 6: DISABLED
 Key Slot 7: DISABLED

حالا پارتیشن LUKS را باز کنید:

$ sudo cryptsetup luksOpen /dev/sdd9 sdd9

دستور شما از شما می‌خواهد که پسورد را وارد کنید. اگر پسورد را به درستی وارد کرده باشید، پارتیشن در مسیر /dev/mapper/sdd9 مپ می‌شود. برای بررسی صحت مپ شدن پارتیشن دستور زیر را بزنید:

$ sudo fdisk -l

خروجی باید شامل خطوطی شبیه به این باشد:

Disk /dev/mapper/sdd9: 7.5 GiB, 8051986432 bytes, 15726536 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes

خب تقریبا پارتیشن آماده‌ست. الان کافیست که یک فایل‌سیستم به پارتیشن اختصاص دهیم. دستورات زیر را صادر کنید (دستور اولی کمی زمان‌بر است. منتظر شوید که اعلان به سر خط برگردد سپس دستور دوم را صادر کنید):

$ sudo mkfs.ext4 /dev/mapper/sdd9
$ sudo mkdir /mnt/sdd9
$ sudo mount /dev/mapper/sdd9 /mnt/sdd91/

برای اینکه کاربر شما اجازه‌ی نوشتن بر روی حافظه را داشته باشد، می‌توانید مالکیت فایل‌سیستم را به کاربر خودتان بدهید. مثلا کاربر من به اسم eman از گروه users با دستور زیر مالکیت فایل‌سیستم را در اختیار می‌گیرد:

$ sudo chown eman:users /mnt/sdd9

اتصال خودکار در حین راه‌اندازی سیستم

برای سوار کردن پارتیشن رمز شده می‌توانید از یک فایل‌منیجر مدرن مثل دولفین یا Nautilus استفاده کنید. برای این کار کافیست که روی درایو کلیک و رمز را برای باز کردن پارتیشن تایپ کنید. ولی اگر می‌خواهید که هر بار بعد از راه‌اندازی سیستم، پارتیشن به صورت خودکار در محلی که می‌خواهید (مثلا /mnt/sdd9/) سوار شود به ادامه‌ی این راهنما توجه کنید.

ابتدا یک کلید رندم می‌سازیم و سپس این کلید را تنها در دسترس کاربر ریشه قرار می‌دهیم:

$ sudo dd if=/dev/urandom of=/root/key.sdd9 bs=1024 count=4
$ sudo chmod 400 /root/key.sdd9

حالا کلید را به پیکربندی LUKS اضافه می‌کنیم:

$ sudo cryptsetup luksAddKey /dev/sdd9 /root/key.sdd9

برای اینکه مطمئن شوید کلید اضافه شده دستور زیر را تایپ کنید:

$ sudo cryptsetup luksDump /dev/sdd9

در خروجی زیر می‌بینید که اسلات یک فعال شده است (اگر نشده یک بار دیگر کلید را بسازید و دستور بالا را اجرا کنید):

LUKS header information for /dev/sdd9

Version: 1
Cipher name: aes
Cipher mode: xts-plain64
Hash spec: sha1
Payload offset: 4096
MK bits: 256
MK digest: d5 cc a1 d0 df a8 5e 53 b9 55 2b 4f a5 1b f8 fd 89 db 74 e9
MK salt: 77 e6 42 58 60 a3 81 eb 58 de c6 bc 0d b3 74 8e
64 19 1b a1 38 0b a1 02 e6 e8 10 51 be 1e 06 03
MK iterations: 78750
 UUID: 02cf13b9-ac8f-46c1-ae8e-aae5b4f0f67a

Key Slot 0: ENABLED
Iterations: 328205
Salt: 30 25 ed 53 cf 05 53 de 61 8a 5e 84 00 19 27 a5
fe 3b 82 ce aa 45 88 95 df 62 10 22 8b ac 80 bb
Key material offset: 8
AF stripes: 4000
Key Slot 1: ENABLED
Iterations: 307691
Salt: b3 a1 f4 83 6d da 4d 50 ca 36 8c 8b 6b e9 b4 ff
82 1b eb 51 9c 3e e7 67 51 01 7b b5 57 e2 d5 f5
Key material offset: 264
AF stripes: 4000
Key Slot 2: DISABLED
Key Slot 3: DISABLED
Key Slot 4: DISABLED
Key Slot 5: DISABLED
Key Slot 6: DISABLED
 Key Slot 7: DISABLED

خب حالا بایستی UUID مربوط به پارتیشن رمز شده را بگیرید:

$ sudo cryptsetup luksUUID /dev/sdd9

و خروجی:

02cf13b9-ac8f-46c1-ae8e-aae5b4f0f67a

خب حالا فایل crypttab را از مسیر etc باز کنید:

$ sudo nano /etc/crypttab

خط زیر را به فایل اضافه کنید:

sdd9 /dev/disk/by-uuid/02cf13b9-ac8f-46c1-ae8e-aae5b4f0f67a /root/key.sdd9 luks

در فایل بالا یادتان باشد که جای کد بعد از /by-uuid/ خروجی مربوط به دستور بالا را قرار دهید. و همینطور به جای sdd9 پارتیشن خودتان را. فرمت کلی این خط به این صورت است:

 /dev/disk/by-uuid/  luks

ما نقطه‌ی اتصال را پیشتر ساخته بودیم (/mnt/sdd9/). حالا بایستی با ویرایش fstab پارتیشن را بر روی آن سوار کنیم.

$ sudo nano /etc/fstab

خط زیر را اضافه کنید:

/dev/mapper/sdd9 /mnt/sdd9 ext4

یک فایل یا فولدر امتحانی در مسیر پارتیشن بسازید:

touch /mnt/sdd9/test

سیستم را ری‌استارت کنید و به مسیر /mnt/sdd9/ بروید و ببینید پارتیشن به خوبی سوار شده و فایل test وجود خارجی دارد یا خیر. اگر فایل در مسیر قرار دارد، تبریک می‌گویم. الان یک پارتیشن تا خرخره رمز شده دارید!

5 دیدگاه

  1. با سلام
    با تشکر از مقالات فنی و غبر فنی شما آقا ایمان که همشون کاربردی هستن و حس میکنم که خیلی بادقت وصرف وقت تهیه شدن و البته این مقالات فنی با تسلط شما در زمینه لینوکس ارزش کار رو چند برابر میکنه برای من که ارزشی برابر ویکی آرچ داره پس لطفا مارا از قلم شیواتون در زمینه های فنی که تخصص دارید بهره مند کنید چون را هنماها در دنیای اوپن سورس ارزش الماس دارن پس این مقالات رو بیشتر کنید و ویرایش رو هم بعد از مدتی فراموش نکنید من هنوزهم برای نصب آرچ به راهنمای شما مراجعه میکنم
    لطفا طریفه ساخت(فرمت)دوباره فایل سیستم پاراتیشن رمزنگاری شده رو قرار بدین من بسیار استفاده کردم از این راهنما
    همینطور رفرنس مقالات و نکات آموزشی رو بذارین
    باز هم تشکر بابت همه مقلات خوبتون دوست عزیز

    • سلام و تشکر از نظر دلگرم‌کننده‌تون. شما لطف دارید به من.

      حتما اگه فرصت کنم مقاله‌ها رو به‌روز می‌کنم؛ ولی متاسفانه دو تا مورد هست که به‌روزرسانی مقاله‌ها رو عقب می‌ندازه. اول اینکه خب شاغل هستم، دوم اینکه چندتا پروژه در حال اجرا دارم.

      بازم به روی چشم. هرچند سواد چندانی ندارم ولی سعیم رو می‌کنم هرد جان.

      اگه می‌خواین یه پارتیشن خاص رو ریفرمت کنین کافیه با mkfs از نو فرمتش کنید:

      مثلا:

      $ sudo mkfs.ext4 /dev/sdz1

  2. با عرض سلام و خسته نباشید میخواستم بدونم آیا امکان دور زدن یا شکستن رمز پارتیشن لینوکس وجود دارد یا نه؟ ممنون میشم پاسخ دهید. با تشکر از شما.

    • سلام و ممنون
      من، خودم متخصص این موضوع نیستم ولی از اهل فن یک بار در خصوص قدرت رمزگذاری این پارتیشن‌ها در لینوکس پرسیدم و جواب این بود که حتی اف‌بی‌آی هم برای بیرون کشیدن اطلاعات از این پارتیشن‌ها به مشکل می‌خوره پس خیالتون راحت راحت باشه.

  3. با عرض سلام و خسته نباشید میخواستم بدونم آیا امکان دور زدن یا شکستن رمز پارتیشن لینوکس وجود دارد یا نه؟ ممنون میشم پاسخ دهید. با تشکر از شما.

پاسخ دهید

ایمیل شما نمایش داده نخواهد شد