完全性
このアーカイブを自分で検証する。
このアーカイブに同梱されるすべてのファイルには、公開された SHA-256 ハッシュがあります。このページはブラウザに標準で備わっている Web Crypto API を用いて、それらのハッシュをあなたのブラウザ上で再計算し、マニフェストと照合します。検証経路のなかで kakao.io のサーバーエンドポイントは一切信頼されません。ソースリポジトリからあなたの画面に至るまでの間に何らかの改竄があれば、検査は明白に失敗します。
cacao-origins.json を検査
すべてのソースファイルを検査
特定の原産地レコードを検査
コマンドラインからデータセットのハッシュを検証する
ブラウザのコードに頼りたくない場合でも、同じ検査は標準的な Unix ツールで簡単に行えます。
# Verify the dataset hash matches:
curl -s https://kakao.io/data/cacao-origins.json | shasum -a 256
# Compare against the hash in:
curl -s https://kakao.io/.well-known/source-manifest.json \
| jq '.files["data/cacao-origins.json"]'
OpenTimestamps の証明をローカルで検証する
各原産地レコードには OpenTimestamps による刻印も付されています — OpenTimestamps は無料で、Bitcoin に裏付けられたタイムスタンプ・プロトコルです。証明はレコードの SHA-256 を公開された Bitcoin ブロックヘッダーに畳み込みます。したがって、そのブロックのタイムスタンプ時点にレコードが存在していたことは、我々や特定のタイムスタンプ機関を信頼せずとも暗号学的に立証可能です。
# Install the OpenTimestamps client:
pip3 install opentimestamps-client
# Download an origin record and its proof:
curl -O https://kakao.io/data/ots/records/ve-chuao.json
curl -O https://kakao.io/data/ots/records/ve-chuao.json.ots
# Verify — folds the Bitcoin block hash into a verification chain:
ots verify ve-chuao.json.ots
仕組み
SHA-256 はあなたのブラウザ内で window.crypto.subtle.digest により計算されます — これは TLS と HTTPS が用いるのと同じプリミティブで、ポリフィルなしに現代のすべてのブラウザで利用できます。マニフェストは、同梱される各ファイルの期待ハッシュを列挙した小さな JSON ファイルです。OpenTimestamps の証明は公開のカレンダー・サーバーに提出され、Bitcoin ブロックチェーンに集約されます — アカウントも、手数料も、信頼すべき中央機関もありません。上記の三つの検査はすべて純粋なクライアントサイドの計算です。