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
  • AirgapOS SD card

  • AirgapOS Laptop

  • Minimum of 1 Operator and 1 Witness

  • Tamper-proofing equipment

  • Ceremony SD Card

  • SD Card Pack

  • N Smart Cards in the chosen M 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

  1. Enter the designated location with required personnel and equipment

  2. Lock access to the location - there should be no inflow or outflow of people during the ceremony

  3. 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

  4. Place all materials except for the laptop into High Visibility Storage

  5. Retrieve AirgapOS SD card from High Visibility Storage and plug it into air-gapped laptop

  6. Turn on the machine

  7. Once booted, remove the AirgapOS SD card and place it into High Visibility Storage

  8. 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'
    
  9. 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

  10. Place all unsealed SD cards into High Visibility Storage

  11. Plug in the Ceremony SD card

  12. 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/
    
  13. 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

    1. Plug in fresh SD card

    2. cp -r /root/vaults /media/

    3. Unplug the SD card

    4. Label the SD card "Ceremony [date]"

    5. Place the SD card in High Visibility Storage

  14. Power down the air-gapped machine

  15. 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

  16. Connect SD card to online linux workstation

  17. Look for your SD card device name (<device_name>) in the output of the lsblk 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
  18. If the ~/vaults/ repository already exists, ensure it doesn't have any changes that haven't been committed, then remove it using sudo rm -rf ~/vaults before re-running the previous step

  19. 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
    
  20. Gather all the original items that were in the air-gapped bundle:

    • Air-gapped computer

    • AirgapOS SD card

  21. Insert object(s) into plastic sealing bag

  22. Fill bag with enough plastic beads that most of the object is surrounded

  23. Use vacuum sealer to remove air from the bag until the beads are no longer able to move

  24. Take photographs of both sides of the sealed object using both the digital and polaroid camera

  25. Date and sign the polaroid photographs and store them in a local lock box

  26. 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.