Message ID | 3073852.aeNJFYEL58@positron.chronox.de |
---|---|
Headers | show |
Series | /dev/random - a new approach | expand |
On Mon, 19 Oct 2020 21:28:50 +0200 Stephan Müller <smueller@chronox.de> wrote: [...] > * Sole use of crypto for data processing: [...] > - The LRNG uses only properly defined and implemented cryptographic > algorithms unlike the use of the SHA-1 transformation in the > existing /dev/random implementation. > > - Hash operations use NUMA-node-local hash instances to benefit large > parallel systems. > > - LRNG uses limited number of data post-processing steps [...] > * Performance > > - Faster by up to 75% in the critical code path of the interrupt > handler depending on data collection size configurable at kernel > compile time - the default is about equal in performance with > existing /dev/random as outlined in [2] section 4.2. [...] > - ChaCha20 DRNG is significantly faster as implemented in the > existing /dev/random as demonstrated with [2] table 2. > > - Faster entropy collection during boot time to reach fully seeded > level, including on virtual systems or systems with SSDs as > outlined in [2] section 4.1. > > * Testing [...] So we now have 2 proposals for a state-of-the-art RNG, and over a month without a single comment on-topic from any `get_maintainer.pl` I don't want to emphasise the certification aspects so much. The interrelation is rather that those certifications require certain code features, features which are reasonable per se. But the current code is lagging way behind. I see the focus namely on performance, scalability, testability and virtualisation. And it certainly is an advantage to use the code already present under crypto, with its optimisations, and not rely on some home brew. Can we please have a discussion about how to proceed? Ted, Greg, Arnd: which approach would you prefer? Torsten
On Wed, Oct 28, 2020 at 06:51:17PM +0100, Torsten Duwe wrote: > On Mon, 19 Oct 2020 21:28:50 +0200 > Stephan Müller <smueller@chronox.de> wrote: > [...] > > * Sole use of crypto for data processing: > [...] > > - The LRNG uses only properly defined and implemented cryptographic > > algorithms unlike the use of the SHA-1 transformation in the > > existing /dev/random implementation. > > > > - Hash operations use NUMA-node-local hash instances to benefit large > > parallel systems. > > > > - LRNG uses limited number of data post-processing steps > [...] > > * Performance > > > > - Faster by up to 75% in the critical code path of the interrupt > > handler depending on data collection size configurable at kernel > > compile time - the default is about equal in performance with > > existing /dev/random as outlined in [2] section 4.2. > > [...] > > - ChaCha20 DRNG is significantly faster as implemented in the > > existing /dev/random as demonstrated with [2] table 2. > > > > - Faster entropy collection during boot time to reach fully seeded > > level, including on virtual systems or systems with SSDs as > > outlined in [2] section 4.1. > > > > * Testing > [...] > > So we now have 2 proposals for a state-of-the-art RNG, and over a month > without a single comment on-topic from any `get_maintainer.pl` > > I don't want to emphasise the certification aspects so much. The > interrelation is rather that those certifications require certain code > features, features which are reasonable per se. But the current code is > lagging way behind. > > I see the focus namely on performance, scalability, testability and > virtualisation. And it certainly is an advantage to use the code > already present under crypto, with its optimisations, and not rely > on some home brew. > > Can we please have a discussion about how to proceed? > Ted, Greg, Arnd: which approach would you prefer? Greg and Arnd are not the random driver maintainers, as is now correctly shown in the 5.10-rc1 MAINTAINERS file, so I doubt we (well at least I) have any say here, sorry. good luck! greg k-h
On Wed, 28 Oct 2020 19:07:28 +0100 Greg Kroah-Hartman <gregkh@linuxfoundation.org> wrote: > On Wed, Oct 28, 2020 at 06:51:17PM +0100, Torsten Duwe wrote: > > On Mon, 19 Oct 2020 21:28:50 +0200 > > Stephan Müller <smueller@chronox.de> wrote: > > [...] > > > * Sole use of crypto for data processing: > > [...] > > > - The LRNG uses only properly defined and implemented > > > cryptographic algorithms unlike the use of the SHA-1 > > > transformation in the existing /dev/random implementation. > > > > > > - Hash operations use NUMA-node-local hash instances to benefit > > > large parallel systems. > > > > > > - LRNG uses limited number of data post-processing steps > > [...] > > > * Performance > > > > > > - Faster by up to 75% in the critical code path of the interrupt > > > handler depending on data collection size configurable at kernel > > > compile time - the default is about equal in performance with > > > existing /dev/random as outlined in [2] section 4.2. > > > > [...] > > > - ChaCha20 DRNG is significantly faster as implemented in the > > > existing /dev/random as demonstrated with [2] table 2. > > > > > > - Faster entropy collection during boot time to reach fully > > > seeded level, including on virtual systems or systems with SSDs as > > > outlined in [2] section 4.1. > > > > > > * Testing > > [...] > > > > So we now have 2 proposals for a state-of-the-art RNG, and over a > > month without a single comment on-topic from any `get_maintainer.pl` > > > > I don't want to emphasise the certification aspects so much. The > > interrelation is rather that those certifications require certain > > code features, features which are reasonable per se. But the > > current code is lagging way behind. > > > > I see the focus namely on performance, scalability, testability and > > virtualisation. And it certainly is an advantage to use the code > > already present under crypto, with its optimisations, and not rely > > on some home brew. > > > > Can we please have a discussion about how to proceed? > > Ted, Greg, Arnd: which approach would you prefer? > > Greg and Arnd are not the random driver maintainers, as is now > correctly shown in the 5.10-rc1 MAINTAINERS file, so I doubt we (well > at least I) have any say here, sorry. No problem. get_maintainer (for the proposals) works on paths, not on topics and I didn't want to leave anybody out. Ted, if you don't have the time any more to take care of /dev/random, it's not a shame to hand over maintainership, especially given your long history of Linux contributions. Please do seriously consider to hand it over to someone new. This would be a good opportunity. Torsten
On Mon, Nov 02, 2020 at 02:44:35PM +0100, Torsten Duwe wrote: > On Wed, 28 Oct 2020 19:07:28 +0100 > Greg Kroah-Hartman <gregkh@linuxfoundation.org> wrote: > > > On Wed, Oct 28, 2020 at 06:51:17PM +0100, Torsten Duwe wrote: > > > On Mon, 19 Oct 2020 21:28:50 +0200 > > > Stephan Müller <smueller@chronox.de> wrote: > > > [...] > > > > * Sole use of crypto for data processing: > > > [...] > > > > - The LRNG uses only properly defined and implemented > > > > cryptographic algorithms unlike the use of the SHA-1 > > > > transformation in the existing /dev/random implementation. > > > > > > > > - Hash operations use NUMA-node-local hash instances to benefit > > > > large parallel systems. > > > > > > > > - LRNG uses limited number of data post-processing steps > > > [...] > > > > * Performance > > > > > > > > - Faster by up to 75% in the critical code path of the interrupt > > > > handler depending on data collection size configurable at kernel > > > > compile time - the default is about equal in performance with > > > > existing /dev/random as outlined in [2] section 4.2. > > > > > > [...] > > > > - ChaCha20 DRNG is significantly faster as implemented in the > > > > existing /dev/random as demonstrated with [2] table 2. > > > > > > > > - Faster entropy collection during boot time to reach fully > > > > seeded level, including on virtual systems or systems with SSDs as > > > > outlined in [2] section 4.1. > > > > > > > > * Testing > > > [...] > > > > > > So we now have 2 proposals for a state-of-the-art RNG, and over a > > > month without a single comment on-topic from any `get_maintainer.pl` > > > > > > I don't want to emphasise the certification aspects so much. The > > > interrelation is rather that those certifications require certain > > > code features, features which are reasonable per se. But the > > > current code is lagging way behind. > > > > > > I see the focus namely on performance, scalability, testability and > > > virtualisation. And it certainly is an advantage to use the code > > > already present under crypto, with its optimisations, and not rely > > > on some home brew. > > > > > > Can we please have a discussion about how to proceed? > > > Ted, Greg, Arnd: which approach would you prefer? > > > > Greg and Arnd are not the random driver maintainers, as is now > > correctly shown in the 5.10-rc1 MAINTAINERS file, so I doubt we (well > > at least I) have any say here, sorry. > > No problem. get_maintainer (for the proposals) works on paths, not on > topics and I didn't want to leave anybody out. > > Ted, if you don't have the time any more to take care of /dev/random, > it's not a shame to hand over maintainership, especially given your > long history of Linux contributions. > > Please do seriously consider to hand it over to someone new. This would > be a good opportunity. > > Torsten > I'd like to help with any solution upstream decide to follow either testing or with code. I understand some of the concerns the community has regarding FIPS but that doesn't make it less relevant and it's totally possible to improve /dev/random while allowing it users to decide if they want to comply to SP 800 90B. I believe the main blocker now is the lack of direction. -- Regards, Marcelo
Am Montag, 19. Oktober 2020, 21:28:50 CET schrieb Stephan Müller: Hi, > > * Performance > > - Faster by up to 75% in the critical code path of the interrupt handler > depending on data collection size configurable at kernel compile time - > the default is about equal in performance with existing /dev/random as > outlined in [2] section 4.2. By streamlining the implementation a bit, the LRNG interrupt handler now operates about 130% faster than the existing /dev/random (average of 97 cycles of the existing /dev/random code vs. an average of 42 cycles of the LRNG). This fast operation is the default now due to patch [2]. The conceptual data handling outlined in [3] section 2.2 remains unchanged. Even the addition of health tests applied to the noise source data would still result in a faster interrupt handling code (average of 97 cycles of the existing /dev/random code vs on average 78 cycles of the LRNG). [1] https://github.com/smuellerDD/lrng/commit/ 10b74b242950371273e38df78060e258d9d3ea40 [2] https://github.com/smuellerDD/lrng/commit/ 383b087653c21cf20984f5508befa57e96f685ba [3] https://chronox.de/lrng/doc/lrng.pdf Ciao Stephan
On Mon, Nov 02, 2020 at 02:44:35PM +0100, Torsten Duwe wrote: > > Ted, if you don't have the time any more to take care of /dev/random, > it's not a shame to hand over maintainership, especially given your > long history of Linux contributions. > > Please do seriously consider to hand it over to someone new. This would > be a good opportunity. I can see you are quite busy working on ext4, and there is a number of patches for drivers/char/random.c awaiting review. Wouldn't it be good to pass it on to someone more enthusiastic? At least some sort of reply would be appreciated. Or are you already pondering the request ;-) ? Torsten