keytransparency

A transparent and secure way to look up public keys.

Github星跟踪图

Key Transparency

GoDoc
Build Status
Go Report Card
codecov

Key Transparency Logo

Key Transparency provides a lookup service for generic records and a public,
tamper-proof audit log of all record changes. While being publicly auditable,
individual records are only revealed in response to queries for specific IDs.

Key Transparency can be used as a public key discovery service to authenticate
users and provides a mechanism to keep the service accountable. It can be used
by account owners to reliably see what keys have been
associated with their account, and it can be used by senders to see how long an
account has been active and stable before trusting it.

Key Transparency is inspired by CONIKS
and Certificate Transparency.
It is a work-in-progress with the following
milestones
under
development.

Key Transparency Client

Setup

  1. Install Go 1.13.
  2. go get github.com/google/keytransparency/cmd/keytransparency-client

Client operations

Generate a private key

PASSWORD=
keytransparency-client authorized-keys create-keyset --password=${PASSWORD}
keytransparency-client authorized-keys list-keyset --password=${PASSWORD}

The create-keyset command will create a .keyset file in the user's working directory.
To specify custom directory use --keyset-file or -k shortcut.

NB A default for the Key Transparency server URL is being used here. The default value is "35.202.56.9:443". The flag --kt-url may be used to specify the URL of Key Transparency server explicitly.

Publish the public key

  1. Get an OAuth client ID and download the generated JSON file to client_secret.json.
keytransparency-client post user@domain.com \
--client-secret=client_secret.json \
--insecure \
--password=${PASSWORD} \
--data='dGVzdA==' #Base64

Get and verify a public key

keytransparency-client get <email> --insecure --verbose
✓ Commitment verified.
✓ VRF verified.
✓ Sparse tree proof verified.
✓ Signed Map Head signature verified.
CT ✓ STH signature verified.
CT ✓ Consistency proof verified.
CT   New trusted STH: 2016-09-12 15:31:19.547 -0700 PDT
CT ✓ SCT signature verified. Saving SCT for future inclusion proof verification.
✓ Signed Map Head CT inclusion proof verified.
keys:<key:"app1" value:"test" >

Verify key history

keytransparency-client history <email> --insecure
Revision, Timestamp, Profile
4, Mon Sep 12 22:23:54 UTC 2016, keys:<key:"app1" value:"test" >

Checks

Running the server

  1. OpenSSL
  2. Docker
    • Docker Engine 1.17.6+ docker version -f '{{.Server.APIVersion}}'
    • Docker Compose 1.11.0+ docker-compose --version
go get github.com/google/keytransparency/...
go get github.com/google/trillian/...
cd $(go env GOPATH)/src/github.com/google/keytransparency
./scripts/prepare_server.sh -f
docker-compose -f docker-compose.yml docker-compose.prod.yml up
  1. Watch it Run

Development and Testing

Key Transparency and its Trillian backend
use a MySQL database,
which must be setup in order for the Key Transparency tests to work.

docker-compose up -d db will launch the database in the background.

Directory structure

The directory structure of Key Transparency is as follows:

Support

主要指标

概览
名称与所有者google/keytransparency
主编程语言Go
编程语言Go (语言数: 3)
平台
许可证Apache License 2.0
所有者活动
创建于2015-06-09 23:55:20
推送于2021-07-05 06:39:36
最后一次提交2020-11-04 17:48:43
发布数8
最新版本名称v0.3.0 (发布于 )
第一版名称v0.1 (发布于 )
用户参与
星数1.6k
关注者数65
派生数151
提交数1.9k
已启用问题?
问题数348
打开的问题数43
拉请求数1091
打开的拉请求数13
关闭的拉请求数187
项目设置
已启用Wiki?
已存档?
是复刻?
已锁定?
是镜像?
是私有?