Pelz is an open source project about managing keys within a service for other applications. Currently, pelz provides the ability to load keys which can then be used to wrap or unwrap other keys (or data). The key table and wrapping/unwrapping functionality is implemented within an Intel Software Guard eXtensions (SGX) trusted-execution environment. This means that the pelz encryption/decryption operations, and the cryptographic keys employed, can be obscured even from the operating system and privileged users that administer the system. Further, pelz functionality can be hosted on commodity (non-specialized) computing platforms.
Pelz provides a socket interface to other programs to request AES key wrap/unwrap. The request and response are JavaScript Object Notation (JSON) formatted. The expected JSON structure is described below. The location of key encryption keys (KEKs) is specified through a URI. The URI can identify a file, a key server destination, etc. The schemes currently implemented are specified below.
The source code comes with a script that establishes pelz as a Linux service running in the background. Instructions can be found in the INSTALL.
The source code comes a script to install or uninstall the java files required to build the PelzCryptoService with Apache Accumulo. Instruction can be found in the INSTALL. Pelz has been tested against Apache Accumulo commit a1a1b72.
Pelz has been tested against Kmyth commit f2c818e.
This section describes the expected certificate, JSON and URI formats.
The certificates used for load cert/private are expected to be converted to a DER format before being sealed.
The JSON objects can be in two forms: requests and responses.
Examples:
JSON Request for AES Key Wrap
JSON Request for AES Key Unwrap
In addition to the fields from unsigned requests, described above, signed requests include:
Examples:
Although any URI scheme could be supported, we currently only support reading from a filesystem or FTP.
Pelz is an open source project about managing keys within a service for other applications. Currently, pelz provides the ability to load keys which can then be used to wrap or unwrap other keys (or data). The key table and wrapping/unwrapping functionality is implemented within an Intel Software Guard eXtensions (SGX) trusted-execution environment. This means that the pelz encryption/decryption operations, and the cryptographic keys employed, can be obscured even from the operating system and privileged users that administer the system. Further, pelz functionality can be hosted on commodity (non-specialized) computing platforms.
Pelz provides a socket interface to other programs to request AES key wrap/unwrap. The request and response are JavaScript Object Notation (JSON) formatted. The expected JSON structure is described below. The location of key encryption keys (KEKs) is specified through a URI. The URI can identify a file, a key server destination, etc. The schemes currently implemented are specified below.
The source code comes with a script that establishes pelz as a Linux service running in the background. Instructions can be found in the INSTALL.
The source code comes a script to install or uninstall the java files required to build the PelzCryptoService with Apache Accumulo. Instruction can be found in the INSTALL. Pelz has been tested against Apache Accumulo commit a1a1b72.
Pelz has been tested against Kmyth commit f2c818e.
This section describes the expected certificate, JSON and URI formats.
The certificates used for load cert/private are expected to be converted to a DER format before being sealed.
The JSON objects can be in two forms: requests and responses.
Examples:
JSON Request for AES Key Wrap
JSON Request for AES Key Unwrap
In addition to the fields from unsigned requests, described above, signed requests include:
Examples:
Although any URI scheme could be supported, we currently only support reading from a filesystem or FTP.