PHP Classes

Chronicle: Append arbitrary data to a storage container

Recommend this page to a friend!
  Info   View files View files (94)   DownloadInstall with Composer Download .zip   Reputation   Support forum   Blog    
Last Updated Ratings Unique User Downloads Download Rankings
2023-03-19 (19 days ago) RSS 2.0 feedNot yet rated by the usersTotal: 110 This week: 2All time: 9,540 This week: 89Up
Version License PHP version Categories
chronicle 1.0.3MIT/X Consortium ...7Utilities and Tools, Cryptography, Lo..., S..., P...
Description 

Author

Paragon Initiative Enterprises


Contributor

This package can be used to append arbitrary data to a storage container.

It implements a microservice built with Slim Framework that can append cryptographically secure data using a given encryption key.

The data is stored a given database using PDO.

Innovation Award
PHP Programming Innovation award nominee
February 2018
Number 5
Blockchains are means to store sequences of blocks of data that have a relation between them.

Nowadays virtual currencies like bitcoin use blockchains to store data related to transactions that involve currency amounts using cryptgraphy to store the block data in a secure way.

This package provides a PHP solution to append data to blockchains stored in a database using PDO.

Manuel Lemos
Picture of Scott Arciszewski
  Performance   Level  
Name: Scott Arciszewski <contact>
Classes: 36 packages by
Country: United States United States
Innovation award
Innovation award
Nominee: 28x

Winner: 1x

Details

<h1 id="chronicle"><img src="https://paragonie.com/static/images/chronicle-logo.svg" width="50" /> Chronicle</h1>

Build Status Latest Stable Version Latest Unstable Version License

Chronicle is a self-hostable microservice, built with Slim Framework, which enables authorized users to commit arbitrary data to an immutable, append-only public ledger.

Chronicle is superior to "blockchain" solutions for most real-world technical problems that don't involve proofs-of-work or Byzantine fault tolerance.

More precisely, Chronicle is a self-hostable microservice exposing an append-only, cryptographically-secure hash chain data structure that accepts arbitrary data from authorized clients through an HTTP API, secured by Sapient, that can be used as a building block for building a cryptographic audit trail similar to Certificate Transparency.

> Chronicle will make you question the need for blockchain technology.

Chronicle was developed by Paragon Initiative Enterprises as part of our continued efforts to make the Internet more secure.

Getting Started with Chronicle (Documentation)

Client-Side Software that Interacts with Chronicle

PHP

What does Chronicle do?

Chronicle allows trusted clients to send data to be included in an immutable, auditable, cryptographic permanent record.

Furthermore, Chronicle has cross-signing and many-to-one replication built-in, which, when used, greatly enhances the auditability and availability of the data written to your local Chronicle instance.

What problems do Chronicle solve?

Chain of Custody

If you have sensitive information, you can write metadata about client access times to a private Chronicle in order to have verifiable, tamper-resistant proof that specific records were accessed by specific user accounts at a specific time.

Proof of Knowledge

By inserting an encrypted message and then revealing the key at a later date, you can provide strong evidence of prior knowledge.

Userbase Consistency Verification

For building a secure code delivery system, committing some metadata and a SHA256 or BLAKE2 hash of each update file to a publicly verifiable Chronicle allows users to compile a whitelist of known update files to help block trojan horse malware (in the event of a compromised update server).

For best results, combine with cryptographic signatures (which may also be registered in the Chronicle) and reproducible builds.

Auditable Security Event Logging

Because of Chronicle's cryptographically assured append-only properties, and its use of modern elliptic curve digital signatures, Chronicle is a good fit for integrating with SIEM solutions and internal SOCs.

How does it work?

All communications are secured with Sapient. Sapient ensures that all published messages are signed with Ed25519. All messages are committed to a hash chain data structure backed by BLAKE2b, which we call Blakechain for short.

There are two hashes for each message:

  1. The hash of the current message, whose BLAKE2b key is the previous message's block. This is just called `currhash` internally.
  2. The summary hash, which is a BLAKE2b hash of all message hashes to date, concatenated together in order. This is called `summaryhash` internally.

The rationale for using the previous message's hash was to add a degree of domain separation in the event that a BLAKE2b collision attack is ever discovered. The keying should reduce the likelihood of any practical attacks, especially if the chain is updated rapidly.

  Files folder image Files  
File Role Description
Files folder image.github (1 directory)
Files folder imagebin (14 files)
Files folder imagedocs (7 files, 2 directories)
Files folder imagelogs (1 file)
Files folder imagepublic (3 files)
Files folder imagesql (1 file, 3 directories)
Files folder imagesrc (5 files, 1 directory)
Files folder imagetemplates (1 file)
Files folder imagetests (2 directories)
Accessible without login Plain text file cli-autoload.php Aux. Auxiliary script
Accessible without login Plain text file composer.json Data Auxiliary data
Accessible without login Plain text file phpunit.xml Data Auxiliary data
Accessible without login Plain text file psalm.xml Data Auxiliary data
Accessible without login Plain text file README.md Doc. Documentation

  Files folder image Files  /  .github  
File Role Description
Files folder imageworkflows (1 file)

  Files folder image Files  /  .github  /  workflows  
File Role Description
  Accessible without login Plain text file ci.yml Data Auxiliary data

  Files folder image Files  /  bin  
File Role Description
  Accessible without login Plain text file add-mirror.php Example Example script
  Accessible without login Plain text file allow-null-prevhash.php Example Example script
  Accessible without login Plain text file change-replica-source-publickey.php Example Example script
  Accessible without login Plain text file create-client.php Example Example script
  Accessible without login Plain text file cross-sign.php Example Example script
  Accessible without login Plain text file fix-nulls.php Example Example script
  Accessible without login Plain text file install.php Example Example script
  Accessible without login Plain text file keygen.php Example Example script
  Accessible without login Plain text file list-mirrors.php Example Example script
  Accessible without login Plain text file make-tables.php Example Example script
  Accessible without login Plain text file remove-mirror.php Example Example script
  Accessible without login Plain text file replicate.php Example Example script
  Accessible without login Plain text file scheduled-tasks.php Example Example script
  Accessible without login Plain text file write_file.php Example Example script

  Files folder image Files  /  docs  
File Role Description
Files folder imageinstall-guides (1 file)
Files folder imageinternals (3 files)
  Accessible without login Plain text file 01-setup.md Data Auxiliary data
  Accessible without login Plain text file 02-publish.md Example Example script
  Accessible without login Plain text file 03-cross-signing.md Data Auxiliary data
  Accessible without login Plain text file 04-replication.md Data Auxiliary data
  Accessible without login Plain text file 05-instances.md Data Auxiliary data
  Accessible without login Plain text file 06-config.md Data Auxiliary data
  Accessible without login Plain text file README.md Doc. Documentation

  Files folder image Files  /  docs  /  install-guides  
File Role Description
  Accessible without login Plain text file ubuntu-16-04.md Data Auxiliary data

  Files folder image Files  /  docs  /  internals  
File Role Description
  Accessible without login Plain text file 01-design-philosophy.md Data Auxiliary data
  Accessible without login Plain text file 02-sql-tables.md Data Auxiliary data
  Accessible without login Plain text file README.md Doc. Documentation

  Files folder image Files  /  logs  
File Role Description
  Accessible without login Plain text file README.md Doc. Documentation

  Files folder image Files  /  public  
File Role Description
  Accessible without login Plain text file .htaccess Data Auxiliary data
  Accessible without login Plain text file chronicle-logo.svg Data Auxiliary data
  Accessible without login Plain text file index.php Example Example script

  Files folder image Files  /  sql  
File Role Description
Files folder imagemysql (3 files)
Files folder imagepgsql (3 files)
Files folder imagesqlite (3 files)
  Accessible without login Plain text file README.md Doc. Documentation

  Files folder image Files  /  sql  /  mysql  
File Role Description
  Accessible without login Plain text file 00-local.sql Data Auxiliary data
  Accessible without login Plain text file 01-remote.sql Data Auxiliary data
  Accessible without login Plain text file 02-v1.3.0.sql Data Auxiliary data

  Files folder image Files  /  sql  /  pgsql  
File Role Description
  Accessible without login Plain text file 00-local.sql Data Auxiliary data
  Accessible without login Plain text file 01-remote.sql Data Auxiliary data
  Accessible without login Plain text file 02-v1.3.0.sql Data Auxiliary data

  Files folder image Files  /  sql  /  sqlite  
File Role Description
  Accessible without login Plain text file 00-local.sql Data Auxiliary data
  Accessible without login Plain text file 01-remote.sql Data Auxiliary data
  Accessible without login Plain text file 02-v1.3.0.sql Data Auxiliary data

  Files folder image Files  /  src  
File Role Description
Files folder imageChronicle (6 files, 5 directories)
  Accessible without login Plain text file database.php Aux. Auxiliary script
  Accessible without login Plain text file dependencies.php Example Example script
  Accessible without login Plain text file middleware.php Aux. Auxiliary script
  Accessible without login Plain text file routes.php Class Class source
  Accessible without login Plain text file settings.php Aux. Auxiliary script

  Files folder image Files  /  src  /  Chronicle  
File Role Description
Files folder imageError (1 file)
Files folder imageException (14 files)
Files folder imageHandlers (7 files)
Files folder imageMiddleware (2 files)
Files folder imageProcess (3 files)
  Accessible without login Plain text file Chronicle.php Class Class source
  Accessible without login Plain text file HandlerInterface.php Class Class source
  Accessible without login Plain text file MiddlewareInterface.php Class Class source
  Accessible without login Plain text file Pagination.php Class Class source
  Accessible without login Plain text file ResponseCache.php Class Class source
  Accessible without login Plain text file Scheduled.php Class Class source

  Files folder image Files  /  src  /  Chronicle  /  Error  
File Role Description
  Accessible without login Plain text file ConfigurationError.php Class Class source

  Files folder image Files  /  src  /  Chronicle  /  Exception  
File Role Description
  Accessible without login Plain text file AccessDenied.php Class Class source
  Accessible without login Plain text file BaseException.php Class Class source
  Accessible without login Plain text file CacheMisuseException.php Class Class source
  Accessible without login Plain text file ChainAppendException.php Class Class source
  Accessible without login Plain text file ClientNotFound.php Class Class source
  Accessible without login Plain text file FilesystemException.php Class Class source
  Accessible without login Plain text file HashNotFound.php Class Class source
  Accessible without login Plain text file HTTPException.php Class Class source
  Accessible without login Plain text file InstanceNotFoundException.php Class Class source
  Accessible without login Plain text file InvalidInstanceException.php Class Class source
  Accessible without login Plain text file ReplicationSourceNotFound.php Class Class source
  Accessible without login Plain text file SecurityViolation.php Class Class source
  Accessible without login Plain text file TargetNotFound.php Class Class source
  Accessible without login Plain text file TimestampNotProvided.php Class Class source

  Files folder image Files  /  src  /  Chronicle  /  Handlers  
File Role Description
  Accessible without login Plain text file Index.php Class Class source
  Accessible without login Plain text file Lookup.php Class Class source
  Accessible without login Plain text file Mirrors.php Class Class source
  Accessible without login Plain text file Publish.php Class Class source
  Accessible without login Plain text file Register.php Class Class source
  Accessible without login Plain text file Replica.php Class Class source
  Accessible without login Plain text file Revoke.php Class Class source

  Files folder image Files  /  src  /  Chronicle  /  Middleware  
File Role Description
  Accessible without login Plain text file CheckAdminSignature.php Class Class source
  Accessible without login Plain text file CheckClientSignature.php Class Class source

  Files folder image Files  /  src  /  Chronicle  /  Process  
File Role Description
  Accessible without login Plain text file Attest.php Class Class source
  Accessible without login Plain text file CrossSign.php Class Class source
  Accessible without login Plain text file Replicate.php Class Class source

  Files folder image Files  /  templates  
File Role Description
  Accessible without login Plain text file index.phtml Data Auxiliary data

  Files folder image Files  /  tests  
File Role Description
Files folder imagecli (6 files, 1 directory)
Files folder imageunit (2 files)

  Files folder image Files  /  tests  /  cli  
File Role Description
Files folder imagecommands (2 files)
  Accessible without login Plain text file cleanup.php Example Example script
  Accessible without login Plain text file cli-include.php Example Example script
  Accessible without login Plain text file command-preamble.php Example Example script
  Accessible without login Plain text file README.md Doc. Documentation
  Accessible without login Plain text file start.php Example Example script
  Accessible without login Plain text file test.sh Data Auxiliary data

  Files folder image Files  /  tests  /  cli  /  commands  
File Role Description
  Accessible without login Plain text file private-endpoints.php Example Example script
  Accessible without login Plain text file public-endpoints.php Example Example script

  Files folder image Files  /  tests  /  unit  
File Role Description
  Accessible without login Plain text file ChronicleTest.php Class Class source
  Accessible without login Plain text file ResponseCacheTest.php Class Class source

 Version Control Unique User Downloads Download Rankings  
 100%
Total:110
This week:2
All time:9,540
This week:89Up