rfc8937xml2.original.xml | rfc8937.xml | |||
---|---|---|---|---|
<?xml version='1.0' encoding='utf-8'?> | ||||
<!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.3.3 --> | ||||
<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent"> | ||||
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" | ||||
docName="draft-irtf-cfrg-randomness-improvements-14" number="8937" | ||||
obsoletes="" updates="" submissionType="IRTF" category="info" | ||||
consensus="true" xml:lang="en" tocInclude="true" sortRefs="true" | ||||
symRefs="true" version="3"> | ||||
<!-- xml2rfc v2v3 conversion 2.42.0 --> | ||||
<front> | ||||
<title abbrev="Randomness Improvements">Randomness Improvements for Security | ||||
Protocols</title> | ||||
<seriesInfo name="RFC" value="8937"/> | ||||
<author initials="C." surname="Cremers" fullname="Cas Cremers"> | ||||
<organization>CISPA</organization> | ||||
<address> | ||||
<postal> | ||||
<street>Saarland Informatics Campus</street> | ||||
<city>Saarbruecken</city> | ||||
<country>Germany</country> | ||||
</postal> | ||||
<email>cremers@cispa.saarland</email> | ||||
</address> | ||||
</author> | ||||
<author initials="L." surname="Garratt" fullname="Luke Garratt"> | ||||
<organization>Cisco Meraki</organization> | ||||
<address> | ||||
<postal> | ||||
<street>500 Terry A Francois Blvd</street> | ||||
<city>San Francisco</city> | ||||
<country>United States of America</country> | ||||
</postal> | ||||
<email>lgarratt@cisco.com</email> | ||||
</address> | ||||
</author> | ||||
<author initials="S." surname="Smyshlyaev" fullname="Stanislav Smyshlyaev"> | ||||
<organization>CryptoPro</organization> | ||||
<address> | ||||
<postal> | ||||
<street>18, Suschevsky val</street> | ||||
<city>Moscow</city> | ||||
<country>Russian Federation</country> | ||||
</postal> | ||||
<email>svs@cryptopro.ru</email> | ||||
</address> | ||||
</author> | ||||
<author initials="N." surname="Sullivan" fullname="Nick Sullivan"> | ||||
<organization>Cloudflare</organization> | ||||
<address> | ||||
<postal> | ||||
<street>101 Townsend St</street> | ||||
<city>San Francisco</city> | ||||
<country>United States of America</country> | ||||
</postal> | ||||
<email>nick@cloudflare.com</email> | ||||
</address> | ||||
</author> | ||||
<author initials="C." surname="Wood" fullname="Christopher A. Wood"> | ||||
<organization>Cloudflare</organization> | ||||
<address> | ||||
<postal> | ||||
<street>101 Townsend St</street> | ||||
<city>San Francisco</city> | ||||
<country>United States of America</country> | ||||
</postal> | ||||
<email>caw@heapingbits.net</email> | ||||
</address> | ||||
</author> | ||||
<date month="October" year="2020" /> | ||||
<workgroup>Crypto Forum</workgroup> | ||||
<keyword>Security</keyword> | ||||
<keyword>Cryptography</keyword> | ||||
<keyword>TLS</keyword> | ||||
<abstract> | ||||
<t>Randomness is a crucial ingredient for Transport Layer Security (TLS) | ||||
and related security protocols. | ||||
Weak or predictable | ||||
"cryptographically secure" pseudorandom number generators (CSPRNGs) can | ||||
be abused or exploited for malicious purposes. An initial entropy source | ||||
that seeds a CSPRNG might be weak or broken as well, which can also lead | ||||
to critical and systemic security problems. This document describes a | ||||
way for security protocol implementations to augment their CSPRNGs using | ||||
long-term private keys. This improves randomness from broken or | ||||
otherwise subverted CSPRNGs.</t> | ||||
<t>This document is a product of the Crypto Forum Research Group (CFRG) in | ||||
the IRTF.</t> | ||||
</abstract> | ||||
</front> | ||||
<middle> | ||||
<section anchor="introduction" numbered="true" toc="default"> | ||||
<name>Introduction</name> | ||||
<t>Secure and properly implemented random number generators, or | ||||
"cryptographically secure" pseudorandom number generators (CSPRNGs), | ||||
should produce output that is indistinguishable from a random string of | ||||
the same length. CSPRNGs are critical building blocks for TLS and | ||||
related transport security protocols. TLS in particular uses CSPRNGs to | ||||
generate several values, such as ephemeral key shares and ClientHello | ||||
and ServerHello random values. CSPRNG failures, such as the Debian bug | ||||
described in <xref target="DebianBug" format="default"/>, can lead to | ||||
insecure TLS connections. CSPRNGs may also be intentionally weakened to | ||||
cause harm <xref target="DualEC" format="default"/>. Initial entropy | ||||
sources can also be weak or broken, and that would lead to insecurity of | ||||
all CSPRNG instances seeded with them. In such cases where CSPRNGs are | ||||
poorly implemented or insecure, an adversary, Adv, may be able to | ||||
distinguish its output from a random string or predict its output and | ||||
recover secret key material used to protect the connection.</t> | ||||
<t>This document proposes an improvement to randomness generation in | ||||
security protocols inspired by the "NAXOS trick" <xref target="NAXOS" | ||||
format="default"/>. Specifically, instead of using raw randomness where | ||||
needed, e.g., in generating ephemeral key shares, a function of a | ||||
party's long-term private key is mixed into the entropy pool. In the | ||||
NAXOS key exchange protocol, raw random value x is replaced by H(x, sk), | ||||
where sk is the sender's private key. Unfortunately, as private keys are | ||||
often isolated in Hardware Security Modules (HSMs), direct access to | ||||
compute H(x, sk) is impossible. Moreover, some HSM APIs may only offer | ||||
the option to sign messages using a private key, yet offer no other | ||||
operations involving that key. An alternate, yet functionally equivalent | ||||
construction, is needed.</t> | ||||
<t>The approach described herein replaces the NAXOS hash with a keyed | ||||
hash, or pseudorandom function (PRF), where the key is derived from a | ||||
raw random value and a private key signature. | ||||
Implementations | ||||
<bcp14>SHOULD</bcp14> apply this technique a) when indirect access to a | ||||
private key is available and CSPRNG randomness guarantees are dubious | ||||
or b) to provide stronger guarantees about possible future issues with the | ||||
randomness. Roughly, the security properties provided by the proposed | ||||
construction are as follows:</t> | ||||
<ol spacing="normal" type="1"> | ||||
<li>If the CSPRNG works fine (that is, in a certain adversary model, | ||||
the CSPRNG output is indistinguishable from a truly random sequence), | ||||
then the output of the proposed construction is also indistinguishable | ||||
from a truly random sequence in that adversary model.</li> | ||||
<li>Adv with full control of a (potentially broken) CSPRNG and ability | ||||
to observe all outputs of the proposed construction does not obtain | ||||
any non-negligible advantage in leaking the private key (in the | ||||
absence of side channel attacks).</li> | ||||
<li>If the CSPRNG is broken or controlled by Adv, the output of the | ||||
proposed construction remains indistinguishable from random, provided tha | ||||
t | ||||
the private key remains unknown to Adv.</li> | ||||
</ol> | ||||
<t>This document represents the consensus of the Crypto Forum Research Gro | ||||
up (CFRG).</t> | ||||
</section> | ||||
<section anchor="conventions-used-in-this-document" numbered="true" toc="def | ||||
ault"> | ||||
<name>Conventions Used in This Document</name> | ||||
<t> | ||||
The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", | ||||
"<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL | ||||
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", | ||||
"<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | ||||
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to | ||||
be interpreted as | ||||
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> | ||||
when, and only when, they appear in all capitals, as shown here. | ||||
</t> | ||||
</section> | ||||
<section anchor="wrapper" numbered="true" toc="default"> | ||||
<name>Randomness Wrapper</name> | ||||
<t>The output of a properly instantiated CSPRNG should be | ||||
indistinguishable from a random string of the same length. However, as | ||||
previously discussed, this is not always true. To mitigate this problem, | ||||
we propose an approach for wrapping the CSPRNG output with a | ||||
construction that mixes secret data into a value that may be lacking | ||||
randomness.</t> | ||||
<t>Let G(n) be an algorithm that generates n random bytes, i.e., the | ||||
output of a CSPRNG. Define an augmented CSPRNG G' as follows. Let | ||||
Sig(sk, m) be a function that computes a signature of message m given | ||||
private key sk. Let H be a cryptographic hash function that produces | ||||
output of length M. Let Extract(salt, IKM) be a randomness extraction | ||||
function, e.g., HKDF-Extract <xref target="RFC5869" format="default"/>, | ||||
which accepts a salt and input keying material (IKM) parameter and | ||||
produces a pseudorandom key of L bytes suitable for cryptographic | ||||
use. It must be a secure PRF (for salt as a key of length M) and | ||||
preserve uniformness of IKM (for details, see <xref target="SecAnalysis" | ||||
format="default"/>). L <bcp14>SHOULD</bcp14> be a fixed length. Let | ||||
Expand(k, info, n) be a variable-length output PRF, e.g., HKDF-Expand | ||||
<xref target="RFC5869" format="default"/>, that takes as input a | ||||
pseudorandom key k of L bytes, info string, and output length n, and | ||||
produces output of n bytes. Finally, let tag1 be a fixed, | ||||
context-dependent string, and let tag2 be a dynamically changing string | ||||
(e.g., a counter) of L' bytes. We require that L >= n - L' for each | ||||
value of tag2.</t> | ||||
<t>The construction works as follows. Instead of using G(n) when | ||||
randomness is needed, use G'(n), where</t> | ||||
<artwork name="" type="" align="left" alt=""> | ||||
G'(n) = Expand(Extract(H(Sig(sk, tag1)), G(L)), tag2, n) | ||||
</artwork> | ||||
<t>Functionally, this expands n random bytes from a key derived from the | ||||
CSPRNG output and signature over a fixed string (tag1). See <xref | ||||
target="tag-gen" format="default"/> for details about how "tag1" and | ||||
"tag2" should be generated and used per invocation of the randomness | ||||
wrapper. Expand() generates a string that is computationally | ||||
indistinguishable from a truly random string of n bytes. Thus, the | ||||
security of this construction depends upon the secrecy of H(Sig(sk, | ||||
tag1)) and G(L). If the signature is leaked, then security of G'(n) | ||||
reduces to the scenario wherein randomness is expanded directly from | ||||
G(L).</t> | ||||
<t>If a private key sk is stored and used inside an HSM, then the | ||||
signature calculation is implemented inside it, while all other | ||||
operations (including calculation of a hash function, Extract function, an | ||||
d Expand | ||||
function) can be implemented either inside or outside the HSM.</t> | ||||
<t>Sig(sk, tag1) need only be computed once for the lifetime of the | ||||
randomness wrapper and <bcp14>MUST NOT</bcp14> be used or exposed | ||||
beyond its role in this computation. Additional recommendations for tag1 | ||||
are given in the following section.</t> | ||||
<t>Sig <bcp14>MUST</bcp14> be a deterministic signature function, e.g., | ||||
deterministic Elliptic Curve Digital Signature Algorithm (ECDSA) <xref | ||||
target="RFC6979" format="default"/>, or use an | ||||
independent (and completely reliable) entropy source, e.g., if Sig is | ||||
implemented in an HSM with its own internal trusted entropy source for | ||||
signature generation.</t> | ||||
<t>Because Sig(sk, tag1) can be cached, the relative cost of using G'(n) | ||||
instead of G(n) tends to be negligible with respect to cryptographic | ||||
operations in protocols such as TLS (the relatively inexpensive | ||||
computational cost of HKDF-Extract and HKDF-Expand dominates when | ||||
comparing G' to G). A description of the performance experiments and | ||||
their results can be found in <xref target="SecAnalysis" | ||||
format="default"/>.</t> | ||||
<t>Moreover, the values of G'(n) may be precomputed and pooled. This is | ||||
possible since the construction depends solely upon the CSPRNG output | ||||
and private key.</t> | ||||
</section> | ||||
<section anchor="tag-gen" numbered="true" toc="default"> | ||||
<name>Tag Generation</name> | ||||
<t>Both tags <bcp14>MUST</bcp14> be generated such that they never | ||||
collide with another contender or owner of the private key. This can | ||||
happen if, for example, one HSM with a private key is used from several | ||||
servers or if virtual machines are cloned.</t> | ||||
<t>The <bcp14>RECOMMENDED</bcp14> tag construction procedure is as follows | ||||
:</t> | ||||
<dl newline="false" spacing="normal" indent="7"> | ||||
<dt>tag1:</dt> | ||||
<dd>Constant string bound to a specific device and protocol in | ||||
use. This allows caching of Sig(sk, tag1). Device-specific information | ||||
may include, for example, a Media Access Control (MAC) address. To | ||||
provide security in the | ||||
cases of usage of CSPRNGs in virtual environments, it is | ||||
<bcp14>RECOMMENDED</bcp14> to incorporate all available information | ||||
specific to the process that would ensure the uniqueness of each tag1 | ||||
value among different instances of virtual machines (including ones | ||||
that were cloned or recovered from snapshots). This is needed to | ||||
address the problem of CSPRNG state cloning (see <xref target="RY2010" | ||||
format="default"/>). See <xref target="sec_tls13" format="default"/> | ||||
for example protocol information that can be used in the context of | ||||
TLS 1.3. If sk could be used for other purposes, then selecting a | ||||
value for tag1 that is different than the form allowed by those other | ||||
uses ensures that the signature is not exposed.</dd> | ||||
<dt>tag2:</dt> | ||||
<dd>A nonce, that is, a value that is unique for each use of the same | ||||
combination of G(L), tag1, and sk values. The tag2 value can be | ||||
implemented using a counter or a timer, provided that the timer is | ||||
guaranteed to be different for each invocation of G'(n).</dd> | ||||
</dl> | ||||
</section> | ||||
<section anchor="sec_tls13" numbered="true" toc="default"> | ||||
<name>Application to TLS</name> | ||||
<t>The PRF randomness wrapper can be applied to any protocol wherein a | ||||
party has a long-term private key and also generates randomness. This is | ||||
true of most TLS servers. Thus, to apply this construction to TLS, one | ||||
simply replaces the "private" CSPRNG G(n), i.e., the CSPRNG that | ||||
generates private values, such as key shares, with</t> | ||||
<artwork name="" type="" align="left" alt=""> | ||||
G'(n) = HKDF-Expand(HKDF-Extract(H(Sig(sk, tag1)), G(L)), tag2, n) | ||||
</artwork> | ||||
</section> | ||||
<section anchor="implementation-guidance" numbered="true" toc="default"> | ||||
<name>Implementation Guidance</name> | ||||
<t>Recall that the wrapper defined in <xref target="wrapper" | ||||
format="default"/> requires L >= n - L', where L is the Extract | ||||
output length and n is the desired amount of randomness. Some | ||||
applications may require n to exceed this bound. Wrapper implementations | ||||
can support this use case by invoking G' multiple times and | ||||
concatenating the results.</t> | ||||
</section> | ||||
<section anchor="iana-considerations" numbered="true" toc="default"> | ||||
<name>IANA Considerations</name> | ||||
<t>This document has no IANA actions.</t> | ||||
</section> | ||||
<section anchor="security-considerations" numbered="true" toc="default"> | ||||
<name>Security Considerations</name> | ||||
<t>A security analysis was performed in <xref target="SecAnalysis" | ||||
format="default"/>. Generally speaking, the following security theorem | ||||
has been proven: if Adv learns only one of the signature or the usual | ||||
randomness generated on one particular instance, then, under the security | ||||
assumptions on our primitives, the wrapper construction should output | ||||
randomness that is indistinguishable from a random string.</t> | ||||
<t>The main reason one might expect the signature to be exposed is via a | ||||
side-channel attack. It is therefore prudent when implementing this | ||||
construction to take into consideration the extra long-term key | ||||
operation if equipment is used in a hostile environment when such | ||||
considerations are necessary. Hence, it is recommended to generate a key | ||||
specifically for the purposes of the defined construction and not to use i | ||||
t another way.</t> | ||||
<t>The signature in the construction, as well as in the protocol itself, | ||||
<bcp14>MUST NOT</bcp14> use randomness from entropy sources with dubious | ||||
security guarantees. Thus, the signature scheme <bcp14>MUST</bcp14> | ||||
either use a reliable entropy source (independent from the CSPRNG that | ||||
is being improved with the proposed construction) or be deterministic; | ||||
if the signatures are probabilistic and use weak entropy, our | ||||
construction does not help, and the signatures are still vulnerable due | ||||
to repeat randomness attacks. In such an attack, Adv might be able to | ||||
recover the long-term key used in the signature.</t> | ||||
<t>Under these conditions, applying this construction should never yield | ||||
worse security guarantees than not applying it, assuming that applying | ||||
the PRF does not reduce entropy. We believe there is always merit in | ||||
analyzing protocols specifically. However, this construction is generic | ||||
so the analyses of many protocols will still hold even if this proposed | ||||
construction is incorporated.</t> | ||||
<t>The proposed construction cannot provide any guarantees of security | ||||
if the CSPRNG state is cloned due to the virtual machine snapshots or | ||||
process forking (see <xref target="MAFS2017" format="default"/>). It is | ||||
<bcp14>RECOMMENDED</bcp14> that tag1 incorporate all available | ||||
information about the environment, such as process attributes, virtual | ||||
machine user information, etc.</t> | ||||
</section> | ||||
<section anchor="comparison-to-rfc-6979" numbered="true" toc="default"> | ||||
<name>Comparison to RFC 6979</name> | ||||
<t>The construction proposed herein has similarities with that of | ||||
<xref target="RFC6979" format="default"/>; both of them use private | ||||
keys to seed a deterministic random number generator. <xref | ||||
target="RFC6979" sectionFormat="of" section="3.3"/> recommends | ||||
deterministically instantiating an instance of the HMAC_DRBG | ||||
pseudorandom number generator, described in <xref target="SP80090A" | ||||
format="default"/> and Annex D of <xref target="X962" | ||||
format="default"/>, using the private key sk as the entropy_input | ||||
parameter and H(m) as the nonce. The construction G'(n) provided herein | ||||
is similar, with such difference that a key derived from G(n) and | ||||
H(Sig(sk, tag1)) is used as the entropy input and tag2 is the nonce.</t> | ||||
<t>However, the semantics and the security properties obtained by using | ||||
these two constructions are different. The proposed construction aims to | ||||
improve CSPRNG usage such that certain trusted randomness would remain | ||||
even if the CSPRNG is completely broken. Using a signature scheme that | ||||
requires entropy sources according to <xref target="RFC6979" | ||||
format="default"/> is intended for different purposes and does not | ||||
assume possession of any entropy source -- even an unstable one. For | ||||
example, if in a certain system all private key operations are performed | ||||
within an HSM, then the differences will manifest as follows: the | ||||
HMAC_DRBG construction described in <xref target="RFC6979" format="default | ||||
"/> may | ||||
be implemented inside the HSM for the sake of signature generation, | ||||
while the proposed construction would assume calling the signature | ||||
implemented in the HSM.</t> | ||||
</section> | ||||
</middle> | ||||
<back> | ||||
<references> | ||||
<name>References</name> | ||||
<references> | ||||
<name>Normative References</name> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2119. | ||||
xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5869. | ||||
xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6979. | ||||
xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8174. | ||||
xml"/> | ||||
</references> | ||||
<references> | ||||
<name>Informative References</name> | ||||
<reference anchor="DebianBug" target="https://pdfs.semanticscholar.org/f | ||||
cf9/fe0946c20e936b507c023bbf89160cc995b9.pdf"> | ||||
<front> | ||||
<title>When private keys are public: results from the 2008 Debian | ||||
OpenSSL vulnerability</title> | ||||
<author initials="S" surname="Yilek" fullname="Scott Yilek"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="E" surname="Rescorla" fullname="Eric Rescorla"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="H" surname="Shacham" fullname="Hovav Shacham"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="B" surname="Enright" fullname="Brandon Enright"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="S" surname="Savage" fullname="Stefan Savage"> | ||||
<organization/> | ||||
</author> | ||||
<date month="November" year="2009"/> | ||||
</front> | ||||
<seriesInfo name="DOI" value="10.1145/1644893.1644896"/> | ||||
<refcontent>ICM '09</refcontent> | ||||
</reference> | ||||
<reference anchor="DualEC" target="https://projectbullrun.org/dual-ec/do | ||||
cuments/dual-ec-20150731.pdf"> | ||||
<front> | ||||
<title>Dual EC: A Standardized Back Door</title> | ||||
<author initials="D" surname="Bernstein" fullname="Daniel J. Bernste | ||||
in"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="T" surname="Lange" fullname="Tanja Lange"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="R" surname="Niederhagen" fullname="Ruben Niederhag | ||||
en"> | ||||
<organization/> | ||||
</author> | ||||
<date month="March" year="2016"/> | ||||
</front> | ||||
<seriesInfo name="DOI" value="10.1007/978-3-662-49301-4_17"/> | ||||
</reference> | ||||
<reference anchor="MAFS2017" target="https://rwc.iacr.org/2017/Slides/da | ||||
vid.mcgrew.pptx"> | ||||
<front> | ||||
<title>PRNG Failures and TLS Vulnerabilities in the Wild</title> | ||||
<author initials="D" surname="McGrew" fullname="David McGrew"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="B" surname="Anderson" fullname="Blake Anderson"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="S" surname="Fluhrer" fullname="Scott Fluhrer"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="C" surname="Schenefiel" fullname="Chris Schenefiel | ||||
"> | ||||
<organization/> | ||||
</author> | ||||
<date month="January" year="2017"/> | ||||
</front> | ||||
</reference> | ||||
<reference anchor="NAXOS" target="https://www.microsoft.com/en-us/resear | ||||
ch/wp-content/uploads/2016/02/strongake-submitted.pdf"> | ||||
<front> | ||||
<title>Stronger Security of Authenticated Key Exchange</title> | ||||
<author initials="B" surname="LaMacchia" fullname="Brian LaMacchia"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="K" surname="Lauter" fullname="Kristin Lauter"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="A" surname="Mityagin" fullname="Anton Mityagin"> | ||||
<organization/> | ||||
</author> | ||||
<date month="November" year="2007"/> | ||||
</front> | ||||
<seriesInfo name="DOI" value="10.1007/978-3-540-75670-5_1"/> | ||||
</reference> | ||||
<reference anchor="SecAnalysis"> | ||||
<front> | ||||
<title>Limiting the impact of unreliable randomness in deployed secu | ||||
rity protocols</title> | ||||
<seriesInfo name="DOI" value="10.1109/CSF49147.2020.00027 | ||||
"/> | ||||
<seriesInfo name="IEEE 33rd Computer Security Foundations | ||||
Symposium (CSF), Boston, MA, USA," value="pp. 385-393"/> | ||||
<author initials="L" surname="Akhmetzyanova" fullname="Li | ||||
liya Akhmetzyanova"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="C" surname="Cremers" fullname="Cas Cremers"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="L" surname="Garratt" fullname="Luke Garratt"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="S" surname="Smyshlyaev" fullname="Stanislav V. Smy | ||||
shlyaev"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="N" surname="Sullivan" fullname="Nick Sullivan"> | ||||
<organization/> | ||||
</author> | ||||
<date year="2020"/> | ||||
</front> | ||||
</reference> | ||||
<reference anchor="RY2010" target="https://rist.tech.cornell.edu/papers/ | ||||
sslhedge.pdf"> | ||||
<front> | ||||
<title>When Good Randomness Goes Bad: Virtual Machine Reset | ||||
Vulnerabilities and Hedging Deployed Cryptography</title> | ||||
<author initials="T" surname="Ristenpart" fullname="Thomas Ristenpar | ||||
t"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="S" surname="Yilek" fullname="Scott Yilek"> | ||||
<organization/> | ||||
</author> | ||||
<date month="January" year="2010"/> | ||||
</front> | ||||
</reference> | ||||
<reference anchor="SP80090A" target="https://doi.org/10.6028/NIST.SP.800 | ||||
-90Ar1"> | ||||
<front> | ||||
<title>Recommendation for Random Number Generation Using Determinist | ||||
ic Random Bit Generators, Special Publication 800-90A Revision 1</title> | ||||
<author> | ||||
<organization>National Institute of Standards and Technology</orga | ||||
nization> | ||||
</author> | ||||
<date year="2015" month="June"/> | ||||
</front> | ||||
<seriesInfo name="DOI" value="10.6028/NIST.SP.800-90Ar1"/> | ||||
</reference> | ||||
<reference anchor="X962" target="https://www.techstreet.com/standards/x9 | ||||
-x9-62-2005?product_id=1327225"> | ||||
<front> | ||||
<title>Public Key Cryptography for the Financial Services | ||||
Industry, The Elliptic Curve Digital Signature Algorithm (ECDSA)</tit | ||||
le> | ||||
<author> | ||||
<organization>American National Standard for Financial Services (A | ||||
NSI)</organization> | ||||
</author> | ||||
<date year="2005" month="November"/> | ||||
</front> | ||||
<refcontent>ANSI X9.62</refcontent> | ||||
</reference> | ||||
</references> | ||||
</references> | ||||
<section anchor="acknowledgements" numbered="false" toc="default"> | ||||
<name>Acknowledgements</name> | ||||
<t>We thank <contact fullname="Liliya Akhmetzyanova"/> for her deep | ||||
involvement in the security assessment in <xref target="SecAnalysis" | ||||
format="default"/>. We thank <contact fullname="John Mattsson"/>, | ||||
<contact fullname="Martin Thomson"/>, and <contact fullname="Rich Salz"/> | ||||
for their careful readings and useful comments.</t> | ||||
</section> | ||||
</back> | ||||
</rfc> | ||||
End of changes. 1 change blocks. | ||||
lines changed or deleted | lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |