#elliptic-curve #subscriber #key #security #prototype #control #provider

scal3

验证系统完全受您控制(原型,专利申请中)

1个不稳定版本

0.1.0 2024年2月27日

#887 in 加密学

CC-BY-NC-4.0

75KB
1K SLoC

独占控制保障等级3

验证系统完全受您控制。SCAL3提供可验证的独占控制保障等级,带有防篡改日志的多因素身份验证透明度。此原型包含示例函数和数据。

不要在生产环境中使用此代码。规范尚未最终确定,且此原型代码的安全性尚未经过评估。代码仅供透明度和允许公众审查之用。

专利NL2037022待批。

版权Cleverbase ID B.V. 2024。代码和文档根据Creative Commons Attribution-NonCommercial 4.0 International许可。

如需讨论其他许可选项,请联系Cleverbase

示例应用程序上下文

一个提供商管理一个中心硬件安全模块(HSM),该模块在其订阅者的独占控制下执行指令。订阅者使用移动钱包应用程序通过PIN码授权操作。

为了实现SCAL3,提供商管理三个资产

  • 一个公钥证书,将订阅者与注册的密钥链接,例如应用X.509(RFC 5280);
  • 一个防篡改日志,用于记录认证指令的证据,例如应用Trillian
  • 一个PIN尝试计数器,例如使用HSM同步状态。

要注册证书,订阅者通常使用ACME(RFC 8555)之类的协议。证书将订阅者的主题标识符绑定到来自Secure Enclave、StrongBox或Android硬件支持密钥库的(证明的)P-256 ECDSA签名密钥。这是身份验证的占有因素。

在注册过程中,提供商还执行SCAL3用户标识的生成和此标识符的证书发行的预授权。注册的这一部分应用FROST分布式密钥生成,并要求订阅者设置他们的PIN。

在身份验证过程中,经过认证的标识符包含了原始提供商和订阅者确定其秘密签名份额所需的所有信息。该过程应用了FROST两轮阈值签名,并结合ECDSA以证明已注册设备的所有权。成功的身份验证会产生可以公开验证的记录证据。

按设计,证书和证据不提供有关PIN的信息。这意味着即使攻击者获得了对设备、证书和日志的访问权限,也无法通过暴力破解PIN,因为他们需要使用速率限制的提供商服务来验证每个尝试。

密码学概述

本原型使用P-256椭圆曲线,其中阶数为p,且所有密钥都使用共同的基点G

对于提供商和订阅者,签名份额被分配为以下形式si = a10 + a11i + a20 + a21i (mod p),其中提供商的参与标识符i = 1,订阅者的i = 2。在注册过程中,提供商随机生成了a10a11,订阅者随机生成了a20a21。其他信息使用FROST分布式密钥生成协议进行共享。生成的联合验证密钥等于Vk = [a10 + a20]G

SCAL3用户标识符由Vk

  • s1 + m1 (mod p)组成,其中m1是由提供商使用HSM从Vk安全派生的密钥,例如使用HKDF-Expand(Vk)从RFC 5869中的HSM密钥,随后是RFC 9380中的hash_to_field
  • s2 + m2 (mod p),其中m2是由订阅者从PIN安全派生的密钥,例如使用HKDF-Expand(PIN)后跟hash_to_field

在身份验证过程中,订阅者生成一个临时的ECDSA绑定密钥对(sb, Vb),并形成一条消息M,该消息包括Vb、授权指令和日志元数据。应用FROST阈值签名,双方生成秘密非ces(di, ei),并一起在M上形成联合签名(c, z)。为此,他们使用域分隔的哈希函数#1和#2

  • 提交份额(Di, Ei) = (diG, eiG);
  • 绑定因子ρi = #1(i, M, B),其中B代表所有提交份额的列表;
  • 提交R = D1 + [ρ1]E1 + D2 + [ρ2]E2;
  • 挑战c = #2(R, Vk, M);
  • 签名份额zi = di + eiρi + cλisi (mod p),其中λ1 = 2和λ2 = −1;
  • 证明z = z1 + z2

所有订阅者的贡献都是“通过身份验证挑战”消息的一部分,该消息包括

  • 使用拥有因子在c上创建的设备签名;
  • 使用sb在设备签名上创建的绑定签名。

这种构造确保了没有同时控制两个身份验证因子,无法伪造证据。

依赖关系

~5MB
~101K SLoC