related_work.tex (24261B)
1 2 \section{Cryptographic Principles} 3 In this chapter, all relevant cryptographic principles used in Frosix are explained and described. 4 5 \subsection{Randomness} 6 "Any one who considers arithmetical methods of producing random digits is, of course, in 7 a state of sin." \cite{neumann:1951} 8 9 In the field of cryptography, good randomness is crucial \cite[page 3]{vadhan:2012}, 10 but it is difficult for computers to behave unpredictably. 11 We therefore need some mechanisms which come close to and are indistinguishable from true random: 12 computational indistinguishability. \cite[chapter 7.1.1]{vadhan:2012} 13 14 \subsubsection{Pseudo Random Generator} 15 A pseudo random number generator (PRG or PRNG) algorithm produces a long sequence of 16 bytes, for which there exist no efficient algorithm to distinguish it from a 17 true random sequence. Since an algorithm can not produce true random, a PRG 18 needs to be seeded with a short and perfectly random input. \cite[page 5]{vadhan:2012} 19 20 \textbf{Pseudo Random Function} 21 \newline To build a pseudo random function (PRF), a PRG can be used. A PRF is a 22 deterministic function whose output is indistinguishable from true random 23 and there is no efficient way to gain any information about the input seed, 24 unless this seed is already known. \cite[page 223]{vadhan:2012} 25 26 \subsubsection{Entropy} 27 Entropy is the measurement of how much randomness is in a random variable. 28 The notion is always a log to the base 2. For example, an entropy value of $128$ 29 means that there are $2^{128}$ possibilities, all of which are equally likely. 30 This is also called uniform distribution. \cite[chapter 6.1.2]{vadhan:2012} 31 32 \subsection{Hash} 33 A hash function is technically speaking a compression function and is defined as a 34 function that takes an input with arbitrary length and returns a fix-sized 35 output. \cite[chapter 2]{sobti:2012}. 36 \custind To become useful for cryptography, a hash function must fulfill 37 following additional properties and is then known as cryptographic hash function \cite[chapter 5]{sobti:2012}: 38 39 \begin{itemize} 40 \item \textbf{Avalanche Criterion}: A good hash function generates for two different input two completely different outputs, 41 regardless how small the difference in the inputs are. 42 This results in the avalanche criterion, where changing one bit in the input, 43 changes every bit in the output with a probability of 0.5. \cite[chapter 5.2]{sobti:2012} 44 \item \textbf{Pre-Image Resistance}: A hash function is said to be pre-image resistant if it is difficult to find the input, 45 if only the output is given. 46 \newline "Given $H$ and $H(x)$, it is computationally infeasible to find $x$." \cite[chapter 2.1]{sobti:2012} 47 Such a hash function is also known as One Way Hash Function. 48 \item \textbf{Second Pre-Image Resistance}: To be second pre-image resistant, it must be difficult to find a second input 49 for a given input which leads to the same output. 50 \newline "it is computationally infeasible to find any second input which has 51 the same output as any specified input, i.e., given $x$, to find a 2nd-preimage $x' = x$ such that 52 $h(x) = h(x')$." \cite[chapter 3.3]{cryptoeprint:2004/035} 53 \item \textbf{Collision Resistance}: The strongest property of a cryptographic hash function is its collision resistance. 54 With a collision resistance hash function, it is hard to find two different inputs which lead to the 55 same output. 56 \newline "it is computationally infeasible to find any two distinct inputs $x$, $x'$ which has the same output, i.e., 57 such that $h(x) = h(x')$." \cite[chapter 9.2.2]{appliedcryptography} 58 \end{itemize} 59 60 \subsubsection{HMAC} 61 In network communication, the message authentication code (MAC) is used to verify the integrity and authenticity 62 of received information. A MAC is a "cryptographic checksum", based on a shared key \cite[chapter 1.1]{bellare:1996}. 63 \custind The hash-based message authentication code (HMAC) scheme is based on the principle of a MAC and utilizes a cryptographic hash function ($H$), with a key ($k$) and a message ($x$) as input: 64 65 \begin{center} 66 $HMAC_k(x) = H(\overline{k} \oplus opad, H(\overline{k} \oplus ipad, x))$ \cite[chapter 5.1]{bellare:1996} 67 \end{center} 68 69 \subsubsection{HKDF} 70 Goal of a key derivation function (KDF) is to derive "one or more cryptographically strong secret keys" \cite[chapter 1]{cryptoeprint:2010/264} from a probably not 71 uniformly distributed key. Thus, a KDF contains two phases. In the extraction phase, a pseudorandom key is extracted and in the second phase expanded to 72 the desired output length, with the help of a pseudo random function (PRF). 73 \custind In a hashed key derivation function (HKDF), the HMAC scheme is utilized in the extraction phase to get the pseudorandom key as well as 74 in the expansion phase as PRF. \cite[chapter 4.2]{cryptoeprint:2010/264}. 75 \custind Frosix makes intensive use of HKDF functions to deterministically expand high entropy inputs (see chapter \ref{chap:rnd}). 76 77 \subsubsection{PBKDF} 78 A password-based key derivation function (PBKDF) derives a pseudorandom key from a low-entropy password. Unlike a HKDF, a PBKDF scheme uses 79 an adaptable number of iterations to derive the resulting key, thus making it hard to brute-force the password. \cite[chapter 3]{RFC8018} 80 81 \textbf{Argon2} 82 \newline Argon2 is a PBKDF which aims to "maximize the cost of password cracking on ASICs" \cite[page 2]{argon2}. 83 Therefore, Argon2 is designed to not only use many iterations 84 in order to derive a pseudorandom key from a low-entropy password, but at the same time uses a lot of memory, making it "memory-hard" \cite[page 9]{argon2}. 85 \custind Frosix uses Argon2 (Argon2id) to derive a seed from the secret answer to make brute forcing as inefficient as possible. 86 87 \subsection{Public Key Cryptography} 88 "In a public-key cryptographic scheme, a key pair is selected so that the problem of deriving the 89 private key from the corresponding public key is equivalent to solving a computational problem 90 that is believed to be intractable." \cite[chapter 1.2]{Hankerson2004GuideTE} 91 \custind Public key cryptography relies either on the hardness of the factorization problem (RSA), the discrete logarithm problem (DL), 92 or the elliptic curve discrete logarithm problem (EC). \cite[chapter 1.2]{Hankerson2004GuideTE} 93 94 \subsubsection{Elliptic Curves} 95 In cryptography, an elliptic curve is built on the finite field $\mathbb{F}_p$, 96 and is defined by an equation of the form 97 98 \begin{center} 99 $y^2 = x^3 + ax + b$, where a, b $\in \mathbb{F}_p$ and $4a^3 + 27b^2 \not\equiv 0$ (mod p) \cite[page 13]{Hankerson2004GuideTE}. 100 \end{center} 101 102 Every pair \((x, y) \in \mathbb{F}_p^2\) is a point on the curve if above equation is satisfied. \cite[page 13]{Hankerson2004GuideTE} 103 Advantages of elliptic curves are their smaller key size, compared to RSA or DSA, to achieve the same security level. \cite[page 19]{Hankerson2004GuideTE} 104 105 A finite field is the set $\mathbb{F}$, together with the two operations addition and multiplication, and fulfills 106 specific properties \cite[chapter 2.1]{Hankerson2004GuideTE}: 107 108 \begin{itemize} 109 \item \((\mathbb{F}, +)\) is an abelian group with (additive) identity denoted by 0. 110 \item \((\mathbb{F} \setminus \{0\}, \cdot)\) is an abelian group with (multiplicative) identity denoted by 1. 111 \item The distributive law holds: \((a + b) \cdot c = a \cdot c + b \cdot c\) for all \(a,b,c \in \mathbb{F}\). 112 \item If the set \(\mathbb{F}\) is finite, then the field is said to be finite. 113 \end{itemize} 114 115 \textbf{Ristretto255 Group} 116 \newline The ristretto255 group is an adaption of the Curve25519, "a state-of-the-art elliptic-curve-Diffie-Hellman function 117 suitable for a wide variety of cryptographic applications" \cite[chapter 1]{10.1007/11745853_14}. 118 Ristretto is based on a technique called Decaf \cite{cryptoeprint:2015/673} and allows the construction 119 of prime-order groups from non-prime-order elliptic curves with cofactor 8, such as Curve25519. \cite[chapter 1]{irtf-cfrg-ristretto255-decaf448-07} 120 \custind As recommended by the authors of FROST, Frosix uses ristretto255 as the underlying prime-order group. \cite[chapter 6]{irtf-cfrg-frost-13} 121 122 \subsubsection{ECDHE} 123 Elliptic Curve Diffie-Hellman Ephemeral (ECDHE) is a key agreement protocol, which allows a shared key to be established over an 124 untrusted channel. \cite[chapter 6.1]{secg:sec1-v2} 125 \custind Frosix uses ECDHE to transmit the secret shares in round 2 and 3 of the key generation protocol. 126 127 \subsubsection{Digital Signature} 128 A digital signature is a construct "which associates a message (in digital 129 form) with some originating entity" \cite[chapter 11.2]{appliedcryptography}. 130 \custind There exists a lot of different signature schemes, but all of them 131 consist of three basic algorithms: \cite[chapter 11.2.2]{appliedcryptography} 132 \begin{itemize} 133 \item \textbf{Key Generation}: In a key generation a key pair has to be created. A key pair consists out of a private key 134 \(sk\) and a public key \(pk\). The private key is chosen secretly and at random, or at least derived from high entropy. 135 Afterwards, the public key can be derived from the private key. 136 \item \textbf{Signature Generation}: With the private key from the previously generated key pair, arbitrary messages can be signed. 137 \item \textbf{Signature Verification}: Anybody in possession of the public key and the verification function can now 138 verify, whether a signature matches a message. 139 \end{itemize} 140 141 \subsubsection{Schnorr Signature Scheme} 142 The Schnorr signature scheme is an efficient signature scheme, based on discrete logarithms: \cite{crypto-1989-1727} 143 144 \begin{itemize} 145 \item primes $p$ and $q$ such that $q$ | $p-1$ 146 \item $\alpha \in \mathbb{Z}_p$ with order $q$, $\alpha^q = 1$ (mod $p$), $\alpha \neq 1$ 147 \item \textbf{Key Generation}: 148 \begin{enumerate} 149 \item Chose private key \(s \in \{1, 2, ..., q\}\). 150 \item The corresponding public key \(v\) is the number $v = \alpha^{-s}$ (mod $p$). 151 \end{enumerate} 152 \item \textbf{Signature Generation}: The key pair $s, v$ and the message $m$ are provided. 153 \begin{enumerate} 154 \item Pick a random number \(r \in {1, ..., q}\) and compute \(x := \alpha^r\) (mod $p$). 155 \item Compute \(e := h(x,m) \in \{0, ..., 2^t-1\}\). 156 \item Compute \(y := r + se\) (mod q) and output the signature \((e,y)\). 157 \end{enumerate} 158 \item \textbf{Signature Verification}: The signature ($e$, $y$) for message $m$ and the public key $v$ are provided. 159 \begin{enumerate} 160 \item Compute \(\overline{x} = \alpha^y v^e\) (mod p). 161 \item Check that \(e = h(\overline{x},m)\). 162 \end{enumerate} 163 \end{itemize} 164 165 Due to a patent, which expired in 2008, Schnorr signature schemes were not common for a long time. 166 167 \textbf{EdDSA} 168 \newline Nowadays, the Edwards-curve Digital Signature Algorithm (EdDSA) \cite{rfc8032}, 169 a deterministic variant of the Schnorr Signature Scheme 170 on elliptic Edwards-curve, is standardized and widely used. 171 \custind Frosix uses EdDSA signatures to let each involved provider sign the resulting public key in the key generation process. 172 173 \subsubsection{Secret Sharing} 174 \textbf{Shamir's Secret Sharing} 175 \newline Shamir's secret sharing is a method to divide some data D into n parts, based on polynomial interpolation 176 and has the following two properties \cite{10.7551/mitpress/12274.003.0048}: 177 178 \begin{enumerate} 179 \item knowledge of any \(k\) or more \(D_i\) pieces makes \(D\) easily computable 180 \item knowledge of any \(k - 1\) or fewer \(D_i\) pieces leaves \(D\) completely undetermined (in the sense that all its possible 181 values are equally likely) 182 \end{enumerate} 183 184 \textbf{Feldman's Verifiable Secret Sharing} 185 \newline In Shamir's secret sharing a party can not verify if the received piece is valid. 186 In Feldman's verifiable secret sharing \cite{10.1109/SFCS.1987.4}, 187 the \gls{trusted dealer} first publishes a commitment of the secret, with which each receiving party can test, 188 whether the afterwards sent piece is a valid part of that secret. \cite[chapter 3.2]{10.1109/SFCS.1987.4} 189 190 \subsubsection{Threshold Signature Scheme} 191 In a threshold signature scheme, the private key is distributed among $n$ parties, such that \(k \leq n\) parties can collaborate to generate 192 a valid signature. 193 To achieve a signature system, wherein the signing key is not combined in any single place at any time, it is mandatory to 194 also generate the key pair with a multiparty algorithm in a distributed key generation process. \cite[chapter 1]{cryptoeprint:2020/1390} 195 196 \subsubsection{Distributed Key Generation} 197 \textbf{Pedersen's Distributed Key Generation} 198 \newline In order to perform a key generation among a group, Torben Pedersen introduced a distributed key generation protocol (DKG) \cite{10.1007/3-540-46416-6_47}, 199 based on verifiable secret sharing. 200 \custind In Pedersen's distributed key generation, each party performs a verifiable secret sharing, thus acts as a \gls{trusted dealer}. 201 After publishing all commitments, each party sends to every other party a secret share, like in Shamir's secret sharing. 202 The final share of the private key is the combinations of a self-generated secret share, combined with the secret shares received from all other parties. 203 \custind Therefore, two main properties can be concluded \cite[chapter 5]{10.1007/3-540-46416-6_47}: 204 205 \begin{enumerate} 206 \item A trusted party for selecting and distributing the secret is no longer needed. 207 \item Each member of the group can verify that his share of the secret key corresponds to the public key. 208 \end{enumerate} 209 210 \section{FROST Signature Scheme} 211 FROST is a Flexible Round-Optimized Schnorr Threshold Signature scheme. 212 It is optimized to be as efficient as possible, without restrictions to the security properties. 213 Although it can be instantiated as a single-round protocol, with a pre-processing stage, 214 in Frosix, FROST is instantiated as the two-round protocol variant. 215 \custind Signatures produced by FROST signing operations are verifiable using the standard Schnorr verification operation 216 and use a signature format similar to EdDSA. \cite{cryptoeprint:2020/852} 217 218 \subsubsection{FROST Key Generation} 219 Like many other threshold signature protocols, FROST builds upon Pedersen's DKG for key generation, 220 but adds a \gls{zero knowledge proof} to protect against rogue key attacks. 221 The zero knowledge proof is a Schnorr signature on its own, using the secret value from the verifiable secret sharing as private key. 222 \custind Whereas this key generation protocol is originally designed to be a two-round protocol, 223 in Frosix, the distributed key generation is a three-round protocol, 224 due to the tunneling of all communication through the Frosix client. 225 226 Below is the original \textit{FROST KeyGen} \cite[page 12]{cryptoeprint:2020/852}: 227 228 \begin{center} 229 \textbf{Round 1} 230 \end{center} 231 232 {\large \(P_i\)} 233 \par \textbf{Step 1}: Every participant \(P_i\) samples \(t\) random values and uses these values as coefficients to define a degree \(t-1\) polynomial. 234 235 {\small $\displaystyle (a_{i0}, ..., a_{i(t-1)}) \xleftarrow{\$} \mathbb{Z}_q$} \\ 236 {\small $\displaystyle f_i(x) \ =\ \sum _{j=0} ^{t-1} a_{ij}x^j$} 237 238 \textbf{Step 2}: Every \(P_i\) computes a proof of knowledge to the corresponding secret \(a_{i0}\). 239 240 {\small $\displaystyle k \xleftarrow{\$} \mathbb{Z}_q$} \\ 241 {\small $\displaystyle R_i \ =\ g^k$} \\ 242 {\small $\displaystyle c_i \ =\ H(i, \$context\_string, g^{a_{i0}}, R_i)$} \\ 243 {\small $\displaystyle z_i \ =\ k + a_{i0} \cdot c_i$} \\ 244 {\small $\displaystyle \sigma_i \ =\ (R_i, z_i)$} 245 246 \textbf{Step 3}: Every participant \(P_i\) computes a public commitment \(C\). 247 248 {\small $\displaystyle \phi_{ij} \ =\ g^{ij}, 0 \leq j \leq t-1$} \\ 249 {\small $\displaystyle \vec{C_i} \ =\ \langle \phi_{i0}, ..., \phi_{i(t-1)} \rangle$} 250 251 \textbf{Step 4}: Every \(P_i\) broadcasts \(C_i, \sigma_i\) to all other participants. 252 253 \begin{center} 254 {\small $\displaystyle (C_i, \sigma_i) \longrightarrow $} 255 \end{center} 256 257 \textbf{Step 5}: Upon receiving \(C_l, \sigma_l\) from participants \(1 \leq l \leq n, l \neq i\), each participant \(P_i\) verifies \(\sigma_l\). 258 259 {\small $\displaystyle c_l \ =\ H(l, \$context\_string, \phi_{l0}, R_l)$} \\ 260 {\small $\displaystyle R_l \overset{?}{=} g^{z_l} \ \cdot \phi_{l0}^{-c_l}$} 261 262 \begin{center} 263 \textbf{Round 2} 264 \end{center} 265 266 {\large \(P_i\)} 267 \par \textbf{Step 1}: Each \(P_i\) securely sends a secret share ($l, f_i(l)$) to each other participant $P_l$. 268 269 \begin{center} 270 {\small $\displaystyle (l, f_i(l)) \longrightarrow$} 271 \end{center} 272 273 \textbf{Step 2}: Each \(P_i\) verifies their received shares. 274 275 {\small $\displaystyle g^{f_l(i)} \ \overset{?}{=} \ \prod _{k=0} ^{t-1} \phi_{lk}^{i^k mod \ q}$} 276 277 \textbf{Step 3}: Each \(P_i\) calculates their long-lived private signing share \(s_i\). 278 279 {\small $\displaystyle s_i \ =\ \sum _{l=1} ^n f_l(i)$} 280 281 \textbf{Step 4}: Each \(P_i\) calculates their public verification share \(Y_i\) and the group's public key \(Y\). 282 283 {\small $\displaystyle Y_i \ =\ g^{s_i}$} \\ 284 {\small $\displaystyle Y \ =\ \prod _{j=1} ^n \phi_{j0}$} 285 286 \subsubsection{FROST Sign} 287 Since Frosix uses the two-round variant of FROST Sign, 288 round 1 represents a single preprocess operation. 289 Otherwise, the protocol below is as unmodified as possible. \cite[page 12, 15]{cryptoeprint:2020/852} 290 291 \begin{center} 292 \textbf{Round 1} 293 \end{center} 294 295 {\large $SA$} \hfill {\large $\displaystyle P_{i}{}_{\in}{}_{S}$} 296 \par \textbf{Step 1}: In the first round of FROST Sign, the signature aggregator (SA) chooses the set $S$, $k$ of $n$ parties. 297 298 {\small $\displaystyle S = \{P_1,...,P_k\}, 0 < P_i \leq n$} 299 300 \textbf{Step 2}: Each party (\(P_i\)) samples two random commitment values and sends those to the SA. 301 302 \begin{flushright} 303 {\small $\displaystyle (d_i,e_i) \xleftarrow{\$} \mathbb{Z}^*_q \times \mathbb{Z}^*_q$} \\ 304 {\small $\displaystyle (D_i,E_i) \ = \ (g^{d_i},g^{e_i})$} 305 \end{flushright} 306 307 \begin{center} 308 {\small $\displaystyle \longleftarrow (D_i,E_i)$} 309 \end{center} 310 311 \begin{center} 312 \textbf{Round 2} 313 \end{center} 314 315 {\large $SA$} \hfill {\large $\displaystyle P_{i}{}_{\in}{}_{S}$} 316 317 \textbf{Step 1}: The SA fetches all commitments, builds the set $B \ = \ \langle i,D_i,E_i \rangle, i \in S$ and sends $B$ together with the message $m$ to all parties in $S$. 318 319 {\small $\displaystyle B \ =\ \langle ( i,D_{i} ,E_{i})\rangle _{i}{}_{\in }{}_{S}$} 320 321 \begin{center} 322 {\small $\displaystyle ( m,\ B) \longrightarrow $} 323 \end{center} 324 325 \textbf{Step 2}: After receiving $(m,\ B)$, each $P_i$ validates the message $m$, and then checks $D_l,E_l \in \mathbb{G}^*$ for each commitment in $B$, aborting if either check fails. 326 327 \textbf{Step 3}: Each $P_i$ then computes the set of binding values. 328 329 \begin{flushright} 330 {\small $\displaystyle p_l \ = \ H_1(l,m,B), l \in S$} 331 \end{flushright} 332 333 \textbf{Step 4}: Each $P_i$ then derives the group commitment $R$ and the challenge $c$. 334 335 \begin{flushright} 336 {\small $\displaystyle R \ =\ \prod _{l \in S} D_l \cdot (E_l)^{\rho_l}$} \\ 337 {\small $\displaystyle c \ =\ H_2(R,Y,m)$} 338 \end{flushright} 339 340 \textbf{Step 5}: Each $P_i$ computes their response $z_i$ using their long-lived secret share $s_i$. 341 342 \begin{flushright} 343 {\small $\displaystyle z_i \ =\ d_i + (e_i \cdot \rho_i) + \lambda_i \cdot s_i \cdot c$} 344 \end{flushright} 345 346 \textbf{Step 6}: Each $P_i$ securely deletes $(d_i,e_i)$ from their local storage, and then returns $z_i$ to SA. 347 348 \begin{center} 349 {\small $\displaystyle \longleftarrow z_i$} 350 \end{center} 351 352 \textbf{Step 7}: The signature aggregator SA calculates the set of binding values \(p_l\), 353 the set of individual commitments \(R_l\), the group commitment \(R\) and the challenge \(c\). 354 With these values, the SA verifies the validity of each response \(z_i\). 355 356 {\small $\displaystyle p_l \ =\ H_1(l,m,B), l \in S$} \\ 357 {\small $\displaystyle R_l \ =\ D_l \cdot (E_l)^{\rho_l}, l \in S$} 358 359 {\small $\displaystyle R \ =\ \prod _{l \in S} R_l$} \\ 360 {\small $\displaystyle c \ =\ H_2(R,Y,m)$} 361 362 {\small $\displaystyle g^{z_i} \overset{?}{=} R_i \cdot Y_i^{c \cdot \lambda_i}$} 363 364 \textbf{Step 8}: The signature aggregator SA computes the resulting signature. 365 366 {\small $\displaystyle z = \sum z_i$} \\ 367 {\small $\displaystyle \sigma \ =\ (R, z)$} 368 369 \newpage 370 \section{Authentication} 371 Authentication makes up a big part of Frosix. 372 Fortunately, Frosix can build upon the know-how and implementation of GNU Anastasis. 373 At the moment, GNU Anastasis supports the following authentication methods: \cite{anastasis} 374 375 \begin{itemize} 376 \item Security Question 377 \item SMS 378 \item Email 379 \item Post 380 \item Bank Transfer 381 \item TOTP (Time-based one-time password) 382 \end{itemize} 383 384 \section{Other Implementations} 385 Frosix is not the first to implement the FROST signature scheme. 386 But Frosix is one of the first FROST based application implementing a REST API, 387 and probably unique, considering the integration of additional authentication. 388 389 Besides the reference implementation \cite{ckomlo:frost}, which provides a simple Rust based library, there are some further libraries available on GitHub. 390 Most of them are written in Rust or Go and therefore unsuitable to be used in Frosix. 391 \newline The following list is not exhaustive. 392 393 \begin{itemize} 394 \item \textbf{Zcash Foundation} \cite{zcash:frost}: Rust based library which provides a high level API to work with various ciphers 395 \item \textbf{Coinbase} \cite{coinbase:frost}: Go based library, which has been archived and is no longer supported from the authors 396 \item \textbf{Taurus} \cite{taurusgroup:frost}: Go based library with focus on compatibility on Ed25519 (EdDSA), is not under active development for two years 397 \item \textbf{Isis Agora Lovecruft} \cite{lovecruft:frost}: Rust based library which is not under development for two years 398 \item \textbf{Cloudflare} \cite{cloudflare:frost}: a feature request for the Cloudflare Interoperable Reusable Cryptographic Library (CIRCL), written in GO 399 \item \textbf{Trust-Machines} \cite{trust-machines:frost}: a library which provides an implementation of the original FROST as well as an implementation of Weighted Threshold FROST (see chapter~\ref{chap:future_dev}) in Rust 400 \end{itemize} 401 402 \section{Future Development}\label{chap:future_dev} 403 There is ongoing research, and standardization efforts on FROST and threshold signature schemes in general. 404 405 \textbf{FROST as an Internet Draft} 406 \newline At the moment, FROST is an "Active Internet Draft" at the Internet Engineering Task Force (IETF). \cite{irtf-cfrg-frost-13} 407 This helped a lot during the implementation of FROST, 408 because it provides pseudocode for all necessary functions. 409 410 \textbf{NIST First Call for Multi-Party Threshold Schemes} 411 \newline Also NIST is highly interested in standardizing threshold crypto system, among others for signing. \cite{Peralta_Brandão_2023} 412 413 \textbf{Weighted Threshold FROST: WTF} 414 \newline The idea of weighted threshold FROST is to optimize the required bandwidth when FROST parties control multiple 415 keys. \cite{weighted-frost} 416 417 \textbf{Threshold Schnorr with Stateless Deterministic Signing} 418 \newline In contrast to some single-signer signature schemes, like for example EdDSA, it is not trivial to implement 419 deterministic signatures in a threshold environment. 420 This is due to the danger of nonce reuse. \cite{10.5555/648120.747057} 421 Although there are already first approaches \cite{cryptoeprint:2021/1055}, the implementation of a stateless 422 deterministic threshold signing should be carefully considered. 423 424 \textbf{FROST2} 425 \newline There is already an optimized version of FROST, FROST2. \cite{cryptoeprint:2021/1375} 426 With FROST2, the number of exponentiation required for signing and verification are reduced from linear to constant in the number of signers. 427 428 \textbf{FROST3} 429 \newline Another paper proposes FROST3, RObust Asynchronous Threshold signatures (ROAST). 430 ROAST is a wrapper protocol and can be instantiated with FROST. 431 The authors claim to "obtain the first (nontrivial) asynchronous Schnorr threshold signature protocol" 432 and that ROAST is also the "first robust protocol that can be setup to guarantee unforgeability against a 433 dishonest majority ($t-1 \geq n/2$)" \cite{10.1145/3548606.3560583}. 434 \custind What this means exactly and whether Frosix could benefit from ROAST was not further investigated. 435 436 The further development of FROST and its variants remains exciting!