@umbra-privacy/qos-ceremony 0.1.3 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +57 -0
- package/dist-cli/bin/libpcsclite.so.1 +0 -0
- package/dist-cli/bin/qos_client-darwin-arm64 +0 -0
- package/dist-cli/bin/qos_client-linux-x64 +0 -0
- package/dist-cli/bin/umbra-encryption-key-darwin-arm64 +0 -0
- package/dist-cli/bin/umbra-encryption-key-linux-x64 +0 -0
- package/dist-cli/bin/umbra-seal-share-darwin-arm64 +0 -0
- package/dist-cli/bin/umbra-seal-share-linux-x64 +0 -0
- package/dist-cli/bin/umbra-unseal-share-darwin-arm64 +0 -0
- package/dist-cli/bin/umbra-unseal-share-linux-x64 +0 -0
- package/dist-cli/cli.js +3981 -3557
- package/package.json +16 -13
package/README.md
CHANGED
|
@@ -43,3 +43,60 @@ qos-ceremony status # read-only phase + blockers
|
|
|
43
43
|
|
|
44
44
|
Flags mirror env: `--api --namespace --nonce --alias --secret-path --yubikey
|
|
45
45
|
--pcr3-preimage-path --qos-release-dir --qos-client`.
|
|
46
|
+
|
|
47
|
+
## The at-rest layer
|
|
48
|
+
|
|
49
|
+
A share is **double-sealed** everywhere it rests: the QOS P-256 envelope on the inside, an
|
|
50
|
+
ML-KEM-1024 + X25519 envelope over it. `ceremony share` seals before upload and `ceremony provision`
|
|
51
|
+
opens after download, so the singly-sealed form exists only inside a provision workdir, in the moment
|
|
52
|
+
between recovery and re-encryption to the enclave's ephemeral key.
|
|
53
|
+
|
|
54
|
+
The reason is the stored copy. `_shared/shares/<alias>.share` is durable and is the disaster-recovery
|
|
55
|
+
material, so under P-256 alone a copy taken today is readable by a CRQC later. The outer layer closes
|
|
56
|
+
that window without changing anything the enclave sees.
|
|
57
|
+
|
|
58
|
+
### One-time setup, per operator
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
# a seed in the file — fine for a laptop ceremony or a test
|
|
62
|
+
qos-ceremony encryption-key ~/.umbra/operator-encryption.json
|
|
63
|
+
|
|
64
|
+
# a seed derived from hardware — only a salt is stored
|
|
65
|
+
qos-ceremony encryption-key ~/.umbra/operator-encryption.json \
|
|
66
|
+
--challenge-command 'ykman otp calculate 2 {challenge}'
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
Then pass the key file to every ceremony command that touches a share:
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
export CEREMONY_ENCRYPTION_KEY=~/.umbra/operator-encryption.json
|
|
73
|
+
qos-ceremony share # derives, seals, uploads
|
|
74
|
+
qos-ceremony provision # downloads, opens, re-encrypts to the enclave
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Add `--challenge-command` to `provision` when the key derives from hardware; the token must be
|
|
78
|
+
present for that step and no other.
|
|
79
|
+
|
|
80
|
+
### The tools directly
|
|
81
|
+
|
|
82
|
+
`seal-share` and `unseal-share` are also exposed on their own, for a share handled outside the
|
|
83
|
+
ceremony — a TVC deployment, or recovering one by hand. Arguments pass through to the underlying
|
|
84
|
+
binary, so `--help` is the binary's own:
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
qos-ceremony seal-share --help
|
|
88
|
+
qos-ceremony unseal-share --response quorum-key-response.json \
|
|
89
|
+
--key ~/.umbra/operator-encryption.json --out quorum_key_metadata.json # tvc shape
|
|
90
|
+
qos-ceremony unseal-share --response p1.share.sealed \
|
|
91
|
+
--key ~/.umbra/operator-encryption.json --out p1.share --format qos # qos shape
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
`--format tvc` (the default) writes what `tvc keys re-encrypt-local-share` reads; `--format qos`
|
|
95
|
+
writes the raw envelope `qos_client proxy-re-encrypt-share --share-path` reads.
|
|
96
|
+
|
|
97
|
+
### Binaries
|
|
98
|
+
|
|
99
|
+
`qos_client`, `umbra-encryption-key`, `umbra-seal-share` and `umbra-unseal-share` are embedded per
|
|
100
|
+
platform. Override any of them with `--qos-client`, `--seal-share-bin`, `--unseal-share-bin`, or the
|
|
101
|
+
matching `*_BIN` environment variable; on an uncovered platform the CLI falls back to the bare name
|
|
102
|
+
on `PATH`.
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|