lsd0001

LSD0001: GNU Name System
Log | Files | Refs | README

commit 1dccf8a5781fe675248f3e1fc75ea8980027608f
parent c889e5d46a66f97c09c15505778040be9e7f8063
Author: Schanzenbach, Martin <mschanzenbach@posteo.de>
Date:   Mon,  9 Sep 2019 22:05:45 +0200

clarify HKDF

Diffstat:
Mdraft-schanzen-gns.txt | 38+++++++++++++++++++-------------------
Mdraft-schanzen-gns.xml | 79+++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------------
2 files changed, 72 insertions(+), 45 deletions(-)

diff --git a/draft-schanzen-gns.txt b/draft-schanzen-gns.txt @@ -65,7 +65,7 @@ Table of Contents 2.1. GNS record blocks . . . . . . . . . . . . . . . . . . . . 2 2.1.1. GNS record block data cryptography . . . . . . . . . 3 2.2. GNS records . . . . . . . . . . . . . . . . . . . . . . . 4 - 2.3. Examples . . . . . . . . . . . . . . . . . . . . . . . . 4 + 2.3. Examples . . . . . . . . . . . . . . . . . . . . . . . . 5 2.4. Serialization format . . . . . . . . . . . . . . . . . . 5 2.5. Internationalization and Character Encoding . . . . . . . 5 2.6. Security Considerations . . . . . . . . . . . . . . . . . 5 @@ -174,13 +174,17 @@ Internet-Draft The GNU Name System July 2019 d := h*x mod n k := HKDF (P,l) - "HKDF" is a hash-based key derivation function which derives the - symmetric AES key "k" from the public key "P" and the record label - "l". + "HKDF" is a hash-based key derivation function as defined in + [RFC5869]. For the XTR, we use HMAC-SHA512 and HMAC-SHA256 in PRF as + proposed in (paper). Using this HKDF, we derive two symmetric AES + keys "Ka,Kt" from the public key "P" and the record label "l". The + two symmetric keys are used for a AES+TWOFISH combined cipher: + + RDATA := TWOFISH256(Kt, AES256(Ka, BDATA)) 2.2. GNS records - A single entry in the decrypted BDATA SET has the following format: + The RDATA consist of one or more entries in the following format: 0 1 2 3 4 5 6 7 +-----+-----+-----+-----+-----+-----+-----+-----+ @@ -193,7 +197,7 @@ Internet-Draft The GNU Name System July 2019 +-----+-----+-----+-----+-----+-----+-----+-----+ | RDATA SIZE | TYPE | +-----+-----+-----+-----+-----+-----+-----+-----+ - | FLAGS | RDATA | + | FLAGS | DATA | +-----+-----+-----+-----+ | / / / / @@ -202,7 +206,7 @@ Internet-Draft The GNU Name System July 2019 Figure 2 - The a PKEY RDATA has the following format: + The a PKEY DATA entry has the following format: 0 1 2 3 4 5 6 7 +-----+-----+-----+-----+-----+-----+-----+-----+ @@ -214,10 +218,6 @@ Internet-Draft The GNU Name System July 2019 Figure 3 -2.3. Examples - - TODO - @@ -226,6 +226,10 @@ Schanzenbach Expires 24 January 2020 [Page 4] Internet-Draft The GNU Name System July 2019 +2.3. Examples + + TODO + 2.4. Serialization format TODO (Is this not the same as wire format?) @@ -252,10 +256,10 @@ Internet-Draft The GNU Name System July 2019 6. Normative References - [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform - Resource Identifier (URI): Generic Syntax", STD 66, - RFC 3986, DOI 10.17487/RFC3986, January 2005, - <https://www.rfc-editor.org/info/rfc3986>. + [RFC5869] Krawczyk, H. and P. Eronen, "HMAC-based Extract-and-Expand + Key Derivation Function (HKDF)", RFC 5869, + DOI 10.17487/RFC5869, May 2010, + <https://www.rfc-editor.org/info/rfc5869>. Author's Address @@ -273,8 +277,4 @@ Author's Address - - - - Schanzenbach Expires 24 January 2020 [Page 5] diff --git a/draft-schanzen-gns.xml b/draft-schanzen-gns.xml @@ -21,7 +21,7 @@ <organization>GNUnet e.V.</organization> <address> <postal> - <street ascii="Boltzmannstrasse 3">Boltzmannstrasse 3</street> + <street>Boltzmannstrasse 3</street> <city>Garching</city> <code>85748</code> <country>DE</country> @@ -63,7 +63,7 @@ <t>A GNS record block has the following format:</t> <figure anchor="figure_record_block"> <artwork name="" type="" align="left" alt=""><![CDATA[ - 0 1 2 3 4 5 6 7 + 0 8 16 24 32 40 48 56 +-----+-----+-----+-----+-----+-----+-----+-----+ | SIGNATURE | | | @@ -106,28 +106,55 @@ <section numbered="true" toc="default"> <name>GNS record block data cryptography</name> <t> - Given a GNS record block a symmetric key "k" is used to - en-/decrypt "BDATA". The key is derived from the record label "l" and - the public key "P". Both "l" and "P" are implicity known by the - GNS resolver. "k" is a 256-bit AES key which is derived as follows. + Given a GNS record block a symmetric encryption scheme is used to + en-/decrypt "BDATA". The keys are derived from the record label "l" + and the public key "P". Both "l" and "P" are implicity known by the + GNS resolver. The key material "K" is derived as follows: </t> <artwork name="" type="" align="left" alt=""><![CDATA[ h := SHA512 (l,P) d := h*x mod n - k := HKDF (P,l) + K := HKDF (P,l) ]]></artwork> <t> - "HKDF" is a hash-based key derivation function which derives the - symmetric AES key "k" from the public key "P" and the record label "l". + "HKDF" is a hash-based key derivation function as defined in + <xref target="RFC5869" />. For the XTR, we use HMAC-SHA512 and + HMAC-SHA256 in PRF as proposed in (paper). Using this HKDF, we + derive two symmetric 256-bit keys "Ka,Kt" from "K": </t> + <figure anchor="figure_hddf_keys"> + <artwork name="" type="" align="left" alt=""><![CDATA[ + 0 8 16 24 32 40 48 56 + +-----+-----+-----+-----+-----+-----+-----+-----+ + | AES KEY | + | | + | | + | | + +-----+-----+-----+-----+-----+-----+-----+-----+ + | TWOFISH KEY | + | | + | | + | | + +-----+-----+-----+-----+-----+-----+-----+-----+ + ]]></artwork> + <!-- <postamble>which is a very simple example.</postamble>--> + </figure> + + <t> + The two symmetric keys are used for a AES+TWOFISH combined cipher: + </t> + <artwork name="" type="" align="left" alt=""><![CDATA[ + RDATA := TWOFISH256(Kt, AES256(Ka, BDATA)) + ]]></artwork> + </section> </section> <section numbered="true" toc="default"> <name>GNS records</name> - <t>A single entry in the decrypted BDATA SET has the following format:</t> + <t>The RDATA consist of one or more entries in the following format:</t> <figure anchor="figure_gnsrecord"> <artwork name="" type="" align="left" alt=""><![CDATA[ - 0 1 2 3 4 5 6 7 + 0 8 16 24 32 40 48 56 +-----+-----+-----+-----+-----+-----+-----+-----+ | EXPIRATION | +-----+-----+-----+-----+-----+-----+-----+-----+ @@ -138,7 +165,7 @@ +-----+-----+-----+-----+-----+-----+-----+-----+ | RDATA SIZE | TYPE | +-----+-----+-----+-----+-----+-----+-----+-----+ - | FLAGS | RDATA | + | FLAGS | DATA | +-----+-----+-----+-----+ | / / / / @@ -147,10 +174,10 @@ ]]></artwork> <!-- <postamble>which is a very simple example.</postamble>--> </figure> - <t>The a PKEY RDATA has the following format:</t> + <t>The a PKEY DATA entry has the following format:</t> <figure anchor="figure_pkeyrecord"> <artwork name="" type="" align="left" alt=""><![CDATA[ - 0 1 2 3 4 5 6 7 + 0 8 16 24 32 40 48 56 +-----+-----+-----+-----+-----+-----+-----+-----+ | PUBLIC KEY | | | @@ -209,26 +236,26 @@ <back> <references> <name>Normative References</name> - <reference anchor="RFC3986" target="https://www.rfc-editor.org/info/rfc3986" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.3986.xml"> + <reference anchor="RFC5869" target="https://www.rfc-editor.org/info/rfc5869"> <front> - <title>Uniform Resource Identifier (URI): Generic Syntax</title> - <seriesInfo name="DOI" value="10.17487/RFC3986"/> - <seriesInfo name="RFC" value="3986"/> - <seriesInfo name="STD" value="66"/> - <author initials="T." surname="Berners-Lee" fullname="T. Berners-Lee"> - <organization/> - </author> - <author initials="R." surname="Fielding" fullname="R. Fielding"> + <title> + HMAC-based Extract-and-Expand Key Derivation Function (HKDF) + </title> + <author initials="H." surname="Krawczyk" fullname="H. Krawczyk"> <organization/> </author> - <author initials="L." surname="Masinter" fullname="L. Masinter"> + <author initials="P." surname="Eronen" fullname="P. Eronen"> <organization/> </author> - <date year="2005" month="January"/> + <date year="2010" month="May"/> <abstract> - <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. [STANDARDS-TRACK]</t> + <t> + This document specifies a simple Hashed Message Authentication Code (HMAC)-based key derivation function (HKDF), which can be used as a building block in various protocols and applications. The key derivation function (KDF) is intended to support a wide range of applications and requirements, and is conservative in its use of cryptographic hash functions. This document is not an Internet Standards Track specification; it is published for informational purposes. + </t> </abstract> </front> + <seriesInfo name="RFC" value="5869"/> + <seriesInfo name="DOI" value="10.17487/RFC5869"/> </reference> <!-- <reference anchor="ISO20022"> <front>