(More) Specifics:

  • Undoing the protection should include filling in a password.
  • The password should be different from the one used with sudo or any other passwords that are used for acquiring elevated privileges.

All (possible) solutions and suggestions are welcome! Thanks in advance!

Edit: Perhaps additional specifications:

  • With 'displace‘, I mean anything involving that resembles the result of mv, cp (move, cut, copy) or whatsoever. The files should remain in their previously assigned locations/places and should not be able to 'pop up' anywhere.
  • I require for the files to be unreadable.
  • I don't care if it's modifiable or not.
  • I don't require this for my whole system! Only for a specific set of files.
  • poki@discuss.online
    hexagon
    ·
    5 months ago

    If you could be a bit more specific about your threat model people may have better ideas to help.

    Threat model is me protecting myself from myself.

    Incoming XY problem.

    I want to prevent myself from reinstalling my system. The trick I came up with involved the use of files that couldn't be disk cloned. However, if it's far far easier to accomplish it through other means, then please feel free to enlighten me on this.

    • notabot@lemm.ee
      ·
      5 months ago

      Ok, I'm still not clear on exactly what you're trying to achieve as I can't quite see the connection between somehow preventing certain files being duplicated when cloning the disk and preventing yourself from reinstalling the system.

      Bear in mind that reinstalling the system would replace all of the OS, so there's no way to leave counter-measures there, and the disk itself can't do anything to your data, even if it could detect a clone operation.

      If what you're trying to protect against is someone who knows everything you do accessing your data, you could look to use TPM to store the encryption key for your FDE. That way you don't know the password, it's stored encrypted with a secret key that is, in turn, stored and protected by your CPU. That way a disk clone couldn't be used on any hardware except your specific machine.

      • poki@discuss.online
        hexagon
        ·
        5 months ago

        Ok, I’m still not clear on exactly what you’re trying to achieve as I can’t quite see the connection between somehow preventing certain files being duplicated when cloning the disk and preventing yourself from reinstalling the system.

        Premises:

        • Very important files on disk (somehow) protected from copy/mv/clone whatever.
        • Reinstalling my OS wipes the disk.

        Therefore, I would lose those very important files if I were to attempt a wipe. If said files are important enough for me to reconsider wiping, then the act of protecting them from copy/mv/clone has fulfilled its job of preventing me from reinstalling the OS.

        Bear in mind that reinstalling the system would replace all of the OS, so there’s no way to leave counter-measures there, and the disk itself can’t do anything to your data, even if it could detect a clone operation.

        I understand.

        If what you’re trying to protect against is someone who knows everything you do accessing your data, you could look to use TPM to store the encryption key for your FDE. That way you don’t know the password, it’s stored encrypted with a secret key that is, in turn, stored and protected by your CPU. That way a disk clone couldn’t be used on any hardware except your specific machine.

        Very interesting. A couple of questions:

        • Is it possible to only protect a set of files through this? So not the entire disk?
        • Does TPM get flushed/randomized on OS reinstall?
        • notabot@lemm.ee
          ·
          5 months ago

          This seems like a very complicated way to achieve your goal! It sounds like sitting yourself down and giving you a stern talking to might be a beter aporoach.

          Having said that, if you have these very important files that you don't want to lose, please make sure they're backed up somewhere off of your machine. Storage fails, and it's a horrible feeling losing something important. Unfortunately doing so would defeat the approach you're thinking of.

          This might be a case of needing to reframe the question to get to the cause of the issue, and then solve that. So, why do you want to make it hard to reinstall your machine? Is it the amount of time you spend on it, the chance of screwing it up, needing it working, has it become a compulsion or something else? Maybe if we can get to the root of the issue we can find a solution.

          With regard to TPM, it's basically just a key store, so you can use it fir anything really, althought it's normally used by generating a TPM key and using it to encrypt the key that's actually used to encrypt your data, storing the encrypted key with the OS. Just reinstalling won't wipe the TPM, but unless you made an effort to save the encrypted key it'll be gone. Given your problem statement above it just adds to the data you'd need to save, which isn't helpful.

          • poki@discuss.online
            hexagon
            ·
            5 months ago

            This seems like a very complicated way to achieve your goal! It sounds like sitting yourself down and giving you a stern talking to might be a beter aporoach.

            You're probably right. But, it ensures a surefire method if accomplished.

            Having said that, if you have these very important files that you don't want to lose, please make sure they're backed up somewhere off of your machine. Storage fails, and it's a horrible feeling losing something important. Unfortunately doing so would defeat the approach you're thinking of.

            Thank you for your concerns!

            This might be a case of needing to reframe the question to get to the cause of the issue, and then solve that.

            Makes sense.

            So, why do you want to make it hard to reinstall your machine?

            I want to set it up in a particular way to ensure maximum productivity. But I'm afraid that I'll not go through with it (as has happened a lot in the past). Thus, making it impossible to reinstall should enable me to go through. As I wouldn't have any other choice.

            Is it the amount of time you spend on it

            The amount of time spent unproductively. Yes.

            the chance of screwing it up

            Nope. I haven't had a serious breakage since over one and a half years. I think I'm managing splendidly.

            needing it working

            Don't really have particular problems related to keeping my system up and running.

            has it become a compulsion or something else?

            Not sure what you meant with this.

            Maybe if we can get to the root of the issue we can find a solution.

            I believe I touched upon this earlier in this comment. I just want to be very productive.

            With regard to TPM, it's basically just a key store, so you can use it fir anything really, althought it's normally used by generating a TPM key and using it to encrypt the key that's actually used to encrypt your data, storing the encrypted key with the OS. Just reinstalling won't wipe the TPM, but unless you made an effort to save the encrypted key it'll be gone. Given your problem statement above it just adds to the data you'd need to save, which isn't helpful.

            Uhmm..., I feel as if I should properly read up on this. Have you got any pointers you would recommend?

            • notabot@lemm.ee
              ·
              5 months ago

              Sorry for the slow reply, life occurred.

              I think I understand where you're coming from with the desired to be productive and not reinstall. I think I've been there too! One thing that I can suggest, if you do have the time, is to learn a system like Ansible and use it to setup and configure your machine. The discipline of keeping all of the config as source rather than making ad-hoc changes reduces the chance of thinking you'll make just one little change and breaking something, and, if something does go wrong, you can get back to your working configuration quickly.

              Bearing in mind that there really isn't anything you can do to stop yourself if you're really determined to not lose the data, because if you can read it at any time you can back it up, the closest you are likely to come is something like creating new key with GPG then using the TPM to wrap your secret key and deleting the original. That way the key is only usable on that specific machine. Then use the key-pair to encrypt your 'guard' files. You can still decrypt them because you have the wrapped secret keys and you're on the same machine, but if you wipe the drive and lose those keys the data is gone. The TPM wrapping prevents you from taking the keys to a different machine to decrypt your data.

              There's an article with some examples here,

              Having said all of that, this still doesn't help if you just clone the disk as all of the data, including the wrapped key and the encrypted files will be cloned. The one difference there is that the serial number of the hard drive will be different. Maybe you could use that, combined with a passphrase as the passphrase for your GPG key, but we're getting into pretty esoteric territory here. So you could generate a secret key with a command like:

              ( lsblk -dno SERIAL /dev/sdb ; zenity --title "Enter decrypt password" --password) | sha1sum | cut -c1-40
              

              Where /dev/sdb is the device your root partition is on. zenity is a handy utility for displaying dialogs, there are others available. In this use it just prompts for a passsword. We then concatenate the drive serial number from lsblk with the password you entered and hash the result. The hashing is really only a convenient way to mix the two without worrying about the newline lsblk spits out. Don't record the result of this command, but use it to set the passphrase on your new GPG key. Wrapping the secret key in the manner the article above suggests is a nice extra step to make it harder to move the drive to another machine or mess around in that sort of way, but not strictly necessary as that wasn't in the scope of your original question.

              Now you can encrypt your file with: gpg -e -r <your key name> <your file>'. That will produce an encrypted version of <your file>called<your file>.gpg. To decrypt the file you can get gpg` to use the hashing command from above to get the passphrase with something like:

              gpg -d --pinentry-mode=loopback --batch --passphrase-fd 3 <your file>.gpg 3< <( ( lsblk -dno SERIAL /dev/sdb ; zenity --title "Enter decrypt password" --password) | sha1sum | cut -c1-40 )
              

              Once you've tested that you can decrypt the file successfully you can remove the original, plaintext, file. Your data is now encrypted with a key that is secured with a passphrase made of a string you know and the serial number of your disk and optionally wrapped with a key from the TPM that is tied to your physical machine. If you change the disk or the machine the data is irretrievable (ignoring the caveats discussed above). I think that's about as close to your original goal as you can get. It's rough around the edges, and I'm not sure I'd trust my data to it, but I believe it'll work. If you do something like this, please test it thoroughly, I can't guarantee it!