Suppose that a set of entities each have public/private key pairs, (P1, S1), (P2, S2), ..., (Pn, Sn). Party i can compute a ring signature σ on a message m, on input (m, Si, P1, ..., Pn). Anyone can check the validity of a ring signature given σ, m, and the public keys involved, P1, ..., Pn. If a ring signature is properly computed, it should pass the check. On the other hand, it should be hard for anyone to create a valid ring signature on any message for any set without knowing any of the private keys for that set.2
In the original paper, Rivest, Shamir, and Tauman described ring signatures as a way to leak a secret. For instance, a ring signature could be used to provide an anonymous signature from "a high-ranking White House official", without revealing which official signed the message. Ring signatures are right for this application because the anonymity of a ring signature cannot be revoked, and because the group for a ring signature can be improvised.
Another application, also described in the original paper, is for deniable signatures. Here the sender and the recipient of a message form a group for the ring signature, then the signature is valid to the recipient, but anyone else will be unsure whether the recipient or the sender was the actual signer. Thus, such a signature is convincing, but cannot be transferred beyond its intended recipient.
There were various works, introducing new features and based on different assumptions:
Most of the proposed algorithms have asymptotic output size O ( n ) {\displaystyle O(n)} ; i.e., the size of the resulting signature increases linearly with the size of input (number of public keys). That means that such schemes are impracticable for real use cases with sufficiently large n {\displaystyle n} (for example, an e-voting with millions of participants). But for some application with relatively small median input size such estimate may be acceptable. CryptoNote implements O ( n ) {\displaystyle O(n)} ring signature scheme by Fujisaki and Suzuki6 in p2p payments to achieve sender's untraceability.
More efficient algorithms have appeared recently. There are schemes with the sublinear size of the signature,7 as well as with constant size.8
The original paper describes an RSA based ring signature scheme, as well as one based on Rabin signatures. They define a keyed "combining function" C k , v ( y 1 , y 2 , … , y n ) {\displaystyle C_{k,v}(y_{1},y_{2},\dots ,y_{n})} which takes a key k {\displaystyle k} , an initialization value v {\displaystyle v} , and a list of arbitrary values y 1 , … y n {\displaystyle y_{1},\dots y_{n}} . y i {\displaystyle y_{i}} is defined as g i ( x i ) {\displaystyle g_{i}(x_{i})} , where g i {\displaystyle g_{i}} is a trap-door function (i.e. an RSA public key in the case of RSA based ring signatures).
The function C k , v ( y 1 , y 2 , … , y n ) {\displaystyle C_{k,v}(y_{1},y_{2},\dots ,y_{n})} is called the ring equation, and is defined below. The equation is based on a symmetric encryption function E k {\displaystyle E_{k}} :
It outputs a single value z {\displaystyle z} which is forced to be equal to v {\displaystyle v} . The equation v = C k , v ( y 1 , y 2 , … , y n ) {\displaystyle v=C_{k,v}(y_{1},y_{2},\dots ,y_{n})} can be solved as long as at least one y i {\displaystyle y_{i}} , and by extension x i {\displaystyle x_{i}} , can be freely chosen. Under the assumptions of RSA, this implies knowledge of at least one of the inverses of the trap door functions g i − 1 {\displaystyle g_{i}^{-1}} (i.e. a private key), since g i − 1 ( y i ) = x i {\displaystyle g_{i}^{-1}(y_{i})=x_{i}} .
Generating a ring signature involves six steps. The plaintext is signified by m {\displaystyle m} , the ring's public keys by P 1 , P 2 , … , P n {\displaystyle P_{1},P_{2},\dots ,P_{n}} .
Signature verification involves three steps.
Here is a Python implementation of the original paper using RSA. Requires 3rd-party module PyCryptodome.
To sign and verify 2 messages in a ring of 4 users:
Monero9 and several other cryptocurrencies use this technology.
This article incorporates text available under the CC BY-SA 4.0 license.
Rivest, Ronald L.; Shamir, Adi; Tauman, Yael (2001). "How to Leak a Secret". Advances in Cryptology — ASIACRYPT 2001. Lecture Notes in Computer Science. Vol. 2248. pp. 552–565. doi:10.1007/3-540-45682-1_32. ISBN 978-3-540-42987-6. 978-3-540-42987-6 ↩
Debnath, Ashmita; Singaravelu, Pradheepkumar; Verma, Shekhar (19 December 2012). "Efficient spatial privacy preserving scheme for sensor network". Central European Journal of Engineering. 3 (1): 1–10. doi:10.2478/s13531-012-0048-7. S2CID 137248994. https://doi.org/10.2478%2Fs13531-012-0048-7 ↩
E. Bresson; J. Stern; M. Szyd lo (2002). "Threshold Ring Signatures and Applications to Ad-hoc Groups" (PDF). Advances in Cryptology — CRYPTO 2002. Lecture Notes in Computer Science. Vol. 2442. pp. 465–480. doi:10.1007/3-540-45708-9_30. ISBN 978-3-540-44050-5. 978-3-540-44050-5 ↩
Liu, Joseph K.; Wong, Duncan S. (2005). "Linkable Ring Signatures: Security Models and New Schemes". Computational Science and Its Applications – ICCSA 2005. Lecture Notes in Computer Science. Vol. 2. pp. 614–623. doi:10.1007/11424826_65. ISBN 978-3-540-25861-2. {{cite book}}: |journal= ignored (help) 978-3-540-25861-2 ↩
Fujisaki, Eiichiro; Suzuki, Koutarou (2007). "Traceable Ring Signature". Public Key Cryptography: 181–200. ↩
Fujisaki, Eiichiro (2011). "Sub-linear size traceable ring signatures without random oracles". IEICE Transactions on Fundamentals of Electronics, Communications and Computer Sciences. 95 (1): 393–415. Bibcode:2012IEITF..95..151F. doi:10.1587/transfun.E95.A.151. /wiki/Bibcode_(identifier) ↩
Au, Man Ho; Liu, Joseph K.; Susilo, Willy; Yuen, Tsz Hon (2006). "Constant-Size ID-Based Linkable and Revocable-iff-Linked Ring Signature". Progress in Cryptology - INDOCRYPT 2006. Lecture Notes in Computer Science. Vol. 4329. pp. 364–378. doi:10.1007/11941378_26. ISBN 978-3-540-49767-7. 978-3-540-49767-7 ↩
"Evaluation of Bulletproof Implementation" (PDF). Quarkslab. https://ostif.org/wp-content/uploads/2018/10/OSTIF-QuarksLab-Monero-Bulletproofs-Final2.pdf ↩