The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I...

121
The new NIST reference for Randomness Beacons Lu´ ıs Brand˜ ao Joint work with: John Kelsey, Ren´ e Peralta, Harold Booth National Institute of Standards and Technology (Gaithersburg MD, USA) Presentation at International Cryptographic Module Conference May 17, 2019 @ Vancouver, Canada 1 1 0 1 1 1 0 1 0 1 1 0 0 0 1 0 0 0 1 1 1 1 1 0 0 1 1 0 1 1 1 0 0 1 0 0 0 1 1 01 1 0 1 0 0 0 0 1 1 0 0 1 1 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 1 1 1 1 1 0 1 1 0 1 1 0 1 1 1 1 0 0 1 1 0 1 0 1 0 1 0 0 1 1 1 Adapted from clker.com/clipart-195932.html

Transcript of The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I...

Page 1: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

The new NIST reference for Randomness Beacons

Luıs Brandao

Joint work with:John Kelsey, Rene Peralta, Harold Booth

National Institute of Standards and Technology (Gaithersburg MD, USA)

Presentation at

International Cryptographic Module ConferenceMay 17, 2019 @ Vancouver, Canada

1 1 0

1 1

1 0

1 0 1

1 0

0 0

1 0

0 0

1 1

1 1

1 0

0 1

1 0

1 1 1

0 0

1 0

0 0

1

1 01

1 0

1 0

0 0

0 1

1 0

0 1

1 1 0

0 1

0 0

0 0

1 0

0 1

0 0

0 1

0 1 0

1 1

1 1

1 0

1 1

0 1

1 0

1 1

1 1

0 0

1 1

0 1

0 1

0 1

0 0

1 1

1

Adapte

d fro

m clke

r.com

/clipart-1

95

93

2.h

tml

Page 2: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

Outline

1. Introduction

2. Pulse format

3. Beacon Protocol

4. Using a Beacon

5. Brief security considerations

6. Conclusion

2/30

Page 3: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

1. Introduction

Outline

1. Introduction

2. Pulse format

3. Beacon Protocol

4. Using a Beacon

5. Brief security considerations

6. Conclusion

3/30

Page 4: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

1. Introduction

A Randomness Beacon

A service that produces timed outputs of fresh public randomness.

High-level description:

I Periodically pulsates randomness (e.g., 1 per min)

I Each pulse has a fresh 512-bit random string

I Each pulse is indexed, time-stamped and signed

I Any past pulse is publicly accessible

I The sequence of pulses forms a hash-chain

1 1 0

1 1

1 0

1 0 1

1 0

0 0

1 0

0 0

1 1

1 1

1 0

0 1

1 0

1 1 1

0 0

1 0

0 0

1

1 01

1 0

1 0

0 0

0 1

1 0

0 1

1 1 0

0 1

0 0

0 0

1 0

0 1

0 0

0 1

0 1 0

1 1

1 1

1 0

1 1

0 1

1 0

1 1

1 1

0 0

1 1

0 1

0 1

0 1

0 0

1 1

1

Adapte

d fro

m clke

r.com

/clipart-1

95

93

2.h

tml

What can it be useful for?

I public auditability of randomized processes

I coordination between many parties

I prove something happened after a certain time

Not good for: selecting your secret keys

4/30

Page 5: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

1. Introduction

A Randomness Beacon

A service that produces timed outputs of fresh public randomness.

High-level description:

I Periodically pulsates randomness (e.g., 1 per min)

I Each pulse has a fresh 512-bit random string

I Each pulse is indexed, time-stamped and signed

I Any past pulse is publicly accessible

I The sequence of pulses forms a hash-chain

1 1 0

1 1

1 0

1 0 1

1 0

0 0

1 0

0 0

1 1

1 1

1 0

0 1

1 0

1 1 1

0 0

1 0

0 0

1

1 01

1 0

1 0

0 0

0 1

1 0

0 1

1 1 0

0 1

0 0

0 0

1 0

0 1

0 0

0 1

0 1 0

1 1

1 1

1 0

1 1

0 1

1 0

1 1

1 1

0 0

1 1

0 1

0 1

0 1

0 0

1 1

1

Adapte

d fro

m clke

r.com

/clipart-1

95

93

2.h

tml

What can it be useful for?

I public auditability of randomized processes

I coordination between many parties

I prove something happened after a certain time

Not good for: selecting your secret keys

4/30

Page 6: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

1. Introduction

A Randomness Beacon

A service that produces timed outputs of fresh public randomness.

High-level description:

I Periodically pulsates randomness (e.g., 1 per min)

I Each pulse has a fresh 512-bit random string

I Each pulse is indexed, time-stamped and signed

I Any past pulse is publicly accessible

I The sequence of pulses forms a hash-chain

1 1 0

1 1

1 0

1 0 1

1 0

0 0

1 0

0 0

1 1

1 1

1 0

0 1

1 0

1 1 1

0 0

1 0

0 0

1

1 01

1 0

1 0

0 0

0 1

1 0

0 1

1 1 0

0 1

0 0

0 0

1 0

0 1

0 0

0 1

0 1 0

1 1

1 1

1 0

1 1

0 1

1 0

1 1

1 1

0 0

1 1

0 1

0 1

0 1

0 0

1 1

1

Adapte

d fro

m clke

r.com

/clipart-1

95

93

2.h

tml

What can it be useful for?

I public auditability of randomized processes

I coordination between many parties

I prove something happened after a certain time

Not good for: selecting your secret keys

4/30

Page 7: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

1. Introduction

A Randomness Beacon

A service that produces timed outputs of fresh public randomness.

High-level description:

I Periodically pulsates randomness (e.g., 1 per min)

I Each pulse has a fresh 512-bit random string

I Each pulse is indexed, time-stamped and signed

I Any past pulse is publicly accessible

I The sequence of pulses forms a hash-chain

1 1 0

1 1

1 0

1 0 1

1 0

0 0

1 0

0 0

1 1

1 1

1 0

0 1

1 0

1 1 1

0 0

1 0

0 0

1

1 01

1 0

1 0

0 0

0 1

1 0

0 1

1 1 0

0 1

0 0

0 0

1 0

0 1

0 0

0 1

0 1 0

1 1

1 1

1 0

1 1

0 1

1 0

1 1

1 1

0 0

1 1

0 1

0 1

0 1

0 0

1 1

1

Adapte

d fro

m clke

r.com

/clipart-1

95

93

2.h

tml

What can it be useful for?

I public auditability of randomized processes

I coordination between many parties

I prove something happened after a certain time

Not good for: selecting your secret keys

4/30

Page 8: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

1. Introduction

A Randomness Beacon

A service that produces timed outputs of fresh public randomness.

High-level description:

I Periodically pulsates randomness (e.g., 1 per min)

I Each pulse has a fresh 512-bit random string

I Each pulse is indexed, time-stamped and signed

I Any past pulse is publicly accessible

I The sequence of pulses forms a hash-chain

1 1 0

1 1

1 0

1 0 1

1 0

0 0

1 0

0 0

1 1

1 1

1 0

0 1

1 0

1 1 1

0 0

1 0

0 0

1

1 01

1 0

1 0

0 0

0 1

1 0

0 1

1 1 0

0 1

0 0

0 0

1 0

0 1

0 0

0 1

0 1 0

1 1

1 1

1 0

1 1

0 1

1 0

1 1

1 1

0 0

1 1

0 1

0 1

0 1

0 0

1 1

1

Adapte

d fro

m clke

r.com

/clipart-1

95

93

2.h

tml

What can it be useful for?

I public auditability of randomized processes

I coordination between many parties

I prove something happened after a certain time

Not good for: selecting your secret keys

4/30

Page 9: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

1. Introduction

A Randomness Beacon

A service that produces timed outputs of fresh public randomness.

High-level description:

I Periodically pulsates randomness (e.g., 1 per min)

I Each pulse has a fresh 512-bit random string

I Each pulse is indexed, time-stamped and signed

I Any past pulse is publicly accessible

I The sequence of pulses forms a hash-chain

1 1 0

1 1

1 0

1 0 1

1 0

0 0

1 0

0 0

1 1

1 1

1 0

0 1

1 0

1 1 1

0 0

1 0

0 0

1

1 01

1 0

1 0

0 0

0 1

1 0

0 1

1 1 0

0 1

0 0

0 0

1 0

0 1

0 0

0 1

0 1 0

1 1

1 1

1 0

1 1

0 1

1 0

1 1

1 1

0 0

1 1

0 1

0 1

0 1

0 0

1 1

1

Adapte

d fro

m clke

r.com

/clipart-1

95

93

2.h

tml

What can it be useful for?

I public auditability of randomized processes

I coordination between many parties

I prove something happened after a certain time

Not good for: selecting your secret keys

4/30

Page 10: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

1. Introduction

A Randomness Beacon

A service that produces timed outputs of fresh public randomness.

High-level description:

I Periodically pulsates randomness (e.g., 1 per min)

I Each pulse has a fresh 512-bit random string

I Each pulse is indexed, time-stamped and signed

I Any past pulse is publicly accessible

I The sequence of pulses forms a hash-chain

1 1 0

1 1

1 0

1 0 1

1 0

0 0

1 0

0 0

1 1

1 1

1 0

0 1

1 0

1 1 1

0 0

1 0

0 0

1

1 01

1 0

1 0

0 0

0 1

1 0

0 1

1 1 0

0 1

0 0

0 0

1 0

0 1

0 0

0 1

0 1 0

1 1

1 1

1 0

1 1

0 1

1 0

1 1

1 1

0 0

1 1

0 1

0 1

0 1

0 0

1 1

1

Adapte

d fro

m clke

r.com

/clipart-1

95

93

2.h

tml

What can it be useful for?

I public auditability of randomized processes

I coordination between many parties

I prove something happened after a certain time

Not good for: selecting your secret keys

4/30

Page 11: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

1. Introduction

A Randomness Beacon

A service that produces timed outputs of fresh public randomness.

High-level description:

I Periodically pulsates randomness (e.g., 1 per min)

I Each pulse has a fresh 512-bit random string

I Each pulse is indexed, time-stamped and signed

I Any past pulse is publicly accessible

I The sequence of pulses forms a hash-chain

1 1 0

1 1

1 0

1 0 1

1 0

0 0

1 0

0 0

1 1

1 1

1 0

0 1

1 0

1 1 1

0 0

1 0

0 0

1

1 01

1 0

1 0

0 0

0 1

1 0

0 1

1 1 0

0 1

0 0

0 0

1 0

0 1

0 0

0 1

0 1 0

1 1

1 1

1 0

1 1

0 1

1 0

1 1

1 1

0 0

1 1

0 1

0 1

0 1

0 0

1 1

1

Adapte

d fro

m clke

r.com

/clipart-1

95

93

2.h

tml

What can it be useful for?

I public auditability of randomized processes

I coordination between many parties

I prove something happened after a certain time

Not good for:

selecting your secret keys

4/30

Page 12: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

1. Introduction

A Randomness Beacon

A service that produces timed outputs of fresh public randomness.

High-level description:

I Periodically pulsates randomness (e.g., 1 per min)

I Each pulse has a fresh 512-bit random string

I Each pulse is indexed, time-stamped and signed

I Any past pulse is publicly accessible

I The sequence of pulses forms a hash-chain

1 1 0

1 1

1 0

1 0 1

1 0

0 0

1 0

0 0

1 1

1 1

1 0

0 1

1 0

1 1 1

0 0

1 0

0 0

1

1 01

1 0

1 0

0 0

0 1

1 0

0 1

1 1 0

0 1

0 0

0 0

1 0

0 1

0 0

0 1

0 1 0

1 1

1 1

1 0

1 1

0 1

1 0

1 1

1 1

0 0

1 1

0 1

0 1

0 1

0 0

1 1

1

Adapte

d fro

m clke

r.com

/clipart-1

95

93

2.h

tml

What can it be useful for?

I public auditability of randomized processes

I coordination between many parties

I prove something happened after a certain time

Not good for: selecting your secret keys4/30

Page 13: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

1. Introduction

A Randomness Beacon

A service that produces timed outputs of fresh public randomness.

High-level description:

I Periodically pulsates randomness (e.g., 1 per min)

I Each pulse has a fresh 512-bit random string

I Each pulse is indexed, time-stamped and signed

I Any past pulse is publicly accessible

I The sequence of pulses forms a hash-chain

1 1 0

1 1

1 0

1 0 1

1 0

0 0

1 0

0 0

1 1

1 1

1 0

0 1

1 0

1 1 1

0 0

1 0

0 0

1

1 01

1 0

1 0

0 0

0 1

1 0

0 1

1 1 0

0 1

0 0

0 0

1 0

0 1

0 0

0 1

0 1 0

1 1

1 1

1 0

1 1

0 1

1 0

1 1

1 1

0 0

1 1

0 1

0 1

0 1

0 0

1 1

1

Adapte

d fro

m clke

r.com

/clipart-1

95

93

2.h

tml

What can it be useful for?

I public auditability of randomized processes

I coordination between many parties

I prove something happened after a certain time

Not good for: selecting your secret keys4/30

Page 14: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

1. Introduction

Brief historical note

Some timeline events:

I 2013-Sep till 2018-Dec: NIST Beacon service version 1.0 online

I 2018-Jul till present: NIST Beacon service version 2.0 online

I 2019-May: “Draft NISTIR 8213” online — specifies the new(draft) Reference for Randomness Beacons (version 2)

The NIST Beacon will progressively implement all aspects of the Reference.

5/30

Page 15: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

1. Introduction

Brief historical note

Some timeline events:

I 2013-Sep till 2018-Dec: NIST Beacon service version 1.0 online

I 2018-Jul till present: NIST Beacon service version 2.0 online

I 2019-May: “Draft NISTIR 8213” online — specifies the new(draft) Reference for Randomness Beacons (version 2)

The NIST Beacon will progressively implement all aspects of the Reference.

5/30

Page 16: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

1. Introduction

Brief historical note

Some timeline events:

I 2013-Sep till 2018-Dec: NIST Beacon service version 1.0 online

I 2018-Jul till present: NIST Beacon service version 2.0 online

I 2019-May: “Draft NISTIR 8213” online — specifies the new(draft) Reference for Randomness Beacons (version 2)

The NIST Beacon will progressively implement all aspects of the Reference.

5/30

Page 17: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

1. Introduction

This talk is about the NISTIR 8213 (draft)

“A Reference for Randomness Beacons: Format and Protocol Version 2”

https://doi.org/10.6028/NIST.IR.8213-draft

Some topics in the report:

I format for pulses

I protocol for beacon operations

I using Beacon randomness

I security considerations

Public comments till August 05, 2019.

Draft NISTIR 82131

2

A Reference for Randomness Beacons3

Format and Protocol Version 24

John Kelsey5

Luıs T. A. N. Brandao6

Rene Peralta7

Harold Booth8

This publication is available free of charge from:9

https://doi.org/10.6028/NIST.IR.8213-draft10

11

Two goals in this presentation:

I Provide an overview of the new reference

I Motivate engagement: NISTIR feedback, new beacons and apps

6/30

Page 18: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

1. Introduction

This talk is about the NISTIR 8213 (draft)

“A Reference for Randomness Beacons: Format and Protocol Version 2”

https://doi.org/10.6028/NIST.IR.8213-draft

Some topics in the report:

I format for pulses

I protocol for beacon operations

I using Beacon randomness

I security considerations

Public comments till August 05, 2019.

Draft NISTIR 82131

2

A Reference for Randomness Beacons3

Format and Protocol Version 24

John Kelsey5

Luıs T. A. N. Brandao6

Rene Peralta7

Harold Booth8

This publication is available free of charge from:9

https://doi.org/10.6028/NIST.IR.8213-draft10

11

Two goals in this presentation:

I Provide an overview of the new reference

I Motivate engagement: NISTIR feedback, new beacons and apps

6/30

Page 19: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

1. Introduction

This talk is about the NISTIR 8213 (draft)

“A Reference for Randomness Beacons: Format and Protocol Version 2”

https://doi.org/10.6028/NIST.IR.8213-draft

Some topics in the report:

I format for pulses

I protocol for beacon operations

I using Beacon randomness

I security considerations

Public comments till August 05, 2019.

Draft NISTIR 82131

2

A Reference for Randomness Beacons3

Format and Protocol Version 24

John Kelsey5

Luıs T. A. N. Brandao6

Rene Peralta7

Harold Booth8

This publication is available free of charge from:9

https://doi.org/10.6028/NIST.IR.8213-draft10

11

Two goals in this presentation:

I Provide an overview of the new reference

I Motivate engagement: NISTIR feedback, new beacons and apps

6/30

Page 20: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

1. Introduction

This talk is about the NISTIR 8213 (draft)

“A Reference for Randomness Beacons: Format and Protocol Version 2”

https://doi.org/10.6028/NIST.IR.8213-draft

Some topics in the report:

I format for pulses

I protocol for beacon operations

I using Beacon randomness

I security considerations

Public comments till August 05, 2019.

Draft NISTIR 82131

2

A Reference for Randomness Beacons3

Format and Protocol Version 24

John Kelsey5

Luıs T. A. N. Brandao6

Rene Peralta7

Harold Booth8

This publication is available free of charge from:9

https://doi.org/10.6028/NIST.IR.8213-draft10

11

Two goals in this presentation:

I Provide an overview of the new reference

I Motivate engagement: NISTIR feedback, new beacons and apps

6/30

Page 21: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

1. Introduction

Components of the Beacon service, at a high level

HSM

Clock

RNG

Beacon App

RNG#3

Beacon Engine

Time server

Pulse

RNG Sign

externalentropy

DB(web

frontend)Web(users)

Fw

Legend:- App: software application- DB: database- Fw: firewall- HSM: hardware security module- RNG: random-number generator

queries

replies

But what exactly is a pulse, what is its randomness, ...?

7/30

Page 22: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

1. Introduction

Components of the Beacon service, at a high level

HSM

Clock

RNG

Beacon App

RNG#3

Beacon Engine

Time server

Pulse

RNG Sign

externalentropy

DB(web

frontend)Web(users)

Fw

Legend:- App: software application- DB: database- Fw: firewall- HSM: hardware security module- RNG: random-number generator

queries

replies

But what exactly is a pulse, what is its randomness, ...?

7/30

Page 23: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

2. Pulse format

Outline

1. Introduction

2. Pulse format

3. Beacon Protocol

4. Using a Beacon

5. Brief security considerations

6. Conclusion

8/30

Page 24: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

2. Pulse format

A pulse (simplified example)

uri:str="https://beacon.nist.gov/beacon/2.0/chain/1/pulse/220394"

version:str="2.0"

...

period:dec="60000"

...

chainId:dec="1"

pulseId:dec="220394"

time:str="2018-12-26T16:07:00.000Z"

randLocal:hex="5FF1E0C019C42C77FA72D522...(512 bits total)"

...

out.Prev:hex="BA646CC4E7AE195D2C85E9D3...(512 bits total)"

...

preCom:hex="269908B840E79BE71CEC4EBA...(512 bits total)"

...

sig:hex="17943D886DA8C7C24B9244BE...(4096 bits total)"

randOut:hex="0A8863E03E200F6940A009B0...(512 bits total)"

I Each pulse is indexed

I Two main random values (“rands”): randLocal and randOut.

I Other features: signature

, precommit randLocal, chain randOut, ...

9/30

Page 25: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

2. Pulse format

A pulse (simplified example)

uri:str="https://beacon.nist.gov/beacon/2.0/chain/1/pulse/220394"

version:str="2.0"

...

period:dec="60000"

...

chainId:dec="1"

pulseId:dec="220394"

time:str="2018-12-26T16:07:00.000Z"

randLocal:hex="5FF1E0C019C42C77FA72D522...(512 bits total)"

...

out.Prev:hex="BA646CC4E7AE195D2C85E9D3...(512 bits total)"

...

preCom:hex="269908B840E79BE71CEC4EBA...(512 bits total)"

...

sig:hex="17943D886DA8C7C24B9244BE...(4096 bits total)"

randOut:hex="0A8863E03E200F6940A009B0...(512 bits total)"

I Each pulse is indexed

I Two main random values (“rands”): randLocal and randOut.

I Other features: signature

, precommit randLocal, chain randOut, ...

9/30

Page 26: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

2. Pulse format

A pulse (simplified example)

uri:str="https://beacon.nist.gov/beacon/2.0/chain/1/pulse/220394"

version:str="2.0"

...

period:dec="60000"

...

chainId:dec="1"

pulseId:dec="220394"

time:str="2018-12-26T16:07:00.000Z"

randLocal:hex="5FF1E0C019C42C77FA72D522...(512 bits total)"

...

out.Prev:hex="BA646CC4E7AE195D2C85E9D3...(512 bits total)"

...

preCom:hex="269908B840E79BE71CEC4EBA...(512 bits total)"

...

sig:hex="17943D886DA8C7C24B9244BE...(4096 bits total)"

randOut:hex="0A8863E03E200F6940A009B0...(512 bits total)"

I Each pulse is indexed

I Two main random values (“rands”): randLocal and randOut.

I Other features: signature

, precommit randLocal, chain randOut, ...

9/30

Page 27: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

2. Pulse format

A pulse (simplified example)

uri:str="https://beacon.nist.gov/beacon/2.0/chain/1/pulse/220394"

version:str="2.0"

...

period:dec="60000"

...

chainId:dec="1"

pulseId:dec="220394"

time:str="2018-12-26T16:07:00.000Z"

randLocal:hex="5FF1E0C019C42C77FA72D522...(512 bits total)"

...

out.Prev:hex="BA646CC4E7AE195D2C85E9D3...(512 bits total)"

...

preCom:hex="269908B840E79BE71CEC4EBA...(512 bits total)"

...

sig:hex="17943D886DA8C7C24B9244BE...(4096 bits total)"

randOut:hex="0A8863E03E200F6940A009B0...(512 bits total)"

I Each pulse is indexed

I Two main random values (“rands”): randLocal and randOut.

I Other features: signature

, precommit randLocal, chain randOut, ...

9/30

Page 28: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

2. Pulse format

A pulse (simplified example)

uri:str="https://beacon.nist.gov/beacon/2.0/chain/1/pulse/220394"

version:str="2.0"

...

period:dec="60000"

...

chainId:dec="1"

pulseId:dec="220394"

time:str="2018-12-26T16:07:00.000Z"

randLocal:hex="5FF1E0C019C42C77FA72D522...(512 bits total)"

...

out.Prev:hex="BA646CC4E7AE195D2C85E9D3...(512 bits total)"

...

preCom:hex="269908B840E79BE71CEC4EBA...(512 bits total)"

...

sig:hex="17943D886DA8C7C24B9244BE...(4096 bits total)"

randOut:hex="0A8863E03E200F6940A009B0...(512 bits total)"

I Each pulse is indexed

I Two main random values (“rands”): randLocal and randOut.

I Other features: signature

, precommit randLocal, chain randOut, ...

9/30

Page 29: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

2. Pulse format

A pulse (simplified example)

uri:str="https://beacon.nist.gov/beacon/2.0/chain/1/pulse/220394"

version:str="2.0"

...

period:dec="60000"

...

chainId:dec="1"

pulseId:dec="220394"

time:str="2018-12-26T16:07:00.000Z"

randLocal:hex="5FF1E0C019C42C77FA72D522...(512 bits total)"

...

out.Prev:hex="BA646CC4E7AE195D2C85E9D3...(512 bits total)"

...

preCom:hex="269908B840E79BE71CEC4EBA...(512 bits total)"

...

sig:hex="17943D886DA8C7C24B9244BE...(4096 bits total)"

randOut:hex="0A8863E03E200F6940A009B0...(512 bits total)"

I Each pulse is indexed

I Two main random values (“rands”): randLocal and randOut.

I Other features: signature

, precommit randLocal, chain randOut, ...

9/30

Page 30: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

2. Pulse format

A pulse (simplified example)

uri:str="https://beacon.nist.gov/beacon/2.0/chain/1/pulse/220394"

version:str="2.0"

...

period:dec="60000"

...

chainId:dec="1"

pulseId:dec="220394"

time:str="2018-12-26T16:07:00.000Z"

randLocal:hex="5FF1E0C019C42C77FA72D522...(512 bits total)"

...

out.Prev:hex="BA646CC4E7AE195D2C85E9D3...(512 bits total)"

...

preCom:hex="269908B840E79BE71CEC4EBA...(512 bits total)"

...

sig:hex="17943D886DA8C7C24B9244BE...(4096 bits total)"

randOut:hex="0A8863E03E200F6940A009B0...(512 bits total)"

I Each pulse is indexed

I Two main random values (“rands”): randLocal and randOut.

I Other features: signature, precommit randLocal

, chain randOut, ...

9/30

Page 31: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

2. Pulse format

A pulse (simplified example)

uri:str="https://beacon.nist.gov/beacon/2.0/chain/1/pulse/220394"

version:str="2.0"

...

period:dec="60000"

...

chainId:dec="1"

pulseId:dec="220394"

time:str="2018-12-26T16:07:00.000Z"

randLocal:hex="5FF1E0C019C42C77FA72D522...(512 bits total)"

...

out.Prev:hex="BA646CC4E7AE195D2C85E9D3...(512 bits total)"

...

preCom:hex="269908B840E79BE71CEC4EBA...(512 bits total)"

...

sig:hex="17943D886DA8C7C24B9244BE...(4096 bits total)"

randOut:hex="0A8863E03E200F6940A009B0...(512 bits total)"

I Each pulse is indexed

I Two main random values (“rands”): randLocal and randOut.

I Other features: signature, precommit randLocal, chain randOut , ...

9/30

Page 32: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

2. Pulse format

The two “rands” in a pulse

randLocal (a.k.a. local random value):

I Hash (SHA512) of randomness output by ≥ 2 RNGs

I Pre-committed 1 minute in advance of release

I Useful for combining beacons

randOut (a.k.a. output value):

I Hash of all other fields

I Fresh at the time of release

I The actual randomness to be used by applications

10/30

Page 33: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

2. Pulse format

The two “rands” in a pulse

randLocal (a.k.a. local random value):

I Hash (SHA512) of randomness output by ≥ 2 RNGs

I Pre-committed 1 minute in advance of release

I Useful for combining beacons

randOut (a.k.a. output value):

I Hash of all other fields

I Fresh at the time of release

I The actual randomness to be used by applications

10/30

Page 34: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

2. Pulse format

The two “rands” in a pulse

randLocal (a.k.a. local random value):

I Hash (SHA512) of randomness output by ≥ 2 RNGs

I Pre-committed 1 minute in advance of release

I Useful for combining beacons

randOut (a.k.a. output value):

I Hash of all other fields

I Fresh at the time of release

I The actual randomness to be used by applications

10/30

Page 35: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

2. Pulse format

The two “rands” in a pulse

randLocal (a.k.a. local random value):

I Hash (SHA512) of randomness output by ≥ 2 RNGs

I Pre-committed 1 minute in advance of release

I Useful for combining beacons

randOut (a.k.a. output value):

I Hash of all other fields

I Fresh at the time of release

I The actual randomness to be used by applications

10/30

Page 36: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

2. Pulse format

The two “rands” in a pulse

randLocal: ri+1 = Hash(ρ1,i || ρ2,i [|| ρ3,i ]), with random ρj,i from i th RNG

preCom: Ci = Hash(ri+1), released 1 min before ri+1

Pulse iTi=2019-05-17T16:13:00.000Z

...

out.Prev: Ri-1=0110...

...

randLocal: ri = 1001...

preCom: Ci = 0101...

...

sig: Si = 1010...

randOut: Ri = 1110...

Pulse i+1Ti=2019-05-17T16:14:00.000Z

...

out.Prev: Ri = 1110...

...

randLocal: ri+1 = 1101...

preCom: Ci+1 = 0010...

...

sig: Si+1 = 0111...

randOut: Ri+1 = 1011...

Pulse iTi=2019-05-17T16:13:00.000Z

...

out.Prev: Ri-1=0110...

...

randLocal: ri = 1001...

preCom: Ci = 0101...

...

sig: Si = 1010...

randOut: Ri = 1110...

Pulse i+1Ti=2019-05-17T16:14:00.000Z

...

out.Prev: Ri = 1110...

...

randLocal: ri+1 = 1101...

preCom: Ci+1 = 0010...

...

sig: Si+1 = 0111...

randOut: Ri+1 = 1011...

Hash

Pulse iTi=2019-05-17T16:13:00.000Z

...

out.Prev: Ri-1=0110...

...

randLocal: ri = 1001...

preCom: Ci = 0101...

...

sig: Si = 1010...

randOut: Ri = 1110...

Pulse i+1Ti=2019-05-17T16:14:00.000Z

...

out.Prev: Ri = 1110...

...

randLocal: ri+1 = 1101...

preCom: Ci+1 = 0010...

...

sig: Si+1 = 0111...

randOut: Ri+1 = 1011...

Hash

Mi

Pulse iTi=2019-05-17T16:13:00.000Z

...

out.Prev: Ri-1=0110...

...

randLocal: ri = 1001...

preCom: Ci = 0101...

...

sig: Si = 1010...

randOut: Ri = 1110...

Pulse i+1Ti=2019-05-17T16:14:00.000Z

...

out.Prev: Ri = 1110...

...

randLocal: ri+1 = 1101...

preCom: Ci+1 = 0010...

...

sig: Si+1 = 0111...

randOut: Ri+1 = 1011...

Mi

HashHash

Mi

Pulse iTi=2019-05-17T16:13:00.000Z

...

out.Prev: Ri-1=0110...

...

randLocal: ri = 1001...

preCom: Ci = 0101...

...

sig: Si = 1010...

randOut: Ri = 1110...

=

Pulse i+1Ti=2019-05-17T16:14:00.000Z

...

out.Prev: Ri = 1110...

...

randLocal: ri+1 = 1101...

preCom: Ci+1 = 0010...

...

sig: Si+1 = 0111...

randOut: Ri+1 = 1011...

Mi

Hash

Hash

Hash

Mi

Pulse iTi=2019-05-17T16:13:00.000Z

...

out.Prev: Ri-1=0110...

...

randLocal: ri = 1001...

preCom: Ci = 0101...

...

sig: Si = 1010...

randOut: Ri = 1110...

=

Pulse i+1Ti=2019-05-17T16:14:00.000Z

...

out.Prev: Ri = 1110...

...

randLocal: ri+1 = 1101...

preCom: Ci+1 = 0010...

...

sig: Si+1 = 0111...

randOut: Ri+1 = 1011...

Mi

Hash

randOut: Ri = Hash(Mi ), with Mi being the serialization of all previous fields

out.Prev has the output value (Ri ) of the previous pulse

11/30

Page 37: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

2. Pulse format

The two “rands” in a pulse

randLocal: ri+1 = Hash(ρ1,i || ρ2,i [|| ρ3,i ]), with random ρj,i from i th RNG

preCom: Ci = Hash(ri+1), released 1 min before ri+1

Pulse iTi=2019-05-17T16:13:00.000Z

...

out.Prev: Ri-1=0110...

...

randLocal: ri = 1001...

preCom: Ci = 0101...

...

sig: Si = 1010...

randOut: Ri = 1110...

Pulse i+1Ti=2019-05-17T16:14:00.000Z

...

out.Prev: Ri = 1110...

...

randLocal: ri+1 = 1101...

preCom: Ci+1 = 0010...

...

sig: Si+1 = 0111...

randOut: Ri+1 = 1011...

Pulse iTi=2019-05-17T16:13:00.000Z

...

out.Prev: Ri-1=0110...

...

randLocal: ri = 1001...

preCom: Ci = 0101...

...

sig: Si = 1010...

randOut: Ri = 1110...

Pulse i+1Ti=2019-05-17T16:14:00.000Z

...

out.Prev: Ri = 1110...

...

randLocal: ri+1 = 1101...

preCom: Ci+1 = 0010...

...

sig: Si+1 = 0111...

randOut: Ri+1 = 1011...

Hash

Pulse iTi=2019-05-17T16:13:00.000Z

...

out.Prev: Ri-1=0110...

...

randLocal: ri = 1001...

preCom: Ci = 0101...

...

sig: Si = 1010...

randOut: Ri = 1110...

Pulse i+1Ti=2019-05-17T16:14:00.000Z

...

out.Prev: Ri = 1110...

...

randLocal: ri+1 = 1101...

preCom: Ci+1 = 0010...

...

sig: Si+1 = 0111...

randOut: Ri+1 = 1011...

Hash

Mi

Pulse iTi=2019-05-17T16:13:00.000Z

...

out.Prev: Ri-1=0110...

...

randLocal: ri = 1001...

preCom: Ci = 0101...

...

sig: Si = 1010...

randOut: Ri = 1110...

Pulse i+1Ti=2019-05-17T16:14:00.000Z

...

out.Prev: Ri = 1110...

...

randLocal: ri+1 = 1101...

preCom: Ci+1 = 0010...

...

sig: Si+1 = 0111...

randOut: Ri+1 = 1011...

Mi

HashHash

Mi

Pulse iTi=2019-05-17T16:13:00.000Z

...

out.Prev: Ri-1=0110...

...

randLocal: ri = 1001...

preCom: Ci = 0101...

...

sig: Si = 1010...

randOut: Ri = 1110...

=

Pulse i+1Ti=2019-05-17T16:14:00.000Z

...

out.Prev: Ri = 1110...

...

randLocal: ri+1 = 1101...

preCom: Ci+1 = 0010...

...

sig: Si+1 = 0111...

randOut: Ri+1 = 1011...

Mi

Hash

Hash

Hash

Mi

Pulse iTi=2019-05-17T16:13:00.000Z

...

out.Prev: Ri-1=0110...

...

randLocal: ri = 1001...

preCom: Ci = 0101...

...

sig: Si = 1010...

randOut: Ri = 1110...

=

Pulse i+1Ti=2019-05-17T16:14:00.000Z

...

out.Prev: Ri = 1110...

...

randLocal: ri+1 = 1101...

preCom: Ci+1 = 0010...

...

sig: Si+1 = 0111...

randOut: Ri+1 = 1011...

Mi

Hash

randOut: Ri = Hash(Mi ), with Mi being the serialization of all previous fields

out.Prev has the output value (Ri ) of the previous pulse

11/30

Page 38: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

2. Pulse format

The two “rands” in a pulse

randLocal: ri+1 = Hash(ρ1,i || ρ2,i [|| ρ3,i ]), with random ρj,i from i th RNG

preCom: Ci = Hash(ri+1), released 1 min before ri+1

Pulse iTi=2019-05-17T16:13:00.000Z

...

out.Prev: Ri-1=0110...

...

randLocal: ri = 1001...

preCom: Ci = 0101...

...

sig: Si = 1010...

randOut: Ri = 1110...

Pulse i+1Ti=2019-05-17T16:14:00.000Z

...

out.Prev: Ri = 1110...

...

randLocal: ri+1 = 1101...

preCom: Ci+1 = 0010...

...

sig: Si+1 = 0111...

randOut: Ri+1 = 1011...

Pulse iTi=2019-05-17T16:13:00.000Z

...

out.Prev: Ri-1=0110...

...

randLocal: ri = 1001...

preCom: Ci = 0101...

...

sig: Si = 1010...

randOut: Ri = 1110...

Pulse i+1Ti=2019-05-17T16:14:00.000Z

...

out.Prev: Ri = 1110...

...

randLocal: ri+1 = 1101...

preCom: Ci+1 = 0010...

...

sig: Si+1 = 0111...

randOut: Ri+1 = 1011...

Hash

Pulse iTi=2019-05-17T16:13:00.000Z

...

out.Prev: Ri-1=0110...

...

randLocal: ri = 1001...

preCom: Ci = 0101...

...

sig: Si = 1010...

randOut: Ri = 1110...

Pulse i+1Ti=2019-05-17T16:14:00.000Z

...

out.Prev: Ri = 1110...

...

randLocal: ri+1 = 1101...

preCom: Ci+1 = 0010...

...

sig: Si+1 = 0111...

randOut: Ri+1 = 1011...

Hash

Mi

Pulse iTi=2019-05-17T16:13:00.000Z

...

out.Prev: Ri-1=0110...

...

randLocal: ri = 1001...

preCom: Ci = 0101...

...

sig: Si = 1010...

randOut: Ri = 1110...

Pulse i+1Ti=2019-05-17T16:14:00.000Z

...

out.Prev: Ri = 1110...

...

randLocal: ri+1 = 1101...

preCom: Ci+1 = 0010...

...

sig: Si+1 = 0111...

randOut: Ri+1 = 1011...

Mi

HashHash

Mi

Pulse iTi=2019-05-17T16:13:00.000Z

...

out.Prev: Ri-1=0110...

...

randLocal: ri = 1001...

preCom: Ci = 0101...

...

sig: Si = 1010...

randOut: Ri = 1110...

=

Pulse i+1Ti=2019-05-17T16:14:00.000Z

...

out.Prev: Ri = 1110...

...

randLocal: ri+1 = 1101...

preCom: Ci+1 = 0010...

...

sig: Si+1 = 0111...

randOut: Ri+1 = 1011...

Mi

Hash

Hash

Hash

Mi

Pulse iTi=2019-05-17T16:13:00.000Z

...

out.Prev: Ri-1=0110...

...

randLocal: ri = 1001...

preCom: Ci = 0101...

...

sig: Si = 1010...

randOut: Ri = 1110...

=

Pulse i+1Ti=2019-05-17T16:14:00.000Z

...

out.Prev: Ri = 1110...

...

randLocal: ri+1 = 1101...

preCom: Ci+1 = 0010...

...

sig: Si+1 = 0111...

randOut: Ri+1 = 1011...

Mi

Hash

randOut: Ri = Hash(Mi ), with Mi being the serialization of all previous fields

out.Prev has the output value (Ri ) of the previous pulse

11/30

Page 39: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

2. Pulse format

The two “rands” in a pulse

randLocal: ri+1 = Hash(ρ1,i || ρ2,i [|| ρ3,i ]), with random ρj,i from i th RNG

preCom: Ci = Hash(ri+1), released 1 min before ri+1

Pulse iTi=2019-05-17T16:13:00.000Z

...

out.Prev: Ri-1=0110...

...

randLocal: ri = 1001...

preCom: Ci = 0101...

...

sig: Si = 1010...

randOut: Ri = 1110...

Pulse i+1Ti=2019-05-17T16:14:00.000Z

...

out.Prev: Ri = 1110...

...

randLocal: ri+1 = 1101...

preCom: Ci+1 = 0010...

...

sig: Si+1 = 0111...

randOut: Ri+1 = 1011...

Pulse iTi=2019-05-17T16:13:00.000Z

...

out.Prev: Ri-1=0110...

...

randLocal: ri = 1001...

preCom: Ci = 0101...

...

sig: Si = 1010...

randOut: Ri = 1110...

Pulse i+1Ti=2019-05-17T16:14:00.000Z

...

out.Prev: Ri = 1110...

...

randLocal: ri+1 = 1101...

preCom: Ci+1 = 0010...

...

sig: Si+1 = 0111...

randOut: Ri+1 = 1011...

Hash

Pulse iTi=2019-05-17T16:13:00.000Z

...

out.Prev: Ri-1=0110...

...

randLocal: ri = 1001...

preCom: Ci = 0101...

...

sig: Si = 1010...

randOut: Ri = 1110...

Pulse i+1Ti=2019-05-17T16:14:00.000Z

...

out.Prev: Ri = 1110...

...

randLocal: ri+1 = 1101...

preCom: Ci+1 = 0010...

...

sig: Si+1 = 0111...

randOut: Ri+1 = 1011...

Hash

Mi

Pulse iTi=2019-05-17T16:13:00.000Z

...

out.Prev: Ri-1=0110...

...

randLocal: ri = 1001...

preCom: Ci = 0101...

...

sig: Si = 1010...

randOut: Ri = 1110...

Pulse i+1Ti=2019-05-17T16:14:00.000Z

...

out.Prev: Ri = 1110...

...

randLocal: ri+1 = 1101...

preCom: Ci+1 = 0010...

...

sig: Si+1 = 0111...

randOut: Ri+1 = 1011...

Mi

Hash

Hash

Mi

Pulse iTi=2019-05-17T16:13:00.000Z

...

out.Prev: Ri-1=0110...

...

randLocal: ri = 1001...

preCom: Ci = 0101...

...

sig: Si = 1010...

randOut: Ri = 1110...

=

Pulse i+1Ti=2019-05-17T16:14:00.000Z

...

out.Prev: Ri = 1110...

...

randLocal: ri+1 = 1101...

preCom: Ci+1 = 0010...

...

sig: Si+1 = 0111...

randOut: Ri+1 = 1011...

Mi

Hash

Hash

Hash

Mi

Pulse iTi=2019-05-17T16:13:00.000Z

...

out.Prev: Ri-1=0110...

...

randLocal: ri = 1001...

preCom: Ci = 0101...

...

sig: Si = 1010...

randOut: Ri = 1110...

=

Pulse i+1Ti=2019-05-17T16:14:00.000Z

...

out.Prev: Ri = 1110...

...

randLocal: ri+1 = 1101...

preCom: Ci+1 = 0010...

...

sig: Si+1 = 0111...

randOut: Ri+1 = 1011...

Mi

Hash

randOut: Ri = Hash(Mi ), with Mi being the serialization of all previous fields

out.Prev has the output value (Ri ) of the previous pulse

11/30

Page 40: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

2. Pulse format

The two “rands” in a pulse

randLocal: ri+1 = Hash(ρ1,i || ρ2,i [|| ρ3,i ]), with random ρj,i from i th RNG

preCom: Ci = Hash(ri+1), released 1 min before ri+1

Pulse iTi=2019-05-17T16:13:00.000Z

...

out.Prev: Ri-1=0110...

...

randLocal: ri = 1001...

preCom: Ci = 0101...

...

sig: Si = 1010...

randOut: Ri = 1110...

Pulse i+1Ti=2019-05-17T16:14:00.000Z

...

out.Prev: Ri = 1110...

...

randLocal: ri+1 = 1101...

preCom: Ci+1 = 0010...

...

sig: Si+1 = 0111...

randOut: Ri+1 = 1011...

Pulse iTi=2019-05-17T16:13:00.000Z

...

out.Prev: Ri-1=0110...

...

randLocal: ri = 1001...

preCom: Ci = 0101...

...

sig: Si = 1010...

randOut: Ri = 1110...

Pulse i+1Ti=2019-05-17T16:14:00.000Z

...

out.Prev: Ri = 1110...

...

randLocal: ri+1 = 1101...

preCom: Ci+1 = 0010...

...

sig: Si+1 = 0111...

randOut: Ri+1 = 1011...

Hash

Pulse iTi=2019-05-17T16:13:00.000Z

...

out.Prev: Ri-1=0110...

...

randLocal: ri = 1001...

preCom: Ci = 0101...

...

sig: Si = 1010...

randOut: Ri = 1110...

Pulse i+1Ti=2019-05-17T16:14:00.000Z

...

out.Prev: Ri = 1110...

...

randLocal: ri+1 = 1101...

preCom: Ci+1 = 0010...

...

sig: Si+1 = 0111...

randOut: Ri+1 = 1011...

Hash

Mi

Pulse iTi=2019-05-17T16:13:00.000Z

...

out.Prev: Ri-1=0110...

...

randLocal: ri = 1001...

preCom: Ci = 0101...

...

sig: Si = 1010...

randOut: Ri = 1110...

Pulse i+1Ti=2019-05-17T16:14:00.000Z

...

out.Prev: Ri = 1110...

...

randLocal: ri+1 = 1101...

preCom: Ci+1 = 0010...

...

sig: Si+1 = 0111...

randOut: Ri+1 = 1011...

Mi

Hash

Hash

Mi

Pulse iTi=2019-05-17T16:13:00.000Z

...

out.Prev: Ri-1=0110...

...

randLocal: ri = 1001...

preCom: Ci = 0101...

...

sig: Si = 1010...

randOut: Ri = 1110...

=

Pulse i+1Ti=2019-05-17T16:14:00.000Z

...

out.Prev: Ri = 1110...

...

randLocal: ri+1 = 1101...

preCom: Ci+1 = 0010...

...

sig: Si+1 = 0111...

randOut: Ri+1 = 1011...

Mi

Hash

Hash

Hash

Mi

Pulse iTi=2019-05-17T16:13:00.000Z

...

out.Prev: Ri-1=0110...

...

randLocal: ri = 1001...

preCom: Ci = 0101...

...

sig: Si = 1010...

randOut: Ri = 1110...

=

Pulse i+1Ti=2019-05-17T16:14:00.000Z

...

out.Prev: Ri = 1110...

...

randLocal: ri+1 = 1101...

preCom: Ci+1 = 0010...

...

sig: Si+1 = 0111...

randOut: Ri+1 = 1011...

Mi

Hash

randOut: Ri = Hash(Mi ), with Mi being the serialization of all previous fields

out.Prev has the output value (Ri ) of the previous pulse

11/30

Page 41: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

2. Pulse format

The two “rands” in a pulse

randLocal: ri+1 = Hash(ρ1,i || ρ2,i [|| ρ3,i ]), with random ρj,i from i th RNG

preCom: Ci = Hash(ri+1), released 1 min before ri+1

Pulse iTi=2019-05-17T16:13:00.000Z

...

out.Prev: Ri-1=0110...

...

randLocal: ri = 1001...

preCom: Ci = 0101...

...

sig: Si = 1010...

randOut: Ri = 1110...

Pulse i+1Ti=2019-05-17T16:14:00.000Z

...

out.Prev: Ri = 1110...

...

randLocal: ri+1 = 1101...

preCom: Ci+1 = 0010...

...

sig: Si+1 = 0111...

randOut: Ri+1 = 1011...

Pulse iTi=2019-05-17T16:13:00.000Z

...

out.Prev: Ri-1=0110...

...

randLocal: ri = 1001...

preCom: Ci = 0101...

...

sig: Si = 1010...

randOut: Ri = 1110...

Pulse i+1Ti=2019-05-17T16:14:00.000Z

...

out.Prev: Ri = 1110...

...

randLocal: ri+1 = 1101...

preCom: Ci+1 = 0010...

...

sig: Si+1 = 0111...

randOut: Ri+1 = 1011...

Hash

Pulse iTi=2019-05-17T16:13:00.000Z

...

out.Prev: Ri-1=0110...

...

randLocal: ri = 1001...

preCom: Ci = 0101...

...

sig: Si = 1010...

randOut: Ri = 1110...

Pulse i+1Ti=2019-05-17T16:14:00.000Z

...

out.Prev: Ri = 1110...

...

randLocal: ri+1 = 1101...

preCom: Ci+1 = 0010...

...

sig: Si+1 = 0111...

randOut: Ri+1 = 1011...

Hash

Mi

Pulse iTi=2019-05-17T16:13:00.000Z

...

out.Prev: Ri-1=0110...

...

randLocal: ri = 1001...

preCom: Ci = 0101...

...

sig: Si = 1010...

randOut: Ri = 1110...

Pulse i+1Ti=2019-05-17T16:14:00.000Z

...

out.Prev: Ri = 1110...

...

randLocal: ri+1 = 1101...

preCom: Ci+1 = 0010...

...

sig: Si+1 = 0111...

randOut: Ri+1 = 1011...

Mi

HashHash

Mi

Pulse iTi=2019-05-17T16:13:00.000Z

...

out.Prev: Ri-1=0110...

...

randLocal: ri = 1001...

preCom: Ci = 0101...

...

sig: Si = 1010...

randOut: Ri = 1110...

=

Pulse i+1Ti=2019-05-17T16:14:00.000Z

...

out.Prev: Ri = 1110...

...

randLocal: ri+1 = 1101...

preCom: Ci+1 = 0010...

...

sig: Si+1 = 0111...

randOut: Ri+1 = 1011...

Mi

Hash

Hash

Hash

Mi

Pulse iTi=2019-05-17T16:13:00.000Z

...

out.Prev: Ri-1=0110...

...

randLocal: ri = 1001...

preCom: Ci = 0101...

...

sig: Si = 1010...

randOut: Ri = 1110...

=

Pulse i+1Ti=2019-05-17T16:14:00.000Z

...

out.Prev: Ri = 1110...

...

randLocal: ri+1 = 1101...

preCom: Ci+1 = 0010...

...

sig: Si+1 = 0111...

randOut: Ri+1 = 1011...

Mi

Hash

randOut: Ri = Hash(Mi ), with Mi being the serialization of all previous fields

out.Prev has the output value (Ri ) of the previous pulse

11/30

Page 42: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

3. Beacon Protocol

Outline

1. Introduction

2. Pulse format

3. Beacon Protocol

4. Using a Beacon

5. Brief security considerations

6. Conclusion

12/30

Page 43: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

3. Beacon Protocol

Beacon proper operation

I Timing and entropy requirements

I Beacon interface: getting pulses and skiplists

I Others (not here): external values, status fields, ...

13/30

Page 44: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

3. Beacon Protocol

Timing requirements for generation and release

1. No advanced release of pulse (δ ≥ 0)

2. Generate with entropy (≥ 2 RNGs)

}⇒ Unpredictability

3. Generate not too in advance (small ∆)

⇒ Freshness

4. Release soon (small δ)

⇒ Timeliness

5. Timestamp (non-repeating) indexation

⇒ Unambiguity

Ri : randOutri : randLocal

Time

π: intended pulsation period

Ti Ti+1

Time

release Pi

π: intended pulsation period

releasePi+1

δ

Ti

δ

Ti+1startgen.Pi

Time

release Pi

π: intended pulsation period

startgen.Pi+1

releasePi+1

∆δ

Ti

∆δ

Ti+1startgen.Pi

Time

release Pi

π: intended pulsation period

obtainPi

startgen.Pi+1

obtainPi+1

releasePi+1

ri+1

Ri

∆δγ

Ti

∆δγ

ri+1

Ri

Ti+1

(The reference document specifies allowed intervals for δ and ∆, relative to π)

14/30

Page 45: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

3. Beacon Protocol

Timing requirements for generation and release

1. No advanced release of pulse (δ ≥ 0)

2. Generate with entropy (≥ 2 RNGs)

}⇒ Unpredictability

3. Generate not too in advance (small ∆)

⇒ Freshness

4. Release soon (small δ)

⇒ Timeliness

5. Timestamp (non-repeating) indexation

⇒ Unambiguity

Ri : randOutri : randLocal

Time

π: intended pulsation period

Ti Ti+1

Time

release Pi

π: intended pulsation period

releasePi+1

δ

Ti

δ

Ti+1

startgen.Pi

Time

release Pi

π: intended pulsation period

startgen.Pi+1

releasePi+1

∆δ

Ti

∆δ

Ti+1startgen.Pi

Time

release Pi

π: intended pulsation period

obtainPi

startgen.Pi+1

obtainPi+1

releasePi+1

ri+1

Ri

∆δγ

Ti

∆δγ

ri+1

Ri

Ti+1

(The reference document specifies allowed intervals for δ and ∆, relative to π)

14/30

Page 46: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

3. Beacon Protocol

Timing requirements for generation and release

1. No advanced release of pulse (δ ≥ 0)

2. Generate with entropy (≥ 2 RNGs)

}⇒ Unpredictability

3. Generate not too in advance (small ∆)

⇒ Freshness

4. Release soon (small δ)

⇒ Timeliness

5. Timestamp (non-repeating) indexation

⇒ Unambiguity

Ri : randOutri : randLocal

Time

π: intended pulsation period

Ti Ti+1

Time

release Pi

π: intended pulsation period

releasePi+1

δ

Ti

δ

Ti+1

startgen.Pi

Time

release Pi

π: intended pulsation period

startgen.Pi+1

releasePi+1

∆δ

Ti

∆δ

Ti+1startgen.Pi

Time

release Pi

π: intended pulsation period

obtainPi

startgen.Pi+1

obtainPi+1

releasePi+1

ri+1

Ri

∆δγ

Ti

∆δγ

ri+1

Ri

Ti+1

(The reference document specifies allowed intervals for δ and ∆, relative to π)

14/30

Page 47: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

3. Beacon Protocol

Timing requirements for generation and release

1. No advanced release of pulse (δ ≥ 0)

2. Generate with entropy (≥ 2 RNGs)

}⇒ Unpredictability

3. Generate not too in advance (small ∆)

⇒ Freshness

4. Release soon (small δ)

⇒ Timeliness

5. Timestamp (non-repeating) indexation

⇒ Unambiguity

Ri : randOutri : randLocal

Time

π: intended pulsation period

Ti Ti+1

Time

release Pi

π: intended pulsation period

releasePi+1

δ

Ti

δ

Ti+1

startgen.Pi

Time

release Pi

π: intended pulsation period

startgen.Pi+1

releasePi+1

∆δ

Ti

∆δ

Ti+1

startgen.Pi

Time

release Pi

π: intended pulsation period

obtainPi

startgen.Pi+1

obtainPi+1

releasePi+1

ri+1

Ri

∆δγ

Ti

∆δγ

ri+1

Ri

Ti+1

(The reference document specifies allowed intervals for δ and ∆, relative to π)

14/30

Page 48: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

3. Beacon Protocol

Timing requirements for generation and release

1. No advanced release of pulse (δ ≥ 0)

2. Generate with entropy (≥ 2 RNGs)

}⇒ Unpredictability

3. Generate not too in advance (small ∆) ⇒ Freshness

4. Release soon (small δ)

⇒ Timeliness

5. Timestamp (non-repeating) indexation

⇒ Unambiguity

Ri : randOutri : randLocal

Time

π: intended pulsation period

Ti Ti+1

Time

release Pi

π: intended pulsation period

releasePi+1

δ

Ti

δ

Ti+1

startgen.Pi

Time

release Pi

π: intended pulsation period

startgen.Pi+1

releasePi+1

∆δ

Ti

∆δ

Ti+1

startgen.Pi

Time

release Pi

π: intended pulsation period

obtainPi

startgen.Pi+1

obtainPi+1

releasePi+1

ri+1

Ri

∆δγ

Ti

∆δγ

ri+1

Ri

Ti+1

(The reference document specifies allowed intervals for δ and ∆, relative to π)

14/30

Page 49: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

3. Beacon Protocol

Timing requirements for generation and release

1. No advanced release of pulse (δ ≥ 0)

2. Generate with entropy (≥ 2 RNGs)

}⇒ Unpredictability

3. Generate not too in advance (small ∆) ⇒ Freshness

4. Release soon (small δ)

⇒ Timeliness

5. Timestamp (non-repeating) indexation

⇒ Unambiguity

Ri : randOutri : randLocal

Time

π: intended pulsation period

Ti Ti+1

Time

release Pi

π: intended pulsation period

releasePi+1

δ

Ti

δ

Ti+1

startgen.Pi

Time

release Pi

π: intended pulsation period

startgen.Pi+1

releasePi+1

∆δ

Ti

∆δ

Ti+1

startgen.Pi

Time

release Pi

π: intended pulsation period

obtainPi

startgen.Pi+1

obtainPi+1

releasePi+1

ri+1

Ri

∆δγ

Ti

∆δγ

ri+1

Ri

Ti+1

(The reference document specifies allowed intervals for δ and ∆, relative to π)

14/30

Page 50: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

3. Beacon Protocol

Timing requirements for generation and release

1. No advanced release of pulse (δ ≥ 0)

2. Generate with entropy (≥ 2 RNGs)

}⇒ Unpredictability

3. Generate not too in advance (small ∆) ⇒ Freshness

4. Release soon (small δ) ⇒ Timeliness

5. Timestamp (non-repeating) indexation

⇒ Unambiguity

Ri : randOutri : randLocal

Time

π: intended pulsation period

Ti Ti+1

Time

release Pi

π: intended pulsation period

releasePi+1

δ

Ti

δ

Ti+1

startgen.Pi

Time

release Pi

π: intended pulsation period

startgen.Pi+1

releasePi+1

∆δ

Ti

∆δ

Ti+1

startgen.Pi

Time

release Pi

π: intended pulsation period

obtainPi

startgen.Pi+1

obtainPi+1

releasePi+1

ri+1

Ri

∆δγ

Ti

∆δγ

ri+1

Ri

Ti+1

(The reference document specifies allowed intervals for δ and ∆, relative to π)

14/30

Page 51: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

3. Beacon Protocol

Timing requirements for generation and release

1. No advanced release of pulse (δ ≥ 0)

2. Generate with entropy (≥ 2 RNGs)

}⇒ Unpredictability

3. Generate not too in advance (small ∆) ⇒ Freshness

4. Release soon (small δ) ⇒ Timeliness

5. Timestamp (non-repeating) indexation

⇒ Unambiguity

Ri : randOutri : randLocal

Time

π: intended pulsation period

Ti Ti+1

Time

release Pi

π: intended pulsation period

releasePi+1

δ

Ti

δ

Ti+1

startgen.Pi

Time

release Pi

π: intended pulsation period

startgen.Pi+1

releasePi+1

∆δ

Ti

∆δ

Ti+1

startgen.Pi

Time

release Pi

π: intended pulsation period

obtainPi

startgen.Pi+1

obtainPi+1

releasePi+1

ri+1

Ri

∆δγ

Ti

∆δγ

ri+1

Ri

Ti+1

(The reference document specifies allowed intervals for δ and ∆, relative to π)

14/30

Page 52: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

3. Beacon Protocol

Timing requirements for generation and release

1. No advanced release of pulse (δ ≥ 0)

2. Generate with entropy (≥ 2 RNGs)

}⇒ Unpredictability

3. Generate not too in advance (small ∆) ⇒ Freshness

4. Release soon (small δ) ⇒ Timeliness

5. Timestamp (non-repeating) indexation ⇒ Unambiguity

Ri : randOutri : randLocal

Time

π: intended pulsation period

Ti Ti+1

Time

release Pi

π: intended pulsation period

releasePi+1

δ

Ti

δ

Ti+1

startgen.Pi

Time

release Pi

π: intended pulsation period

startgen.Pi+1

releasePi+1

∆δ

Ti

∆δ

Ti+1

startgen.Pi

Time

release Pi

π: intended pulsation period

obtainPi

startgen.Pi+1

obtainPi+1

releasePi+1

ri+1

Ri

∆δγ

Ti

∆δγ

ri+1

Ri

Ti+1

(The reference document specifies allowed intervals for δ and ∆, relative to π)

14/30

Page 53: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

3. Beacon Protocol

Timing requirements for generation and release

1. No advanced release of pulse (δ ≥ 0)

2. Generate with entropy (≥ 2 RNGs)

}⇒ Unpredictability

3. Generate not too in advance (small ∆) ⇒ Freshness

4. Release soon (small δ) ⇒ Timeliness

5. Timestamp (non-repeating) indexation ⇒ Unambiguity

Ri : randOutri : randLocal

Time

π: intended pulsation period

Ti Ti+1

Time

release Pi

π: intended pulsation period

releasePi+1

δ

Ti

δ

Ti+1startgen.Pi

Time

release Pi

π: intended pulsation period

startgen.Pi+1

releasePi+1

∆δ

Ti

∆δ

Ti+1

startgen.Pi

Time

release Pi

π: intended pulsation period

obtainPi

startgen.Pi+1

obtainPi+1

releasePi+1

ri+1

Ri

∆δγ

Ti

∆δγ

ri+1

Ri

Ti+1

(The reference document specifies allowed intervals for δ and ∆, relative to π)

14/30

Page 54: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

3. Beacon Protocol

Timing requirements for generation and release

1. No advanced release of pulse (δ ≥ 0)

2. Generate with entropy (≥ 2 RNGs)

}⇒ Unpredictability

3. Generate not too in advance (small ∆) ⇒ Freshness

4. Release soon (small δ) ⇒ Timeliness

5. Timestamp (non-repeating) indexation ⇒ Unambiguity

Ri : randOutri : randLocal

Time

π: intended pulsation period

Ti Ti+1

Time

release Pi

π: intended pulsation period

releasePi+1

δ

Ti

δ

Ti+1startgen.Pi

Time

release Pi

π: intended pulsation period

startgen.Pi+1

releasePi+1

∆δ

Ti

∆δ

Ti+1

startgen.Pi

Time

release Pi

π: intended pulsation period

obtainPi

startgen.Pi+1

obtainPi+1

releasePi+1

ri+1

Ri

∆δγ

Ti

∆δγ

ri+1

Ri

Ti+1

(The reference document specifies allowed intervals for δ and ∆, relative to π)

14/30

Page 55: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

3. Beacon Protocol

Fetching pulses

Beacon App: a pulse release means sending the pulse to the database

Beacon App

Pulse DB(web

frontend)Web(users)

Fw queries

replies

How do users request pulses from the database? uri/url

https://beacon.nist.gov/beacon/2.0/chain/last/pulse/last

Example: URI for the latest pulse in chain 1 ofthe NIST randomness Beacon (version 2)

15/30

Page 56: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

3. Beacon Protocol

Fetching pulses

Beacon App: a pulse release means sending the pulse to the database

Beacon App

Pulse DB(web

frontend)Web(users)

Fw queries

replies

How do users request pulses from the database? uri/url

https://beacon.nist.gov/beacon/2.0/chain/last/pulse/last

Example: URI for the latest pulse in chain 1 ofthe NIST randomness Beacon (version 2)

15/30

Page 57: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

3. Beacon Protocol

Fetching pulses

Beacon App: a pulse release means sending the pulse to the database

Beacon App

Pulse DB(web

frontend)Web(users)

Fw queries

replies

How do users request pulses from the database?

uri/url

https://beacon.nist.gov/beacon/2.0/chain/last/pulse/last

Example: URI for the latest pulse in chain 1 ofthe NIST randomness Beacon (version 2)

15/30

Page 58: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

3. Beacon Protocol

Fetching pulses

Beacon App: a pulse release means sending the pulse to the database

Beacon App

Pulse DB(web

frontend)Web(users)

Fw queries

replies

How do users request pulses from the database? uri/url

https://beacon.nist.gov/beacon/2.0/chain/last/pulse/last

Example: URI for the latest pulse in chain 1 ofthe NIST randomness Beacon (version 2)

15/30

Page 59: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

3. Beacon Protocol

Fetching pulses

Beacon App: a pulse release means sending the pulse to the database

Beacon App

Pulse DB(web

frontend)Web(users)

Fw queries

replies

How do users request pulses from the database? uri/url

https://beacon.nist.gov/beacon/2.0/chain/last/pulse/last

Example: URI for the latest pulse in chain 1 ofthe NIST randomness Beacon (version 2)

15/30

Page 60: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

3. Beacon Protocol

Skiplists — efficient chain verification

How to prove that an old pulse is consistent with a recent pulse?

Example: Anchor = 2019-05-17 14:12 → Target = 2016-02-14 17:45

Solution: check that there is a hash-chain linking them

Inefficient: check the hash-chain of (>1M) consecutive pulses

2019-05-17 14:12 → 2019-05-17 14:11 → (1 per minute) → 2016-02-14 17:45

Efficient: check the hash-chaining in a skiplist (< 125 pulses).

Use the 5 past output fields in the pulse format:I out.Prev: the previous pulse

I out.H, out.D, out.M, out.Y: the first of the hour/day/month/year

2019-05-17 14:12 → 2019-01-01 00:00 → 2018-01-01 00:00 → 2017-01-01 00:00 →2016-12-01 00:00 → (1 per month) → 2016-03-01 00:00 → 2016-02-29 00:00 →

(1 per day) → 2016-02-15 00:00 → 2016-02-14 23:00 → (1 per hour) →2016-02-14 18:00 → 2016-02-14 17:59 → (1 per minute) → 2016-02-14 17:45

16/30

Page 61: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

3. Beacon Protocol

Skiplists — efficient chain verification

How to prove that an old pulse is consistent with a recent pulse?

Example: Anchor = 2019-05-17 14:12 → Target = 2016-02-14 17:45

Solution: check that there is a hash-chain linking them

Inefficient: check the hash-chain of (>1M) consecutive pulses

2019-05-17 14:12 → 2019-05-17 14:11 → (1 per minute) → 2016-02-14 17:45

Efficient: check the hash-chaining in a skiplist (< 125 pulses).

Use the 5 past output fields in the pulse format:I out.Prev: the previous pulse

I out.H, out.D, out.M, out.Y: the first of the hour/day/month/year

2019-05-17 14:12 → 2019-01-01 00:00 → 2018-01-01 00:00 → 2017-01-01 00:00 →2016-12-01 00:00 → (1 per month) → 2016-03-01 00:00 → 2016-02-29 00:00 →

(1 per day) → 2016-02-15 00:00 → 2016-02-14 23:00 → (1 per hour) →2016-02-14 18:00 → 2016-02-14 17:59 → (1 per minute) → 2016-02-14 17:45

16/30

Page 62: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

3. Beacon Protocol

Skiplists — efficient chain verification

How to prove that an old pulse is consistent with a recent pulse?

Example: Anchor = 2019-05-17 14:12 → Target = 2016-02-14 17:45

Solution: check that there is a hash-chain linking them

Inefficient: check the hash-chain of (>1M) consecutive pulses

2019-05-17 14:12 → 2019-05-17 14:11 → (1 per minute) → 2016-02-14 17:45

Efficient: check the hash-chaining in a skiplist (< 125 pulses).

Use the 5 past output fields in the pulse format:I out.Prev: the previous pulse

I out.H, out.D, out.M, out.Y: the first of the hour/day/month/year

2019-05-17 14:12 → 2019-01-01 00:00 → 2018-01-01 00:00 → 2017-01-01 00:00 →2016-12-01 00:00 → (1 per month) → 2016-03-01 00:00 → 2016-02-29 00:00 →

(1 per day) → 2016-02-15 00:00 → 2016-02-14 23:00 → (1 per hour) →2016-02-14 18:00 → 2016-02-14 17:59 → (1 per minute) → 2016-02-14 17:45

16/30

Page 63: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

3. Beacon Protocol

Skiplists — efficient chain verification

How to prove that an old pulse is consistent with a recent pulse?

Example: Anchor = 2019-05-17 14:12 → Target = 2016-02-14 17:45

Solution: check that there is a hash-chain linking them

Inefficient: check the hash-chain of (>1M) consecutive pulses

2019-05-17 14:12 → 2019-05-17 14:11 → (1 per minute) → 2016-02-14 17:45

Efficient: check the hash-chaining in a skiplist (< 125 pulses).

Use the 5 past output fields in the pulse format:I out.Prev: the previous pulse

I out.H, out.D, out.M, out.Y: the first of the hour/day/month/year

2019-05-17 14:12 → 2019-01-01 00:00 → 2018-01-01 00:00 → 2017-01-01 00:00 →2016-12-01 00:00 → (1 per month) → 2016-03-01 00:00 → 2016-02-29 00:00 →

(1 per day) → 2016-02-15 00:00 → 2016-02-14 23:00 → (1 per hour) →2016-02-14 18:00 → 2016-02-14 17:59 → (1 per minute) → 2016-02-14 17:45

16/30

Page 64: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

3. Beacon Protocol

Skiplists — efficient chain verification

How to prove that an old pulse is consistent with a recent pulse?

Example: Anchor = 2019-05-17 14:12 → Target = 2016-02-14 17:45

Solution: check that there is a hash-chain linking them

Inefficient: check the hash-chain of (>1M) consecutive pulses

2019-05-17 14:12 → 2019-05-17 14:11 → (1 per minute) → 2016-02-14 17:45

Efficient: check the hash-chaining in a skiplist (< 125 pulses).

Use the 5 past output fields in the pulse format:I out.Prev: the previous pulse

I out.H, out.D, out.M, out.Y: the first of the hour/day/month/year

2019-05-17 14:12 → 2019-01-01 00:00 → 2018-01-01 00:00 → 2017-01-01 00:00 →2016-12-01 00:00 → (1 per month) → 2016-03-01 00:00 → 2016-02-29 00:00 →

(1 per day) → 2016-02-15 00:00 → 2016-02-14 23:00 → (1 per hour) →2016-02-14 18:00 → 2016-02-14 17:59 → (1 per minute) → 2016-02-14 17:45

16/30

Page 65: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

3. Beacon Protocol

Skiplists — efficient chain verification

How to prove that an old pulse is consistent with a recent pulse?

Example: Anchor = 2019-05-17 14:12 → Target = 2016-02-14 17:45

Solution: check that there is a hash-chain linking them

Inefficient: check the hash-chain of (>1M) consecutive pulses

2019-05-17 14:12 → 2019-05-17 14:11 → (1 per minute) → 2016-02-14 17:45

Efficient: check the hash-chaining in a skiplist (< 125 pulses).

Use the 5 past output fields in the pulse format:I out.Prev: the previous pulse

I out.H, out.D, out.M, out.Y: the first of the hour/day/month/year

2019-05-17 14:12 → 2019-01-01 00:00 → 2018-01-01 00:00 → 2017-01-01 00:00 →2016-12-01 00:00 → (1 per month) → 2016-03-01 00:00 → 2016-02-29 00:00 →

(1 per day) → 2016-02-15 00:00 → 2016-02-14 23:00 → (1 per hour) →2016-02-14 18:00 → 2016-02-14 17:59 → (1 per minute) → 2016-02-14 17:45

16/30

Page 66: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

3. Beacon Protocol

Skiplists — efficient chain verification

How to prove that an old pulse is consistent with a recent pulse?

Example: Anchor = 2019-05-17 14:12 → Target = 2016-02-14 17:45

Solution: check that there is a hash-chain linking them

Inefficient: check the hash-chain of (>1M) consecutive pulses

2019-05-17 14:12 → 2019-05-17 14:11 → (1 per minute) → 2016-02-14 17:45

Efficient: check the hash-chaining in a skiplist (< 125 pulses).

Use the 5 past output fields in the pulse format:I out.Prev: the previous pulse

I out.H, out.D, out.M, out.Y: the first of the hour/day/month/year

2019-05-17 14:12 → 2019-01-01 00:00 → 2018-01-01 00:00 → 2017-01-01 00:00 →2016-12-01 00:00 → (1 per month) → 2016-03-01 00:00 → 2016-02-29 00:00 →

(1 per day) → 2016-02-15 00:00 → 2016-02-14 23:00 → (1 per hour) →2016-02-14 18:00 → 2016-02-14 17:59 → (1 per minute) → 2016-02-14 17:45

16/30

Page 67: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

3. Beacon Protocol

Skiplists — efficient chain verification

How to prove that an old pulse is consistent with a recent pulse?

Example: Anchor = 2019-05-17 14:12 → Target = 2016-02-14 17:45

Solution: check that there is a hash-chain linking them

Inefficient: check the hash-chain of (>1M) consecutive pulses

2019-05-17 14:12 → 2019-05-17 14:11 → (1 per minute) → 2016-02-14 17:45

Efficient: check the hash-chaining in a skiplist (< 125 pulses).

Use the 5 past output fields in the pulse format:I out.Prev: the previous pulse

I out.H, out.D, out.M, out.Y: the first of the hour/day/month/year

2019-05-17 14:12 → 2019-01-01 00:00 → 2018-01-01 00:00 → 2017-01-01 00:00 →

2016-12-01 00:00 → (1 per month) → 2016-03-01 00:00 → 2016-02-29 00:00 →(1 per day) → 2016-02-15 00:00 → 2016-02-14 23:00 → (1 per hour) →

2016-02-14 18:00 → 2016-02-14 17:59 → (1 per minute) → 2016-02-14 17:45

16/30

Page 68: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

3. Beacon Protocol

Skiplists — efficient chain verification

How to prove that an old pulse is consistent with a recent pulse?

Example: Anchor = 2019-05-17 14:12 → Target = 2016-02-14 17:45

Solution: check that there is a hash-chain linking them

Inefficient: check the hash-chain of (>1M) consecutive pulses

2019-05-17 14:12 → 2019-05-17 14:11 → (1 per minute) → 2016-02-14 17:45

Efficient: check the hash-chaining in a skiplist (< 125 pulses).

Use the 5 past output fields in the pulse format:I out.Prev: the previous pulse

I out.H, out.D, out.M, out.Y: the first of the hour/day/month/year

2019-05-17 14:12 → 2019-01-01 00:00 → 2018-01-01 00:00 → 2017-01-01 00:00 →2016-12-01 00:00 → (1 per month) → 2016-03-01 00:00

→ 2016-02-29 00:00 →(1 per day) → 2016-02-15 00:00 → 2016-02-14 23:00 → (1 per hour) →

2016-02-14 18:00 → 2016-02-14 17:59 → (1 per minute) → 2016-02-14 17:45

16/30

Page 69: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

3. Beacon Protocol

Skiplists — efficient chain verification

How to prove that an old pulse is consistent with a recent pulse?

Example: Anchor = 2019-05-17 14:12 → Target = 2016-02-14 17:45

Solution: check that there is a hash-chain linking them

Inefficient: check the hash-chain of (>1M) consecutive pulses

2019-05-17 14:12 → 2019-05-17 14:11 → (1 per minute) → 2016-02-14 17:45

Efficient: check the hash-chaining in a skiplist (< 125 pulses).

Use the 5 past output fields in the pulse format:I out.Prev: the previous pulse

I out.H, out.D, out.M, out.Y: the first of the hour/day/month/year

2019-05-17 14:12 → 2019-01-01 00:00 → 2018-01-01 00:00 → 2017-01-01 00:00 →2016-12-01 00:00 → (1 per month) → 2016-03-01 00:00 → 2016-02-29 00:00 →

(1 per day) → 2016-02-15 00:00

→ 2016-02-14 23:00 → (1 per hour) →2016-02-14 18:00 → 2016-02-14 17:59 → (1 per minute) → 2016-02-14 17:45

16/30

Page 70: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

3. Beacon Protocol

Skiplists — efficient chain verification

How to prove that an old pulse is consistent with a recent pulse?

Example: Anchor = 2019-05-17 14:12 → Target = 2016-02-14 17:45

Solution: check that there is a hash-chain linking them

Inefficient: check the hash-chain of (>1M) consecutive pulses

2019-05-17 14:12 → 2019-05-17 14:11 → (1 per minute) → 2016-02-14 17:45

Efficient: check the hash-chaining in a skiplist (< 125 pulses).

Use the 5 past output fields in the pulse format:I out.Prev: the previous pulse

I out.H, out.D, out.M, out.Y: the first of the hour/day/month/year

2019-05-17 14:12 → 2019-01-01 00:00 → 2018-01-01 00:00 → 2017-01-01 00:00 →2016-12-01 00:00 → (1 per month) → 2016-03-01 00:00 → 2016-02-29 00:00 →

(1 per day) → 2016-02-15 00:00 → 2016-02-14 23:00 → (1 per hour) →2016-02-14 18:00

→ 2016-02-14 17:59 → (1 per minute) → 2016-02-14 17:45

16/30

Page 71: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

3. Beacon Protocol

Skiplists — efficient chain verification

How to prove that an old pulse is consistent with a recent pulse?

Example: Anchor = 2019-05-17 14:12 → Target = 2016-02-14 17:45

Solution: check that there is a hash-chain linking them

Inefficient: check the hash-chain of (>1M) consecutive pulses

2019-05-17 14:12 → 2019-05-17 14:11 → (1 per minute) → 2016-02-14 17:45

Efficient: check the hash-chaining in a skiplist (< 125 pulses).

Use the 5 past output fields in the pulse format:I out.Prev: the previous pulse

I out.H, out.D, out.M, out.Y: the first of the hour/day/month/year

2019-05-17 14:12 → 2019-01-01 00:00 → 2018-01-01 00:00 → 2017-01-01 00:00 →2016-12-01 00:00 → (1 per month) → 2016-03-01 00:00 → 2016-02-29 00:00 →

(1 per day) → 2016-02-15 00:00 → 2016-02-14 23:00 → (1 per hour) →2016-02-14 18:00 → 2016-02-14 17:59 → (1 per minute) → 2016-02-14 17:45

16/30

Page 72: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

3. Beacon Protocol

A possible diagram of pulse generation

HSM

Legend: - DB: database

- : release not before timestamp

- HSM: hardware security module

- RNG: random-number generator

- NTP: network time protocol

DB

- ||: concatenation

Ei: external (srcId, status, value) (all-zeros when not available)

NTP

MDi: some metadata (uri, version, cipher, period, certId, chainId)

Pasti = (Ri-1, RH[i-1], RD[i-1], RM[i-1], RY[i-1]): previous (i-1)

and 1st of {hour (H), day (D), month (M) and year (Y)} of previous

Mi = MDi || i || Ti || ri || Ei || Pasti || Ci || zi

i: pulse index (integer, incremented by 1 for each released pulse)

Ti: time (UTC string, ms precision, e.g., "2018-07-23T19:26:00.000Z")

Time Server (remote)

Clock (on chip)

Hash of

external

value

RiRi

Pi (pulse)pulsify

Pi = Mi || Ri || Si

RNG #1(on chip)

Ci: preCom (512 bits)

RNG #2

HashHash

(randLocal of next pulse)

�i,2

ri+1

(512 bits)

(512 bits)

ri: randLocal (512 bits)

�i,1 || �i,2

[|| �i,3]

RNG #3(Quantum)

�i,3

(512 bits)

Local cache

HashHash

ri+1

�i,1

zi: status (32 bits)

HashHash*

Ri: randOut

Hi Si

Mi || SiHashHash

Mi

Si: sig

Signing*module

Mi

Si

For simplicity, the diagram omits serialization details (e.g., field lengths and padding) and some metadata fields.

17/30

Page 73: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

4. Using a Beacon

Outline

1. Introduction

2. Pulse format

3. Beacon Protocol

4. Using a Beacon

5. Brief security considerations

6. Conclusion

18/30

Page 74: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

4. Using a Beacon

Using Beacon randomness (if I trust the beacon)

(some simplifications for presentation purpose)

Simply getting a practically uniform number in [0,N − 1]:

I Just calculate randOut (mod N), if N < 2384

If I want future auditability of a randomized operation:

1. Commit upfront: publish a statement S that explains mydeterministic operation that will use the Beacon randomness(the output value randOut) from future time t;

2. Derive a seed: Get R = randOut[t] (from the pulse withtimestamp t), and set the seed as Z = SHA512(S ||R)

3. Perform the operation: Do what the statement S promised,using Z as the seed for all needed pseudo-randomness.

We defer reference guidance to complementary future documentation

19/30

Page 75: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

4. Using a Beacon

Using Beacon randomness (if I trust the beacon)

(some simplifications for presentation purpose)

Simply getting a practically uniform number in [0,N − 1]:

I Just calculate randOut (mod N), if N < 2384

If I want future auditability of a randomized operation:

1. Commit upfront: publish a statement S that explains mydeterministic operation that will use the Beacon randomness(the output value randOut) from future time t;

2. Derive a seed: Get R = randOut[t] (from the pulse withtimestamp t), and set the seed as Z = SHA512(S ||R)

3. Perform the operation: Do what the statement S promised,using Z as the seed for all needed pseudo-randomness.

We defer reference guidance to complementary future documentation

19/30

Page 76: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

4. Using a Beacon

Using Beacon randomness (if I trust the beacon)

(some simplifications for presentation purpose)

Simply getting a practically uniform number in [0,N − 1]:

I Just calculate randOut (mod N), if N < 2384

If I want future auditability of a randomized operation:

1. Commit upfront: publish a statement S that explains mydeterministic operation that will use the Beacon randomness(the output value randOut) from future time t;

2. Derive a seed: Get R = randOut[t] (from the pulse withtimestamp t), and set the seed as Z = SHA512(S ||R)

3. Perform the operation: Do what the statement S promised,using Z as the seed for all needed pseudo-randomness.

We defer reference guidance to complementary future documentation

19/30

Page 77: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

4. Using a Beacon

Using Beacon randomness (if I trust the beacon)

(some simplifications for presentation purpose)

Simply getting a practically uniform number in [0,N − 1]:

I Just calculate randOut (mod N), if N < 2384

If I want future auditability of a randomized operation:

1. Commit upfront: publish a statement S that explains mydeterministic operation that will use the Beacon randomness(the output value randOut) from future time t;

2. Derive a seed: Get R = randOut[t] (from the pulse withtimestamp t), and set the seed as Z = SHA512(S ||R)

3. Perform the operation: Do what the statement S promised,using Z as the seed for all needed pseudo-randomness.

We defer reference guidance to complementary future documentation

19/30

Page 78: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

4. Using a Beacon

Using Beacon randomness (if I trust the beacon)

(some simplifications for presentation purpose)

Simply getting a practically uniform number in [0,N − 1]:

I Just calculate randOut (mod N), if N < 2384

If I want future auditability of a randomized operation:

1. Commit upfront:

publish a statement S that explains mydeterministic operation that will use the Beacon randomness(the output value randOut) from future time t;

2. Derive a seed:

Get R = randOut[t] (from the pulse withtimestamp t), and set the seed as Z = SHA512(S ||R)

3. Perform the operation:

Do what the statement S promised,using Z as the seed for all needed pseudo-randomness.

We defer reference guidance to complementary future documentation

19/30

Page 79: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

4. Using a Beacon

Using Beacon randomness (if I trust the beacon)

(some simplifications for presentation purpose)

Simply getting a practically uniform number in [0,N − 1]:

I Just calculate randOut (mod N), if N < 2384

If I want future auditability of a randomized operation:

1. Commit upfront: publish a statement S that explains mydeterministic operation that will use the Beacon randomness(the output value randOut) from future time t;

2. Derive a seed:

Get R = randOut[t] (from the pulse withtimestamp t), and set the seed as Z = SHA512(S ||R)

3. Perform the operation:

Do what the statement S promised,using Z as the seed for all needed pseudo-randomness.

We defer reference guidance to complementary future documentation

19/30

Page 80: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

4. Using a Beacon

Using Beacon randomness (if I trust the beacon)

(some simplifications for presentation purpose)

Simply getting a practically uniform number in [0,N − 1]:

I Just calculate randOut (mod N), if N < 2384

If I want future auditability of a randomized operation:

1. Commit upfront: publish a statement S that explains mydeterministic operation that will use the Beacon randomness(the output value randOut) from future time t;

2. Derive a seed: Get R = randOut[t] (from the pulse withtimestamp t), and set the seed as Z = SHA512(S ||R)

3. Perform the operation:

Do what the statement S promised,using Z as the seed for all needed pseudo-randomness.

We defer reference guidance to complementary future documentation

19/30

Page 81: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

4. Using a Beacon

Using Beacon randomness (if I trust the beacon)

(some simplifications for presentation purpose)

Simply getting a practically uniform number in [0,N − 1]:

I Just calculate randOut (mod N), if N < 2384

If I want future auditability of a randomized operation:

1. Commit upfront: publish a statement S that explains mydeterministic operation that will use the Beacon randomness(the output value randOut) from future time t;

2. Derive a seed: Get R = randOut[t] (from the pulse withtimestamp t), and set the seed as Z = SHA512(S ||R)

3. Perform the operation: Do what the statement S promised,using Z as the seed for all needed pseudo-randomness.

We defer reference guidance to complementary future documentation

19/30

Page 82: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

4. Using a Beacon

Using Beacon randomness (if I trust the beacon)

(some simplifications for presentation purpose)

Simply getting a practically uniform number in [0,N − 1]:

I Just calculate randOut (mod N), if N < 2384

If I want future auditability of a randomized operation:

1. Commit upfront: publish a statement S that explains mydeterministic operation that will use the Beacon randomness(the output value randOut) from future time t;

2. Derive a seed: Get R = randOut[t] (from the pulse withtimestamp t), and set the seed as Z = SHA512(S ||R)

3. Perform the operation: Do what the statement S promised,using Z as the seed for all needed pseudo-randomness.

We defer reference guidance to complementary future documentation

19/30

Page 83: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

4. Using a Beacon

Combining Beacons

What Beacon randomness R[t] to use if I do not trust any Beaconin isolation? ... but trust that two Beacons (A and B) will not collude?

Desired properties:I A single Beacon cannot bias the output;

I Even two colluding beacons cannot fully control the output.

Not good:

I R[t] = Hash(A[t].randOut||B[t].randOut) (A could wait to know B’s value)

I R[t] = Hash(A[t].randLocal||B[t].randLocal)(A & B could force repeating R[t])

Solution: get R[t] from two randLocal[t] and two randOut[t − π] values:

R[t] = Hash(A[t − π].randOut||B[t − π].randOut||A[t].randLocal||B[t].randLocal)

Also need to check:I reception of A[t − π].randOut and B[t − π].randOut before time TI correctness of standalone pulses: A[t − π],B[t − π],A[t],B[t]I hash-chaining (e.g., A[t].out.Prev = A[t − π].randOut)I pre-commitments (e.g., Hash(A[t].randLocal) = A[t − π].preCom)

20/30

Page 84: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

4. Using a Beacon

Combining Beacons

What Beacon randomness R[t] to use if I do not trust any Beaconin isolation?

... but trust that two Beacons (A and B) will not collude?

Desired properties:I A single Beacon cannot bias the output;

I Even two colluding beacons cannot fully control the output.

Not good:

I R[t] = Hash(A[t].randOut||B[t].randOut) (A could wait to know B’s value)

I R[t] = Hash(A[t].randLocal||B[t].randLocal)(A & B could force repeating R[t])

Solution: get R[t] from two randLocal[t] and two randOut[t − π] values:

R[t] = Hash(A[t − π].randOut||B[t − π].randOut||A[t].randLocal||B[t].randLocal)

Also need to check:I reception of A[t − π].randOut and B[t − π].randOut before time TI correctness of standalone pulses: A[t − π],B[t − π],A[t],B[t]I hash-chaining (e.g., A[t].out.Prev = A[t − π].randOut)I pre-commitments (e.g., Hash(A[t].randLocal) = A[t − π].preCom)

20/30

Page 85: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

4. Using a Beacon

Combining Beacons

What Beacon randomness R[t] to use if I do not trust any Beaconin isolation? ... but trust that two Beacons (A and B) will not collude?

Desired properties:I A single Beacon cannot bias the output;

I Even two colluding beacons cannot fully control the output.

Not good:

I R[t] = Hash(A[t].randOut||B[t].randOut) (A could wait to know B’s value)

I R[t] = Hash(A[t].randLocal||B[t].randLocal)(A & B could force repeating R[t])

Solution: get R[t] from two randLocal[t] and two randOut[t − π] values:

R[t] = Hash(A[t − π].randOut||B[t − π].randOut||A[t].randLocal||B[t].randLocal)

Also need to check:I reception of A[t − π].randOut and B[t − π].randOut before time TI correctness of standalone pulses: A[t − π],B[t − π],A[t],B[t]I hash-chaining (e.g., A[t].out.Prev = A[t − π].randOut)I pre-commitments (e.g., Hash(A[t].randLocal) = A[t − π].preCom)

20/30

Page 86: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

4. Using a Beacon

Combining Beacons

What Beacon randomness R[t] to use if I do not trust any Beaconin isolation? ... but trust that two Beacons (A and B) will not collude?

Desired properties:I A single Beacon cannot bias the output;

I Even two colluding beacons cannot fully control the output.

Not good:

I R[t] = Hash(A[t].randOut||B[t].randOut) (A could wait to know B’s value)

I R[t] = Hash(A[t].randLocal||B[t].randLocal)(A & B could force repeating R[t])

Solution: get R[t] from two randLocal[t] and two randOut[t − π] values:

R[t] = Hash(A[t − π].randOut||B[t − π].randOut||A[t].randLocal||B[t].randLocal)

Also need to check:I reception of A[t − π].randOut and B[t − π].randOut before time TI correctness of standalone pulses: A[t − π],B[t − π],A[t],B[t]I hash-chaining (e.g., A[t].out.Prev = A[t − π].randOut)I pre-commitments (e.g., Hash(A[t].randLocal) = A[t − π].preCom)

20/30

Page 87: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

4. Using a Beacon

Combining Beacons

What Beacon randomness R[t] to use if I do not trust any Beaconin isolation? ... but trust that two Beacons (A and B) will not collude?

Desired properties:I A single Beacon cannot bias the output;

I Even two colluding beacons cannot fully control the output.

Not good:

I R[t] = Hash(A[t].randOut||B[t].randOut)

(A could wait to know B’s value)

I R[t] = Hash(A[t].randLocal||B[t].randLocal)(A & B could force repeating R[t])

Solution: get R[t] from two randLocal[t] and two randOut[t − π] values:

R[t] = Hash(A[t − π].randOut||B[t − π].randOut||A[t].randLocal||B[t].randLocal)

Also need to check:I reception of A[t − π].randOut and B[t − π].randOut before time TI correctness of standalone pulses: A[t − π],B[t − π],A[t],B[t]I hash-chaining (e.g., A[t].out.Prev = A[t − π].randOut)I pre-commitments (e.g., Hash(A[t].randLocal) = A[t − π].preCom)

20/30

Page 88: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

4. Using a Beacon

Combining Beacons

What Beacon randomness R[t] to use if I do not trust any Beaconin isolation? ... but trust that two Beacons (A and B) will not collude?

Desired properties:I A single Beacon cannot bias the output;

I Even two colluding beacons cannot fully control the output.

Not good:

I R[t] = Hash(A[t].randOut||B[t].randOut) (A could wait to know B’s value)

I R[t] = Hash(A[t].randLocal||B[t].randLocal)(A & B could force repeating R[t])

Solution: get R[t] from two randLocal[t] and two randOut[t − π] values:

R[t] = Hash(A[t − π].randOut||B[t − π].randOut||A[t].randLocal||B[t].randLocal)

Also need to check:I reception of A[t − π].randOut and B[t − π].randOut before time TI correctness of standalone pulses: A[t − π],B[t − π],A[t],B[t]I hash-chaining (e.g., A[t].out.Prev = A[t − π].randOut)I pre-commitments (e.g., Hash(A[t].randLocal) = A[t − π].preCom)

20/30

Page 89: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

4. Using a Beacon

Combining Beacons

What Beacon randomness R[t] to use if I do not trust any Beaconin isolation? ... but trust that two Beacons (A and B) will not collude?

Desired properties:I A single Beacon cannot bias the output;

I Even two colluding beacons cannot fully control the output.

Not good:

I R[t] = Hash(A[t].randOut||B[t].randOut) (A could wait to know B’s value)

I R[t] = Hash(A[t].randLocal||B[t].randLocal)

(A & B could force repeating R[t])

Solution: get R[t] from two randLocal[t] and two randOut[t − π] values:

R[t] = Hash(A[t − π].randOut||B[t − π].randOut||A[t].randLocal||B[t].randLocal)

Also need to check:I reception of A[t − π].randOut and B[t − π].randOut before time TI correctness of standalone pulses: A[t − π],B[t − π],A[t],B[t]I hash-chaining (e.g., A[t].out.Prev = A[t − π].randOut)I pre-commitments (e.g., Hash(A[t].randLocal) = A[t − π].preCom)

20/30

Page 90: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

4. Using a Beacon

Combining Beacons

What Beacon randomness R[t] to use if I do not trust any Beaconin isolation? ... but trust that two Beacons (A and B) will not collude?

Desired properties:I A single Beacon cannot bias the output;

I Even two colluding beacons cannot fully control the output.

Not good:

I R[t] = Hash(A[t].randOut||B[t].randOut) (A could wait to know B’s value)

I R[t] = Hash(A[t].randLocal||B[t].randLocal)(A & B could force repeating R[t])

Solution: get R[t] from two randLocal[t] and two randOut[t − π] values:

R[t] = Hash(A[t − π].randOut||B[t − π].randOut||A[t].randLocal||B[t].randLocal)

Also need to check:I reception of A[t − π].randOut and B[t − π].randOut before time TI correctness of standalone pulses: A[t − π],B[t − π],A[t],B[t]I hash-chaining (e.g., A[t].out.Prev = A[t − π].randOut)I pre-commitments (e.g., Hash(A[t].randLocal) = A[t − π].preCom)

20/30

Page 91: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

4. Using a Beacon

Combining Beacons

What Beacon randomness R[t] to use if I do not trust any Beaconin isolation? ... but trust that two Beacons (A and B) will not collude?

Desired properties:I A single Beacon cannot bias the output;

I Even two colluding beacons cannot fully control the output.

Not good:

I R[t] = Hash(A[t].randOut||B[t].randOut) (A could wait to know B’s value)

I R[t] = Hash(A[t].randLocal||B[t].randLocal)(A & B could force repeating R[t])

Solution: get R[t] from two randLocal[t] and two randOut[t − π] values:

R[t] = Hash(A[t − π].randOut||B[t − π].randOut||A[t].randLocal||B[t].randLocal)

Also need to check:I reception of A[t − π].randOut and B[t − π].randOut before time TI correctness of standalone pulses: A[t − π],B[t − π],A[t],B[t]I hash-chaining (e.g., A[t].out.Prev = A[t − π].randOut)I pre-commitments (e.g., Hash(A[t].randLocal) = A[t − π].preCom)

20/30

Page 92: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

4. Using a Beacon

Combining Beacons

What Beacon randomness R[t] to use if I do not trust any Beaconin isolation? ... but trust that two Beacons (A and B) will not collude?

Desired properties:I A single Beacon cannot bias the output;

I Even two colluding beacons cannot fully control the output.

Not good:

I R[t] = Hash(A[t].randOut||B[t].randOut) (A could wait to know B’s value)

I R[t] = Hash(A[t].randLocal||B[t].randLocal)(A & B could force repeating R[t])

Solution: get R[t] from two randLocal[t] and two randOut[t − π] values:

R[t] = Hash(A[t − π].randOut||B[t − π].randOut||A[t].randLocal||B[t].randLocal)

Also need to check:I reception of A[t − π].randOut and B[t − π].randOut before time TI correctness of standalone pulses: A[t − π],B[t − π],A[t],B[t]I hash-chaining (e.g., A[t].out.Prev = A[t − π].randOut)I pre-commitments (e.g., Hash(A[t].randLocal) = A[t − π].preCom)

20/30

Page 93: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

4. Using a Beacon

Combining Beacons

What Beacon randomness R[t] to use if I do not trust any Beaconin isolation? ... but trust that two Beacons (A and B) will not collude?

Desired properties:I A single Beacon cannot bias the output;

I Even two colluding beacons cannot fully control the output.

Not good:

I R[t] = Hash(A[t].randOut||B[t].randOut) (A could wait to know B’s value)

I R[t] = Hash(A[t].randLocal||B[t].randLocal)(A & B could force repeating R[t])

Solution: get R[t] from two randLocal[t] and two randOut[t − π] values:

R[t] = Hash(A[t − π].randOut||B[t − π].randOut||A[t].randLocal||B[t].randLocal)

Also need to check:I reception of A[t − π].randOut and B[t − π].randOut before time TI correctness of standalone pulses: A[t − π],B[t − π],A[t],B[t]I hash-chaining (e.g., A[t].out.Prev = A[t − π].randOut)I pre-commitments (e.g., Hash(A[t].randLocal) = A[t − π].preCom)

20/30

Page 94: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

4. Using a Beacon

Some Beacons in development

Three countries are developing Beacons to match the current reference:

United States

Brazil

Chile

I (United States) NIST Randomness Beaconhttps://beacon.nist.gov/home

I (Chile) CLCERT Randomness Beaconhttps://beacon.clcert.cl/

I (Brazil) Brazilian Randomness Beaconhttps://beacon.inmetro.gov.br/

We would like others to join

21/30

Page 95: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

4. Using a Beacon

Some Beacons in development

Three countries are developing Beacons to match the current reference:

United States

Brazil

Chile

I (United States) NIST Randomness Beaconhttps://beacon.nist.gov/home

I (Chile) CLCERT Randomness Beaconhttps://beacon.clcert.cl/

I (Brazil) Brazilian Randomness Beaconhttps://beacon.inmetro.gov.br/

We would like others to join

21/30

Page 96: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

4. Using a Beacon

Some conceivable applications

“You have been randomly selected for additional screening”

Example applications:

I Select test and control groups for clinical trials

I Select random government officials for financial audits

I Assign court cases to random judges

I Sample random lots for quality-measuring procedures

I Provide entropy to digital lotteries

Some generic goals:

I Prevent auditors from biasing selections (or being accused of it)

I Prevent auditees from addressing only the items to-be sampled

I Enable public verifiability of correct sampling

22/30

Page 97: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

4. Using a Beacon

Some conceivable applications

“You have been randomly selected for additional screening”

Example applications:

I Select test and control groups for clinical trials

I Select random government officials for financial audits

I Assign court cases to random judges

I Sample random lots for quality-measuring procedures

I Provide entropy to digital lotteries

Some generic goals:

I Prevent auditors from biasing selections (or being accused of it)

I Prevent auditees from addressing only the items to-be sampled

I Enable public verifiability of correct sampling

22/30

Page 98: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

4. Using a Beacon

Some conceivable applications

“You have been randomly selected for additional screening”

Example applications:

I Select test and control groups for clinical trials

I Select random government officials for financial audits

I Assign court cases to random judges

I Sample random lots for quality-measuring procedures

I Provide entropy to digital lotteries

Some generic goals:

I Prevent auditors from biasing selections (or being accused of it)

I Prevent auditees from addressing only the items to-be sampled

I Enable public verifiability of correct sampling

22/30

Page 99: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

5. Brief security considerations

Outline

1. Introduction

2. Pulse format

3. Beacon Protocol

4. Using a Beacon

5. Brief security considerations

6. Conclusion

23/30

Page 100: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

5. Brief security considerations

Security against intrusions

Security is “easy” in uncompromised scenario!

But how to withstand compromised system components?

– Semi-honest (SH), aka honest-but-curious or passive: canexfiltrate internal state, but does not deviate from protocol

– Malicious (Mal), aka byzantine or active: arbitrary behavior

Why considering intrusions?

1. We want trust to be leveled with trustworthiness — a securityanalysis enables reflecting on meaningful security claims.

2. Even if operators believe in uncompromisedcomponents at launch day, we want security inthe long run, against conceivable adversarialthreats (goals and capabilities).

24/30

Page 101: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

5. Brief security considerations

Security against intrusions

Security is “easy” in uncompromised scenario!

But how to withstand compromised system components?

– Semi-honest (SH), aka honest-but-curious or passive: canexfiltrate internal state, but does not deviate from protocol

– Malicious (Mal), aka byzantine or active: arbitrary behavior

Why considering intrusions?

1. We want trust to be leveled with trustworthiness — a securityanalysis enables reflecting on meaningful security claims.

2. Even if operators believe in uncompromisedcomponents at launch day, we want security inthe long run, against conceivable adversarialthreats (goals and capabilities).

24/30

Page 102: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

5. Brief security considerations

Security against intrusions

Security is “easy” in uncompromised scenario!

But how to withstand compromised system components?

– Semi-honest (SH), aka honest-but-curious or passive: canexfiltrate internal state, but does not deviate from protocol

– Malicious (Mal), aka byzantine or active: arbitrary behavior

Why considering intrusions?

1. We want trust to be leveled with trustworthiness — a securityanalysis enables reflecting on meaningful security claims.

2. Even if operators believe in uncompromisedcomponents at launch day, we want security inthe long run, against conceivable adversarialthreats (goals and capabilities).

24/30

Page 103: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

5. Brief security considerations

Security against intrusions

Security is “easy” in uncompromised scenario!

But how to withstand compromised system components?

– Semi-honest (SH), aka honest-but-curious or passive: canexfiltrate internal state, but does not deviate from protocol

– Malicious (Mal), aka byzantine or active: arbitrary behavior

Why considering intrusions?

1. We want trust to be leveled with trustworthiness — a securityanalysis enables reflecting on meaningful security claims.

2. Even if operators believe in uncompromisedcomponents at launch day, we want security inthe long run, against conceivable adversarialthreats (goals and capabilities).

24/30

Page 104: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

5. Brief security considerations

Types of security properties (informal)

I Relational: correct hash chain, signatures, timestamps, consistent record(immutable past), ...

I Availability: timely pulse releases; accessible past pulses; automaticoperation (reduced human operator intervention); ...

I “Rands” quality: unpredictable; unbiaseable; fresh and independent;

Attack consequences:

I breaking relational or availability properties typically leads to detectableerrors, e.g., incorrect signatures or hash-chaining, delayed releases, ...

I next slides mention a few examples of attacks to the “rands” quality

25/30

Page 105: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

5. Brief security considerations

Types of security properties (informal)

I Relational: correct hash chain, signatures, timestamps, consistent record(immutable past), ...

I Availability: timely pulse releases; accessible past pulses; automaticoperation (reduced human operator intervention); ...

I “Rands” quality: unpredictable; unbiaseable; fresh and independent;

Attack consequences:

I breaking relational or availability properties typically leads to detectableerrors, e.g., incorrect signatures or hash-chaining, delayed releases, ...

I next slides mention a few examples of attacks to the “rands” quality

25/30

Page 106: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

5. Brief security considerations

Intrusion scenarios

NISTIR 8213 considers several scenarios with intruded components

:

I I1. Mal Beacon App → randLocal control attack

I I2. Mal Beacon App → randOut bias attack

I I3. Mal local-clock + SH DB → “rands” predict attack

I I4. SH Beacon App → “rands” prediction attack

I I5. Mal DB with HSM sign key → change-history attack

HSM

Clock

RNG

Beacon

App

RNG#3

Beacon Engine

Time server

Pulse

RNG Sign

externalentropy

Fw

HSM

Clock

RNG

Beacon App

RNG#3

Beacon Engine

Time server

Pulse

RNG Sign

externalentropy

Fw

DB Web

Fw

HSM

Clock

RNG

Beacon App

RNG#3

Beacon Engine

Time server

Pulse

RNG Sign

externalentropy

Fw

DB Web

Fw

Legend: Mal=malicious; SH=semi-honest; DB=database

The red dancing devil clipart is from clker.com/clipart-13643.html

26/30

Page 107: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

5. Brief security considerations

Intrusion scenarios

NISTIR 8213 considers several scenarios with intruded components:

I I1. Mal Beacon App → randLocal control attack

I I2. Mal Beacon App → randOut bias attack

I I3. Mal local-clock + SH DB → “rands” predict attack

I I4. SH Beacon App → “rands” prediction attack

I I5. Mal DB with HSM sign key → change-history attack

HSM

Clock

RNG

Beacon

App

RNG#3

Beacon Engine

Time server

Pulse

RNG Sign

externalentropy

Fw

HSM

Clock

RNG

Beacon App

RNG#3

Beacon Engine

Time server

Pulse

RNG Sign

externalentropy

Fw

DB Web

Fw

HSM

Clock

RNG

Beacon App

RNG#3

Beacon Engine

Time server

Pulse

RNG Sign

externalentropy

Fw

DB Web

Fw

Legend: Mal=malicious

; SH=semi-honest; DB=database

The red dancing devil clipart is from clker.com/clipart-13643.html

26/30

Page 108: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

5. Brief security considerations

Intrusion scenarios

NISTIR 8213 considers several scenarios with intruded components:

I I1. Mal Beacon App → randLocal control attack

I I2. Mal Beacon App → randOut bias attack

I I3. Mal local-clock + SH DB → “rands” predict attack

I I4. SH Beacon App → “rands” prediction attack

I I5. Mal DB with HSM sign key → change-history attack

HSM

Clock

RNG

Beacon

App

RNG#3

Beacon Engine

Time server

Pulse

RNG Sign

externalentropy

Fw

HSM

Clock

RNG

Beacon App

RNG#3

Beacon Engine

Time server

Pulse

RNG Sign

externalentropy

Fw

DB Web

Fw

HSM

Clock

RNG

Beacon App

RNG#3

Beacon Engine

Time server

Pulse

RNG Sign

externalentropy

Fw

DB Web

Fw

Legend: Mal=malicious

; SH=semi-honest; DB=database

The red dancing devil clipart is from clker.com/clipart-13643.html

26/30

Page 109: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

5. Brief security considerations

Intrusion scenarios

NISTIR 8213 considers several scenarios with intruded components:

I I1. Mal Beacon App → randLocal control attack

I I2. Mal Beacon App → randOut bias attack

I I3. Mal local-clock + SH DB → “rands” predict attack

I I4. SH Beacon App → “rands” prediction attack

I I5. Mal DB with HSM sign key → change-history attack

HSM

Clock

RNG

Beacon

App

RNG#3

Beacon Engine

Time server

Pulse

RNG Sign

externalentropy

Fw

HSM

Clock

RNG

Beacon App

RNG#3

Beacon Engine

Time server

Pulse

RNG Sign

externalentropy

Fw

DB Web

Fw

HSM

Clock

RNG

Beacon App

RNG#3

Beacon Engine

Time server

Pulse

RNG Sign

externalentropy

Fw

DB Web

Fw

Legend: Mal=malicious; SH=semi-honest; DB=database

The red dancing devil clipart is from clker.com/clipart-13643.html

26/30

Page 110: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

5. Brief security considerations

Intrusion scenarios

NISTIR 8213 considers several scenarios with intruded components:

I I1. Mal Beacon App → randLocal control attack

I I2. Mal Beacon App → randOut bias attack

I I3. Mal local-clock + SH DB → “rands” predict attack

I I4. SH Beacon App → “rands” prediction attack

I I5. Mal DB with HSM sign key → change-history attack

HSM

Clock

RNG

Beacon

App

RNG#3

Beacon Engine

Time server

Pulse

RNG Sign

externalentropy

Fw

HSM

Clock

RNG

Beacon App

RNG#3

Beacon Engine

Time server

Pulse

RNG Sign

externalentropy

Fw

DB Web

Fw

HSM

Clock

RNG

Beacon App

RNG#3

Beacon Engine

Time server

Pulse

RNG Sign

externalentropy

Fw

DB Web

Fw

Legend: Mal=malicious; SH=semi-honest; DB=database

The red dancing devil clipart is from clker.com/clipart-13643.html

26/30

Page 111: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

5. Brief security considerations

Intrusion scenarios

NISTIR 8213 considers several scenarios with intruded components:

I I1. Mal Beacon App → randLocal control attack

I I2. Mal Beacon App → randOut bias attack

I I3. Mal local-clock + SH DB → “rands” predict attack

I I4. SH Beacon App → “rands” prediction attack

I I5. Mal DB with HSM sign key → change-history attack

HSM

Clock

RNG

Beacon

App

RNG#3

Beacon Engine

Time server

Pulse

RNG Sign

externalentropy

Fw

HSM

Clock

RNG

Beacon App

RNG#3

Beacon Engine

Time server

Pulse

RNG Sign

externalentropy

Fw

DB Web

Fw

HSM

Clock

RNG

Beacon App

RNG#3

Beacon Engine

Time server

Pulse

RNG Sign

externalentropy

Fw

DB Web

Fw

Legend: Mal=malicious; SH=semi-honest; DB=database

The red dancing devil clipart is from clker.com/clipart-13643.html

26/30

Page 112: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

5. Brief security considerations

Conceivable mitigations

The NISTIR mentions some mitigations

(either possible now or conceivable for the future)

For example, some could be based on the use of:

I publicly-verifiable external entropy (to reduce pre-computation window)

I verifiable delay functions

I secure time synchronization

I a different randLocal computation, with non controllable value

I different signature (e.g., > bit-strength, post-quantum, or/and threshold)

I a forward-chaining mechanism

27/30

Page 113: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

5. Brief security considerations

Conceivable mitigations

The NISTIR mentions some mitigations

(either possible now or conceivable for the future)

For example, some could be based on the use of:

I publicly-verifiable external entropy (to reduce pre-computation window)

I verifiable delay functions

I secure time synchronization

I a different randLocal computation, with non controllable value

I different signature (e.g., > bit-strength, post-quantum, or/and threshold)

I a forward-chaining mechanism

27/30

Page 114: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

6. Conclusion

Outline

1. Introduction

2. Pulse format

3. Beacon Protocol

4. Using a Beacon

5. Brief security considerations

6. Conclusion

28/30

Page 115: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

6. Conclusion

Final Remarks

I Randomness Beacons have a great potential to serve as a publicutility, e.g., to promote public auditability of randomized processes

I The reference (NISTIR 8213) version 2 introduces new features forbetter interoperability, security and efficiency

I Possible developments to be made:

I Complementary analysis and guidance

I Improvements based on feedback

I We would like to have your collaboration:

I public feedback on the NISTIR 8213

I more deployed beacons

I external apps using Beacon randomness

29/30

Page 116: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

6. Conclusion

Final Remarks

I Randomness Beacons have a great potential to serve as a publicutility, e.g., to promote public auditability of randomized processes

I The reference (NISTIR 8213) version 2 introduces new features forbetter interoperability, security and efficiency

I Possible developments to be made:

I Complementary analysis and guidance

I Improvements based on feedback

I We would like to have your collaboration:

I public feedback on the NISTIR 8213

I more deployed beacons

I external apps using Beacon randomness

29/30

Page 117: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

6. Conclusion

Final Remarks

I Randomness Beacons have a great potential to serve as a publicutility, e.g., to promote public auditability of randomized processes

I The reference (NISTIR 8213) version 2 introduces new features forbetter interoperability, security and efficiency

I Possible developments to be made:

I Complementary analysis and guidance

I Improvements based on feedback

I We would like to have your collaboration:

I public feedback on the NISTIR 8213

I more deployed beacons

I external apps using Beacon randomness

29/30

Page 118: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

6. Conclusion

Final Remarks

I Randomness Beacons have a great potential to serve as a publicutility, e.g., to promote public auditability of randomized processes

I The reference (NISTIR 8213) version 2 introduces new features forbetter interoperability, security and efficiency

I Possible developments to be made:

I Complementary analysis and guidance

I Improvements based on feedback

I We would like to have your collaboration:

I public feedback on the NISTIR 8213

I more deployed beacons

I external apps using Beacon randomness

29/30

Page 119: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

6. Conclusion

Final Remarks

I Randomness Beacons have a great potential to serve as a publicutility, e.g., to promote public auditability of randomized processes

I The reference (NISTIR 8213) version 2 introduces new features forbetter interoperability, security and efficiency

I Possible developments to be made:

I Complementary analysis and guidance

I Improvements based on feedback

I We would like to have your collaboration:

I public feedback on the NISTIR 8213

I more deployed beacons

I external apps using Beacon randomness

29/30

Page 120: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

6. Conclusion

Thank you for your attention

I Draft NISTIR 8213: https://doi.org/10.6028/NIST.IR.8213-draft

I Email for feedback on the NISTIR 8213: [email protected]

I Beacon project: https://www.nist.gov/programs-projects/nist-randomness-beacon

1 1 0

1 1

1 0

1 0 1

1 0

0 0

1 0

0 0

1 1

1 1

1 0

0 1

1 0

1 1 1

0 0

1 0

0 0

1

1 01

1 0

1 0

0 0

0 1

1 0

0 1

1 1 0

0 1

0 0

0 0

1 0

0 1

0 0

0 1

0 1 0

1 1

1 1

1 0

1 1

0 1

1 0

1 1

1 1

0 0

1 1

0 1

0 1

0 1

0 0

1 1

1

Adapte

d fro

m clke

r.com

/clipart-1

95

93

2.h

tml

Presentation at the International Cryptographic Module Conference

May 17, 2019 @ Vancouver, Canada

Disclaimer. Opinions expressed in this presentation are from the author(s) and are not to be construed as official or as views of the U.S.Department of Commerce. The identification of any commercial product or trade names in this presentation does not imply endorsement ofrecommendation by NIST, nor is it intended to imply that the material or equipment identified are necessarily the best available for the purpose.

Disclaimer. Some external-source images and cliparts were included/adapted in this presentation with the expectation of such use constitutinglicensed and/or fair use.

30/30

Page 121: The new NIST reference for Randomness Beacons...May 17, 2019  · I protocol for beacon operations I using Beacon randomness I security considerations Public comments till August 05,

6. Conclusion

Thank you for your attention

I Draft NISTIR 8213: https://doi.org/10.6028/NIST.IR.8213-draft

I Email for feedback on the NISTIR 8213: [email protected]

I Beacon project: https://www.nist.gov/programs-projects/nist-randomness-beacon

1 1 0

1 1

1 0

1 0 1

1 0

0 0

1 0

0 0

1 1

1 1

1 0

0 1

1 0

1 1 1

0 0

1 0

0 0

1

1 01

1 0

1 0

0 0

0 1

1 0

0 1

1 1 0

0 1

0 0

0 0

1 0

0 1

0 0

0 1

0 1 0

1 1

1 1

1 0

1 1

0 1

1 0

1 1

1 1

0 0

1 1

0 1

0 1

0 1

0 0

1 1

1

Adapte

d fro

m clke

r.com

/clipart-1

95

93

2.h

tml

Presentation at the International Cryptographic Module Conference

May 17, 2019 @ Vancouver, Canada

Disclaimer. Opinions expressed in this presentation are from the author(s) and are not to be construed as official or as views of the U.S.Department of Commerce. The identification of any commercial product or trade names in this presentation does not imply endorsement ofrecommendation by NIST, nor is it intended to imply that the material or equipment identified are necessarily the best available for the purpose.

Disclaimer. Some external-source images and cliparts were included/adapted in this presentation with the expectation of such use constitutinglicensed and/or fair use.

30/30