Recommend this page to a friend! |
Download |
Info | Files | Install with Composer | Download | Reputation | Support forum | Blog | Links |
Ratings | Unique User Downloads | Download Rankings | ||||
Not yet rated by the users | Total: 113 | All time: 9,598 This week: 37 |
Version | License | PHP version | Categories | |||
chronicle 1.0.3 | MIT/X Consortium ... | 7 | Tools, Cryptography, Logging, Security, P... |
<h1 id="chronicle"><img src="https://paragonie.com/static/images/chronicle-logo.svg" width="50" /> Chronicle</h1>
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.
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.
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.
By inserting an encrypted message and then revealing the key at a later date, you can provide strong evidence of prior knowledge.
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.
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.
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:
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 (94) |
File | Role | Description | ||
---|---|---|---|---|
.github (1 directory) | ||||
bin (14 files) | ||||
docs (7 files, 2 directories) | ||||
logs (1 file) | ||||
public (3 files) | ||||
sql (1 file, 3 directories) | ||||
src (5 files, 1 directory) | ||||
templates (1 file) | ||||
tests (2 directories) | ||||
cli-autoload.php | Aux. | Auxiliary script | ||
composer.json | Data | Auxiliary data | ||
phpunit.xml | Data | Auxiliary data | ||
psalm.xml | Data | Auxiliary data | ||
README.md | Doc. | Documentation |
Files (94) | / | bin |
File | Role | Description |
---|---|---|
add-mirror.php | Example | Example script |
allow-null-prevhash.php | Example | Example script |
change-replica-source-publickey.php | Example | Example script |
create-client.php | Example | Example script |
cross-sign.php | Example | Example script |
fix-nulls.php | Example | Example script |
install.php | Example | Example script |
keygen.php | Example | Example script |
list-mirrors.php | Example | Example script |
make-tables.php | Example | Example script |
remove-mirror.php | Example | Example script |
replicate.php | Example | Example script |
scheduled-tasks.php | Example | Example script |
write_file.php | Example | Example script |
Files (94) | / | docs |
File | Role | Description | ||
---|---|---|---|---|
install-guides (1 file) | ||||
internals (3 files) | ||||
01-setup.md | Data | Auxiliary data | ||
02-publish.md | Example | Example script | ||
03-cross-signing.md | Data | Auxiliary data | ||
04-replication.md | Data | Auxiliary data | ||
05-instances.md | Data | Auxiliary data | ||
06-config.md | Data | Auxiliary data | ||
README.md | Doc. | Documentation |
Files (94) | / | docs | / | internals |
File | Role | Description |
---|---|---|
01-design-philosophy.md | Data | Auxiliary data |
02-sql-tables.md | Data | Auxiliary data |
README.md | Doc. | Documentation |
Files (94) | / | public |
File | Role | Description |
---|---|---|
.htaccess | Data | Auxiliary data |
chronicle-logo.svg | Data | Auxiliary data |
index.php | Example | Example script |
Files (94) | / | sql |
Files (94) | / | sql | / | mysql |
File | Role | Description |
---|---|---|
00-local.sql | Data | Auxiliary data |
01-remote.sql | Data | Auxiliary data |
02-v1.3.0.sql | Data | Auxiliary data |
Files (94) | / | sql | / | pgsql |
File | Role | Description |
---|---|---|
00-local.sql | Data | Auxiliary data |
01-remote.sql | Data | Auxiliary data |
02-v1.3.0.sql | Data | Auxiliary data |
Files (94) | / | sql | / | sqlite |
File | Role | Description |
---|---|---|
00-local.sql | Data | Auxiliary data |
01-remote.sql | Data | Auxiliary data |
02-v1.3.0.sql | Data | Auxiliary data |
Files (94) | / | src |
File | Role | Description | ||
---|---|---|---|---|
Chronicle (6 files, 5 directories) | ||||
database.php | Aux. | Auxiliary script | ||
dependencies.php | Example | Example script | ||
middleware.php | Aux. | Auxiliary script | ||
routes.php | Class | Class source | ||
settings.php | Aux. | Auxiliary script |
Files (94) | / | src | / | Chronicle |
File | Role | Description | ||
---|---|---|---|---|
Error (1 file) | ||||
Exception (14 files) | ||||
Handlers (7 files) | ||||
Middleware (2 files) | ||||
Process (3 files) | ||||
Chronicle.php | Class | Class source | ||
HandlerInterface.php | Class | Class source | ||
MiddlewareInterface.php | Class | Class source | ||
Pagination.php | Class | Class source | ||
ResponseCache.php | Class | Class source | ||
Scheduled.php | Class | Class source |
Files (94) | / | src | / | Chronicle | / | Error |
File | Role | Description |
---|---|---|
ConfigurationError.php | Class | Class source |
Files (94) | / | src | / | Chronicle | / | Exception |
File | Role | Description |
---|---|---|
AccessDenied.php | Class | Class source |
BaseException.php | Class | Class source |
CacheMisuseException.php | Class | Class source |
ChainAppendException.php | Class | Class source |
ClientNotFound.php | Class | Class source |
FilesystemException.php | Class | Class source |
HashNotFound.php | Class | Class source |
HTTPException.php | Class | Class source |
InstanceNotFoundException.php | Class | Class source |
InvalidInstanceException.php | Class | Class source |
ReplicationSourceNotFound.php | Class | Class source |
SecurityViolation.php | Class | Class source |
TargetNotFound.php | Class | Class source |
TimestampNotProvided.php | Class | Class source |
Files (94) | / | src | / | Chronicle | / | Handlers |
File | Role | Description |
---|---|---|
Index.php | Class | Class source |
Lookup.php | Class | Class source |
Mirrors.php | Class | Class source |
Publish.php | Class | Class source |
Register.php | Class | Class source |
Replica.php | Class | Class source |
Revoke.php | Class | Class source |
Files (94) | / | src | / | Chronicle | / | Middleware |
File | Role | Description |
---|---|---|
CheckAdminSignature.php | Class | Class source |
CheckClientSignature.php | Class | Class source |
Files (94) | / | src | / | Chronicle | / | Process |
File | Role | Description |
---|---|---|
Attest.php | Class | Class source |
CrossSign.php | Class | Class source |
Replicate.php | Class | Class source |
Files (94) | / | tests | / | cli |
File | Role | Description | ||
---|---|---|---|---|
commands (2 files) | ||||
cleanup.php | Example | Example script | ||
cli-include.php | Example | Example script | ||
command-preamble.php | Example | Example script | ||
README.md | Doc. | Documentation | ||
start.php | Example | Example script | ||
test.sh | Data | Auxiliary data |
Files (94) | / | tests | / | cli | / | commands |
File | Role | Description |
---|---|---|
private-endpoints.php | Example | Example script |
public-endpoints.php | Example | Example script |
Files (94) | / | tests | / | unit |
File | Role | Description |
---|---|---|
ChronicleTest.php | Class | Class source |
ResponseCacheTest.php | Class | Class source |
The PHP Classes site has supported package installation using the Composer tool since 2013, as you may verify by reading this instructions page. |
Install with Composer |
Version Control | Unique User Downloads | Download Rankings | |||||||||||||||
100% |
|
|
Applications that use this package |
If you know an application of this package, send a message to the author to add a link here.