You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Aug 15, 2025. It is now read-only.
-[6. Cryptography and ID-Certs](#6-cryptography-and-id-certs)
@@ -889,25 +889,33 @@ can only have one active session token at a time.
889
889
890
890
#### 4.1.1 Authenticating on a foreign server
891
891
892
-
Regardless of the authentication method used, the foreign server must verify the actor's identity
893
-
before allowing them to perform any actions. This verification must be done by proving the cryptographic
894
-
connection between an actors' home server's public identity key and the actor's ID-Cert through
895
-
ID-Cert signature verification.
892
+
Regardless of the authentication method used, polyproto deployments meant to interoperate with other
893
+
polyproto deployments must accept [ID-Certs](#6-cryptography-and-id-certs) as a form of authentication
894
+
from foreign actors.
896
895
897
-
TODO Explicitly define how this works! Might we need challenge strings after all?
896
+
!!! example "Possible real-world example"
898
897
899
-
Before a foreign actor is allowed to send messages on the server, the server must also check with
900
-
the actor's home server to ensure that the ID-Cert has not been revoked. See [section 6.4.1](#641-verifying-that-a-newly-retrieved-id-cert-is-not-out-of-date)
901
-
for information on how this is done.
898
+
Using a polyproto-based chat service, you'd like to join a community guild you've been invited to,
899
+
hosted on another server. To do this, you retrieve a challenge string from that server,
900
+
complete the challenge string, then exchange that challenge string solution for an
901
+
authentication token from the server.
902
+
903
+
Congratulations! You can now use your invite + token to join the community guild.
904
+
905
+
Server must verify the identity claims presented by foreign actors before giving out an authentication
906
+
token. This verification must be done by proving the cryptographic connection between an actors'
907
+
home server's public identity key and the actor's ID-Cert through ID-Cert signature verification and
908
+
must include ensuring that the presented ID-Cert has not been revoked.
909
+
See [section 6.4.1](#641-verifying-that-a-newly-retrieved-id-cert-is-not-out-of-date) for information
910
+
on how this is done.
902
911
903
912
#### 4.1.2 Sensitive actions
904
913
905
914
!!! bug
906
915
907
-
# Challenge strings will be removed soon.
916
+
# Outdated: Challenge strings are not used for this.
908
917
909
-
Their concept has been thought out further and implemented in different ways. Challenge strings are
910
-
no longer needed. This section will be removed soon.
918
+
"Sensitive solutions" are set to replace challenge strings as an authenticator for sensitive actions.
911
919
912
920
The API documentation already reflects this change; expect the protocol specification to reflect
913
921
these changes in upcoming beta versions of polyproto.
@@ -942,7 +950,7 @@ header value represents the second factor of authentication chosen.
942
950
TOTP verification code. If the chosen second factor of authentication is a password, then the
943
951
value of this header is to be that password.
944
952
945
-
### 4.2 Challenge strings
953
+
### 4.2 Challenge strings and key trials
946
954
947
955
Servers use challenge strings to verify an actor's private identity key
948
956
possession without revealing the private key itself. These strings, ranging from 32 to 256
@@ -2197,10 +2205,10 @@ JSON file.
2197
2205
Changing the publicly visible ownership of actor data requires the chain of trust to be maintained.
2198
2206
If an "old" account wants to change the publicly visible ownership of its data, the "old"
2199
2207
account must prove that it possesses the private keys that were used to
2200
-
sign the messages. This is done by signing a [challenge string](#42-challenge-strings) with the private
2201
-
keys. If the server verifies the challenge, it authorizes the new account to re-sign the old
2202
-
account's messages signed with the verified key. Instead of overwriting the message, a new message variant
2203
-
with the new signature is created, preserving the old message.
2208
+
sign the messages. This is done by signing a [challenge string](#42-challenge-strings-and-key-trials)
2209
+
with the private keys. If the server verifies the challenge, it authorizes the new account to re-sign
2210
+
the old account's messages signed with the verified key. Instead of overwriting the message, a
2211
+
new message variant with the new signature is created, preserving the old message.
2204
2212
2205
2213
Implementations and protocol extensions should carefully consider the extent of messages that can be
0 commit comments