Giter Club home page Giter Club logo

keytransparency's Introduction

Key Transparency

Build Status Go Report Card GoDoc

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.

Using the Key Transparency Client

  1. Install Go 1.7. Set $GOPATH variable to point to your Go workspace directory and add $GOPATH/bin to the $PATH variable.

  2. Install prerequisites, Key Transparency client code, and sync all dependencies

go get -u github.com/kardianos/govendor
go get -u github.com/google/keytransparency/cmd/...
cd $GOPATH/src/github.com/google/keytransparency
govendor sync
  1. Get an OAuth client ID and download the generated JSON file.

  2. Run the client setup tool

./scripts/prepare_client.sh
  1. Set/Update a user's keys.
./keytransparency-client authorized-keys add --generate --type=ecdsa --activate
./keytransparency-client post <email> -d '{"app1": "dGVzdA=="}' --config=./.keytransparency.yaml
{Keys:map[app1:[116 101 115 116]}

Key material is base64 encoded.

Note: Use ./keytransparency-client authorized-keys --help for more information about authorized key managements.

  1. Fetch and verify a user's keys:
./keytransparency-client get <email> --config=.keytransparency.yaml --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" >
./keytransparency-client history <email> --config=.keytransparency.yaml
Epoch |Timestamp                    |Profile
4     |Mon Sep 12 22:23:54 UTC 2016 |keys:<key:"app1" value:"test" >

Running a Key Transparency Cluster

  1. Install
  1. Install Key Transparency
go get -u github.com/mattn/goreman
go get -u github.com/kardianos/govendor
go get -u github.com/google/keytransparency/...
cd $GOPATH/src/github.com/google/keytransparency
govendor sync
  1. Get a service account key and download the generated JSON file.

The service account key is used to verify client OAuth tokens.

  1. Run server setup
./scripts/prepare_server.sh

The tool will build the server binaries, generate keys, and configure the server. Clients will need the following public keys in order to verify server responses:

  • genfiles/vrf-pubkey.pem
  • genfiles/server.crt
  • genfile/p256-pubkey.pem
  1. Run the server and the signer using
goreman start

keytransparency's People

Contributors

adhintz avatar agl avatar cesarghali avatar gdbelvin avatar heyitsanthony avatar prayagverma avatar rektide avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.