1
0
mirror of https://codeberg.org/fediverse/fep.git synced 2026-08-06 04:05:53 +00:00

FEP-c390: Update proposal

- Use "decentralized identifiers" instead of "cryptographic keys" in summary.
- Fix property name in "Proof generation" section.
- Use jcs-eddsa-2022 cryptosuite in the example.
- Change domains in example according to https://www.rfc-editor.org/rfc/rfc2606#section-2.
- Add outbox to actor document example.
- Add "Linking identities" section.
- Add JSON-LD context.
- Fix typo in example.
This commit is contained in:
silverpill
2023-07-11 21:30:14 +00:00
parent beb105a2a6
commit eb33a705a2
2 changed files with 30 additions and 10 deletions
+14
View File
@@ -0,0 +1,14 @@
{
"@context": {
"fep": "https://w3id.org/fep#",
"VerifiableIdentityStatement": {
"@id": "fep:VerifiableIdentityStatement",
"@context": {
"subject": {
"@id": "fep:subject",
"@type": "xsd:anyURI"
}
}
}
}
}
+16 -10
View File
@@ -10,7 +10,7 @@ discussionsTo: https://codeberg.org/fediverse/fep/issues/34
## Summary
This proposal describes a mechanism of linking cryptographic keys to [ActivityPub](https://www.w3.org/TR/activitypub/) actor profiles.
This proposal describes a mechanism of creating verifiable links between [Decentralized Identifiers](https://www.w3.org/TR/did-core/) and [ActivityPub](https://www.w3.org/TR/activitypub/) actor profiles.
Potential applications include: identity verification, end-to-end encryption and account migrations.
@@ -36,7 +36,7 @@ Identity proofs SHOULD be attached to an actor object, under the `attachment` pr
### Proof generation
The identity proof document MUST contain a data integrity proof, which includes a cryptographic proof and parameters required to verify it. It MUST be created according to the *Data Integrity* specification, section [4.1 Generate Proof](https://w3c.github.io/vc-data-integrity/#generate-proof). The value of `verificationMethod` property of the data integrity proof MUST match the value of `id` property of the identity proof document.
The identity proof document MUST contain a data integrity proof, which includes a cryptographic proof and parameters required to verify it. It MUST be created according to the *Data Integrity* specification, section [4.1 Generate Proof](https://w3c.github.io/vc-data-integrity/#generate-proof). The value of `verificationMethod` property of the data integrity proof MUST match the value of `subject` property of the identity proof document.
The resulting data integrity proof MUST be added to identity proof document under the `proof` key.
@@ -49,21 +49,23 @@ Example:
"https://www.w3.org/ns/did/v1",
"https://w3id.org/security/data-integrity/v1",
{
"fep": "https://w3id.org/fep#"
"fep": "https://w3id.org/fep#",
"VerifiableIdentityStatement": "fep:VerifiableIdentityStatement",
"subject": "fep:subject"
}
],
"type": "Person",
"id": "https://example.com/users/alice",
"inbox": "https://example.com/users/alice/inbox",
"id": "https://server.example/users/alice",
"inbox": "https://server.example/users/alice/inbox",
"outbox": "https://server.example/users/alice/outbox",
"attachment": [
{
"type": "VerifiableIdentityStatement",
"subject": "did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK",
"alsoKnownAs": "https://example.com/users/alice",
"alsoKnownAs": "https://server.example/users/alice",
"proof": {
"type": "JcsEd25519Signature2022",
"type": "DataIntegrityProof",
"cryptosuite": "jcs-eddsa-2022",
"created": "2022-11-12T00:00:00Z",
"verificationMethod": "did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK",
"proofPurpose": "assertionMethod",
@@ -76,16 +78,20 @@ Example:
### Proof verification
The receiving server MUST check the authenticity of identity proof document by verifying its data integrity proof. If the server can't verify the proof, or if the value of `verificationMethod` property of the data integrity proof doesn't match the value of `subject` property of the identity proof, or if the value of `alsoKnownAs` property of the identity proof doesn't match the actor ID, the identity proof MUST be discarded.
The consuming implementations MUST check the authenticity of identity proof document by verifying its data integrity proof. If the proof can not be verified, or if the value of `verificationMethod` property of the data integrity proof doesn't match the value of `subject` property of the identity proof, or if the value of `alsoKnownAs` property of the identity proof doesn't match the actor ID, the identity proof MUST be discarded.
Verification process MUST follow the *Data Integrity* specification, section [4.2 Verify Proof](https://w3c.github.io/vc-data-integrity/#verify-proof).
The receiving server SHOULD treat identities denoted by `subject` and `alsoKnownAs` properties of identity proof as belonging to the same entity.
### Linking identities
The consuming implementations SHOULD treat identities denoted by `subject` and `alsoKnownAs` properties of identity proof as belonging to the same entity.
If two actors have identity proofs with the same `subject` property, they SHOULD be treated as different identities of the same entity.
## References
- [ActivityPub] Christine Lemmer Webber, Jessica Tallon, [ActivityPub](https://www.w3.org/TR/activitypub/), 2018
- [Decentralized Identifier] Manu Sporny, Dave Longley, Markus Sabadell, Drummond Reed, Orie Steele, Christopher Allen, [Decentralized Identifiers (DIDs) v1.0](https://www.w3.org/TR/did-core/), 2022
- [Decentralized Identifiers] Manu Sporny, Dave Longley, Markus Sabadell, Drummond Reed, Orie Steele, Christopher Allen, [Decentralized Identifiers (DIDs) v1.0](https://www.w3.org/TR/did-core/), 2022
- [Data Integrity] Dave Longley, Manu Sporny, [Verifiable Credential Data Integrity 1.0](https://w3c.github.io/vc-data-integrity/), 2022
## Copyright