生成数据智能

Kraken 钱包如何应对移动加密安全挑战

日期:

我们相信,最安全的移动加密钱包是克服移动操作系统固有限制的钱包。例如,在 iOS 上,Apple 的 CryptoKit 不支持 secp256k1 椭圆曲线,比特币、以太坊和许多其他区块链的标准。

此限制限制了开发人员利用设备的安全元件进行密钥存储和交易签名。因此,移动加密钱包被归类为热钱包,因为它们都连接到互联网并使用加密算法的软件实现在安全元件之外签署交易。

这意味着私钥必须在沙盒应用程序环境的内存中公开(至少在签名期间)。与使用安全元件签署交易的钱包相比,这使它们更容易受到潜在威胁。

尽管无法直接在安全元件上执行签名(这将提供增强的保护),但我们仍致力于提供一个优先考虑安全性、透明度和用户控制的开源移动加密钱包。

我们的安全架构专门用于:

  • 支持多种区块链
  • 生成具有高熵的私钥,这是增强安全性的不可预测性的衡量标准
  • 利用经过实战检验的密码技术,安全地加密用户的私钥,充分利用手机的安全硬件和操作系统安全功能
  • 通过用户生成的密码为需要额外加密级别的高级用户提供增强的安全性(在解密密钥的操作系统钥匙串保护之上)
  • 为未来整合新的密钥管理类型(例如硬件钱包和基于 MPC 仲裁的系统)奠定坚实的基础

开源优势

作为其基本安全原则之一, 海妖钱包 是免费的开源软件,分布在 麻省理工学院许可证。从头开始构建一个新的钱包,对我们来说帮助培育开源和分布式生态系统非常重要。

如果没有开源代码,Kraken 钱包将需要大量信任且缺乏透明度。这会给客户带来较少的保护;如果您愿意,您无法自己验证、修改或运行客户端。 “不要相信,验证一下!”这不仅是行业格言,也是我们的指导原则之一。

开源我们的软件实现了我们最初为此产品设定的两个基本目标:可验证、可审计的信任最小化:

  • 可验证性: 能够验证本博客文章中提出的安全假设是否正确。任何人都行 看源码 具体了解这个钱包中正在做什么和没有做什么。 
  • 可审计性: 能够验证我们的安全实施的输出是否正确,并在不正确时进行报告。在发布之前,我们已聘请内部和外部团队多次进行安全审核。展望未来,任何人都可以审核代码并就其发现结果生成报告。

密钥生成和密钥导入

React Native 虽然是一个强大的工具,但没有内置的加密模块。为了解决这个问题,我们使用了 NodeJS 加密模块的纯 js 实现 (crypto-browserify)。 crypto.randomBytes() 方法 - 它生成我们在密钥生成期间所需的实际随机字节 - 由 反应本机获取随机值 填充。

React-native-get-random-values 使用本机代码来利用设备上可用的加密安全伪随机数生成器 (CSPRNG) 来生成随机数。在几乎所有现代设备上,该随机数生成器均由安全硬件随机数生成器支持。

在钱包初始化期间,我们从 CSPRNG 中提取熵,并使用成熟的 npm 包将其转换为助记词种子(BIP32, BIP39).

密钥按照BIP39标准进行转换、存储并呈现给用户,该标准提供了一种易于备份的助记词方法,并且与生态系统中的大多数钱包具有互操作性。导入功能支持恢复 BIP39 兼容种子,从而提供生态系统中最佳的互操作性。 

密钥管理 

Kraken 钱包拥有两个秘密值——种子和助记词——以及多个非秘密(但仍然是私有)值,例如钱包地址、钱包名称和交易描述。

私钥材料(种子/助记词)存储在 Keychain(iOS 上)和 Keystore(Android 上)中。公钥材料和非敏感数据(扩展公钥、地址和描述)存储在应用程序的加密数据库中(使用 境界).

有多种安全控制措施保护数据:

  • 应用锁:随机生成的 64 字节字符串,存储在 Keychain 或 Keystore 中。对秘密的访问受到用户存在要求的保护——生物识别或密码身份验证。
  • 密码:用户提供且未保存在设备上。相反,每当应用程序询问时,用户都必须手动提供密码。钱包通过查询 Keychain 或 Keystore 中存储的两个标志(is_storage_encrypted 和 is_seed_encrypted)来确定是否需要密码。使用Argon2算法作为密钥导出函数。
  • 数据库加密:数据库(Realm)用于存储非秘密数据。数据使用随机 64 字节密钥加密。
  • 锁定机制:输入错误的密码会在后续尝试密码之前触发延迟。这种机制有效地阻止了暴力密码攻击。有关锁定参数的信息(例如尝试次数和延迟持续时间)安全地存储在钥匙串或密钥库中。

种子、助记词和数据库加密密钥始终以加密形式存储

  • 当未启用任何保护时:种子、助记词和 Realm 加密密钥直接存储在 Keychain 或 Keystore 中,无需用户存在访问控制。
  • 当应用程序锁被激活时:助记词和种子首先使用应用锁密钥进行加密,然后安全地存储在 Keychain 或 Keystore 中。 Realm 加密密钥也直接存储在 Keychain 或 Keystore 中。
  • 当启用密码保护时:助记词和种子使用密码加密,而 Realm 加密密钥仅当 is_storage_encrypted 设置为 true 时才使用密码加密。
  • 当应用程序锁定和密码保护同时启用时:助记词和种子通过密码(第一)和应用锁(第二)加密。仅当 is_storage_encrypted 设置为 true 时,领域加密密钥才会使用密码进行加密。

密钥用法

种子/助记词存储在Keychain或Keystore中,在密码操作中起着至关重要的作用。当需要生成新的钱包地址或需要签署交易时,我们从该种子中获取必要的信息,例如私钥。

但是,需要注意的是,在这些操作过程中,私钥必须加载到内存中。这种必要性源于我们之前提到的有关移动钱包的限制以及无法直接访问交易签名的安全元素。

  • 交易签名(发送代币)
  • WalletConnect 数据签名(处理会话请求)
  • 添加新钱包
  • 启用测试网链(添加测试网钱包)
  • 显示助记词
  • 验证助记词
  • 启用和禁用应用程序锁定
  • 启用和禁用密码

针对以下功能执行额外的生物识别身份验证:

  • 启用应用程序锁定
  • 擦除所有数据
  • 删除钱包(账户)
  • 启用或禁用密码(除了应用程序锁检索之外)
  • 打开应用程序
  • 将应用程序移动到前台
  • 查看扩展公钥
  • 连接到去中心化应用程序 (dApp)

此外,打开应用程序可能需要密码。钥匙串和密钥库始终通过 反应本机钥匙串 包装器:

  • 包装器在 Keychain 或 Keystore 中为每个项目生成一个新密钥
  • 包装器负责传递 Keychain 和 Keystore 的正确配置标志
  • 钱包总是请求包装器配置标志,以便设备必须解锁才能访问密钥
  • 用户存在(生物识别)检查配置为基于时间的,检查有效期为 5 秒;每次访问时不会执行用户存在检查

所有项目的加密算法都是相同的:

  • 密钥是使用 Argon2id 从 NFC 标准化秘密导出的
  • Argon2id 的盐是设备的唯一 ID
  • 加密方式为AES-GCM
  • AES 的初始化向量 (IV) 是 16 个随机字节
  • AES 的身份验证标签长度要求为 16 个字节

交易签署

除了前面提到的有关密钥存储、生物识别和密码保护的措施外,交易签名仍然是持续改进的关键领域。作为第一步,我们在此领域实施了几项值得注意的措施,包括:

交易模拟

我们使用外部 API 服务(例如 河豚 等)来检查交易可能给用户带来的“严重性”级别(风险评分)。这从针对可能的恶意交易(或消息签名)的全屏显示,到用户在签署或确认交易之前应采取不同程度的谨慎程度的警告。 

其他措施包括:

  • 地址验证以确保您不会发送到错误的地址
  • 地址始终完整可见,以确保用户不会受到围绕地址组合的特定攻击
  • 网络验证和警告,以确保用户不会发送到错误的网络
  • 费用健全性检查以确保用户不会为交易支付过多费用

网络隐私

为了保护用户的隐私和个人数据,使这些数据不会在网络请求中泄露(尤其是向第三方服务泄露),我们开发了一个用于代理请求的 API 网关。该代理允许我们不将用户请求传递给第三方服务,也不会将客户的 IP 泄露给外部或公共提供商。 

这个后端服务基本上是一个用于查询公共区块链数据的API。在钱包安全架构中,其目的是将这一功能封装在跨所有区块链的通用 API 后面,以便 Kraken 钱包不必实现特定于区块链的数据查询行为。

该后端服务定义了该通用 API。它最终将请求代理给其他方,并从中获取实际数据。它不索引区块链本身,也不维护状态。

安全假设

我们的安全架构基于几个关键假设来运行,以实现最佳保护。我们假设:

  • 用户的设备未获得 root 权限,操作系统也未过时且容易受到可能授予攻击者访问设备内存的严重漏洞的影响
  • Keychain 或 Keystore 包提供足够强大的保护
  • 移动操作系统在应用程序进程之间提供可靠的沙箱,确保包含种子等敏感数据的内存得到正确管理

附加功能

  • 该应用程序的运行原则是仅存储运行钱包所需的最少数据
  • 客户端上未使用第三方分析或崩溃报告软件开发套件 (SDK)
    • 由于我们努力不向第三方泄露任何数据,因此包含额外的数据跟踪是没有意义的——这意味着您在客户端中找不到任何分析或崩溃报告软件
  • 代码库上不允许或实施任何无线更新(在常规 AppStore/Play 商店更新流程之外)
    • 用户可以期待一个已编译的软件,未经他们的选择同意,该软件无法更新
  • 代币列表和信誉系统
    • 为了帮助用户管理他们的代币,我们基于Kraken和其他第三方提供的资产实现了列表和声誉系统
  • NFT 垃圾邮件
    • 我们计划不断改进的初步工作是垃圾邮件和垃圾邮件相关的攻击检测,其中垃圾邮件会自动存档在用户的文件夹中

外部安全审计

我们的自助钱包的安全性经过了严格的审计评估 比特的踪迹,业界知名的安全审计公司。此次审计包括对我们的代码库和客户端架构的详细检查,旨在识别和解决潜在的安全漏洞。

为了确保透明度并深入了解我们平台的安全性,此次审计的结果是公开的。这种开放访问允许用户和感兴趣的各方查看 Trail of Bits 进行的安全分析的结果。该报告是了解我们所采取的安全措施以及我们为用户维护安全环境的承诺的重要资源。

优先考虑安全性、透明度和用户控制

面对固有的平台限制,Kraken 钱包在便利性和强大的保护之间取得了微妙的平衡。我们的方法始终是从广泛认可的可互操作的钱包结构开始。这一坚实的基础为我们创新和添加新功能奠定了基础,目标是为我们的用户提供不断发展的顶级安全解决方案,以自我托管其加密资产。

这些材料仅供一般参考之用,并非投资建议或购买、出售、持有或持有任何加密资产或参与任何特定交易策略的推荐或招揽。 Kraken 不会也不会努力提高或降低其提供的任何特定加密资产的价格。 一些加密产品和市场不受监管,您可能不受政府补偿和/或监管保护计划的保护。 加密资产市场的不可预测性可能会导致资金损失。 任何回报和/或您的加密资产价值的任何增加都可能需要纳税,您应该就您的税务状况寻求独立建议。 可能存在地理限制。

现货图片

最新情报

现货图片

在线答疑

你好呀! 我怎么帮你?