Цілісність
Перевірте цей архів самостійно.
Кожен файл, що постачається з цим архівом, має опублікований хеш 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 — безкоштовного протоколу часових міток, прив'язаного до 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, доступний у кожному сучасному браузері без polyfill. Маніфест — це невеликий JSON-файл, що містить очікуваний хеш для кожного поставленого файлу. Докази OpenTimestamps надсилаються на публічні календарні сервери та агрегуються у блокчейн Bitcoin — немає ані облікового запису, ані комісії, ані центрального органу, якому потрібно довіряти. Усі три зазначені перевірки є чистим клієнтським обчисленням.