EFI GELI support ready for testers
Eric McCorkle
eric at metricspace.net
Sat May 28 20:19:14 UTC 2016
I see. They're part device interface, part software crypto implementation. I guess the question is, does the software crypto *have* to live there, or could it be in a separate library?
I'm less inclined to trust OpenSSL completely these days, and it certainly is a beast to integrate into anything.
Some compelling alternatives have emerged in the wake of heartbleed. Off the cuff, I'd say NaCl is a good option: it's public domain and it's got some big names in crypto attached to it. But I don't know enough to say for sure if it could do what I proposed.
On May 28, 2016 1:24:55 PM EDT, Alan Somers <asomers at freebsd.org> wrote:
>On Sat, May 28, 2016 at 9:23 AM, Eric McCorkle <eric at metricspace.net>
>wrote:
>>
>>> On May 28, 2016, at 10:27, Allan Jude <allanjude at freebsd.org> wrote:
>>>
>>> The final version of my geliboot took an extra effort to reuse the
>AES
>>> code from sys/crypto/rijndael and sys/opencrypto and GELI directly
>from
>>> sys/geom/eli to avoid maintaining a separate copy of that code in
>sys/boot
>>>
>>> Hopefully the work I did to make sys/opencrypto and sys/geom/eli
>more
>>> reusable outside of the kernel will make it easier for Eric to do
>the
>>> same for the EFI version.
>>
>> It did indeed make things easier, though I think there is potential
>for work to be done on the crypto framework. It looks like the crypto
>framework has kind of accumulated code over time from different sources
>and has become somewhat disorganized. There seem to be two codebases
>(crypto and opencrypto), and multiple differing implementations for
>some ciphers. I ran into this when trying to figure out how to add
>Camellia support. There's a usable interface for AES CBC/XTS, but not
>Camellia CBC. There are also some insecure ciphers (DES, RC4, etc) in
>there, some more modern ciphers (like chacha20) are missing, and it's
>possible to implement ciphers other than AES using AESNI/AVX
>instructions to achieve hardware acceleration.
>>
>> It also ought to be simpler to share crypto code between kernel,
>boot, and userland, imo. In theory, one could have a single library
>(with multiple compilations for different ABIs) that could be
>statically linked into the kernel and boot loaders, and also installed
>in to the base OS.
>>
>> I'm not sure if there's any plans for crypto, but it might be worth a
>discussion.
>>
>>>
>>> The motivation for the EFI version is the same, ZFS boot
>environments,
>>> plus the obvious security advantages of having the kernel stored
>>> encrypted rather than not.
>>>
>>
>> The ability to have a single ZFS filesystem is indeed a motivator for
>the EFI work. I forgot to mention it because my personal motivations
>are strongly focused on security and tamper-resistance.
>
>The problem with opencrypto is that it was written when crypto
>accelerators lived on PCI cards and were treated as shared resources.
>That's why userland programs wishing to use opencrypto have to send
>all of their data into the kernel. It's a very inefficient way of
>using CPU-resident accelerators like AESNI and Padlock. For clients
>within the kernel, it's not so bad. It adds a few extra stack frames
>and a lot of code but there are no additional data copies. crypto(3),
>OTOH, is part of OpenSSL. AFAIK it doesn't have the data copies
>problem, but it's still quite complicated. ken@ once tried to build
>OpenSSL into the kernel but gave up because it has too many
>dependencies.
>
>So neither of these libraries is suitable for use in both kernel and
>userland. I don't know of any that is (though I haven't looked).
>
>-Alan
--
Sent from my Android device with K-9 Mail. Please excuse my brevity.
More information about the freebsd-hackers
mailing list