I think this preserves the important properties of the Danezis proposal, while simplifying it slightly.
It also specifies a compact format for reports that allows extensible, freeform messages. Each report includes a small amount of variable-length data in a memo field. Depending on the length of the memo field, reports are between 134 and 370 bytes, or 70 and 326 bytes if user verification of source integrity is not important (i.e., if the server is trusted to verify reports were generated correctly).
The memo field includes a type byte, which can be allocated to applications. For instance, we could define a schema like
0x0: "CoEpi symptom bitflags v1",
0x1: "CovidWatch test result" (maybe this is a 64-byte signature from a testing portal),
0xfe: reserved (can be used to add more than 256 types later),
I think this preserves the important properties of the Danezis proposal, while simplifying it slightly.
It also specifies a compact format for reports that allows extensible, freeform messages. Each report includes a small amount of variable-length data in a memo field. Depending on the length of the memo field, reports are between 134 and 370 bytes, or 70 and 326 bytes if user verification of source integrity is not important (i.e., if the server is trusted to verify reports were generated correctly).
The memo field includes a type byte, which can be allocated to applications. For instance, we could define a schema like
0x0
: "CoEpi symptom bitflags v1",0x1
: "CovidWatch test result" (maybe this is a 64-byte signature from a testing portal),0xfe
: reserved (can be used to add more than 256 types later),0xff
: binary data,