@@ -593,15 +593,22 @@ of the key change, it must be informed of the change upon reconnection.
593593 polyproto does not require the use of CRLs or OCSP.
594594
595595An ID-Cert can be revoked by the home server or the actor at any time. This can be done for various
596- reasons, such as a suspected leak of the private identity key. When an ID-Cert is revoked, the server
597- must revoke the session associated with the revoked ID-Cert. Revoking an ID-Cert is considered a
598- [ sensitive action] ( #412-sensitive-actions ) and therefore should require a second factor of authentication.
596+ reasons, such as a suspected leak of the private identity key.
597+
598+ When an ID-Cert is revoked, the server must revoke the session associated with the revoked ID-Cert.
599+ Revoking an ID-Cert is considered a [ sensitive action] ( #412-sensitive-actions ) and therefore should
600+ require a second factor of authentication.
599601
600602!!! info
601603
602604 The above paragraph is true for both foreign and home servers. The API routes associated with
603605 revoking an ID-Cert are the same regardless of the server type.
604606
607+ !!! info "Revocation detection"
608+
609+ For information on how revocation detection is supposed to be handled, concern the excerpt
610+ <a href="#idcert-cache-ttls">"Caching ID-Certs and cache TTLs"</a>
611+
605612TODO: Write about identifier changing and how to handle that across servers
606613TODO: Perhaps recommend never using more than a specified number of certificates at once to make
607614 re-signing easier
@@ -632,7 +639,7 @@ ID-Cert attached to the message and ensuring its public key matches the sender's
632639 signatures and [weak public keys](https://en.wikipedia.org/wiki/Weak_key) must be rejected.
633640
634641** Example:** Say we have two actors. Alice, who is registered on Server A, and Bob, who is registered
635- on Server B. Alice and Bob are having a conversation on Server B. Given a signed message from Alice,
642+ on Server B. Alice and Bob ** are having a conversation on Server B** . Given a signed message from Alice,
636643such as Bob would receive from Server B, the process of verifying the signature would look like this:
637644
638645``` mermaid
@@ -644,6 +651,10 @@ participant sb as Server B
644651participant sa as Server A
645652
646653sb->>b: Alice's signed message
654+ opt Server A's ID-Cert is not cached on Bob's client
655+ b->>sa: Request Server A ID-Cert
656+ sa->>b: Server A ID-Cert
657+ end
647658opt Alice's ID-Cert is not cached on Bob's client
648659 b->>sb: Request Alice's ID-Cert
649660 opt Alice's ID-Cert is not cached on Server B
@@ -652,10 +663,6 @@ opt Alice's ID-Cert is not cached on Bob's client
652663 end
653664 sb->>b: Alice's ID-Cert
654665end
655- opt Server A's ID-Cert is not cached on Bob's client
656- b->>sa: Request Server A ID-Cert
657- sa->>b: Server A ID-Cert
658- end
659666b->>b: Verify signature of Alice's message (Fig. 4)
660667```
661668
@@ -664,6 +671,8 @@ b->>b: Verify signature of Alice's message (Fig. 4)
664671Bob's client and Server B should now cache Server A's and Alice's ID-Certs, to avoid having to
665672request them again.
666673
674+ <a name =" idcert-cache-ttls " id =" idcert-cache-ttls " ></a >
675+
667676The TTL (time to live) of these cached items should be relatively short. Recommended values
668677are between one (1) and twelve (12) hours. Cached ID-Certs must be evicted from
669678the cache, after the TTL has expired. Expired cached ID-Certs must not be used for signature
721730* Fig. 4: Sequence diagram showing how message verification should be handled if the first attempt
722731to verify the signature fails.*
723732
724- ??? question "Why should Bob's client request Alice's public identity key from his own server first?"
733+ TODO: IDEA: To keep other servers from not re-requesting the idcert after the ttls has passed, the
734+ idcert should have some sort of timestamp that is signed by the original server, so that clients can
735+ verify that a server has the most up-to-date idcert cached for a user -flori
736+
737+ ??? question "Why should Bob's client request Alice's public identity key from Server B first, if Alice's identity lives on Server A?"
738+
739+ In the case where `[email protected] ` and `[email protected] ` are having a 740+ conversation where the communications server is any server other than `server-a.example.com`,
741+ Bob should request Alice's ID-Cert from that server first, instead of from `server-a.example.com`.
742+
743+ For this example, where Alice "is on" Server A and Bob "is on" Server B:
725744
726745 Bob's client could request Alice's public identity key from Server A, instead of Server B.
727746 However, this is discouraged, as it
0 commit comments