calybris1.3.0

1.3.0Verify it yourself · 1.3.0

Don't take the operator's word for it. Check the log.

This is a real, public decision log: 1,000 decisions made by calybris-core, and a checkpoint that commits to all of them. Your browser checks it now with calybris-core 1.3.0 compiled to WebAssembly, and fetches the Bitcoin block from two public explorers. Nothing here asks you to trust calybris.tech.

Loading the verifier…

✓

What was checked, and by whose word

Each line is a separate check. They are not equally strong: the operator's own signature proves nothing about honesty, and the witness here is run by the maintainer.

↯

Try to break it

Pick an attack on the real log. Each time, your browser re-checks all 1,000 decisions against the signed checkpoint. Nothing leaves this tab.

Checking the log…

The summary above follows along: its last line turns red while the log is edited.

≠

Would an ordinary log catch it?

The same attacks against three ways of keeping a decision record. The first three rows are what you just tried; the rest are the operator cheating on its own record.

AttackDatabase logSigned hash chainCalybris 1.3
Change a past decision✗✓✓
Delete or reorder decisions✗✓✓
Cut the latest decisions✗✗✓ signed checkpoint
Quietly change the rules✗✗✓ rules' fingerprint in every record
Rewrite the whole log and sign it again✗✗✓ witness, timestamp, Bitcoin
Backdate the record✗✗✓ RFC 3161, Bitcoin
Show two auditors two different logs✗✗✓ witness

A signature and a hash chain catch changes made by someone else. Protection against the operator itself comes from outside parties: a witness that remembers every checkpoint it signed, a timestamping authority and Bitcoin. The timestamping authority and Bitcoin are independent of Calybris already. The witness on this demo log is run by the maintainer, so the last row shows the mechanism, not yet an independent guarantee.

1

The checkpoint

Three lines say everything about the log: its name, how many decisions it holds, and the Merkle root of all of them. Change any past decision and the root changes.


  
2

Who signed it

The log signs its own checkpoint. A witness signs it too, but only after checking that it extends every checkpoint the witness signed before, so a log cannot show two histories to two witnesses.

3

When it existed

Two parties that have nothing to do with Calybris dated the signed checkpoint: a timestamping authority, and the Bitcoin blockchain. Neither can be backdated by the operator.

4

The 1,000 decisions

Your browser downloads the whole decision log, checks that each record hashes the one before it, and recomputes the Merkle root. Then pick one decision and check it alone, with ten hashes.

5

Check it without Calybris

Everything on this page is in one bundle. The commands below use OpenSSL, OpenTimestamps and a Python script written from the specifications with no Calybris code in it.

Download the bundle (.zip)

python3 verify_bundle.py .

openssl ts -verify -data 000001.checkpoint.signed -in 000001.checkpoint.signed.tsr \
    -CAfile freetsa-ca.crt -untrusted freetsa-tsa.crt

# Bitcoin: drop 000001.checkpoint.signed.ots and 000001.checkpoint.signed
# on https://opentimestamps.org, or: ots verify 000001.checkpoint.signed.ots

The files one by one are in /verify/bundle/, with VERIFY.md explaining each.

!

What this does not show