Skip to content

Создание криптографических ключей

Используйте kagami keys для создания ключевого материала клиентов, пиров и валидаторов Iroha 3.

Основное использование

Из рабочей копии исходного кода Iroha:

bash
cargo run --bin kagami -- keys --algorithm ed25519

Выход JSON обычно легче всего скопировать в TOML или автоматизировать:

bash
cargo run --bin kagami -- keys --algorithm ed25519 --json

Команда выводит открытый ключ и раскрывает закрытый ключ. Обращайтесь с закрытым ключом как с секретом; не добавляйте созданные промышленные ключи в репозиторий.

Для безопасного локального экспорта или передачи в систему ответственного хранения на поддерживаемой платформе Unix запишите новую пару ключей в пустой каталог, доступный только владельцу, вместо вывода закрытого ключа:

bash
cargo run --bin kagami -- keys --algorithm ed25519 --out-dir ./client-key

Родительский каталог должен уже существовать. Целевой каталог должен быть новым либо уже принадлежать текущему пользователю, иметь режим 0700, не содержать символических ссылок и быть пустым. kagami записывает public.key и private.key с режимом 0600 и не выводит закрытый ключ. С параметром --pop он также записывает pop.hex.

--out-dir безопасно завершается ошибкой на платформах, где Kagami не может обеспечить правила файловой системы с доступом только для владельца. Файл закрытого ключа — незашифрованная экспортированная копия, а не аппаратный или неэкспортируемый промышленный подписант. Импортируйте его в утверждённую систему ответственного хранения и удалите экспортированную копию согласно процедуре развёртывания.

Алгоритмы

Общими алгоритмами являются:

  • ed25519 для клиентских учётных записей и потоковых идентификаторов.
  • secp256k1 когда клиентский счет требует идентификации secp256k1.
  • bls_normal для консенсусного идентификатора каждого узла или пира, если сборка поддерживает BLS.

Узнайте точный список алгоритмов, поддерживаемых вашей сборкой, с помощью:

bash
cargo run --bin kagami -- keys --help

Детерминированные ключи для разработки

Для воспроизводимых тестовых данных передайте 32-байтовое начальное значение, закодированное 64 шестнадцатеричными символами. Допускается необязательный префикс 0x:

bash
cargo run --bin kagami -- keys --algorithm ed25519 \
  --seed-hex 1111111111111111111111111111111111111111111111111111111111111111 \
  --json

Начальное значение является материалом закрытого ключа. Используйте детерминированные начальные значения только для локальной разработки и тестов. Не указывайте --seed-hex, чтобы создать промышленный ключ из случайности операционной системы.

BLS Ключи консенсуса и доказательства владения

Консенсусные идентификаторы узлов и пиров Iroha 3 используют обычные ключи BLS. Создайте обычный ключ BLS и доказательство владения (PoP) командой:

bash
cargo run --bin kagami -- keys --algorithm bls_normal --pop --json

--pop допустим только с bls_normal. Вывод JSON содержит pop_hex. Подписанный генезис требует соответствующее PoP для каждого голосующего валидатора. В конфигурации пиров непустая карта trusted_peers_pop выбирает подмножество валидаторов; доверенные пиры, отсутствующие в этой непустой карте, становятся наблюдателями. Если карта пуста, все доверенные пиры с обычными ключами BLS входят в начальный набор кандидатов, а PoPs голосующих валидаторов по-прежнему предоставляются подписанным генезисом.

Форматы выхода

Используйте исходные параметры по умолчанию для проверки терминала, --json для автоматизации и --compact, когда другой сценарий требует четко ориентированных на линию значения:

bash
cargo run --bin kagami -- keys --algorithm ed25519 --compact

Для полной сгенерированной справки Kagami:

bash
cargo run -p iroha_kagami -- advanced markdown-help > crates/iroha_kagami/CommandLineHelp.md