lsd0014

LSD0014: Peer Identity Lifecycle Service (PILS)
Log | Files | Refs

commit e5ad7184cbc7d63a7cb18f24d036f6248835aba8
Author: Martin Schanzenbach <schanzen@gnunet.org>
Date:   Wed,  9 Jul 2025 12:58:46 +0200

pils initial commit

Diffstat:
A.buildbot/build.sh | 3+++
A.buildbot/firefly-x86_64-amdepyc_deploy.sh | 10++++++++++
AMakefile | 8++++++++
Adraft-schanzen-pils.xml | 259+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 280 insertions(+), 0 deletions(-)

diff --git a/.buildbot/build.sh b/.buildbot/build.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +make diff --git a/.buildbot/firefly-x86_64-amdepyc_deploy.sh b/.buildbot/firefly-x86_64-amdepyc_deploy.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +# Deploy rest api from buildbot + +if [ -e index.html ]; then + rm index.html +fi +ln -s draft-schanzen-pils.html index.html +chmod -R ag+rX draft-schanzen-pils.* index.html . +rsync --exclude=".*" --exclude="Makefile" -a --delete ./ lsd@firefly.gnunet.org:~/public/lsd0014/ diff --git a/Makefile b/Makefile @@ -0,0 +1,8 @@ +all: txt html + +html: + xml2rfc --html --css style.css draft-schanzen-pils.xml + +txt: + xml2rfc draft-schanzen-pils.xml + diff --git a/draft-schanzen-pils.xml b/draft-schanzen-pils.xml @@ -0,0 +1,259 @@ +<?xml version='1.0' encoding='utf-8'?> +<!DOCTYPE rfc [ +<!ENTITY RFC1034 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.1034.xml"> +<!ENTITY RFC1035 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.1035.xml"> +<!ENTITY RFC1928 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.1928.xml"> +<!ENTITY RFC2119 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml"> +<!--<!ENTITY RFC2693 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2693.xml">--> +<!ENTITY RFC2782 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2782.xml"> +<!ENTITY RFC3629 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3629.xml"> +<!ENTITY RFC3686 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3686.xml"> +<!ENTITY RFC3826 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3826.xml"> +<!ENTITY RFC4033 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4033.xml"> +<!ENTITY RFC5237 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5237.xml"> +<!--<!ENTITY RFC3912 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3912.xml">--> +<!ENTITY RFC5890 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5890.xml"> +<!ENTITY RFC5895 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5895.xml"> +<!ENTITY RFC6066 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6066.xml"> +<!ENTITY RFC6761 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6761.xml"> +<!ENTITY RFC6895 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6895.xml"> +<!ENTITY RFC6979 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6979.xml"> +<!ENTITY RFC7363 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7363.xml"> +<!ENTITY RFC8806 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8806.xml"> +<!ENTITY RFC7748 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7748.xml"> +<!ENTITY RFC8126 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8126.xml"> +<!ENTITY RFC8174 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8174.xml"> +<!ENTITY RFC8244 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8244.xml"> +<!ENTITY RFC8324 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8324.xml"> +<!ENTITY RFC8499 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8499.xml"> +<!ENTITY RFC9106 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.9106.xml"> +<!ENTITY RFC9180 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.9180.xml"> +<!ENTITY I-D.ietf-dnsop-alt-tld PUBLIC '' "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-dnsop-alt-tld.xml"> +]> +<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?> +<?rfc strict="yes" ?> +<?rfc toc="yes" ?> +<?rfc symrefs="yes"?> +<?rfc sortrefs="yes" ?> +<?rfc compact="yes" ?> +<?rfc subcompact="no" ?> +<rfc xmlns:xi="http://www.w3.org/2001/XInclude" + category="info" + docName="draft-schanzen-pils-00" + ipr="trust200902" + obsoletes="" updates="" + submissionType="independent" + xml:lang="en" + version="3"> + <!-- xml2rfc v2v3 conversion 2.26.0 --> + <front> + <title abbrev="PILS"> + The Peer Identity Lifecycle Service (PILS) + </title> + <seriesInfo name="Internet-Draft" value="draft-schanzen-pils-00"/> + <author fullname="Martin Schanzenbach" initials="M." surname="Schanzenbach"> + <organization>Fraunhofer AISEC</organization> + <address> + <postal> + <street>Lichtenbergstrasse 11</street> + <city>Garching</city> + <code>85748</code> + <country>DE</country> + </postal> + <email>martin.schanzenbach@aisec.fraunhofer.de</email> + </address> + </author> + + <!-- Meta-data Declarations --> + <area>General</area> + <workgroup>Independent Stream</workgroup> + <keyword>transport protocols</keyword> + <abstract> + <t> + This document contains the GNUnet communicator + specification. + </t> + <t> + This document defines the normative wire format of communicator protocols, + cryptographic routines and security + considerations for use by implementers. + </t> + <t> + This specification was developed outside the IETF and does not have + IETF consensus. It is published here to inform readers about the + function of GNUnet communicators, guide future communicator implementations, and ensure + interoperability among implementations including with the pre-existing + GNUnet implementation. + </t> + </abstract> + </front> + <middle> + <section anchor="introduction" numbered="true" toc="default"> + <name>Introduction</name> + <t> + TODO explain motivation + </t> + <t> + This specification was developed outside the IETF and does not have + IETF consensus. It is published here to guide implementers + and ensure interoperability among implementations. + </t> + <section numbered="true" toc="default"> + <name>Requirements Notation</name> + <t> + The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", + "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and + "OPTIONAL" 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> + <section anchor="notation" numbered="true" toc="default"> + <name>Notation</name> + <t> + We use the notation and terminology of <xref target="RFC9180"/> throughout + this document. + </t> + </section> + <section anchor="pid_derivation" numbered="true" toc="default"> + <name>Peer ID Derivation</name> + </section> + <!-- gana --> + <section> + <name>Implementation and Deployment Status</name> + <t> + There is one implementation conforming to this specification, written in C. + The implementation is part of <xref target="GNUnet"/> and represents the original and reference implementation. + </t> + <t> + The basic Elligator primitives GenerateKeyPair(), SerializePublicKey() and DeserializePublicKey() + are present in <xref target="GNUnetElligator"/>. The corresponding KEM primitives are part of <xref target="GNUnetHPKE"/>. + </t> + </section> + <!-- <section> + <name>Acknowledgements</name> + <t> + FIXME + </t> + </section> --> + </middle> + <back> + <references> + <name>Normative References</name> + &RFC2119; + &RFC7748; + &RFC8174; + &RFC9180; + + </references> + <references> + <name>Informative References</name> + <reference anchor="BHKL13" target="https://eprint.iacr.org/2013/325.pdf"> + <front> + <title>Elligator: Elliptic-curve points indistinguishable from uniform random strings</title> + <author initials="D.J" surname="Bernstein" + fullname="Daniel J. Bernstein"> + </author> + <author initials="M." surname="Hamburg" + fullname="Mike Hamburg"> + </author> + <author initials="A." surname="Krasnova" + fullname="Anna Krasnova"> + </author> + <author initials="T." surname="Lange" + fullname="Tanja Lange"> + </author> + <date month="August" year="2013" /> + </front> + </reference> + <!--<reference anchor="LSD0007" target="https://lsd.gnunet.org/lsd0007"> + <front> + <title>The GNUnet communicators</title> + <author initials="M" surname="Schanzenbach" + fullname="Martin Schanzenbach"> + </author> + <author initials="C." surname="Grothoff" + fullname="Christian Grothoff"> + </author> + <author initials="P." surname="Fardzadeh" + fullname="Pedram Fardzadeh"> + </author> + <date month="July" year="2024" /> + </front> + </reference>--> + <reference anchor="GNUnet" target="https://git.gnunet.org/gnunet.git"> + <front> + <title>gnunet.git - GNUnet core repository</title> + <author initials="GNUnet e.V." surname="" + fullname=""> + </author> + <date month="" year="2023" /> + </front> + </reference> + <reference anchor="GNUnetElligator" target="https://git.gnunet.org/gnunet.git/tree/src/lib/util/crypto_elligator.c"> + <front> + <title>gnunet.git - Elligator primitives implementation in GNUnet core repository</title> + <author initials="M" surname="Schanzenbach" + fullname="Martin Schanzenbach"> + </author> + <author initials="P." surname="Fardzadeh" + fullname="Pedram Fardzadeh"> + </author> + <date month="" year="2023" /> + </front> + </reference> + <reference anchor="GNUnetHPKE" target="https://git.gnunet.org/gnunet.git/tree/src/lib/util/crypto_hpke.c"> + <front> + <title>gnunet.git - HPKE Primitive implementation in GNUnet core repository</title> + <author initials="M" surname="Schanzenbach" + fullname="Martin Schanzenbach"> + </author> + <author initials="P." surname="Fardzadeh" + fullname="Pedram Fardzadeh"> + </author> + <date month="" year="2023" /> + </front> + </reference> + </references> + + + <section> + <name>Elligator implementation</name> + <t> + This section provides a test vector for the Elligator KEM and should aid in verifying implementations. + Note that Elligator has two parameters: the set of positive and negative numbers, and a non-square number U + within the finite field, as described in section 5.1 of <xref target="BHKL13"/>. The displayed test vectors assume that the set of positive + numbers is defined as {0,...,(P-1)/2}, the set of negative numbers as {(P-1)/2 + 1,...,P−1} and U is the non-square number + sqrt(-1). The depicted coin flips are used in the order of the coinFlip() calls in SerializeElligatorPublicKey(pkX), namely + coin flip 1 for choosing the pkXm term, coin flip 2 for the MSB and coin flip 3 for the second MSB. + Unless indicated otherwise, the test vectors are provided as little-endian hexadecimal byte arrays. + </t> + <section> + <name>Elligator KEM</name> + <artwork name="" type="" align="left" alt=""><![CDATA[ +coin flip 1: 0 +coin flip 2: 1 +coin flip 3: 1 +pkEm: +3f73ee0dd1970ff957f7ec15e0b5151166be3046e6a8b0ee53beca395b74e42c + +skEm: +09395966d6d1c493b9917dd12c8dd24e2c05c081c98a67eb2d6dff622ec9c069 + +skRm: +f33887a8562dad5151e9289a0afa1301ccc698917850d56ea409a9949497baa4 + +pkRm: +3febadac122d397725ff580f6ce9a3e1c1c4a7de19807f13d383f2f9b6467136 + +enc: +da0f7edaefed18a99f0b73a789e51c4c6e80664190ae3c8ae4e95b9d926a34f7 + +key: +46eff65b5313f41fbaffc7adf98f5df03ab4e4f46ae62a2c7ecbe1f0ae83280b + ]]></artwork> + </section> + </section> + </back> +</rfc>