Jump to content

Verifiable random function

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Duckmather (talk | contribs) at 17:45, 19 August 2021 (wrote text). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

In cryptography, a verifiable random function (VRF) is a public-key analogue of a keyed cryptographic hash.[1] It is a pseudo-random function that provides publicly verifiable proofs of its outputs' correctness. Given an input value x, the owner of the secret key SK can compute the function value y = FSK(x) and the proof pSK(x). Using the proof and the public key , everyone can check that the value y = FSK(x) was indeed computed correctly, yet this information cannot be used to find the secret key.[1][verification needed] The concept of a VRF was introduced by Micali, Rabin, and Vadhan in 1999.[2]

Constructions

The original construction was rather inefficient.[citation needed]

Later, in 2005, an efficient and practical verifiable random function was proposed by Yevgeniy Dodis and Aleksandr Yampolskiy.[3][4] The following is only for intuition and is secure only when the input is from a small domain (the authors then extend it to a larger domain):

where e(·,·) is a bilinear map. To verify whether was computed correctly or not, one can check if and .[citation needed]

One can also define the Dodis-Yambolskiy random function as a function (where is a group generated by g with prime order t) given by [4]

Dodis and Yampolskiy showed this is secure if it is hard to break the "decisional bilinear Diffie-Helman inversion assumption" in the group .[4] The proof of security relies on a new decisional bilinear Diffie-Hellman inversion assumption, which asks given as input to distinguish from random.[citation needed]

In 2015, Hofheinz and Jager constructed a VRF which is provably secure given any member of the "(n − 1)-linear assumption family", which includes the decision linear assumption.[5][clarification needed] This is the first such VRF constructed that does not depend on a "Q-type complexity assumption".[5]

Uses and applications

VRFs provide deterministic precommitments which can be revealed at a later time using proofs which can only be generated by a private key. This is useful for providing a 1:1 mapping of low entropy inputs (e.g. names, email addresses, phone numbers) to some random values which can be committed to in advance, e.g. through a timestamping service such as a transparency log.[citation needed]

Unlike traditional digital signature algorithms, VRF outputs can be published publicly without being subject to a preimage attack, even if the verifier knows the public key (but not the proof). This is useful to prevent enumeration of the names/identifiers in a directory which is using a transparency system.[1][verification needed]

In cryptocurrency

The Internet Computer cryptocurrency uses a VRF to produce a decentralized random beacon whose output is unpredictable to anyone until they become available to everyone.[6] More precisely, its protocol allows clients to agree on a VRF (i.e. a commitment to a deterministic pseudorandom sequence) and to produce one new output thereof every round by using threshold signatures and distributed key generation.[6]

Algorand uses VRFs to perform cryptographic sortition.[7][8] In this platform, every block produces a new random selection seed, and a user secretly checks whether they were selected to participate in the consensus protocol by evaluating a VRF with their secret participation key and the selection seed.[7] (This also produces a proof, which the user can send to anyone to show that they have been selected to participate.[7]) Thusly, accounts are selected to propose blocks for a given round.[7] The particular VRF that Algorand uses was originally proposed by Sharon Goldberg, Moni Naor, Dimitris Papadopoulos, Leonid Reyzin, and Jan Včelák and currently[needs update] undergoing standardization;[8] Algorand's own implementation of this function has been open-source since October 2018.[8]

In May 2020, Chainlink announced that it launched Chainlink VRF, a service that uses verifiable random functions to generate verifiable randomness on-chain.[9] To use Chainlink VRF, a smart contract supplies a seed (which should be unpredictable to the oracles to whom it is provided), and the seed in turn is used to generate a random number that is sent back to the contract; this is published on-chain along with a proof and verified using the oracle's public key and the application's seed.[9] Each oracle, when generating randomness, uses its own secret key.[9]

References

  1. ^ a b c Goldberg, Sharon; Vcelak, Jan; Papadopoulos, Dimitrios; Reyzin, Leonid (5 March 2018). Verifiable Random Functions (VRFs) (Technical report). Retrieved 15 August 2021.
  2. ^ Micali, Silvio; Rabin, Michael O.; Vadhan, Salil P. (1999). "Verifiable random functions" (PDF). Proceedings of the 40th IEEE Symposium on Foundations of Computer Science. 40th Annual Symposium on Foundations of Computer Science. pp. 120–130. doi:10.1109/SFFCS.1999.814584. ISBN 0-7695-0409-4.
  3. ^ Dodis, Yevgeniy; Yampolskiy, Aleksandr. (2005). "A Verifiable Random Function With Short Proofs and Keys". 8th International Workshop on Theory and Practice in Public Key Cryptography. pp. 416–431.
  4. ^ a b c Nountu, Thierry Mefenza (28 November 2017). Pseudo-Random Generators and Pseudo-Random Functions: Cryptanalysis and Complexity Measures (Thèse de doctorat thesis).
  5. ^ a b Hofheinz, Dennis; Jager, Tibor (30 October 2015). Verifiable Random Functions from Standard Assumptions. Theory of Cryptography Conference (published 19 December 2015). pp. 336–362. doi:10.1007/978-3-662-49096-9_14. ISBN 978-3-662-49096-9.
  6. ^ a b Hanke, Timo; Movahedi, Mahnush; Williams, Dominic (23 January 2018). "DFINITY Technology Overview Series Consensus System" (PDF). dfinity.org. Archived (PDF) from the original on 8 May 2018. Retrieved 19 August 2021.
  7. ^ a b c d "Algorand Protocol Overview". www.algorand.com. Retrieved 2021-08-15.
  8. ^ a b c Gorbunov, Sergey (9 October 2018). "Algorand Releases First Open-Source Code of Verifiable Random Function". www.algorand.com. Retrieved 2021-08-15.{{cite web}}: CS1 maint: url-status (link)
  9. ^ a b c "Verifiable Randomness for Blockchain Smart Contracts". Chainlink Blog. 12 May 2020. Retrieved 15 August 2020.{{cite web}}: CS1 maint: url-status (link)