sq-pki - Man Page

Authenticate certs using the Web of Trust

Synopsis

sq pki authenticate [OPTIONS] FINGERPRINT|KEYID USERID
sq pki lookup [OPTIONS] USERID
sq pki identify [OPTIONS] FINGERPRINT|KEYID
sq pki vouch [OPTIONS]  SUBCOMMAND
sq pki link [OPTIONS]  SUBCOMMAND
sq pki path [OPTIONS] FINGERPRINT|KEYID USERID

Description

Authenticate certs using the Web of Trust.

The "Web of Trust" is a decentralized trust model popularized by PGP. It is a superset of X.509, which is a hierarchical trust model, and is the most popular trust model on the public internet today.  As used on the public internet, however, X.509 relies on a handful of global certification authorities (CAs) who often undermine its security.

The Web of Trust is more nuanced than X.509.  Using the Web of Trust, require multiple, independent paths to authenticate a binding by only partially trusting CAs.  This prevents a single bad actor from compromising their security.  And those who have stronger security requirements can use the Web of Trust in a completely decentralized manner where only the individuals they select – who are not necessarily institutions – act as trusted introducers.

Subcommands

sq pki authenticate

Authenticate a binding.

Authenticate a binding (a certificate and User ID) by looking for a path from the trust roots to the specified binding in the Web of Trust.  Because certifications may express uncertainty (i.e., certifications may be marked as conveying only partial or marginal trust), multiple paths may be needed.

An error is return if no binding could be authenticated to the specified level (by default: fully authenticated, i.e., a trust amount of 120).

If any valid paths to the binding are found, they are printed on stdout whether they are sufficient to authenticate the binding or not.

sq pki lookup

Lookup the certificates associated with a User ID.

Identifies authenticated bindings (User ID and certificate pairs) where the User ID matches the specified User ID.

An error is return if no binding could be authenticated to the specified level (by default: fully authenticated, i.e., a trust amount of 120).

If a binding could be partially authenticated (i.e., its trust amount is greater than 0), then the binding is displayed, even if the trust is below the specified threshold.

sq pki identify

Identify a certificate.

Identify a certificate by finding authenticated bindings (User ID and certificate pairs).

An error is return if no binding could be authenticated to the specified level (by default: fully authenticated, i.e., a trust amount of 120).

If a binding could be partially authenticated (i.e., its trust amount is greater than 0), then the binding is displayed, even if the trust is below the specified threshold.

sq pki vouch

Manage certifications.

A vouch is a potentially public statement that something is true.  In OpenPGP there are two main types of statements that you can make: certifications, and authorizations.

You can assert that a certificate belongs to a particular entity. This says nothing about an entity's trustworthiness.  For instance, you might certify `bob@nsa.gov` for a given certificate.  This just means that you think the person behind the email address `bob@nsa.gov` really controls that certificate.  That's a useful statement to make even if you don't trust that person to act in your interest.

Alternatively you can say that you believe a certificate is a reasonable trusted introducer.  A trusted introducer is a third-party that you authorize to make introductions.  For instance, your bank might have a certification authority (CA).  If you verify the CA's fingerprint, you can authorize it to make certifications.  That means that sq will use those certifications almost as if you made them. This is convenient as now you can authenticate any of the bank's employee.

Authorizing a trusted introducer gives the trusted introducer a lot of power.  You can constrain the amount of power that you give it by saying that it is only authorized to certify user IDs that have an email address in one or more domains, for instance.  In this way, you can take advantage of the places where your and a CA's interests are aligned, and protect yourself from potentially malicious actions.  For example, you could authorize your bank's CA to certify user IDs that have an email address in `bank.com`.  sq will then ignore any other certifications made by the CA.

sq pki path

Verify the specified path.

A path is a sequence of certificates starting at the root, and a User ID.  This function checks that each path segment has a valid certification, which also satisfies any constraints (trust amount, trust depth, regular expressions).

If a valid path is not found, then this subcommand also lints the path.  In particular, it report if any certifications are insufficient, e.g., not enough trust depth, or invalid, e.g., because they use SHA-1, but the use of SHA-1 has been disabled.

Examples

sq pki authenticate

Authenticate a specific binding.

    sq pki authenticate EB28F26E2739A4870ECC47726F0073F60FD0CBF0 \
    "Alice <alice@example.org>"

Check whether we can authenticate any user ID with the specified email address for the given certificate.

    sq pki authenticate EB28F26E2739A4870ECC47726F0073F60FD0CBF0 \
    --email alice@example.org

sq pki lookup

Lookup certificates that can be authenticated for the given user ID.

    sq pki lookup "Alice <alice@example.org>"

Lookup certificates that have a user ID with the specified email address, and that user ID can be authenticated.

    sq pki lookup --email alice@example.org

sq pki identify

Identify the user IDs that can be authenticated for the certificate.

    sq pki identify EB28F26E2739A4870ECC47726F0073F60FD0CBF0

List all user IDs that have that have been certified by anyone.

    sq pki identify --gossip \
    511257EBBF077B7AEDAE5D093F68CB84CE537C9A

sq pki path

Verify that Alice ceritified a particular User ID for Bob's certificate.

    sq pki path EB28F26E2739A4870ECC47726F0073F60FD0CBF0 \
    511257EBBF077B7AEDAE5D093F68CB84CE537C9A \

"Bob <bob@example.org>"

See Also

sq(1), sq-pki-authenticate(1), sq-pki-lookup(1), sq-pki-identify(1), sq-pki-vouch(1), sq-pki-link(1), sq-pki-path(1).

For the full documentation see <https://book.sequoia-pgp.org>.

Version

0.39.0 (sequoia-openpgp 1.21.2)

Referenced By

sq(1), sq-pki-authenticate(1), sq-pki-identify(1), sq-pki-link(1), sq-pki-link-add(1), sq-pki-link-authorize(1), sq-pki-link-list(1), sq-pki-link-retract(1), sq-pki-lookup(1), sq-pki-path(1), sq-pki-vouch(1), sq-pki-vouch-authorize(1), sq-pki-vouch-certify(1).

0.39.0 Sequoia PGP