Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
wikibase
Search
Search
English
Create account
Log in
Personal tools
Create account
Log in
Pages for logged out editors
learn more
Contributions
Talk
Editing
Synapolis/DCC Custody Tool
Page
Discussion
English
Read
Edit
Edit source
View history
Tools
Tools
move to sidebar
hide
Actions
Read
Edit
Edit source
View history
General
What links here
Related changes
Special pages
Page information
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
'''DCC Custody Tool''' — публичный офлайн-инструмент восстановления данных холодного хранения DCC по схеме 3-из-4. Финальный выпуск поддерживает два совместимых режима хранителя, воспроизводимую сборку и проверяемое сетевое ограничение. Выпуск '''не подписан''' и не проходил независимый аудит. == Рекомендуемый способ работы == Основной и рекомендуемый интерфейс — командная строка на чистом физически отключённом от сети хосте. CLI делает режим и тип секрета явными, читает секреты из файлов с правами <code>0600</code> и удобнее для аудита и повторяемой процедуры. Однофайловый [https://aination.center/custody/recover.html recover.html] — только вторичный офлайн-вариант для удобства. Даже при запрете сети расширения браузера, история, буфер обмена, скомпрометированный профиль или сам браузер могут раскрыть секрет. Нельзя вводить реальные ключи или доли в сетевую копию страницы. == Режимы хранителя и совместимость == Каждый хранитель независимо и добровольно выбирает один из режимов: * '''Dedicated age (рекомендуется):''' отдельная пара ключей <code>age</code>; наружу нужен только публичный получатель <code>age1...</code>. * '''Stellar compatibility:''' существующий публичный G-ключ детерминированно отображается в получателя <code>age</code>, а соответствующий S-ключ открывает уже развёрнутые совместимые конверты. Принудительной миграции нет. Старые конверты и существующие доли 3-из-4 не изменены и остаются читаемыми. Добавление dedicated-age получателя в будущий набор конвертов потребует отдельной авторизации и согласия хранителя. Публичный получатель для dedicated-age предложен в черновом BSN-теге: <pre>DCC_CUSTODY_AGE_RECIPIENT_V1 = age1<bech32-recipient></pre> Статус предложения: '''DRAFT / NOT ADOPTED / NO LEDGER ACTION'''. Оно не заменяет Stellar G-ключ, не разрешает пересоздание конвертов и не доказывает владение ключом. == Раздельные парсеры и входы == CLI требует явный <code>--mode age</code> или <code>--mode stellar</code>. Identity <code>AGE-SECRET-KEY-1...</code> принимается только отдельным age-парсером и отдельным файлом <code>--age-identity-file</code>. Stellar S-ключ принимается только Stellar-парсером и файлом <code>--stellar-secret-file</code>. Age identity не представляется как Stellar secret и не передаётся в S-key парсер. == Граница совместимости Shamir == <code>src/legacy-shamir.js</code> изолирован как legacy-декодер '''только для чтения'''. Замена его формата или арифметики новой библиотекой нарушила бы совместимость с уже развёрнутыми долями и потребовала бы их запрещённого перевыпуска. Код нельзя использовать для выпуска новых долей. Проверки прошли на фиксированной fixture, всех C(4,3) комбинациях, исчерпывающем сравнении операций GF(256) с независимой реализацией и некорректных входах. Эти тесты подтверждают совместимость, но независимого аудита декодера нет. == Сетевое ограничение и CSP == В выпуске нет Yandex, аналитики, внешних ресурсов, сетевых API, cookies и браузерных storage API. Runtime network-trap зафиксировал '''ноль попыток''' сетевого обращения. Точное значение HTTP CSP: <pre>default-src 'none'; script-src 'sha256-lbW9/RKTWSsWCiAaTbyNjXSxkwmwnmOV0vA+444xhC0='; style-src 'unsafe-inline'; form-action 'none'; base-uri 'none'; frame-ancestors 'none'</pre> В <code>script-src</code> нет <code>'unsafe-inline'</code>: встроенный сценарий разрешён только точным SHA-256. В <code>style-src</code> <code>'unsafe-inline'</code> пока остаётся. Meta CSP служит офлайн-страховкой скачанного файла; HTTP-заголовок является серверной политикой. == Статус подписи и аудита == Выпуск '''UNSIGNED'''. Точный блокер: отсутствуют настроенная авторизованная custody signing identity и независимо аутентифицированная политика подписи с публичным ключом проверки. Конвейер, инструкции подписи и проверки опубликованы в <code>release/</code>; для этого выпуска ключ не создавался. Нельзя утверждать, что выпуск подписан или независимо аудирован. Самотесты, фиксированные fixtures, runtime confinement и воспроизводимость — проверяемые свидетельства, а не независимый аудит безопасности. == Публичные артефакты == {| class="wikitable" |- ! Артефакт !! SHA-256 |- | [https://aination.center/custody/recover.html recover.html] || <code>fbf803b154aaf075da03463e6db3d183cc3233765fd228ccd40f7be5c0a3736c</code> |- | [https://aination.center/custody/custody-src.tar.gz custody-src.tar.gz] || <code>3e6261e1d7723da76aaf9943f8f381f747b9a51bcfe742854b6d6e57c140e285</code> |- | [https://aination.center/custody/src/SHA256SUMS SHA256SUMS] || <code>eecd0c2a7914702e595ffda0041b9174b7b93032a94cc8726cf6259b3b3b8010</code> |- | <code>CSP.txt</code> || <code>4e74b009a1eedac79d0dfcdcb11b8dc3b3f794f001c32213cc8da389c836eaeb</code> |} Исходники и документация: [https://aination.center/custody/src/ публичный каталог]. == Точное воспроизведение и проверка == Команды из публичных README и release-документации (Bash, Node 20, Python 3, эталонный <code>age 1.2.1</code>): <syntaxhighlight lang="bash"> curl -fSLO https://aination.center/custody/custody-src.tar.gz printf '%s %s\n' \ '3e6261e1d7723da76aaf9943f8f381f747b9a51bcfe742854b6d6e57c140e285' \ 'custody-src.tar.gz' | sha256sum -c - mkdir custody-src tar -xzf custody-src.tar.gz -C custody-src cd custody-src sha256sum SHA256SUMS bash build.sh bash tests/run.sh SOURCE_DATE_EPOCH=1787097600 bash release/build-release.sh bash release/verify-release.sh release/out/custody-hardening-source.tar.gz release/out/SHA256SUMS SOURCE_DATE_EPOCH=1787097600 OUT_DIR=release/out-a bash release/build-release.sh SOURCE_DATE_EPOCH=1787097600 OUT_DIR=release/out-b bash release/build-release.sh sha256sum release/out-{a,b}/custody-hardening-source.tar.gz cmp release/out-a/custody-hardening-source.tar.gz release/out-b/custody-hardening-source.tar.gz </syntaxhighlight> До проверки архива и сборки реальные секреты использовать нельзя. Точный хеш встроенного сценария берётся из созданного <code>dist/CSP.txt</code>; сервер должен отдавать приведённый выше HTTP CSP. == Семь рассмотренных улучшений == # '''CLI как основной путь — реализовано:''' browser UI сохранён как вторичное офлайн-удобство с явным предупреждением о рисках. # '''Выделенный age-ключ на хранителя — реализовано опционально и рекомендуется:''' Stellar-совместимость сохранена, миграция не навязана. # '''BSN-тег получателя — опубликован только как черновик:''' <code>DCC_CUSTODY_AGE_RECIPIENT_V1</code> не принят, действий в ledger не было. # '''Разделение секретных входов — реализовано:''' age identity и Stellar S-key имеют разные параметры и парсеры. # '''Замена custom Shamir — отклонена ради совместимости:''' legacy decoder изолирован decode-only и расширенно протестирован; независимого аудита нет. # '''Усиление офлайн-политики — реализовано:''' Yandex/analytics отсутствуют, network-trap показал ноль попыток, HTTP CSP привязан к точному script hash; inline styles пока разрешены. # '''Подписанный воспроизводимый выпуск — воспроизводимость реализована, подпись заблокирована:''' инструкции готовы, но авторизованная signing identity и независимо подтверждённая политика/public key отсутствуют. == См. также == * Архитектурный принцип «Кустодиальный мультиподписной доступ» (историческая статья Wiki) * [[Synapolis]] * [https://aination.center/custody/src/docs/CLI.md Offline CLI procedure] * [https://aination.center/custody/src/docs/SECURITY.md Security and review status] * [https://aination.center/custody/src/release/SIGNING.md Signing and verification] [[Category:Synapolis]] [[Category:Infrastructure]] [[Category:Stellar]]
Summary:
Please note that all contributions to wikibase may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Wikibase:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Toggle limited content width