Difference between revisions of "Talk:Dm-crypt"

From ArchWiki
Jump to: navigation, search
(Splitting sections into separate pages: new section)
(possibly confusing sentence?)
Line 16: Line 16:
:: This is new territory for me, but I want to implement this topic myself soon.  I'll start with removing some duplicated content. [[User:T1nk3r3r|T1nk3r3r]] ([[User talk:T1nk3r3r|talk]]) 07:25, 16 June 2013 (UTC)
:: This is new territory for me, but I want to implement this topic myself soon.  I'll start with removing some duplicated content. [[User:T1nk3r3r|T1nk3r3r]] ([[User talk:T1nk3r3r|talk]]) 07:25, 16 June 2013 (UTC)
Hi, this sentence "This should be repeated for all partitions except for /boot and possibly swap." is unclear to me; my noobish guess is that it means: "This should be repeated for all partitions and possibly swap, except for /boot" but I am unsure because it appears to mean "except /boot and possibly swap" but I imagine you wouldn't want swap to be unencrypted... Hmm, the more I think about it, it seems both variants seem equivalent though. [[User:EmanueLczirai|EmanueLczirai]] ([[User talk:EmanueLczirai|talk]]) 01:40, 30 September 2013 (UTC)
== Luks and suspend2 ==
== Luks and suspend2 ==

Revision as of 01:40, 30 September 2013

Cleanup and Clarification

Hello. This wiki page while very exhaustive in content is tangenital with a fractured flow. It seems the prefered method for straight forward system encryption in single drive systems is to use a combination of Luks and LVM2 - this solution provides for an encrypted swap that does not have any issues with hibernation or suspend. I propose making this section the first part of the wiki page to follow the justification for using Luks with the rather large volume of detailed information to follow in other sections. If there are no objections I'll go ahead and structure this in the wiki page itself. Vinhsynd 9:55, 30 September 2010 (CDT)

Hey all, I was trying to encrypt my hd using this page as a reference, but it was a bit difficult to read. As such, I'm going to try to clean things up a bit. It would be nice if there were a clean set of instructions with tips along the way for specialized setups.

On a related note... would anyone mind if some of the posts on this page were erased? There are a number of posts from 2007, 2008... --Arcanazar 13:22, 21 August 2010 (EDT)

I'm considering to do some editing and rewriting of this page, mainly in part "4 The Steps". The content would mostly stay the same, safe for some changes introduced with the newer versions of arch, where less console switching and module loading is needed. On the same subject should we drop, or move to a subsection, the parts related to versions 0.72 of arch?

Does anyone have objections to my plans, or should I just go ahead and we can revert back if it doesn't fit? WhiteMagic 12:56, 24 May 2007 (EDT)

Clean up is really needed. Please someone with enough knowledge start the job. -- Fengchao (talk) 02:55, 8 June 2012 (UTC)
This is new territory for me, but I want to implement this topic myself soon. I'll start with removing some duplicated content. T1nk3r3r (talk) 07:25, 16 June 2013 (UTC)

Hi, this sentence "This should be repeated for all partitions except for /boot and possibly swap." is unclear to me; my noobish guess is that it means: "This should be repeated for all partitions and possibly swap, except for /boot" but I am unsure because it appears to mean "except /boot and possibly swap" but I imagine you wouldn't want swap to be unencrypted... Hmm, the more I think about it, it seems both variants seem equivalent though. EmanueLczirai (talk) 01:40, 30 September 2013 (UTC)

Luks and suspend2

Would it be worth adding a section on opening encrypted drives from the kernel command line, or more specifically on combining luks and suspend2? As far as I can tell opening a swap partition from crypttab doesn't make it available in time to resume from, but adding the following to a lilo append option does:

resume2=swap:/dev/mapper/swap cryptdevice=/dev/sda2:swap

I'm not sure if this is the correct/best way of doing this, though, and didn't see other documentation.

Proposed update of the section 'Storing the key between MBR and 1st partition'


I tried to setup automatic mount of my LUKS encrypted /home using a keyfile stored between MBR and first partition header of my USB key following this wiki page and realized that it didn't work out because the howto is incomplete. I had to manually go through the encrypt hook to figure out what it does. To save other users this tiresome work that cost me hours until all finally worked out the way I wanted it I propose to update the mentioned section in the following way. Suggestions welcome. Maybe it should be noted in the parent section that /etc/crypttab conflicts with using the howto presented here.

Add the temporary keyfile we created before with cryptsetup:

cryptsetup luksAddKey /dev/hda3 secretkey

That should return you output like this:

Enter any LUKS passphrase:
key slot 0 unlocked.
Command successful.

Next you'll have to write the key directly between MBR and first partition.

WARNING: you should only follow this step if you know what you are doing - it can cause data loss and damage your partitions or MBR on the stick!

If you have a bootloader installed on your drive you have to adjust the values. E.g. GRUB needs the first 16 sectors, you would have to replace seek=4 with seek=16; otherwise you would overwrite parts of your GRUB installation. When in doubt, take a look at the first 64 sectors of your drive and decide on your own where to place your key.


dd if=/dev/usbstick of=64sectors bs=512 count=64   # gives you copy of your first 64 sectors
hexcurse 64sectors                                 # determine free space

Write your key to the disk:

dd if=secretkey of=/dev/usbstick bs=512 seek=4

If everything went fine you can now overwrite and delete your temporary secretkey:

shred --remove --zero secretkey

You should not simply use rm as the keyfile would only be unlinked from your filesystem and be left physically intact.

Now you have to add a kernel parameter in your /boot/grub/menu.lst (GRUB), it should look something like this:

kernel /vmlinuz-linux root=/dev/hda3 ro vga=791 cryptkey=/dev/usbstick:2048:2048 cryptdevice=/dev/hda4:home

Format for the cryptkey option:


OFFSET and SIZE match in this example, but this is coincidence - they can differ (and often will). An other possible example could be (if you use skip=16 in the 'dd' command above to protect the bootloader)

kernel /vmlinuz-linux root=/dev/hda3 ro vga=791 cryptkey=/dev/usbstick:8192:2048 cryptdevice=/dev/hda4:home

Format for the cryptdevice option:


The encrypted block device BLOCKDEVICE will then be mapped to /dev/mapper/MAPPING_TARGET

Note: You will _not_ need to have /etc/crypttab setup for this device then (but maybe you want to use it for other encrypted devices where you want to enter the passphrase manually or e.g. use a keyfile stored on this afterwards decrypted partition)! But don't forget to activate the encrypt hook in /etc/mkinitcpio.conf (_before_ the filesystems hook)

That's all, reboot and have fun! And look if your partitions still work after that ;-).


I removed the section referenced above today with this edit. The method described of storing a key was in the past maybe more often used than today. However, it was always dangerous for the partition table and the secrets. There are plenty better options. If someone sees reasons to keep this (and maybe also why we should re-add it to the wiki), please give some input here in talk. Otherwise I'll propose to close this discussion and the related one below sometime later. Thanks. --Indigo (talk) 19:24, 1 September 2013 (UTC)

Decryption of root during boot with the assistance of UDEV when key is stored on USB drive between MBR and 1st Partition

The instructions in the wiki were very helpful but a bit confusing/lacking when it comes to getting Decryption via USB keyfile stored between MBR and 1st Partition.

System_Encryption_with_LUKS#Storing_the_key_between_MBR_and_1st_partition makes references to /dev/usbkey but the previous instructions aren't entirely clear on how to ensure your usb drive can always be found at this location.

When modifying your bootloader you will be unable to use /dev/disk/by-uuid because you are not referencing a filesystem. You wouldn't want to use /dev/sd[x] because this can and will change depending on what other drives and media you have connected during boot. The best bet is to create a udev rule that will exist in early userspace to alias your usb drive to an arbitrary name, in this case "usbkey". The rule must be added to the initial ramdisk so it can be read and processed to alias your drive at /dev/usbkey before root decryption is attempted via the key hidden on the drive.

System_Encryption_with_LUKS#Using_udev runs you through the initial steps you need to create a basic rule based on the USB drive's serial number. That is the very same rule I used. I named the rules file "62-usbkey.rules" and placed it in /etc/udev/rules.d/.

Now modify /etc/mkinitcpio.conf, look for the "FILES" section and add the udev rule that you created above:

# This setting is similar to BINARIES above, however, files are added
# as-is and are not parsed in any way.  This is useful for config files.
# Some users may wish to include modprobe.conf for custom module options
# like so:
#    FILES="/etc/modprobe.d/modprobe.conf"

Run mkinitcpio ala Mkinitcpio#Image_creation_and_activation and rebuild your ramdisk with the new udev rule you've included. You can now continue to follow the instructions in System_Encryption_with_LUKS#Storing_the_key_between_MBR_and_1st_partition to modify your bootloader and substitute references to "usbkey" to whatever you named your drive alias above.

S0ma 13:48, 16 December 2011 (EST)

Feature of Grub2 to decrypt /boot

Original comment by Chehri on 8.6.13, moved from [Dm-crypt_with_LUKS#Creating_Disk_Partitions] to here: It is now possible to include /boot on a LUKS container thanks to grub 2.00. Zack Buhman (buhman) has proposed a patch which allows this. This allows kexec to be used to start a new kernel in remote situations. It also removes any possibility of the kernel being tampered with (though grub is still unencrypted; store on a removable drive for added safety).

Interesting patch/idea. I moved the out-of-date box here to discussion first for the following reason:
The patch you link to is proposed and not even commented on, i.e. it is not in the encrypt hook. Having it there as out-of-date in this general Luks section at the beginning will confuse new readers totally. Another reason is that the Luks page in that section is general, not grub specific. Everything there can be setup with standard Arch [core], i.e. also Syslinux.
I hope you agree to that, if not let's please discuss it. Thanks.
I think the best way forward for the contribution would be to draft a subsection under 3.2 (e.g. as 3.2.7), we have different hook modifications there for the swap. (later on there is a specific section on encrypted keyfiles too where it might fit well). Once the section is complete and accurate to modify a standard Arch, one could link to it from the general section above. Once something like that goes into the vanilla Arch-encrypt hook, it should definetely be described earlier. Another (different) point would be to discuss the pros/cons security-wise of such a modification a bit. That could be done in the subsection too. --Indigo (talk) 17:35, 8 June 2013 (UTC)

Merge with "plain dm-crypt without LUKS"

Develper has written a new A-Z howto for setting up a plain dm-crypt system, a subject not covered yet in our wiki. It is discussed how to effectively use common content for the benefit of the articles on disk crypto. If you have ideas or thoughts about it, head over: Talk:Plain_dm-crypt_without_LUKS#Merge --Indigo (talk) 21:37, 26 August 2013 (UTC)

Splitting sections into separate pages

Does anyone else feel that 11,305 words is too long for a single article? I'd like to propose splitting this article across multiple pages. If MediaWiki's Subpages feature is enabled, this might be a good time to use it. The article contains many sections that are not greatly related to one another. For example, does one really need to know how to (section 6) encrypt a loopback filesystem or (section 3.2) use a keyfile in order to (section 3.3) encrypt a swap partition? It's common to encrypt a swap partition without using a keyfile or an encrypted loopback filesystem, so why are they discussed in the same article?

I acknowledge that all the sections are related to LUKS, but many of them are not dependent on each other. Having many vaguely related topics makes the article difficult to follow and maintain. I propose Subpages because subpages can show their relationship to LUKS (and other sections, just as an example: /LUKS/Configuration/Keyfiles). In the absence of Subpages, placing a general overview of LUKS in the main article -- and links to pages on more specific topics -- would also be an improvement. Separating sections into (sub)pages would also keep talk pages attuned to a specific subject.

I have some suggestions for improvement of individual sections as well, but I think separating sections would be a good first step. EscapedNull (talk) 14:26, 29 September 2013 (UTC)