Платёжный стартап Square, запущенный основателем Twitter Джеком Дорси, поведал подробности хранения биткоинов в холодном кошельке. Система получила название Subzero.
Стартап представил документацию, код и инструменты системы. По словам разработчиков, в основе Subzero — аппаратный модуль безопасности (Hardware Security Module или HSM). Это особое устройство, которое обычно используется в индустрии платежей для хранения криптографических данных, которые не предназначены для публичного распространения, и выполнения операций с ней.
Square заключил договор с тем же поставщиком HSM, что и для остальных своих платёжных решений: «поскольку мы уже знакомы с его оборудованием и программным обеспечением». HSM можно гибко настраивать: в частности, разрешать передавать средства с холодного кошелька только на предустановленные адреса горячих кошельков. Это серьёзно усложняет взлом для хакеров.
Так как Square использует мультиподписи для перемещения средств, вывести биткоины с холодного кошелька можно только при наличии подписей нескольких человек, которые обладают соответствующими полномочиями. Доступ к системе они получают, используя комбинацию смарт-карт и паролей. При подписании транзакций пользователи взаимодействуют при помощи QR-кодов. Сервера находятся в секретных географических локациях и загружаются с Live DVD.
Чтобы получить доступ к интерфейсу Subzero, на сервере запускается Java-приложение. Оно позволяет сканировать QR-коды, просматривать транзакции и передавать приватные ключи. Приложение взаимодействует с HSM, а на нем запускается Subzero Core. Это имплементация биткоин-кошелька на основе кода аппаратных кошельков Trezor. Код приложения никогда не передаётся за пределы HSM и Subzero Core.
Разработчики также рассказали, что используют инструмент Beancounter для аудита кошельков. Они добавили:
Инструмент написан на Go и решает проблемы, которые не учтены в существующем ПО для кошельков, например он поддерживает возможность расчёта остатка по счёту в любой день в прошлом и способен справляться с очень большим количеством транзакций.
Код всех решений доступен на GitHub.