gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[lsd0001] branch master updated: text for new revocation mechanic


From: gnunet
Subject: [lsd0001] branch master updated: text for new revocation mechanic
Date: Sun, 19 Apr 2020 12:02:11 +0200

This is an automated email from the git hooks/post-receive script.

martin-schanzenbach pushed a commit to branch master
in repository lsd0001.

The following commit(s) were added to refs/heads/master by this push:
     new 1a254bc  text for new revocation mechanic
1a254bc is described below

commit 1a254bc48bb4a72399dcaea2f19967d27c1b3fe9
Author: Schanzenbach, Martin <address@hidden>
AuthorDate: Sun Apr 19 11:57:27 2020 +0200

    text for new revocation mechanic
---
 draft-schanzen-gns.xml | 270 +++++++++++++++++++++++++------------------------
 1 file changed, 140 insertions(+), 130 deletions(-)

diff --git a/draft-schanzen-gns.xml b/draft-schanzen-gns.xml
index 72fce47..591739f 100644
--- a/draft-schanzen-gns.xml
+++ b/draft-schanzen-gns.xml
@@ -1,19 +1,19 @@
 <?xml version='1.0' encoding='utf-8'?>
-<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent" [
-<!ENTITY RFC1034 SYSTEM 
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.1034.xml";>
-<!ENTITY RFC1035 SYSTEM 
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.1035.xml";>
-<!ENTITY RFC2119 SYSTEM 
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml";>
-<!ENTITY RFC2782 SYSTEM 
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.2782.xml";>
-<!ENTITY RFC3629 SYSTEM 
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.3629.xml";>
-<!ENTITY RFC3826 SYSTEM 
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.3826.xml";>
-<!ENTITY RFC5869 SYSTEM 
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.5869.xml";>
-<!ENTITY RFC5890 SYSTEM 
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.5890.xml";>
-<!ENTITY RFC5891 SYSTEM 
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.5891.xml";>
-<!ENTITY RFC6895 SYSTEM 
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.6895.xml";>
-<!ENTITY RFC6979 SYSTEM 
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.6979.xml";>
-<!ENTITY RFC7748 SYSTEM 
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.7748.xml";>
-<!ENTITY RFC8032 SYSTEM 
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.8032.xml";>
-<!ENTITY RFC8126 SYSTEM 
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.8126.xml";>
+<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
+<!ENTITY RFC1034 PUBLIC '' 
"http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.1034.xml";>
+<!ENTITY RFC1035 PUBLIC '' 
"http://xml2rfc.ietf.org/rfc/bibxml/reference.RFC.1035.xml";>
+<!ENTITY RFC2119 PUBLIC '' 
"http://xml2rfc.ietf.org/rfc/bibxml/reference.RFC.2119.xml";>
+<!ENTITY RFC2782 PUBLIC '' 
"http://xml2rfc.ietf.org/rfc/bibxml/reference.RFC.2782.xml";>
+<!ENTITY RFC3629 PUBLIC '' 
"http://xml2rfc.ietf.org/rfc/bibxml/reference.RFC.3629.xml";>
+<!ENTITY RFC3826 PUBLIC '' 
"http://xml2rfc.ietf.org/rfc/bibxml/reference.RFC.3826.xml";>
+<!ENTITY RFC5869 PUBLIC '' 
"http://xml2rfc.ietf.org/rfc/bibxml/reference.RFC.5869.xml";>
+<!ENTITY RFC5890 PUBLIC '' 
"http://xml2rfc.ietf.org/rfc/bibxml/reference.RFC.5890.xml";>
+<!ENTITY RFC5891 PUBLIC '' 
"http://xml2rfc.ietf.org/rfc/bibxml/reference.RFC.5891.xml";>
+<!ENTITY RFC6895 PUBLIC '' 
"http://xml2rfc.ietf.org/rfc/bibxml/reference.RFC.6895.xml";>
+<!ENTITY RFC6979 PUBLIC '' 
"http://xml2rfc.ietf.org/rfc/bibxml/reference.RFC.6979.xml";>
+<!ENTITY RFC7748 PUBLIC '' 
"http://xml2rfc.ietf.org/rfc/bibxml/reference.RFC.7748.xml";>
+<!ENTITY RFC8032 PUBLIC '' 
"http://xml2rfc.ietf.org/rfc/bibxml/reference.RFC.8032.xml";>
+<!ENTITY RFC8126 PUBLIC '' 
"http://xml2rfc.ietf.org/rfc/bibxml/reference.RFC.8126.xml";>
 ]>
 <?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
 <?rfc strict="yes" ?>
@@ -1138,25 +1138,31 @@
          ahead of time to support timely revocation.
        </t>
        <t>
-         For all occurences below, "scrypt" is the scrypt Password-based Key
-         Derivation Function as defined in <xref target="RFC7914" /> with the
-         following parameters set:
+         For all occurences below, "Argon2d" is the Password-based Key
+         Derivation Function as defined in <xref target="Argon2" /> with the
+         following fixed parameters:
        </t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
          S := "gnunet-revocation-proof-of-work" /* Salt */
-         N := 2
-         r := 8 /* Block size */
-         p := 2 /* Parallelization parameter */
+         t := 3 /* Iterations */
+         m := 1024 /* Memory size, 1 MiB */
+         T := 64 /* Tag (=output) length in bytes */
+         p := 1 /* Parallelization parameter */
+         v := 0x13 /* Version */
+         y := 0 /* Type (Argon2d) */
+         X, K is unused
          ]]></artwork>
        <t>
-         The following the the basic data "REV" on which the proof-of work is
+         The following is the message string "P" on which the proof-of work is
          calculated:
        </t>
        <figure anchor="figure_revocation">
          <artwork name="" type="" align="left" alt=""><![CDATA[
            0     8     16    24    32    40    48    56
            +-----+-----+-----+-----+-----+-----+-----+-----+
-           |                     NONCE                     |
+           |                      POW                      |
+           +-----------------------------------------------+
+           |                   TIMESTAMP                   |
            +-----------------------------------------------+
            |                  PUBLIC KEY                   |
            |                                               |
@@ -1165,77 +1171,62 @@
            +-----+-----+-----+-----+-----+-----+-----+-----+
            ]]></artwork>
        </figure>
+       <t>where:</t>
+       <dl>
+         <dt>POW</dt>
+         <dd>
+           A 64-bit solution to the proof of work.
+         </dd>
+         <dt>TIMESTAMP</dt>
+         <dd>
+           denotes the absolute 64-bit expiration date of the record.
+           In microseconds since midnight (0 hour), January 1, 1970 in network
+           byte order.
+         </dd>
+         <dt>PUBLIC KEY</dt>
+         <dd>
+           A 512-bit ECDSA deterministic signature compliant with
+           <xref target="RFC6979" /> over the public zone zk of the zone
+           which is revoked and corresponds to the key used in the 
proof-of-work.
+           The signature is created using the private zone key "d" (see
+           <xref target="zones" />).
+         </dd>
+       </dl>
        <t>
-         A single pass in the proof-of-work algorithm is defined as follows:
-       </t>
-       <ol>
-         <li>Derive initial key material K from the REV data.</li>
-         <li>Derive IV material from the key material K.</li>
-         <li>Encrypt the REV data using K and IV.</li>
-         <li>Derive the proof of work from the encrypted REV and check against
-           the proof condition.</li>
-       </ol>
-       <t>
-         The first step in the PoW is a call to scrypt with the REV data as
-         password parameter to derive the initial key material K:
-       </t>
-       <figure>
-       <artwork name="" type="" align="left" alt=""><![CDATA[
-         K := scrypt (P := REV, dkLen := 32)
-         ]]></artwork>
-       </figure>
-       <t>
-         where dkLen denotes the intended output length in octets.
-         The second step is to derive a 128 bit initialization vector using a
-         Hash-based Key Derivation Function as defined in
-         (<xref target="RFC5869"/>).
-         Specifically, HMAC-SHA512 is used for the
-         extraction phase and HMAC-SHA256 for the expansion phase.
-       </t>
-
-       <figure>
-         <artwork name="" type="" align="left" alt=""><![CDATA[
-           PRK := HKDF-Extract ("gnunet-proof-of-work-iv", K)
-           IV := HKDF-Expand (PRK,
-                              "gnunet-revocation-proof-of-work",
-                              128 / 8);
-
-         ]]></artwork>
-       </figure>
-       <t>
-         We use the resulting keying material "K" as a 256-bit TWOFISH
-         <xref target="TWOFISH" /> key and use IV as the corresponding
-         initialization vector:
+         Traditionally, proof-of-work schemes require to find a "POW" such that
+         at least D leading zeroes are found in the hash result.
+         D is then referred to as the "difficulty" of the proof-of-work.
+         In order to reduce the variance in time it takes to calculate the
+         proof-of-work, we require that a number "Z" different PoWs must be
+         found that on average have "D" leading zeroes.
        </t>
-
-       <figure>
-         <artwork name="" type="" align="left" alt=""><![CDATA[
-           EREV := TWOFISH(K, IV, REV)
-         ]]></artwork>
-       </figure>
        <t>
-         The above EREV data object is again derived using the scrypt 
algorithm.
-         The proof of work is complete, if the following inequality holds for a
-         given NONCE:
+         The resulting proofs may then published and disseminated. The concrete
+         dissemination and publication methods are out of scope of this
+         document. Given an average difficulty of "D", the proofs have an
+         expiration time of 365 days. With each additional bit difficulty, the
+         lifetime of the proof is prolonged for another 365 days.
+         Consequently, by calculating a more difficult PoW, the lifetime of the
+         proof can be increased on demand by the zone owner.
        </t>
-       <figure>
-         <artwork name="" type="" align="left" alt=""><![CDATA[
-         scrypt(P := EREV, dkLen := 64) < 2^(39)-1
-         ]]>
-         </artwork>
-       </figure>
        <t>
-         where dkLen again denotes the intended output length in octets.
-         The final revocation data object consists of a signature over the
-         public of the zone which is revoked, the zone key itself and the just
-         calculated proof-of-work.
-         The resulting block is then published and disseminated. The concrete
-         dissemination and publication methods are out of scope of this 
document.
+         Given that proof has been found, a revocation data object is defined
+         as follows:
        </t>
        <figure anchor="figure_revocationdata">
          <artwork name="" type="" align="left" alt=""><![CDATA[
            0     8     16    24    32    40    48    56
            +-----+-----+-----+-----+-----+-----+-----+-----+
+           |                   TIMESTAMP                   |
+           +-----+-----+-----+-----+-----+-----+-----+-----+
+           |                      TTL                      |
+           +-----+-----+-----+-----+-----+-----+-----+-----+
+           |                     POW_0                     |
+           +-----+-----+-----+-----+-----+-----+-----+-----+
+           |                       ...                     |
+           +-----+-----+-----+-----+-----+-----+-----+-----+
+           |                     POW_Z-1                   |
+           +-----------------------------------------------+
            |                   SIGNATURE                   |
            |                                               |
            |                                               |
@@ -1245,17 +1236,32 @@
            |                                               |
            |                                               |
            +-----+-----+-----+-----+-----+-----+-----+-----+
+           |         SIZE (0x24)   |       PURPOSE (0x03)  |
+           +-----+-----+-----+-----+-----+-----+-----+-----+
            |                  PUBLIC KEY                   |
            |                                               |
            |                                               |
            |                                               |
            +-----+-----+-----+-----+-----+-----+-----+-----+
-           |                    NONCE                      |
-           +-----------------------------------------------+
            ]]></artwork>
        </figure>
        <t>where:</t>
        <dl>
+         <dt>TIMESTAMP</dt>
+         <dd>
+           denotes the absolute 64-bit expiration date of the revocation.
+           In microseconds since midnight (0 hour), January 1, 1970 in network
+           byte order.
+         </dd>
+         <dt>TTL</dt>
+         <dd>
+           denotes the relative 64-bit time to live of of the record in
+           microseconds also in network byte order.
+         </dd>
+         <dt>POW_i</dt>
+         <dd>
+           The POWs calculated as part of the proof-of-work.
+         </dd>
          <dt>SIGNATURE</dt>
          <dd>
            A 512-bit ECDSA deterministic signature compliant with
@@ -1264,38 +1270,6 @@
            The signature is created using the private zone key "d" (see
            <xref target="zones" />).
          </dd>
-                  <dt>PUBLIC KEY</dt>
-         <dd>
-           is the 256-bit public key "zk" of the zone which is being revoked 
and
-           the key to be used to verify SIGNATURE. The
-           wire format of this value is defined in <xref target="RFC8032" />,
-           Section 5.1.5.
-         </dd>
-         <dt>NONCE</dt>
-         <dd>
-           The nonce calculated as part of the proof-of-work.
-         </dd>
-       </dl>
-       <t>
-         The signature over the public key covers a 32 bit pseuso header
-         conceptually prefixed to the public key. The pseudo header includes
-         the key length and signature purpose:
-       </t>
-       <figure anchor="figure_pkeywithpseudo">
-         <artwork name="" type="" align="left" alt=""><![CDATA[
-           0     8     16    24    32    40    48    56
-           +-----+-----+-----+-----+-----+-----+-----+-----+
-           |         SIZE (0x24)   |       PURPOSE (0x03)  |
-           +-----+-----+-----+-----+-----+-----+-----+-----+
-           |                  PUBLIC KEY                   |
-           |                                               |
-           |                                               |
-           |                                               |
-           +-----+-----+-----+-----+-----+-----+-----+-----+
-           ]]></artwork>
-       </figure>
-       <t>where:</t>
-       <dl>
          <dt>SIZE</dt>
          <dd>
            A 32-bit value containing the length of the signed data in bytes
@@ -1306,7 +1280,30 @@
            A 32-bit signature purpose flag. This field MUST be 3 (in network
            byte order).
          </dd>
+         <dt>PUBLIC KEY</dt>
+         <dd>
+           is the 256-bit public key "zk" of the zone which is being revoked 
and
+           the key to be used to verify SIGNATURE. The
+           wire format of this value is defined in <xref target="RFC8032" />,
+           Section 5.1.5.
+         </dd>
        </dl>
+       <section anchor="revocation_verification" numbered="true" toc="default">
+         <name>Verification</name>
+         <t>
+           In order to verify a revocation the following steps must be taken,
+           in order:
+         </t>
+         <ol>
+           <li>The current time MUST be between TIMESTAMP and
+             TIMESTAMP+TTL.</li>
+           <li>The signature MUST match the public key.</li>
+           <li>The average number of leading zeroes resulting from the provided
+             POW values D' MUST be greater than or equal to D.</li>
+           <li>The actual expiration time TIMESTAMP + (D'-D+1) * 365 days
+             is in the future.</li>
+         </ol>
+       </section>
      </section>
      <section anchor="governance" numbered="true" toc="default">
        <name>Determining the Root Zone and Zone Governance</name>
@@ -1569,24 +1566,37 @@ The registry shall record for each entry:
            <date year="1999" month="March"/>
          </front>
        </reference>
-       <reference anchor="RFC7914" 
target="https://www.rfc-editor.org/info/rfc7914";>
+       <reference anchor="Argon2" 
target="https://datatracker.ietf.org/doc/draft-irtf-cfrg-argon2/";>
          <front>
-           <title>The scrypt Password-Based Key Derivation Function</title>
-           <author initials="C." surname="Percival" fullname="C. Percival">
-             <organization/>
-           </author>
-           <author initials="S." surname="Josefsson" fullname="S. Josefsson">
-             <organization/>
-           </author>
-           <date year="2016" month="August"/>
+           <title>The memory-hard Argon2 password hash and proof-of-work 
function</title>
+          <author initials="A." surname="Biryukov" fullname="Alex Biryukov">
+            <organization>University of Luxembourg</organization>
+          </author>
+
+          <author initials="D." surname="Dinu" fullname="Daniel Dinu">
+            <organization>University of Luxembourg</organization>
+          </author>
+
+          <author initials="D." surname="Khovratovich"
+            fullname="Dmitry Khovratovich">
+            <organization>ABDK Consulting</organization>
+          </author>
+          <author initials="S." surname="Josefsson"
+            fullname="Simon Josefsson">
+            <organization>SJD AB</organization>
+          </author>
+           <date year="2020" month="March"/>
            <abstract>
              <t>
-               This document specifies the password-based key derivation 
function scrypt. The function derives one or more secret keys from a secret 
string. It is based on memory-hard functions, which offer added protection 
against attacks using custom hardware. The document also provides an ASN.1 
schema.
+               This document describes the Argon2 memory-hard function for
+      password hashing and proof-of-work applications.  We provide an
+      implementer-oriented description with
+      test vectors.  The purpose is to simplify adoption of Argon2 for
+      Internet protocols.  This document is a product of the Crypto Forum 
Research Group (CFRG) 
+       in the IRTF.
              </t>
            </abstract>
          </front>
-         <seriesInfo name="RFC" value="7914"/>
-         <seriesInfo name="DOI" value="10.17487/RFC7914"/>
        </reference>
        <!--    <reference anchor="ISO20022">
          <front>

-- 
To stop receiving notification emails like this one, please contact
address@hidden.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]