Создание криптографических ключей
Используйте kagami keys для создания ключевого материала клиентов, пиров и валидаторов Iroha 3.
Основное использование
Из рабочей копии исходного кода Iroha:
cargo run --bin kagami -- keys --algorithm ed25519Выход JSON обычно легче всего скопировать в TOML или автоматизировать:
cargo run --bin kagami -- keys --algorithm ed25519 --jsonКоманда выводит открытый ключ и раскрывает закрытый ключ. Обращайтесь с закрытым ключом как с секретом; не добавляйте созданные промышленные ключи в репозиторий.
Для безопасного локального экспорта или передачи в систему ответственного хранения на поддерживаемой платформе Unix запишите новую пару ключей в пустой каталог, доступный только владельцу, вместо вывода закрытого ключа:
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.
Узнайте точный список алгоритмов, поддерживаемых вашей сборкой, с помощью:
cargo run --bin kagami -- keys --helpДетерминированные ключи для разработки
Для воспроизводимых тестовых данных передайте 32-байтовое начальное значение, закодированное 64 шестнадцатеричными символами. Допускается необязательный префикс 0x:
cargo run --bin kagami -- keys --algorithm ed25519 \
--seed-hex 1111111111111111111111111111111111111111111111111111111111111111 \
--jsonНачальное значение является материалом закрытого ключа. Используйте детерминированные начальные значения только для локальной разработки и тестов. Не указывайте --seed-hex, чтобы создать промышленный ключ из случайности операционной системы.
BLS Ключи консенсуса и доказательства владения
Консенсусные идентификаторы узлов и пиров Iroha 3 используют обычные ключи BLS. Создайте обычный ключ BLS и доказательство владения (PoP) командой:
cargo run --bin kagami -- keys --algorithm bls_normal --pop --json--pop допустим только с bls_normal. Вывод JSON содержит pop_hex. Подписанный генезис требует соответствующее PoP для каждого голосующего валидатора. В конфигурации пиров непустая карта trusted_peers_pop выбирает подмножество валидаторов; доверенные пиры, отсутствующие в этой непустой карте, становятся наблюдателями. Если карта пуста, все доверенные пиры с обычными ключами BLS входят в начальный набор кандидатов, а PoPs голосующих валидаторов по-прежнему предоставляются подписанным генезисом.
Форматы выхода
Используйте исходные параметры по умолчанию для проверки терминала, --json для автоматизации и --compact, когда другой сценарий требует четко ориентированных на линию значения:
cargo run --bin kagami -- keys --algorithm ed25519 --compactДля полной сгенерированной справки Kagami:
cargo run -p iroha_kagami -- advanced markdown-help > crates/iroha_kagami/CommandLineHelp.md