ПУБЛИКАЦИЯ 15-B / РАЗДЕЛ 9 — ГАРАНТИИ ХРАНЕНИЯ
Безопасность
§9.1
Обзор
В этом разделе точно сказано, что мы храним и что нет, и полностью задокументирована модель шифрования. Перед обращением с вопросами о хранении см. псевдокод ниже.
§9.2
Модель PIN
Ваш PIN никогда не хранится. Мы храним Argon2-хэш PIN для проверки. Отдельный ключ, выведенный Argon2 и XOR-ом с серверным секретом, шифрует ваш активный ключ Hive — дизайн двойного ключа.
§9.3
Псевдокод двойного ключа
Ни сервер в одиночку, ни атакующий базу данных в одиночку не могут расшифровать ваш активный ключ. Необходимы и PIN (знает только вы), и серверный секрет (знаем только мы).
# Шифрование при установке PIN: key_material = Argon2(PIN) XOR KEY_ENCRYPTION_SECRET encrypted_key = AES-256-GCM(active_key, key_material) # Расшифровка во время транзакции: key_material = Argon2(PIN) XOR KEY_ENCRYPTION_SECRET active_key = AES-256-GCM.decrypt(encrypted_key, key_material)
§9.4
Что мы храним
Ваш зашифрованный активный ключ (бесполезен в изоляции), строки баланса HIVE и WAGE, записи владения NFT и Argon2-хэш вашего PIN. Больше ничего.
§9.5
Что мы НЕ храним
Ваш открытый PIN. Ваш расшифрованный активный ключ. Вашу seed-фразу. Ваш пароль от почты. Ничего, что позволило бы нам в одиночку перемещать ваши средства.
§9.6
Честность RNG
Каждый бросок RNG при минте использует PRNG с серверным сидом; сид сохраняется в строку MintEvent. Любой аудитор может воспроизвести бросок по сиду и убедиться, что исход совпадает с записанным.
§9.7
Блокировка PIN
Три подряд неудачные попытки ввода PIN блокируют аккаунт на пятнадцать минут. Счётчик сбрасывается при успешном вводе. Это основная защита от брутфорса.
§9.8
Без восстановления PIN
Восстановление PIN отсутствует. Если вы потеряете PIN, ваш внутриигровой баланс HIVE и все развёрнутые NFT станут недоступны навсегда. Запишите PIN. Храните там, где найдёте снова.