gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] [taler-anastasis] branch master updated: more comments, mor


From: gnunet
Subject: [GNUnet-SVN] [taler-anastasis] branch master updated: more comments, more fixes
Date: Thu, 26 Sep 2019 19:34:38 +0200

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

grothoff pushed a commit to branch master
in repository anastasis.

The following commit(s) were added to refs/heads/master by this push:
     new 8896d8d  more comments, more fixes
8896d8d is described below

commit 8896d8d6a16b08fae41394ca309adea243a7fee5
Author: Christian Grothoff <address@hidden>
AuthorDate: Thu Sep 26 19:34:36 2019 +0200

    more comments, more fixes
---
 src/api/crypto-anastasis.rst | 52 ++++++++++++++++++++++++++++++--------------
 1 file changed, 36 insertions(+), 16 deletions(-)

diff --git a/src/api/crypto-anastasis.rst b/src/api/crypto-anastasis.rst
index 9bcda4a..85f7cbd 100644
--- a/src/api/crypto-anastasis.rst
+++ b/src/api/crypto-anastasis.rst
@@ -91,6 +91,9 @@ generate the corresponding public key.
     eddsa_priv := eddsa_d_to_a(ver_secret)
     eddsa_pub := get_EdDSA_Pub(eddsa_priv)
 
+FIXME: ecdhe_d_to_a() needs to be specified.
+
+
 **HKDF()**: The HKDF-function uses to phases: First we use HMAC-SHA512 for the 
extraction phase, then HMAC-SHA256 is used for expansion phase.
 
 **kdf_id**: Hashed user_identifier.
@@ -112,19 +115,22 @@ generate the corresponding public key.
 ^^^^^^^^^^^^^^
 
 For symmetric encryption of data we use AES256-GCM. For this we need a
-symmetric key and an initialization vector (IV).
+symmetric key and an initialization vector (IV).  To ensure that the
+symmetric key changes for each encryption operation, we compute the
+key material using Diffie-Hellman (DH), combining a long-term ECDH
+key with an ephemeral (single-use) ECDHE key.
 
-To derive such a symmetric key
-we use ECDHE.  The ECDHE private key is another key derivation from our
-kdf_id.  The public Key is an ephemeral ECDHE Key which is always generated
-before every encryption.
+The long-term ECDH private key is again derived from the user's kdf_id.  The
+ephemeral ECDHE key is chosen at random before every encryption.
 
 .. code-block::
 
     enc_secret:= HKDF(kdf_id, salt_enc, keysize)
-    ecdhe_priv := ecdhe_d_to_a(enc_secret)
+    ecdh_priv := ecdhe_d_to_a(enc_secret)
+    ecdh_pub := get_ecdhe_pub(ecdh_priv)
+    ecdhe_priv := ecdhe_create(PRNG)
     ecdhe_pub := get_ecdhe_pub(ecdhe_priv)
-    sym_key := ecdhe(ecdhe_priv, ecdhe_pub)
+    sym_key := ecdhe(ecdhe_priv, ecdh_pub) = ecdhe(ecdh_pub, ecdhe_priv)
     enc_key:= HKDF(sym_key, salt_enc, keysize)
 
 **HKDF()**: The HKDF-function uses to phases: First we use HMAC-SHA512 for the 
extraction phase, then HMAC-SHA256 is used for expansion phase.
@@ -135,26 +141,40 @@ before every encryption.
 
 **key_size**: Size of the output, here 32Byte
 
-**enc_secret**: Derived Key from the kdf_id, serves as intermediate Step for 
the generation of the private Key
+**enc_secret**: Derived key material from the kdf_id, serves as intermediate 
step for the generation of the long-term private key.
+
+**ecdhe_d_to_a()**: Function which converts the enc_secret to a valid ECDH(E) 
private key.
+
+**sym_key**: Intermediate step for the generation of the symmetric key.
 
-**ecdhe_d_to_a()**: Function which converts the enc_secret to a valid ECDHE 
private Key.
+FIXME: Maybe call it something else? "dh_secret" might be a good name.
 
-**sym_key**: Intermediate step for the generation of the Key
+**enc_key**: Symmetric key which is later used to encrypt the documents with 
AES256-GCM.
 
-**enc_key**: Symetric Key which is later used to encrypt the documents with 
AES256-GCM
+FIXME: You need to specify the salt, and you also need to derive an IV (from 
sym_key).
 
 ----------------------------
 2. Key Usage
 ----------------------------
-The Keys we have generated, are now used to encrypt the recovery_document and 
the key_share of the user.
+
+The keys we have generated, are now used to encrypt the recovery_document and
+the key_share of the user.
 
 2.1 Encryption
-^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^
+
 Before every encryption an ephemeral ECDHE public key is generated.
-From this the symetric Key is computed as described above.
+From this the symmetric key is computed as described above.
 We use AES256-GCM for the encryption of the recovery_document and
 key_share.
 
+FIXME: This is underspecified.
+
+
 2.2 Signatures
-^^^^^^^^^^^^^^^^
-The EdDSA Keys are used to sign the data sent from the client to the server. 
Everything the client sends to server is signed.
+^^^^^^^^^^^^^^
+
+The EdDSA keys are used to sign the data sent from the client to the
+server. Everything the client sends to server is signed.
+
+FIXME: This is underspecified.

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



reply via email to

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