Мы считаем, что самый безопасный мобильный криптокошелек — это тот, который преодолевает ограничения, присущие мобильной операционной системе. Например, в iOS CryptoKit от Apple не поддерживает secp256k1 эллиптическая кривая, стандарт для Биткойна, Эфириума и многих других блокчейнов.
Это ограничение не позволяет разработчикам использовать безопасный элемент устройств для хранения ключей и подписания транзакций. В результате мобильные криптокошельки классифицируются как горячие кошельки, поскольку они подключены к Интернету и подписывают транзакции вне защищенного элемента, используя программную реализацию криптографических алгоритмов.
Это означает, что закрытые ключи должны быть доступны – по крайней мере, во время подписания – в памяти изолированной среды приложения. Это делает их более уязвимыми для потенциальных угроз, чем кошелек, который использует безопасный элемент для подписи транзакций.
Несмотря на невозможность выполнить подпись на защищенных элементах напрямую, что обеспечило бы повышенную защиту, мы взяли на себя обязательство предоставить открытые источники мобильный криптокошелек, в котором приоритет отдается безопасности, прозрачности и пользовательскому контролю.
Наша архитектура безопасности специально создана для:
- Поддержка нескольких блокчейнов
- Генерируйте закрытые ключи с высокой энтропией — мерой непредсказуемости, повышающей безопасность.
- Используйте проверенную в боевых условиях криптографию для безопасного шифрования личных ключей пользователей, используя возможности защитного оборудования мобильных телефонов и функции безопасности ОС.
- Предложите повышенную безопасность с помощью пароля, сгенерированного пользователем, для опытных пользователей, которым нужен дополнительный уровень шифрования (помимо защиты цепочки ключей ОС для ключа дешифрования).
- Создайте прочную основу для будущего внедрения новых типов управления ключами, таких как аппаратные кошельки и системы на основе кворума MPC.
Преимущество открытого исходного кода
В качестве одного из основополагающих принципов безопасности, Кракен кошелек это бесплатное программное обеспечение с открытым исходным кодом, распространяется под лицензия MIT. Создавая новый кошелек с нуля, для нас было важно способствовать развитию распределенной экосистемы с открытым исходным кодом.
Без открытого исходного кода Kraken Wallet потребовал бы большого доверия и прозрачности. Это дало бы клиентам меньшую защиту; вы не могли бы проверить, изменить или запустить клиент самостоятельно, даже если бы захотели. «Не верь, проверь!» это не просто отраслевая максима, это один из наших руководящих принципов.
Открытый исходный код нашего программного обеспечения позволяет достичь двух фундаментальных целей, которые мы изначально поставили перед этим продуктом: проверяемая и проверяемая минимизация доверия:
- Проверяемость: Возможность проверить, что предположения о безопасности, представленные в этом сообщении блога, верны. Любой может посмотрите исходный код чтобы конкретно понять, что делается и чего не делается в этом кошельке.
- Проверяемость: Возможность проверить правильность результатов нашей реализации безопасности и сообщить, если это не так. Мы привлекали внутренние и внешние команды для проведения нескольких проверок безопасности перед выпуском. В дальнейшем любой сможет проверить код и составить отчет о своих выводах.
Генерация ключей и импорт ключей
React Native, хотя и является мощным инструментом, не имеет встроенного криптомодуля. Чтобы обойти эту проблему, мы использовали реализацию крипто-модуля NodeJS на чистом js (crypto-browserify). Метод crypto.randomBytes(), который генерирует фактические случайные байты, необходимые нам во время генерации ключа, обрабатывается реагировать-родные-получить-случайные значения полифилл.
React-native-get-random-values использует собственный код для использования криптографически безопасного генератора псевдослучайных чисел (CSPRNG), доступного на устройстве, для генерации случайных чисел. Практически на всех современных устройствах этот генератор случайных чисел поддерживается безопасным аппаратным генератором случайных чисел.
Во время инициализации кошелька мы извлекаем энтропию из CSPRNG и преобразуем ее в мнемоническое начальное число, используя хорошо зарекомендовавшие себя пакеты npm (BIP32, BIP39).
Ключи преобразуются, сохраняются и предоставляются пользователю в соответствии со стандартом BIP39, который предлагает простой в резервном копировании мнемонический метод, совместимый с большинством кошельков в экосистеме. Функция импорта поддерживает восстановление семян, совместимых с BIP39, что обеспечивает лучшую совместимость в экосистеме.
Ключевой менеджмент
Kraken Wallet хранит два секретных значения — начальное число и мнемоническое значение — и несколько несекретных (но все же частных) значений, таких как адреса кошельков, имена кошельков и описания транзакций.
Материал закрытого ключа (начальное число/мнемоника) хранится в Keychain (на iOS) и Keystore (на Android). Материал открытого ключа и неконфиденциальные данные (расширенные открытые ключи, адреса и описания) хранятся в зашифрованной базе данных приложения (с использованием Область).
Существует несколько мер безопасности, защищающих данные:
- Блокировка приложения: случайно сгенерированная 64-байтовая строка, хранящаяся в Keychain или Keystore. Доступ к секрету защищен требованиями присутствия пользователя — биометрической аутентификацией или аутентификацией с паролем.
- Пароль: предоставляется пользователем и не хранится на устройстве. Вместо этого пользователь должен ввести пароль вручную по запросу приложения. Кошелек определяет, нужен ли пароль, сверяясь с двумя флагами (is_storage_encrypted и is_seed_encrypted), хранящимися в Keychain или Keystore. Алгоритм Argon2 используется в качестве функции получения ключа.
- Шифрование базы данных: База данных (Realm) используется для хранения несекретных данных. Данные шифруются случайным 64-байтовым ключом.
- Механизм блокировки: Ввод неправильного пароля приводит к задержке перед последующими попытками ввода пароля. Этот механизм эффективно предотвращает атаки методом перебора паролей. Информация о параметрах блокировки, таких как количество попыток и продолжительность задержек, надежно хранится в «Связке ключей» или хранилище ключей.
Начальное значение, мнемоника и ключ шифрования базы данных всегда хранятся в зашифрованном виде.
- Когда никакая защита не включена: начальное значение, мнемоника и ключ шифрования Realm хранятся непосредственно в связке ключей или хранилище ключей без контроля доступа на основе присутствия пользователя.
- Когда активирована блокировка приложения: мнемоника и начальное значение сначала шифруются с помощью секрета блокировки приложения, а затем надежно сохраняются в связке ключей или хранилище ключей. Ключ шифрования Realm также хранится непосредственно в связке ключей или хранилище ключей.
- Когда включена защита паролем: мнемоника и начальное значение шифруются паролем, тогда как ключ шифрования Realm шифруется паролем только в том случае, если для параметра is_storage_encrypted установлено значение true.
- Когда включены как блокировка приложения, так и защита паролем: Мнемоника и начальное значение зашифрованы как паролем (первый), так и блокировкой приложения (второй). Ключ шифрования Realm шифруется только с помощью пароля и только в том случае, если для параметра is_storage_encrypted установлено значение true.
Использование ключа
Начальное значение/мнемоника хранится в Keychain или Keystore и играет решающую роль в криптографических операциях. Когда необходимо создать новый адрес кошелька или подписать транзакцию, мы получаем необходимую информацию, такую как закрытый ключ, из этого начального числа.
Однако важно отметить, что во время этих операций закрытый ключ должен быть загружен в память. Эта необходимость проистекает из ограничений, которые мы упоминали ранее в отношении мобильных кошельков, и отсутствия прямого доступа к защищенному элементу для подписания транзакций.
- Подписание транзакции (отправка токенов)
- Подписание данных WalletConnect (обработка запросов сеанса)
- Добавление нового кошелька
- Включение цепочек тестовой сети (добавление кошельков тестовой сети)
- Отображение мнемоники
- Проверка мнемоники
- Включение и отключение блокировки приложений
- Включение и отключение пароля
Дополнительная биометрическая аутентификация выполняется для следующих функций:
- Включение блокировки приложения
- Удаление всех данных
- Удаление кошелька (аккаунта)
- Включение или отключение пароля (помимо восстановления блокировки приложения)
- Открытие приложения
- Перемещение приложения на передний план
- Просмотр расширенных открытых ключей
- Подключение к децентрализованному приложению (dApp)
Кроме того, для открытия приложения может потребоваться пароль. Связка ключей и хранилище ключей всегда используются через реакция-родной-брелок обертка:
- Обертка генерирует новый ключ в Keychain или Keystore для каждого элемента.
- Обертка отвечает за передачу правильных флагов конфигурации для Keychain и Keystore.
- Кошелек всегда запрашивает обертку для настройки флагов, чтобы устройство было разблокировано для доступа к ключу.
- Проверка присутствия пользователя (биометрическая) настроена на основе времени и действительна в течение 5 секунд; проверка присутствия пользователя не выполняется при каждом доступе
Алгоритм шифрования одинаков для всех элементов:
- Ключ получен с помощью Argon2id из секретного кода, нормализованного NFC.
- Соль для Argon2id — это уникальный идентификатор устройства.
- Режим шифрования AES-GCM.
- Вектор инициализации (IV) для AES составляет 16 случайных байтов.
- Тег аутентификации для AES должен иметь длину 16 байт.
Подписание транзакции
В дополнение к ранее упомянутым мерам, касающимся хранения ключей, биометрии и защиты паролей, подписание транзакций остается критически важной областью постоянного совершенствования. В качестве первого шага мы реализовали несколько заслуживающих внимания мер в этой области, в том числе:
Моделирование транзакции
Мы используем внешние сервисы API (например, Blowfish и другие), чтобы проверить возможные уровни «серьезности», которую транзакция может принести пользователю (оценка риска). Это варьируется от полного экрана блокировки возможных вредоносных транзакций (или подписи сообщений) до предупреждений о различных уровнях осторожности, которые пользователь должен соблюдать перед подписанием или подтверждением транзакции.
Другие меры включают в себя:
- Проверка адреса, чтобы убедиться, что вы не отправляете на неправильный адрес.
- Адреса, которые всегда видны целиком, чтобы гарантировать, что пользователь не станет объектом конкретных атак, связанных с составлением адресов.
- Проверка сети и предупреждения, чтобы убедиться, что пользователь не отправляет данные в неправильную сеть.
- Проверки разумности комиссий, чтобы убедиться, что пользователь не переплачивает за транзакцию.
Конфиденциальность сети
Чтобы защитить конфиденциальность и личные данные пользователей таким образом, чтобы эти данные не утекли при сетевых запросах, особенно к сторонним службам, мы разработали шлюз API для прокси-запросов. Этот прокси позволяет нам не передавать пользовательские запросы сторонним сервисам и не раскрывает IP-адрес клиента внешним или публичным провайдерам.
Эта серверная служба по сути представляет собой API для запроса общедоступных данных блокчейна. В архитектуре безопасности кошелька его цель — инкапсулировать эту функциональность в общий API для всех блокчейнов, чтобы Kraken Wallet не приходилось реализовывать специфичное для блокчейна поведение для запроса данных.
Эта серверная служба определяет этот общий API. В конечном итоге он передает запросы другим сторонам, от которых получает фактические данные. Он не индексирует сами блокчейны и не поддерживает состояние.
Предположения о безопасности
Наша архитектура безопасности основывается на нескольких ключевых предположениях, обеспечивающих оптимальную защиту. Мы исходим:
- Устройство пользователя не имеет root-прав, операционная система не устарела и не подвержена критическим уязвимостям, которые могут предоставить злоумышленнику доступ к памяти устройства.
- Пакет Keychain или Keystore обеспечивает достаточно надежную защиту.
- Мобильная ОС предлагает надежную изолированную программную среду между процессами приложений, гарантируя правильное управление памятью, содержащей конфиденциальные данные, такие как начальные данные.
Дополнительный функционал
- Приложение работает по принципу хранения только минимального количества данных, необходимого для работы кошелька.
- На клиенте не используются сторонние аналитические пакеты или пакеты разработки программного обеспечения для создания отчетов о сбоях (SDK).
- Учитывая наши усилия по предотвращению утечки каких-либо данных третьим лицам, не имеет смысла включать дополнительное отслеживание данных — это означает, что вы не найдете в клиенте никакого программного обеспечения для аналитики или создания отчетов о сбоях.
- Никакие обновления по беспроводной сети (кроме обычного процесса обновления AppStore/Play Store) не разрешены и не реализованы в базе кода.
- Пользователь может рассчитывать на скомпилированное программное обеспечение, которое не может быть обновлено без его согласия.
- Список токенов и система репутации
- Чтобы помочь пользователям управлять своими токенами, мы внедрили систему списков и репутации на основе активов, предоставленных Kraken и другими третьими сторонами.
- NFT-спам
- Первым шагом, который мы планируем продолжать совершенствовать, является обнаружение спама и связанных со спамом атак, при котором спам автоматически архивируется в папке пользователя.
Внешний аудит безопасности
Безопасность нашего кошелька, хранящегося самостоятельно, была тщательно оценена в ходе аудита, проведенного Trail of Bits, уважаемой в отрасли фирмой, занимающейся аудитом безопасности. Этот аудит включал детальное изучение нашей кодовой базы и клиентской архитектуры с целью выявления и устранения потенциальных уязвимостей безопасности.
Чтобы обеспечить прозрачность и дать представление о безопасности нашей платформы, результаты этого аудита общедоступны. Этот открытый доступ позволяет пользователям и заинтересованным сторонам просматривать результаты анализа безопасности, проведенного Trail of Bits. Отчет служит важным ресурсом для понимания принимаемых нами мер безопасности и нашего стремления поддерживать безопасную среду для наших пользователей.
Приоритет безопасности, прозрачности и пользовательского контроля
Kraken Wallet обеспечивает тонкий баланс между удобством и надежной защитой перед лицом присущих платформе ограничений. Наш подход всегда заключался в том, чтобы начать с совместимой структуры кошелька, которая широко признана. Этот прочный фундамент создает для нас основу для инноваций и добавления новых возможностей с целью предложить нашим пользователям постоянно развивающееся, первоклассное решение безопасности для самостоятельного хранения своих криптоактивов.
Эти материалы предназначены только для общих информационных целей и не являются инвестиционными советами, рекомендациями или предложениями покупать, продавать, делать ставки или хранить какие-либо криптоактивы или использовать какую-либо конкретную торговую стратегию. Kraken не работает и не будет работать над повышением или понижением цены какого-либо конкретного криптоактива, который он предоставляет. Некоторые криптопродукты и рынки не регулируются, и вы не можете быть защищены государственными компенсационными и/или нормативными схемами защиты. Непредсказуемый характер рынков криптоактивов может привести к потере средств. Налог может взиматься с любого дохода и/или любого увеличения стоимости ваших криптоактивов, и вам следует обратиться за независимой консультацией по поводу вашей налоговой позиции. Могут применяться географические ограничения.
- SEO-контент и PR-распределение. Получите усиление сегодня.
- PlatoData.Network Вертикальный генеративный ИИ. Расширьте возможности себя. Доступ здесь.
- ПлатонАйСтрим. Интеллект Web3. Расширение знаний. Доступ здесь.
- ПлатонЭСГ. Углерод, чистые технологии, Энергия, Окружающая среда, Солнечная, Управление отходами. Доступ здесь.
- ПлатонЗдоровье. Биотехнологии и клинические исследования. Доступ здесь.
- Источник: https://blog.kraken.com/product/kraken-wallet/kraken-wallet-security
- :имеет
- :является
- :нет
- :куда
- $UP
- 1
- 13
- 16
- a
- способность
- О нас
- доступ
- Учетная запись
- через
- фактического соединения
- Добавить
- добавить
- дополнение
- дополнительный
- адрес
- адреса
- адресация
- продвинутый
- совет
- AES
- Нацеленный
- алгоритм
- алгоритмы
- Все
- разрешено
- позволяет
- причислены
- всегда
- количество
- an
- анализ
- аналитика
- и
- android
- любой
- кто угодно
- API
- приложение
- Применение
- Применить
- подхода
- архитектура
- МЫ
- ПЛОЩАДЬ
- около
- AS
- Активы
- предположения
- At
- атаковать
- нападающий
- нападки
- попытки
- аудит
- проверяемый
- аудит
- аудит
- Auth
- Аутентификация
- автоматически
- доступен
- назад
- со спинкой
- Backend
- Баланс
- основанный
- в основном
- BE
- было
- до
- начинать
- поведения
- за
- не являетесь
- верить
- ЛУЧШЕЕ
- между
- биометрический
- биометрическая аутентификация
- биометрия
- Bitcoin
- биты
- Заблокировать
- блокчейн
- данные блокчейна
- блокчейны
- Блог
- валики
- изоферменты печени
- приносить
- Строительство
- встроенный
- но
- купить
- by
- CAN
- возможности
- капитализация
- осторожность
- цепи
- проблемы
- проверка
- Проверки
- классифицированный
- клиент
- клиентов
- код
- Codebase
- обязательство
- привержен
- Общий
- совместим
- Компенсация
- скомпилированный
- проводятся
- Конфигурация
- настроить
- подключенный
- ограничения
- консалтинг
- (CIJ)
- контроль
- контрольная
- удобство
- конвертировать
- переделанный
- исправить
- может
- Crash
- критической
- решающее значение
- крипто-
- крипто-безопасность
- Крипто кошелек
- крипто кошельки
- крипто-активы
- cryptoasset
- криптоактивы
- криптографический
- криптографически
- криптография
- DAPP
- данным
- База данных
- децентрализованная
- снижение
- Определяет
- задержки
- выводить
- Производный
- желание
- подробный
- обнаружение
- определяет
- развитый
- застройщиков
- Развитие
- устройство
- Устройства
- различный
- направлять
- Прямой доступ
- непосредственно
- распределенный
- приносит
- не
- домен
- сделанный
- Dont
- рисовать
- продолжительность
- в течение
- Ранее
- экосистема
- фактически
- усилие
- усилия
- элемент
- элементы
- Эллиптических
- охватывает
- шифровать
- зашифрованный
- шифрование
- заниматься
- занятый
- расширение
- достаточно
- обеспечивать
- обеспечение
- входящий
- цельность
- Окружающая среда
- особенно
- Эфириума
- оценивается
- Каждая
- экспертиза
- ожидать
- подвергаться
- расширенная
- и, что лучший способ
- дополнительно
- Face
- Особенность
- несколько
- Найдите
- результаты
- Фирма
- First
- Флаги
- поток
- Фокус
- после
- Что касается
- вперед
- Способствовать
- Год основания
- Бесплатно
- от
- полный
- функция
- функциональные возможности
- функциональность
- фундаментальный
- средства
- будущее
- шлюз
- Общие
- порождать
- генерируется
- генерирует
- поколение
- генератор
- географический
- Дайте
- цель
- Цели
- идет
- будет
- Правительство
- предоставлять
- земля
- руководящий
- Управляемость
- Аппаратные средства
- Аппаратные кошельки
- Есть
- помощь
- High
- держать
- имеет
- ГОРЯЧИЙ
- Как
- HTTP
- HTTPS
- идентифицирующий
- if
- осуществлять
- реализация
- в XNUMX году
- Импортировать
- важную
- улучшение
- улучшение
- in
- неспособность
- включают
- В том числе
- неправильный
- Увеличение
- расширились
- независимые
- индекс
- промышленность
- информация
- свойственный
- начальный
- первоначально
- обновлять
- понимание
- пример
- вместо
- заинтересованный
- в нашей внутренней среде,
- Интернет
- Взаимодействие
- совместимость
- в
- инвестиций
- iOS
- IP
- IT
- пункты
- ЕГО
- саму трезвость
- всего
- Сохранить
- хранится
- Основные
- ключи
- Kraken
- Отсутствие
- большой
- вести
- утечка
- наименее
- Меньше
- уровень
- уровни
- такое как
- ограничение
- Список
- Блокировка
- локаут
- от
- сделанный
- поддерживать
- Сохранение
- сделать
- ДЕЛАЕТ
- злонамеренный
- управлять
- управляемого
- управление
- вручную
- многих
- Области применения:
- материала
- материалы
- макс-ширина
- Сентенция
- Май..
- означает
- проводить измерение
- меры
- механизм
- Память
- упомянутый
- сообщение
- метод
- минимизация
- минимальный
- MIT
- Мобильный телефон
- режим
- Модерн
- изменять
- Модули
- MongoDB
- БОЛЕЕ
- самых
- MPC
- с разными
- должен
- имена
- родной
- природа
- Откройте
- необходимо
- необходимость
- необходимый
- потребности
- сеть
- Новые
- нет
- в своих размышлениях
- Примечательно
- номер
- номера
- of
- предлагают
- предлагающий
- Предложения
- on
- ONE
- только
- открытый
- с открытым исходным кодом
- открытый исходный код
- открытие
- работает
- операционный
- операционная система
- Операционный отдел
- оптимальный
- or
- заказ
- OS
- Другое
- Другое
- наши
- устаревший
- выходной
- внешнюю
- пакет
- пакеты
- параметры
- особый
- Стороны
- pass
- Прохождение
- Пароль
- для
- Выполнять
- выполнены
- личного
- личные данные
- кусок
- Часть
- план
- Платформа
- Платон
- Платон Интеллектуальные данные
- ПлатонДанные
- играет
- должность
- возможное
- После
- потенциал
- мощный
- практически
- представлены
- предварительно
- цена
- принцип
- Принципы
- Предварительный
- приоритизирует
- политикой конфиденциальности.
- частная
- Секретный ключ
- Частные ключи
- Процессы
- производит
- Продукт
- Продукция
- для защиты
- защищенный
- защищающий
- защиту
- обеспечивать
- при условии
- поставщики
- приводит
- обеспечение
- полномочие
- что такое варган?
- публичный блокчейн
- публичный ключ
- открытые ключи
- публично
- цель
- целей
- случайный
- случайно сгенерированный
- область
- признанный
- Рекомендация
- выздоровление
- по
- регулярный
- регуляторы
- освободить
- остатки
- отчету
- Reporting
- репутация
- Запросы
- требовать
- обязательный
- Требования
- ресурс
- ответственный
- Ограничения
- результат
- Итоги
- поиск
- возвращают
- показывать
- обзоре
- Снижение
- надежный
- Роли
- укоренившийся
- Run
- соль
- то же
- схемы
- Гол
- экран
- SDKS
- Во-вторых
- секунды
- Secret
- безопасный
- безопасно
- безопасность
- Аудит безопасности
- Меры безопасности
- семя
- семена
- Искать
- SELF
- Самостоятельная опека
- кошелек для самостоятельного хранения
- продаем
- Отправить
- отправка
- смысл
- чувствительный
- служит
- обслуживание
- Услуги
- Сессия
- набор
- Наборы
- несколько
- должен
- подпись
- подписанный
- подписание
- с
- So
- Software
- разработка программного обеспечения
- домогательство
- твердый
- Решение
- некоторые
- Источник
- Об
- спам
- конкретный
- конкретно
- Этап
- доля
- стандарт
- Область
- стебли
- Шаг
- По-прежнему
- диск
- магазин
- хранить
- хранение
- Стратегия
- Забастовки
- строка
- сильный
- Структура
- последующее
- такие
- поддержка
- Поддержка
- Убедитесь
- окружающих
- восприимчивый
- система
- TAG
- целевое
- налог
- Налогообложение
- команды
- testnet
- чем
- который
- Ассоциация
- Источник
- их
- Их
- тогда
- Эти
- они
- В третьих
- третье лицо
- сторонние
- этой
- угрозы
- Через
- раз
- в
- Лексемы
- инструментом
- топ
- Отслеживание
- Торговля
- Торговая стратегия
- след
- сделка
- Сделки
- Прозрачность
- правда
- Доверие
- два
- Типы
- В конечном счете
- под
- понимать
- понимание
- созданного
- разблокирован
- непредсказуемый
- нерегулируемого
- обновление
- Updates
- обновление
- на
- us
- использование
- используемый
- Информация о пользователе
- пользователей
- использования
- через
- использовать
- Использующий
- действительный
- Проверка
- ценностное
- Наши ценности
- проверяемый
- проверить
- видимый
- Уязвимости
- Кошелек
- Кошельки
- стремятся
- законопроект
- Путь..
- we
- Что
- Что такое
- когда
- когда бы ни
- в то время как
- будь то
- который
- в то время как
- КТО
- широко
- Википедия.
- будете
- в
- без
- Работа
- бы
- даст
- Неправильно
- хуг
- Ты
- ВАШЕ
- себя
- зефирнет