Целостность

Проверьте этот архив самостоятельно.

Каждый файл, поставляемый с этим архивом, имеет опубликованный хеш SHA-256. Эта страница повторно вычисляет эти хеши в вашем браузере — используя Web Crypto API, который уже встроен в ваш браузер, — и сравнивает их с манифестом. Ни одна серверная конечная точка kakao.io не участвует в этой цепочке доверия. Если что-либо было подменено между исходным репозиторием и вашим экраном, проверка наглядно завершится неудачей.

Принцип нулевого доверия — верификатор представляет собой обычный JavaScript, встроенный в эту страницу. Вы можете прочитать его через «Просмотр исходного кода». Он загружает набор данных, вычисляет хеши локально, загружает манифест и сравнивает. Результат вычисляется на вашей машине.

Проверить 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 — бесплатный протокол временных меток, привязанный к 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 — нет ни учётной записи, ни платы, ни центрального органа, которому нужно доверять. Все три проверки выше — это чисто клиентские вычисления.