From: Stephan Mueller <smueller@chronox.de>
To: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: "Theodore Ts'o" <tytso@mit.edu>, "Jörn Engel" <joern@logfs.org>,
"H. Peter Anvin" <hpa@zytor.com>,
"Linux Kernel Developers List" <linux-kernel@vger.kernel.org>,
"Maciej W. Rozycki" <macro@linux-mips.org>,
"Ralf Baechle" <ralf@linux-mips.org>,
dave.taht@gmail.com, "John Crispin" <blogic@openwrt.org>,
andrewmcgr@gmail.com, "Thorsten Glaser" <tg@mirbsd.de>,
sandyinchina@gmail.com
Subject: Re: [PATCH 2/5] CPU Jitter RNG: Enable compilation
Date: Tue, 04 Feb 2014 17:19:52 +0100 [thread overview]
Message-ID: <3579180.ti4z33qfDe@tauon> (raw)
In-Reply-To: <CAMuHMdUpgifUHOYbYLDiLfDdTQ74PBUjjEJWGopg3BwD+qWR6g@mail.gmail.com>
Am Dienstag, 4. Februar 2014, 14:39:54 schrieb Geert Uytterhoeven:
Hi Geert,
>On Tue, Feb 4, 2014 at 1:40 PM, Stephan Mueller <smueller@chronox.de>
wrote:
>> +CFLAGS_jitterentropy-base.o = -O0
>
>Why? if really needed, this deserves a comment.
Sorry to have not explained all details in the email.
Please consider the following rationale found in the jitterentropy-
base.c, given for jent_fold_time:
* The code is deliberately inefficient and shall stay that way. This
function
* is the root cause why the code shall be compiled without
optimization. This
* function not only acts as folding operation, but this function's
execution
* is used to measure the CPU execution time jitter. Any change to the
loop in
* this function implies that careful retesting must be done.
The idea of the RNG is to measure the execution timing of a set of
instruction. The set of instructions that are measured as part of the
execution timing jitter measurement is exactly the jent_fold_time
function. When the compiler applies optimizations, one really does not
know how this deliberately inefficient loop is made more efficient. When
it is made more efficient by the compiler, it is unclear how much
instructions are really executed. And the less instructions, the less
timing variations the RNG gets, the less entropy the RNG picks up.
Please note that all testing that is executed shows that optimizations
do not really matter. But there are some very old systems (AMD
Semperons, very old Pentiums) who show timing variations which border to
the lowest allowed variations when enabling optimizations. When
disabling optimizations, all the expected timing variations are present.
And for an RNG, it is always important to have "leeway" in the amount of
entropy sampled from the raw noise, i.e. it is better to be too
conservative and underestimate the entropy by a significant amount.
As the entire RNG is intended to be based on timing variations, I felt
that the entire C file can be compiled without optimizations. In this
case, even the post-processing of the data while collecting entropy even
adds more entropy, albeit this impact was not subject to testing or
analysis -- at least it will not diminish the measured timing
variations.
Also, I consider the execution speed of the entropy collection is not
really an issue because the RNG delivers random numbers at a
comparatively high rate. Any other noise source feeding into random.c
delivers data with far less speed.
For more details, please see [1] section 5.1 below the presented graphs.
[1] http://www.chronox.de/jent/doc/CPU-Jitter-NPTRNG.html
Ciao
Stephan
next prev parent reply other threads:[~2014-02-04 16:20 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-02-04 12:36 [RFC PATCH 0/5] CPU Jitter RNG Stephan Mueller
2014-02-04 12:39 ` [PATCH 1/5] " Stephan Mueller
2014-02-04 12:40 ` [PATCH 2/5] CPU Jitter RNG: Enable compilation Stephan Mueller
2014-02-04 13:39 ` Geert Uytterhoeven
2014-02-04 16:19 ` Stephan Mueller [this message]
2014-02-04 16:39 ` Hannes Frederic Sowa
2014-02-04 16:50 ` Hannes Frederic Sowa
2014-02-04 16:53 ` Stephan Mueller
2014-02-04 17:15 ` Hannes Frederic Sowa
2014-02-04 12:40 ` [PATCH 3/5] CPU Jitter RNG: integration with /dev/random Stephan Mueller
2014-02-04 12:41 ` [PATCH 4/5] CPU Jitter RNG: provide status proc files Stephan Mueller
2014-02-04 12:42 ` [PATCH 5/5] CPU Jitter RNG: add read/write sysctls Stephan Mueller
2014-02-04 17:08 ` [RFC PATCH 0/5] CPU Jitter RNG Theodore Ts'o
2014-02-04 19:06 ` H. Peter Anvin
2014-02-04 19:23 ` tytso
2014-02-04 19:39 ` Geert Uytterhoeven
2014-02-04 20:39 ` H. Peter Anvin
2014-02-04 21:46 ` Geert Uytterhoeven
2014-02-04 21:47 ` H. Peter Anvin
2014-02-10 21:07 ` Jörn Engel
2014-02-04 20:31 ` Stephan Mueller
2014-02-04 21:34 ` H. Peter Anvin
2014-02-04 21:43 ` Geert Uytterhoeven
2014-02-04 20:25 ` Stephan Mueller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=3579180.ti4z33qfDe@tauon \
--to=smueller@chronox.de \
--cc=andrewmcgr@gmail.com \
--cc=blogic@openwrt.org \
--cc=dave.taht@gmail.com \
--cc=geert@linux-m68k.org \
--cc=hpa@zytor.com \
--cc=joern@logfs.org \
--cc=linux-kernel@vger.kernel.org \
--cc=macro@linux-mips.org \
--cc=ralf@linux-mips.org \
--cc=sandyinchina@gmail.com \
--cc=tg@mirbsd.de \
--cc=tytso@mit.edu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome