@@ -8,7 +8,7 @@ weight: 0
88** v0.1.0-alpha.1** - Treat this as an unfinished draft.
99
1010[ Semantic versioning v2.0.0] ( https://semver.org/spec/v2.0.0.html ) is used to version this specification.
11- The version number specified here also applies to the API documentation.
11+ The version number specified here also applies to the [ API documentation] ( https://apidocs.polyproto.org ) .
1212
1313- [ polyproto Specification] ( #polyproto-specification )
1414 - [ 1. Terminology used in this document] ( #1-terminology-used-in-this-document )
@@ -283,11 +283,17 @@ factor of authentication.
283283
284284### 4.2 Challenge strings
285285
286- Servers are alphanumeric challenge strings to verify an actor's private identity key
287- possession, without revealing the private key itself. These strings, ranging from 32 to 256 characters,
288- have a UNIX timestamp lifetime. If the current timestamp surpasses this lifetime, the challenge fails.
289- The actor signs the string, sending the signature and their ID-Cert to the server, which then verifies
290- the signature's authenticity.
286+ Servers use challenge strings to verify an actor's private identity key
287+ possession, without revealing the private key itself. These strings, ranging from 32 to 256
288+ UTF-8 characters, have a UNIX timestamp lifetime. If the current timestamp surpasses this
289+ lifetime, the challenge fails. The actor signs the string, sending the signature and their
290+ ID-Cert to the server, which then verifies the signature's authenticity.
291+
292+ All challenge strings and their responses created must be made
293+ public to ensure that a chain of trust can be maintained. A third party should be able to verify that
294+ the challenge string, which authorized a specific change in data, was signed by the
295+ correct private key. The API routes needed to verify challenges as an outsider are documented in the
296+ [ API documentation] ( https://apidocs.polyproto.org ) .
291297
292298!!! tip
293299
@@ -777,7 +783,8 @@ server after connecting. Clients should never store key backups in an unencrypte
777783Whether an actor uploads their encrypted private identity keys to the server is their own choice.
778784It is also recommended backing up the encrypted private identity keys in some other secure location.
779785
780- The APIs for managing encrypted private identity keys are documented in the API documentation.
786+ The APIs for managing encrypted private identity keys are documented in the
787+ [ API documentation] ( https://apidocs.polyproto.org ) .
781788
782789- [ Upload encrypted private key material] (/APIs/Core/Routes%3A Registration needed/#post-upload-encrypted-private-key-material)
783790- [ Get encrypted private key material] (/APIs/Core/Routes%3A Registration needed/#get-get-encrypted-private-key-material)
@@ -857,20 +864,22 @@ distributed network to the new actor. Should the old actor want to additionally
857864the old home server to another home server, more steps are needed. Account migration is not considered
858865a sensitive action.
859866
867+ This chapter defines behaviors and security mechanisms associated with migrating an actor identity
868+ or messages.
869+
860870### 7.1 Identity migration
861871
862872Transferring message ownership from an old to a new account, known as
863873identity migration, necessitates coordination between the two involved accounts.
864874
865- Identity migration is a process, which can be broken down into the following steps:
875+ Identity migration is a process which can be broken down into the following steps:
866876
867877- [ Setting up a redirect] ( #711-redirects )
868878- [ Re-signing data] ( #72-re-signing-messages )
869879
870- As shown by the API routes offered in the API documentation, both of these steps can be initiated
871- through one API call.
872-
873880It is not required that the new account is located on another home server as the old account.
881+ Re-signing data and setting up a redirect are both not mandatory steps. It is up to actors to decide
882+ to which extent they wish to perform the migration.
874883
875884#### 7.1.1 Redirects
876885
@@ -994,7 +1003,7 @@ To allow for a singular set of behaviors, which fit the three intended use cases
9941003not all messages stored by the server of an actor need to be re-signed.
9951004Besides querying for all non-re-signed messages, actors can also query or all non-resigned
9961005messages, whose signatures correspond to a specific ID-Cert or set of ID-Certs. The API routes
997- for re-signing messages are documented in the API documentation.
1006+ for re-signing messages are documented in the [ API documentation] ( https://apidocs.polyproto.org ) .
9981007
9991008#### 7.2.1 Message batches
10001009
@@ -1115,7 +1124,8 @@ aa-xsa: Deactivate account
11151124* Fig. 8: Sequence diagram depicting the data moving process.*
11161125
11171126How this process is implemented is up to P2 extensions to define. The above steps are only a
1118- guideline. The API routes for data export and import are documented in the API documentation.
1127+ guideline. The API routes for data export and import are documented in the
1128+ [ API documentation] ( https://apidocs.polyproto.org )
11191129
11201130#### 7.3.1 Content Addressing with relative roots
11211131
@@ -1159,17 +1169,11 @@ the API route is accessed. Clients should expect finding servers not implementin
11591169Changing the publicly visible ownership of actor data requires the chain of trust to be maintained.
11601170If an "old" account wants to change the publicly visible ownership of its data, the "old"
11611171account must prove that it possesses the private keys that were used to
1162- sign the messages. This is done by signing a challenge string with the private
1172+ sign the messages. This is done by signing a [ challenge string] ( #42-challenge-strings ) with the private
11631173keys. If the server verifies the challenge, it authorizes the new account to re-sign the old
11641174account's messages signed with the verified key. Instead of overwriting the message, a new message variant
11651175with the new signature is created, preserving the old message.
11661176
1167- All challenge strings and their responses created in the context of account migration must be made
1168- public to ensure that a chain of trust can be maintained. A third party should be able to verify that
1169- the challenge string, which authorized the ownership change of an accounts' data was signed by the
1170- correct private key. The API routes needed to verify challenges as an outsider are documented in the
1171- API documentation.
1172-
11731177Implementations and protocol extensions should carefully consider the extent of messages that can be
11741178re-signed.
11751179
@@ -1377,7 +1381,8 @@ federation ID of the actor they want to communicate with. Consider the following
13771381To be discoverable, an actor must add a key-value pair to their home server's database. The
13781382key is the name of the service, and the value is the base URL of the server hosting the service.
13791383
1380- The API routes for managing discoverability are documented in the API documentation.
1384+ The API routes for managing discoverability are documented in the
1385+ [ API documentation] ( https://apidocs.polyproto.org )
13811386
13821387### 9.1.1 Changing a primary service provider
13831388
0 commit comments