[Image description:
Screenshot of terminal output:

~ ❯ lsblk
NAME           MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINTS
sda              8:0    1  62.5M  0 disk  
└─topLuks      254:2    0  60.5M  0 crypt 
  └─bottomLuks 254:3    0  44.5M  0 crypt

/end image description]

I had no idea!

If anyone else is curious, it’s pretty much what you would expect:

cryptsetup -y -v luksFormat /dev/sda
cryptsetup open /dev/sda topLuks
cryptsetup -y -v luksFormat /dev/mapper/topLuks
cryptsetup open /dev/mapper/topLuks bottomLuks
lsblk

Then you can make a filesystem and mount it:

mkfs.ext4 /dev/mapper/bottomLuks
mount /dev/mapper/bottomLuks ~/mnt/embeddedLuksTest

I’ve tested putting files on it and then unmounting & re-encrypting it, and the files are indeed still there upon decrypting and re-mounting.

Again, sorry if this is not news to anyone else, but I didn’t realise this was possible before, and thought it was very cool when I found it out. Sharing in case other people didn’t know and also find it cool :)

  • LostXOR@fedia.io
    link
    fedilink
    arrow-up
    0
    ·
    8 months ago

    Now recursively create more layers until you have barely any free space left on the disk, then do some performance benchmarks. ;)

  • hperrin@lemmy.world
    link
    fedilink
    arrow-up
    0
    ·
    8 months ago

    It would be good if you wanted to have a system that two people need to be present to unlock. Like those nuke launch locks that need two keys.

    • communism@lemmy.mlOP
      link
      fedilink
      arrow-up
      0
      ·
      8 months ago

      Tbf this would enforce the order in which the two people decrypt it, which may not be good if you expect these two people to “arrive” asyncrhonously and you don’t want them to have to wait for the other before entering their password/key. But maybe that’s too specific of a use case.

        • communism@lemmy.mlOP
          link
          fedilink
          arrow-up
          0
          ·
          8 months ago

          Definitely not professionally lol. I think I’d only want a programming job if I could somehow develop FOSS for a living, which is hard to get a full-time job in. And only to a limited extent as a hobby, though I do enjoy programming and am trying to teach myself more whenever I have the time :)

      • Opisek@lemmy.world
        link
        fedilink
        arrow-up
        0
        ·
        8 months ago

        What about this: Top layer encrypted by Alice Middle layer encrypted by Bob Bottom layer encrypted by Alice

        If Alice arrives first, she decrypts the top layer and has to wait for Bob to arrive. She cannot go because she has to decrypt the last layer. If Bob arrives first, he has to wait for Alice to arrive. He cannot go because he hasn’t decrypted anything yet.

        Not really a solution but kind of helps.

        • communism@lemmy.mlOP
          link
          fedilink
          arrow-up
          0
          ·
          8 months ago

          That would just mean they both have to wait for each other rather than one having to wait for the other but not vice versa. Worse if you want to reduce the total amount of waiting, I guess better if you want there to be equality in having to wait for the other person lol

          • Opisek@lemmy.world
            link
            fedilink
            arrow-up
            0
            ·
            edit-2
            8 months ago

            Oh yeah, seems I hyper focused on your usage of “arrive”. I personally saw it as a problem if one person unlocked the first layer and just left leaving only one layer for days.

    • Jawa@lemmy.world
      link
      fedilink
      arrow-up
      0
      ·
      8 months ago

      You can also just split the password for a single LUKS into two parts and give one each to the two people :D

  • theit8514@lemmy.world
    link
    fedilink
    arrow-up
    0
    ·
    8 months ago

    You can, sure, but you probably shouldn’t. Encrypting and decrypting consume additional cpu time, and you won’t gain much in terms of security.

    • auth@lemmy.ml
      link
      fedilink
      arrow-up
      0
      ·
      8 months ago

      not really if you have a hardware chip that does the encrypt/decrypting

      • cbarrick@lemmy.world
        link
        fedilink
        English
        arrow-up
        0
        ·
        edit-2
        8 months ago

        AES has been accelerated on all Intel CPUs since Broadwell, was common as far back as Sandy Bridge, and has been available since Westmere.

        AMD has had AES acceleration since Bulldozer.

        But the commenter is right that adding a second layer of encryption is useless in everything except very specific circumstances.

        • auth@lemmy.ml
          link
          fedilink
          arrow-up
          0
          ·
          8 months ago

          agreed that it is useless for most cases but I could see it being useful if you need multiple people to agree on decrypting a file.

        • theit8514@lemmy.world
          link
          fedilink
          arrow-up
          0
          ·
          8 months ago

          Yes, but as I’ve found recently AES-NI is only as good as your software support for it. Had a team using an ancient version of winscp and they kept complaining about download speeds on our 10Gb circuit. Couldn’t replicate it on any other machine with the newest version of winscp so I installed their exact version. AES-NI support wasn’t added until like 2020 and it gave them 5x better download speed after upgrading.

        • taaz@biglemmowski.win
          link
          fedilink
          English
          arrow-up
          0
          ·
          8 months ago

          I’ve also found about this recently when moving my root from drive to drive which was after I upgraded to 13th gen intel (from various older i5s) and the best cipher changed (cryptsetup benchmark).

        • krash@lemmy.ml
          link
          fedilink
          arrow-up
          0
          ·
          8 months ago

          What circumstances would that be? I can’t see the use case doe this, but I’m open to see how and when that would be needed.

          • cbarrick@lemmy.world
            link
            fedilink
            English
            arrow-up
            0
            ·
            8 months ago

            There’s a Wikipedia article on multiple encryption that talks about this, but the arguments are not that compelling to me.

            The main thing is mostly about protecting your data from flawed implementations. Like, AES has not been broken theoretically, but a particular implementation may be broken. By stacking implementations from multiple vendors, you reduce the chance of being exposed by a vulnerability in one of them.

            That’s way overkill for most businesses. That’s like nation state level paranoia.

        • auth@lemmy.ml
          link
          fedilink
          arrow-up
          0
          ·
          8 months ago

          it depends if your hardware supports the algos that cryptsetup/luks use I guess…

  • Max-P@lemmy.max-p.me
    link
    fedilink
    arrow-up
    0
    ·
    8 months ago

    Yeah, LUKS and most block level overlays just don’t care. That’s what good abstraction layers do for you!

    You can LUKS on a disk image mounted over SSHFS that itself resides on a Ceph cluster and mounted over iSCSI for all it cares. Is it a block device? Yes? Good to go.

    You can even LUKS a floppy if you want. Or a CD.

  • Qkall@lemmy.ml
    link
    fedilink
    arrow-up
    0
    ·
    8 months ago

    we really ain’t making any jokes on the name of the drives? okay…

  • Björn Tantau@swg-empire.de
    link
    fedilink
    arrow-up
    0
    ·
    8 months ago

    Great! Although I think that security actually goes down that way. Something something about statistics. A crypto expert could probably explain that properly and we could pretend to understand it.

  • wildbus8979@sh.itjust.works
    link
    fedilink
    arrow-up
    0
    ·
    edit-2
    8 months ago

    Of course, and you can also add on as many layers of LVM and MDADM as you’d like.

    You can also do the same with disk images (including sparse images)