iPatch: Self-Certified, Portable Identities


1. Introduction

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.

2. Identities

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:

Note that iPatch identities are not tied to any given domain name, and may be made available at multiple domains, or archived locally as files.

3. Properties

iPatch Identities require only the id and psqr elements.

DID Document properties

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.

3.1. Multikey ID

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.

3.2. PSQR Properties

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.

3.3. psqr.publicIdentity

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.

3.5. psqr.validations

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.

Example iPatch Identity

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
    }
  }