cloudproxy

module
v0.0.0-...-b5aa0b6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 30, 2017 License: Apache-2.0

README

This directory contains the source code and design material for the
CloudProxy Project.  This project was started at the Intel Science and
Technology Center for Secure Computing at University of California at
Berkeley.  Google joined the project in January 2013 and is a major
contributor.

The code and accompanying material is licensed for general use under
the Apache 2.0 License. Please consult the LICENSE file for details
and terms.  By using this software you agree to those terms.

The repository contains the complete CloudProxy source and a number of examples
as well as rather complete instructions.  The current version supports both Go
and C++ programming interfaces to Cloudproxy and support for the following "root"
security hosts:
	1. Support for TPM 1.2.
	2. Support for TPM 2.0.
	3. Support for the Soft Tao: a software root of trust which can be used
	   for development on hardware without TPM's.
In the case of TPM 2.0, the TPM can either be a discrete TPM part or a firmware
based TPM.

Cloudproxy runs in or on the following platforms:
	1. A Linux based KVM.
	2. A Linux OS (either running as a VM over KVM or as the "root" platform.
	3. Mac OS-X, version 10.  Macs generally do not have TPMs but can run
	   using the "Soft Tao."  This is very convenient for development.

Each Cloudproxy (Tao) host presents the same programming interface to "hosted
systems" or applications, so you can develop on, for example, a "SoftTao"
based Mac Cloudproxy and run, without programming changes on a root Tao using
a TPM or hosted Tao's.

To get started, follow the "Cloudproxy Nuts and Bolts" tutorial, in Doc 
directory, which comprehensively describes Cloudproxy concepts,
installation and a fully implemented sample application, called simpleexample.
Although the Nuts and Bolts paper is long, you can follow the installation and
simple example sample code by reading only the first half of the document.
Simple example, although simple, covers the entire Cloudproxy API,
called the "Tao." Most applications can be built by simply copying
and pasting sample code from simple example.  Our experience is
that someone can install and build cloudproxy and complete the simpleexample
tutorial in about a day and program relatively complex applications the next
day.  Most installation scripts and tests can also be used, with minor changes
for configuring and running your own applications.  The tutorial covers both
Go and C++ interfaces on a SoftTao running on Mac OS-X or Linux.  It
covers the important concept of Tao Principal Names in depth.

"CloudProxy Deployment Nuts and Bolts" covers complete installation and
configuration information for TPM installations whether directly hosted on
Linux or hosted in a Linux VM running on KVM.  The instructions are also
rather comprehensive and may be copied an pasted in a variety of deployment
scenarios.  "CloudProxy Deployment Nuts and Bolts" also covers important
key management tools and techniques for Cloudproxy applications and hosts.
Since programs are "first class" principals in Cloudproxy and are completely
and unforgeably identified by Cloudproxy for the purpose of authentication
and key management, first time programmers often worry about distribution
and update of new applications and new versions of applications.
"CloudProxy Deployment Nuts and Bolts" describes several simple
mechanisms to do automatic key management and provides prototypical
tools and infrastructure components to generate keys including
foundational "policy keys," certify program and data protection
keys, rotate keys, support key storage hierarchies, provision keys using
a keystore and transfer keys between applications and different versions
of the same applications.  All these tools and techniques are implemented
in this repository.  Simpleexample itself contains a simple tao
library ("taosupport") which allows most applications to interface with
the Tao using a few simple stylized calls.  This library can be used
across a large application set with very little change.

Eric Grosse pointed out that "simple example" may still be a big
"first step," so there is an even simpler starting application called
"simple-http-server" which demonstrates just about the simplest possible
use case.

There are a number of sample applications provided.  These include:
	1. Newfileproxy: This is a new version of the very first
	  "real" cloudproxy application called fileproxy.  The
	   fileproxy application provides confidentiality and
	   integrity protection and access control for files
	   stored in a cloud by a set of cloudproxy service 
	   applications.  Fileproxy demonstrates "insider protection"
	   in a cloud application in an intuitive setting.
	   Newfileproxy is a newer version of a fileproxy. It is
	   simpler than the original and is based on the simpleexample code
	   you learned in the tutorial.  The old version of fileproxy
	   is deprecated.
	2. Mixnet:  This is a cloudproxy based mixnet router and is
	   fully functional.
	3. Roughtime:  This is a secure time implementation based on
	   cloudproxy that can be used to support "secure network time"
	   to cloudproxy or non-cloudproxy programs.
	4. Simple-http-server: A cloudproxy secured http service (server only).

Several older applications remain the distribution but are not maintained. 
They include:
	1. Bidproxy: A secure bidding service that is secure against
	   tampering by the organization conducting the bid.  It protects
	   the confidentiality of bids and designates the winning bid.
	2. Authproxy: A distributed authentication service hosted on
	   Cloudproxy.

The directory Doc also contains older documentation and commentary including the
original Cloudproxy paper by Manferdelli, Roeder and Schneider.  There is
also Docker container support, although we have not kept this current
nor is there extensive use documentation yet.

News: Cloudproxy now has state rollback protection and supports more crypto
suites (as well as enabling adding new crypto suites.  Current crypto suites include
        1. The original "128 bit" security suite which includes aes-128,
	   aes-128-CTR with SHA-256 HMAC and P-256 based Eliptic Curve Public Key support.
        2. A Suite B compliant "192 bit" security suite which includes aes-256,
	   aes-256-CTR with SHA-384 HMAC and P-384 based Eliptic Curve Public Key support.
        3. A new "256 bit" security suite which includes aes-256,
	   aes-256-CTR with SHA-512 HMAC and P-521 based Eliptic Curve Public Key support.

Please send feedback, comments and suggestions and bug reports to
  johnmanferdelli@hotmail.com or j.manferdelli@northeastern.edu
Unless expressly noted in any such submitted material, you agree that any 
feedback, comments or suggestions can be used and distributed under the Apache 
License in this directory.

The Cloudproxy developers --- John Manferdelli, Tom Roeder, Kevin Walsh, Sid Telang,
Albert Kwon.  Thanks to Paul England who answered a number of questions on TPM 2.0.

Directories

Path Synopsis
go
apps/genauth/genauth
Package genauth supports tao auth-code generation from the Go version.
Package genauth supports tao auth-code generation from the Go version.
apps/host
Package host exposes the functionality of a linux_host implementation as a library.
Package host exposes the functionality of a linux_host implementation as a library.
apps/mixnet
Package mixnet is a generated protocol buffer package.
Package mixnet is a generated protocol buffer package.
apps/newfileproxy/common
Package common is a generated protocol buffer package.
Package common is a generated protocol buffer package.
apps/newfileproxy/resourcemanager
Package resourcemanager is a generated protocol buffer package.
Package resourcemanager is a generated protocol buffer package.
apps/roughtime
This contains adapted version of the roughtime client to use Tao.
This contains adapted version of the roughtime client to use Tao.
apps/roughtime/agl_roughtime/config
Package config contains JSON structs for encoding information about Roughtime servers.
Package config contains JSON structs for encoding information about Roughtime servers.
apps/roughtime/agl_roughtime/monotime
Package monotime provides access to the system's monotonic clock.
Package monotime provides access to the system's monotonic clock.
apps/roughtime/agl_roughtime/protocol
Package protocol implements the core of the Roughtime protocol.
Package protocol implements the core of the Roughtime protocol.
apps/roughtime/client
this is an adapted version of the client code to cnonect to cloudproxy.
this is an adapted version of the client code to cnonect to cloudproxy.
apps/roughtime/server
this is an adapted version of the server code in the roughtime for cloudproxy.
this is an adapted version of the server code in the roughtime for cloudproxy.
apps/simpleexample/common
Package simpleexample_messages is a generated protocol buffer package.
Package simpleexample_messages is a generated protocol buffer package.
support_infrastructure/domain_service
Package domain_service is a generated protocol buffer package.
Package domain_service is a generated protocol buffer package.
support_infrastructure/secret_service
Package secret_service is a generated protocol buffer package.
Package secret_service is a generated protocol buffer package.
support_libraries/domain_policy
Package domain_policy is a generated protocol buffer package.
Package domain_policy is a generated protocol buffer package.
support_libraries/protected_objects
Package protected_objects is a generated protocol buffer package.
Package protected_objects is a generated protocol buffer package.
support_libraries/secret_disclosure_support
Package secret_disclosure is a generated protocol buffer package.
Package secret_disclosure is a generated protocol buffer package.
support_libraries/tao_support
Package tao_support is a generated protocol buffer package.
Package tao_support is a generated protocol buffer package.
tao
Package tao is a generated protocol buffer package.
Package tao is a generated protocol buffer package.
tao/auth
Package auth supports Tao authorization and authentication, primarily by defining and implementing a logic for describing principals, their trust relationships, and their beliefs.
Package auth supports Tao authorization and authentication, primarily by defining and implementing a logic for describing principals, their trust relationships, and their beliefs.
tpm2
Package tpm2 is a generated protocol buffer package.
Package tpm2 is a generated protocol buffer package.
util/options
Package options works in concert with flag, adding prettier printing of options.
Package options works in concert with flag, adding prettier printing of options.
util/protorpc
Package protorpc implements a protobuf-based ClientCodec and ServerCodec for the rpc package.
Package protorpc implements a protobuf-based ClientCodec and ServerCodec for the rpc package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL