rfc/content/docs/rfcs/7
Oskar Thorén 27ee0f0558
Merge repo with rfc.vac.dev (#310)
* Hugo init

* Init Hugo book

* Add basic README and title

* Import RFC: 1/COSS

* Move example content to dedicated folder

* Basic menu

* Tweak single layout

* Fix base url and permalink

* Basic index tweaks

* Add netifly config

* gitignore

* 1/COSS: Add COSS lifecycle

* Remove public artifact

* Add basic numbers in menu

* Empty READMEs init

* Import mvds spec raw

* 2/MVDS: Simplify

* 3/REMOTE-LOG: Import

* 3/REMOTE-LOG: Simplify

* 4/MVDS-META: Import

* 4/MVDS-META Simplify

* Tweaks

* 5/WAKU0: Import

* 5: Simplify

* 6/WAKU1: Import

* 6/WAKU1: Simplify

* 7/WAKU-DATA: Import

* 7/WAKU-DATA: Simplify

* 8/WAKU-MAIL: Import

* 8/WAKU-MAIL: Simplify

* Tweak

* 9/WAKU-RPC: Import

* 9/WAKU-RPC: Simplify

* 10/WAKU2: Import

* 10/WAKU2: Simplify

* 11/WAKU-RELAY: Import

* Tweaks

* 11/WAKU-RELAY: Simplify

* 12/WAKU-FILTER: Import

* 12/WAKU2-FILTER: Simplify

* 13/WAKU-STORE: Import

* 13/WAKU-STORE: Simplify

* 14/WAKU-MESSAGE: Import

* 14/WAKU-MESSAGE: Simplify

* 15/WAKU-BRIDGE: Import

* 15: Simplify

* 16: Import

* 16: Simplify

* 17: Import

* 17: Simplify

* 18: Import

* 18: Simplify

* 12: Bump update

* 14: Bump update

* 11: Bump update

* 17: Bump update

* 18: Bump update

* 16: Bump update

* Fix slug for 18

* Editor changes for 11, 12, 15

* Revert "Editor changes for 11, 12, 15"

This reverts commit 5c32fe791b.

* Revert "Revert "Editor changes for 11, 12, 15""

This reverts commit ccd75131d7.

* Editor changes for 13, 2, 4

* Move current specs to archive

* Update README

* bump
2021-04-01 12:03:14 +08:00
..
README.md Merge repo with rfc.vac.dev (#310) 2021-04-01 12:03:14 +08:00

README.md

slug title name status editor contributors
7 7/WAKU-DATA Waku Envelope data field stable Oskar Thorén <oskar@status.im>
Dean Eigenmann <dean@status.im>
Kim De Mey <kimdemey@status.im>

This specification describes the encryption, decryption and signing of the content in the data field used in Waku.

Specification

The data field is used within the waku envelope, the field MUST contain the encrypted payload of the envelope.

The fields that are concatenated and encrypted as part of the data field are:

  • flags
  • auxiliary field
  • payload
  • padding
  • signature

In case of symmetric encryption, a salt (a.k.a. AES Nonce, 12 bytes) field MUST be appended.

ABNF

Using Augmented Backus-Naur form (ABNF) we have the following format:

; 1 byte; first two bits contain the size of auxiliary field, 
; third bit indicates whether the signature is present.
flags           = 1OCTET

; contains the size of payload.
auxiliary-field = 4*OCTET

; byte array of arbitrary size (may be zero)
payload         = *OCTET

; byte array of arbitrary size (may be zero).
padding         = *OCTET

; 65 bytes, if present.
signature       = 65OCTET

; 2 bytes, if present (in case of symmetric encryption).
salt            = 2OCTET

data        = flags auxiliary-field payload padding [signature] [salt]

Signature

Those unable to decrypt the envelope data are also unable to access the signature. The signature, if provided, is the ECDSA signature of the Keccak-256 hash of the unencrypted data using the secret key of the originator identity. The signature is serialized as the concatenation of the R, S and V parameters of the SECP-256k1 ECDSA signature, in that order. R and S MUST be big-endian encoded, fixed-width 256-bit unsigned. V MUST be an 8-bit big-endian encoded, non-normalized and should be either 27 or 28.

Padding

The padding field is used to align data size, since data size alone might reveal important metainformation. Padding can be arbitrary size. However, it is recommended that the size of Data Field (excluding the Salt) before encryption (i.e. plain text) SHOULD be factor of 256 bytes.

Copyright and related rights waived via CC0.