Skip to content

Commit d31d6c7

Browse files
author
benjamin-j-powell
committed
fixup! Adding verifiability proposal
Signed-off-by: benjamin-j-powell <[email protected]>
1 parent 21f7854 commit d31d6c7

File tree

1 file changed

+29
-33
lines changed

1 file changed

+29
-33
lines changed

cloudevents/extensions/verifiability.md

+29-33
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,30 @@
11
# Proposal: CloudEvents Verifiability
22

3+
This proposal introduces a transport protocol agnostic design for verifiable
4+
CloudEvents. It allows producers of CloudEvents to sign the events that they
5+
send—and consumers to cryptographically verify the *authenticity and the
6+
integrity* of the events that they receive. Through this process consumers can
7+
be sure that events were in fact produced by the claimed producer
8+
(authenticity), and that the events were received exactly as they were sent,
9+
and not modified in transit (integrity).
10+
11+
The threats addressed by this proposal are those of malicious actors
12+
impersonating CloudEvent producers and of malicious actors modifying messages
13+
in transit.
14+
15+
This proposal only applies to individual events. It does not give consumers any
16+
guarantees about the completeness of the event stream or the order of events.
17+
18+
The threats of malicious actors removing or hiding items from the event stream
19+
as well as swapping their order are not addressed by this proposal. Neither are
20+
the possibilities of messages accidentally getting lost or delivered in the
21+
wrong order. Both can be addressed by producers through means of adding the
22+
necessary information inside the event payloads.
23+
24+
Further, this proposal only aims at *verifiability*. It does not aim to enable
25+
*confidentiality*. Consequently, it does not address the threat of unauthorized
26+
parties reading CloudEvents that were not meant for them.
27+
328
## Notational Conventions
429

530
As with the main [CloudEvents specification](../spec.md), the key words "MUST",
@@ -44,40 +69,11 @@ When this extension is used, producers MUST set both the `verificationmaterial`
4469
and `verificationmaterialtype` attributes. Consumers can choose to verify if
4570
the material.
4671

47-
## Goals
48-
49-
This proposal introduces a transport protocol agnostic design for verifiable
50-
CloudEvents. It allows producers of CloudEvents to sign the events that they
51-
send—and consumers to cryptographically verify the *authenticity and the
52-
integrity* of the events that they receive. Through this process consumers can
53-
be sure that events were in fact produced by the claimed producer
54-
(authenticity), and that the events were received exactly as they were sent,
55-
and not modified in transit (integrity).
56-
57-
The threats addressed by this proposal are those of malicious actors
58-
impersonating CloudEvent producers and of malicious actors modifying messages
59-
in transit.
60-
61-
## Non-goals
62-
63-
This proposal only applies to individual events. It does not give consumers any
64-
guarantees about the completeness of the event stream or the order of events.
65-
66-
The threats of malicious actors removing or hiding items from the event stream
67-
as well as swapping their order are not addressed by this proposal. Neither are
68-
the possibilities of messages accidentally getting lost or delivered in the
69-
wrong order. Both can be addressed by producers through means of adding the
70-
necessary information inside the event payloads.
71-
72-
Further, this proposal only aims at *verifiability*. It does not aim to enable
73-
*confidentiality*. Consequently, it does not address the threat of unauthorized
74-
parties reading CloudEvents that were not meant for them.
75-
7672
## Assumptions
7773

7874
This proposal contains a few assumptions that will be highlighted here.
7975

80-
1. SDKs will verify as early as possible which may or may not depend on the
76+
1. SDKs will verify as early as possible which depends on the
8177
verification implementation.
8278
2. Users manage their secrets, e.g. public key infrastructure (PKI).
8379

@@ -86,7 +82,7 @@ This proposal contains a few assumptions that will be highlighted here.
8682
Verifiability in CloudEvents consists of two steps:
8783

8884
1. The producer of an event adds verification material to the message
89-
2. The consumer of an event may use the verification material to verify the
85+
2. The consumer of an event MAY use the verification material to verify the
9086
authenticity and integrity of the event
9187

9288

@@ -143,7 +139,7 @@ A verifiability implementation **MUST FAIL** on:
143139
attributes being set in a message)
144140
* One relevant context attribute being present but the other missing (e.g.
145141
`verificationmaterial` being set but `verificationmaterialtype` missing)
146-
* Unknown material type (e.g. the implementation may only attempt to use the
142+
* Unknown material type (e.g. the implementation only attempts to use the
147143
verification material if it knows how to do so)
148144
* Invalid material (e.g. the verification material did not match the received
149145
event)
@@ -241,7 +237,7 @@ a verification coverage table.
241237

242238
### Test Vectors
243239

244-
An example test vector may look like:
240+
An example test vector is defined below:
245241

246242
```
247243
[

0 commit comments

Comments
 (0)