lsd0009

LSD0009: The GNU Taler Protocol
Log | Files | Refs | README

commit 186e6c9ba1ec9a83472cdce6acd41c2f0215f1ae
parent 647fde5bc6f043150fa424cf20e977644a308358
Author: Mikolai Gütschow <mikolai.guetschow@tu-dresden.de>
Date:   Mon,  8 Jul 2024 11:03:43 +0200

crypto primitives: refine HKDF-Mod

Diffstat:
Mdraft-guetschow-taler-protocol.md | 18+++++++-----------
Mdraft-guetschow-taler-protocol.xml | 108++++++++++++++++++++++++++++++++++++++-----------------------------------------
2 files changed, 59 insertions(+), 67 deletions(-)

diff --git a/draft-guetschow-taler-protocol.md b/draft-guetschow-taler-protocol.md @@ -170,7 +170,7 @@ Based on the HKDF defined in {{hkdf}}, this function returns an OKM that is smal HKDF-Mod(N, salt, IKM, info) -> OKM Inputs: - N big number; Nbits denotes the length of N in bits + N big number; Nbit denotes the length of N in bits salt optional salt value (a non-secret random value); if not provided, it is set to a string of 64 zeros. IKM input keying material @@ -181,18 +181,14 @@ Output: OKM output keying material (smaller than N) ~~~ -The output OKM is calculated as follows: +The final output `OKM` is determined iteratively based on a counter initialized at zero, +where `c` denotes the two least significant octets of the counter in network-byte order ~~~ -Nlen = ceil(Nbits / 8) -while true: - counter = 0 - c = 2 least significant octets of counter in network-byte order - x = HKDF(salt, IKM, info | c, NLen) - reset all but lower Nbits bits in x - if x < N: - OKM = x - break +counter = 0 +do until OKM < N: + x = HKDF(salt, IKM, info | c, ceil(Nbits/8)) + OKM = Nbits least significant bits of x counter += 1 ~~~ diff --git a/draft-guetschow-taler-protocol.xml b/draft-guetschow-taler-protocol.xml @@ -189,7 +189,7 @@ OKM = HKDF-Expand(PRK, info, L) with Hash = SHA-256 (HashLen = 32) HKDF-Mod(N, salt, IKM, info) -> OKM Inputs: - N big number; Nbits denotes the length of N in bits + N big number; Nbit denotes the length of N in bits salt optional salt value (a non-secret random value); if not provided, it is set to a string of 64 zeros. IKM input keying material @@ -200,18 +200,14 @@ Output: OKM output keying material (smaller than N) ]]></artwork></figure> -<t>The output OKM is calculated as follows:</t> +<t>The final output <spanx style="verb">OKM</spanx> is determined iteratively based on a counter initialized at zero, +where <spanx style="verb">c</spanx> denotes the two least significant octets of the counter in network-byte order</t> <figure><artwork><![CDATA[ -Nlen = ceil(Nbits / 8) -while true: - counter = 0 - c = 2 least significant octets of counter in network-byte order - x = HKDF(salt, IKM, info | c, NLen) - reset all but lower Nbits bits in x - if x < N: - OKM = x - break +counter = 0 +do until OKM < N: + x = HKDF(salt, IKM, info | c, ceil(Nbits/8)) + OKM = Nbits least significant bits of x counter += 1 ]]></artwork></figure> @@ -334,7 +330,7 @@ while true: -<?line 221?> +<?line 217?> <section anchor="change-log"><name>Change log</name> @@ -352,50 +348,50 @@ Education and Research (BMBF) within the project Concrete Contracts.</t> </back> <!-- ##markdown-source: -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 -AA== +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 +ibNf8oOrzEjcfwCjuSQQExIAAA== -->