1
1
# Proposal: CloudEvents Verifiability
2
2
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
+
3
28
## Notational Conventions
4
29
5
30
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`
44
69
and ` verificationmaterialtype ` attributes. Consumers can choose to verify if
45
70
the material.
46
71
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
-
76
72
## Assumptions
77
73
78
74
This proposal contains a few assumptions that will be highlighted here.
79
75
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
81
77
verification implementation.
82
78
2 . Users manage their secrets, e.g. public key infrastructure (PKI).
83
79
@@ -86,7 +82,7 @@ This proposal contains a few assumptions that will be highlighted here.
86
82
Verifiability in CloudEvents consists of two steps:
87
83
88
84
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
90
86
authenticity and integrity of the event
91
87
92
88
@@ -143,7 +139,7 @@ A verifiability implementation **MUST FAIL** on:
143
139
attributes being set in a message)
144
140
* One relevant context attribute being present but the other missing (e.g.
145
141
` 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
147
143
verification material if it knows how to do so)
148
144
* Invalid material (e.g. the verification material did not match the received
149
145
event)
@@ -241,7 +237,7 @@ a verification coverage table.
241
237
242
238
### Test Vectors
243
239
244
- An example test vector may look like :
240
+ An example test vector is defined below :
245
241
246
242
```
247
243
[
0 commit comments