ladar / sedutil

Use sedutil for setting up and using self encrypting drives (SEDs) that comply with the TCG OPAL 2.00 standard. This includes the requisite pre-boot authentication image.
https://trustedcomputinggroup.org/work-groups/storage/
80 stars 24 forks source link

Asking kindly for joint effort to improve sedutil: S3 Sleep and more. #13

Open mabachel opened 5 years ago

mabachel commented 5 years ago

Hello @ladar while scrolling through your commits I found some great improvements over DTA's sedutil. Are you willing to adapt some of them to https://github.com/ChubbyAnt/sedutil/

It got recently updated to compile against glibc > 2.28 (updated LTS buildroot, thanks to @oom-is).

I would love to see a resurrection of sedutil development with joint efforts of @ladar, @oom-is @ChubbyAnt, @badicsalex, @DarkSpyro003, @ckamm and more.

See also: ChubbyAnt#6 and https://sedutil.com/

oom-is commented 5 years ago

I think this is a worthwhile endeavor and I will be happy that any work I'm doing gets re-used/incorporated.

To be clear, though, there are different goals and different testing environments. I am curating a fork because I have a specific set of requirements that boil down to:

ladar commented 4 years ago

I'd be happy to incorporate changes from other forks, but someone else will have to generate a pull request. I can then function as a "reviewer." Unlike @oom-is though, I don't have access to a wide range of systems/drives to test against, so I can't find/fix issues that don't show up on my system.

Rather, what I focused on when I created my fork was improving the experience on a 4K notebook screen. Without my changes, the sedutils recovery image, and PBA text was so tiny, I had to get within an inch of the screen, and even then it was struggle. And as someone with an infosec/crypto background, I also felt it was important to update the code with a variety of misc security improvements. Specifically switching to SHA-512, while adding additional hash rounds, for better brute force protection, since SHA-1 has had issues for awhile now. I also wanted to limit the number of attempts per boot.

In terms of my priorities, I'd like to get S3 sleep working properly. Right now, if my notebook goes to sleep, it will hang when it wakes back up. But if sleep support requires giving the kernel access to the device password/encryption key, then I'll pass, as it defeats on of the big advantages to using hardware crypto (along with performance). Perhaps using a unique key per boot could work, that way if malware steals it, the attacker won't be able to use to unlock the device later.

Linux chain loading is the other priority for me, as it would cut each boot by ~30 seconds.

I'd place adding a terminal interface, based on curses, in the important category, as it would make sedutil far more user friendly, and easy to setup. The current process is well beyond the capabilities of anyone without software development and system admin skills. And a big chunk of people who need this the most (reporters, activists, political leaders, etc, don't have those skills.

Note the use of SHA-1 isn't necessarily a problem. It depends a lot on what the device does with the value it's given.