The advent of social media has extended digital publishing to individuals, and has become the de-facto "public square" in which the important issues of the day are discussed. Social media platforms provide convenient participation in the civic life of the nation at the expense of leaving the control of the identity of the individual in the hands of the social media platform.
This has given rise to what can best be described as a censorship industry operated by a de-facto public / private partnership in which large, moneyed interests cooperate with each other to stifle the voices of individuals for their own reasons. The free-to-use nature of most social media leaves the individual with little recourse in the event of censorship of specific statements or even the complete loss of an account.
As a corollary to censorship, organized (and frequently automated) inauthentic behavior on social media is often used to drown out legitimate, organic human content, leaving consumers with a false sense of public sentiment on important issues. Individuals are generally helpless to demonstrate that their voices should be given greater weight than astroturf produced by intelligence agencies or commercial insterests. The issue of verifiable legitimacy becomes particularly troubling on platforms like Twitter that public officials use to communicate with constituents.
iPatch solves these problems by enabling individuals to to link their social media profiles to identities they certify themselves with cryptographic signatures. These identities may optionally contain verifiable claims of residence within political subdivisions and archives of social media posts in case of account deletion.
iPatch Identities are referenced by the public key that controls the identity, and are accessible as humand readable profile pages as well as raw JWS with compact serialization:
https://ipatch.net/{MulticodecMultibasePublicKey}https://ipatch.net/{MulticodecMultibasePublicKey}.jwsNote that iPatch identities are not tied to any given domain name, and may be made available at multiple domains, or archived locally as files.
iPatch Identities require only the id and psqr elements.
| Property | Required? | Value constraints |
|---|---|---|
id |
yes | A multikey string as described in section 3.1. |
psqr |
yes | A map containing the elements described in section 5.1. |
iPatch Identities are defined by a single cryptographic public key.
The Public Square Multikey format expresses public keys of multiple types in a single multicodec multibase string representation of the public key.
This single compound kid element can be expanded to a full JWS representation
of a public key, including the kid, crv, alg, and x elements that are
essential within the JWK. The controller, id, and type elements that are
used in verifiable credentials can be extrapolated from the JWK elements.
Because iPatch Identity documents are stored as JSON Web Signatures in compact serialization, control of the private key is demonstrated by the existence of the identity. These identities are self-certified and are therefore portable, and may be published to multiple iPatch repositories or archived locally by the user.
The following table describes PSQR properties that faciliate distribution of content with verifiable cryptographic provenance.
| Property | Required? | Value constraints |
|---|---|---|
publicIdentity |
yes | A map containing the elements described in section 3.3. |
links |
no | A array of links as described in section 3.4. |
validations |
no | A array of validations as described in section 3.5. |
updated |
no | An integer representing the milliseconds since the epoch at the last update. |
The publicIdentity element contains human readable information to
represent as the subject of a PSQR DID. This information will appear as the
verified source of content.
| Property | Required? | Value constraints |
|---|---|---|
name |
yes | A string containing the name of the publisher. |
tagline |
no | A string containing a tagline or motto used by the publisher. |
image |
no | A URL pointing to a logo or image of the publisher. |
url |
no | A URL pointing to a website or profile page of the publisher. |
description |
no | A string describing the publisher. |
bio |
no | A string containing biographical information for a human publisher. |
The links element contains an array of maps, each of which constains
the elements below:
| Property | Required? | Value constraints |
|---|---|---|
link |
yes | A link on another platform associated with this identity. |
backlink |
no | A on that platform, pointing back. |
Note that the backlink is only required if the primary link does not link back. Policing backlinks is the responsibility of each iPatch repository.
The validations element contains an array of JSON Web Signatures,
each of which has a header containing the elements below:
| Property | Required? | Value constraints |
|---|---|---|
kid |
yes | A string containing the DID URL of the signing key. |
alg |
yes | The signing algorithm. |
sub |
yes | The id field of this identity (subject). |
exp |
yes | Expiration, unix time. |
iat |
yes | Issued at, unix time. |
The payload contains the elements below:
| Property | Required? | Value constraints |
|---|---|---|
verified |
yes | A string containing the PSQR claim verified. |
The key values are not genuine.
{
"id": "zQ3shu13gQFCHs3WSr7iMqfMG1VJMYiTMdzE4MUs28Z32NaQb",
"psqr": {
"publicIdentity": {
"name": "John Q Citizen",
"tagline": "All the Best",
"image": "https://www.acme-publishing/assets/logo-180x180.png",
"links": [
{
"link": "https://twitter.com/jqcitizen"
},
{
"link": "https://facebook.com/johncit",
"backlink": "https://facebook.com/johncit/868568876922"
}
],
"validations": [
{
"protected": "eyJhbGciOiJIUzI1NiIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19",
"payload": "US",
"signature": "A5dxf2s96_n5FLueVuW1Z_vh161FwXZC4YLPff6dmDY"
},
{
"protected": "eyJhbGciOiJIUzI1NiIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19",
"payload": "US:FL",
"signature": "A5dxf2s96_n5FLueVuW1Z_vh161FwXZC4YLPff6dmDY"
}
]
},
"updated": 1640713069290
}
}