---
robots: noindex, nofollow
---
# Crypto Envelope Sketch
###### tags: `draft / in process`
## Simplest Crypto Envelope - nothing encrypted.
<crypto-envelope>
<undifferentiated byte string />
</crypto-envelope>
- Note that not everything inside a crypto-envelope is encrypted.
## One Encrypted Object
```
<crypto-envelope>
<chacha-poly-rfc8439 raw encrypted data />
</crypto-envelope>
```
- Crypto Envelope without any options defaults to one object.
- The most basic type of encrypted object is CBOR tag for chacha-poly-rfc8439 symmetrically encrypted data, followed by that data.
- No indentifer (other than index=0 as implied by the crypto-envelope or hash of the this specific encrypted data, which is unique because chacha-poly-rfc8439 has a nonce).
- The symmetric secret to decrypt the chacha-poly-rfc8439 is completely out-of-channel. No clues are offered as to how to recover it.
## Two Encrypted Objects
```
<crypto-envelope last-index=1>
<chacha-poly-rfc8439 raw encrypted data />
<chacha-poly-rfc8439 raw encrypted data />
</crypto-envelope>
```
- Crypto envelope can say how many top items are included by including a last-index, which defaults to 0 (one item). In this example, there are two.
- Like the single example, out-of-band keys (maybe different keys).
## Simple SSKR Sharded Secret
```
<crypto-envelope>
<sskr v=0 last-index=3>
<raw unencrypted sskr share/>
<chacha-poly-rfc8439 raw encrypted data />
<chacha-poly-rfc8439 raw encrypted data />
<gzip32>
</sskr>
</crypto-envelope>
```
- In this example, a random secret (unique for each symmetric encryption) is sharded using SSKR, and if recovered can used as the symettric key to decrypt the any enclosed symmetrically encrypted objects.
- NOTE: that this recovered secret applies to any enclosed symmetric encrypted data - including other symmetric encryption formats that may be defined in the future. #futureproof
- NOTE: if you can recover the secret, you can add more encrypted data to the sskr object, without having to re-encrypt the existing encrypted data or reuse a chacha-poly-rfc8439 nonce. This is to future-proof to allow for use of signatures and time-stamped object, which would have to be renewed if re-encrypted.
## Simple Timestamped Object
```
<crypto-envelope>
<chacha-poly-rfc8439 raw encrypted data />
<time-stamp type=bitcointime last-index=1>
<proof>
<back-index=0>
</time-stamp>
<signature type=bitcointime last-index=1>
<proof>
<back-index=0>
</time-stamp>
</crypto-envelope>
```