Quorum Entropy Ceremony
This is a ceremony for generating entropy which is used to derive Quorum PGP keys, load them into smart cards and shard entropy to them.
Requirements
-
For ALL tamper proofed hardware used in the ceremony, both operators MUST print photographic evidence from digital cameras which is stored in a PGP signed repository. The photographs should be of the top and underside of the vacuum sealed object.
- The operators should verify the commit signatures of the photographs they are printing against a list of permitted PGP keys found in the "ceremonies" repo
-
- Provided by Air-Gapped Bundle
- Alternative: Create your own from documentation in AirgapOS Repository
-
AirgapOS Laptop
- Provided by Air-Gapped Bundle
- Alternative: Computer that can load AirgapOS (compatibility reference)
-
Minimum of 1 Operator and 1 Witness
- Personal PGP key pair for each operator
-
Tamper-proofing equipment
-
N
Smart Cards in the chosenM of N
quorum -
High Visibility Storage: plastic container or bag that's used to keep items while not in use in a visible location like the middle of a desk.
Procedure
-
Enter the designated location with required personnel and equipment
-
Lock access to the location - there should be no inflow or outflow of people during the ceremony
-
Retrieve Air-Gapped Bundle and polaroid tamper evidence from locked storage
a. Retrieve digital/physical photographs of both sides of sealed bundle
b. Compare all photographs to object for differences
c. Proceed with unsealing the object if no differences are detected
-
Place all materials except for the laptop into High Visibility Storage
-
Retrieve AirgapOS SD card from High Visibility Storage and plug it into air-gapped laptop
-
Turn on the machine
-
Once booted, remove the AirgapOS SD card and place it into High Visibility Storage
-
Run the relevant keyfork operation to perform the ceremony:
- Replace the following values: <M>, <N>, <number_of_smart_cards_per_operator>, <pgp_user_id> with appropriate values
$ keyfork mnemonic generate --shard-to-self shardfile.asc,threshold=<M>,max=<N>,cards_per_shard=<number_of_smartcards_per_operator>,cert_output=keyring.asc --derive='openpgp --public "Your Name <your@email.co>" --output certificate.asc'
-
Unseal an SD card pack by following tamper proofing steps:
a. Retrieve digital/physical photographs of both sides of sealed bundle
b. Compare all photographs to object for differences
c. Proceed with unsealing the object if no differences are detected
-
Place all unsealed SD cards into High Visibility Storage
-
Plug in the Ceremony SD card
-
Back up the files
$ cp shardfile.asc /media/vaults/<namespace>/ $ cp keyring.asc /media/vaults/<namespace>/ $ cp certificate.asc /media/vaults/<namespace>/ $ cp -r /media/vaults /root/
-
To create additional backups of the updated
vaults
repository, plug in SD cards one at a time and use following steps to back up ceremony artifacts-
Plug in fresh SD card
-
cp -r /root/vaults /media/
-
Unplug the SD card
-
Label the SD card "Ceremony [date]"
-
Place the SD card in High Visibility Storage
-
-
Power down the air-gapped machine
-
Transfer the ceremony artifacts to online linux workstation using one of the SD cards and commit the changes made to the
vaults
repository that's on the Ceremony SD card -
Connect SD card to online linux workstation
-
Look for your SD card device name (
<device_name>
) in the output of thelsblk
command. It will typically be listed as/dev/sdX
or/dev/mmcblk<num>
, where X is a letter (e.g.,/dev/sdb
,/dev/sdc
). You can identify it by its size or by checking if it has a partition (like/dev/sdX1
)- Mount the device using:
sudo mount /dev/<your_device> /media
- Mount the device using:
-
If the
~/vaults/
repository already exists, ensure it doesn't have any changes that haven't been committed, then remove it usingsudo rm -rf ~/vaults
before re-running the previous step -
Copy the repository with updated files to an online linux workstation, sign, commit and push to the
vaults
repository:$ cp -r /media/vaults ~/vaults/ $ cd ~/vaults $ git add . $ git commit -S -m "<message>" $ git push origin HEAD
-
Gather all the original items that were in the air-gapped bundle:
-
Air-gapped computer
-
AirgapOS SD card
-
-
Insert object(s) into plastic sealing bag
-
Fill bag with enough plastic beads that most of the object is surrounded
-
Use vacuum sealer to remove air from the bag until the beads are no longer able to move
-
Take photographs of both sides of the sealed object using both the digital and polaroid camera
-
Date and sign the polaroid photographs and store them in a local lock box
-
Take the SD card to an online connected device, ensuring continued dual custody, and commit the tamper evidence photographs to a repository. If two individuals are present, have one create a PR with a signed commit, and the other do a signed merge commit.