CCC SPAKE2+ 详解

第一步:云端生产SPAKE2+

Salt:16bytes 随机数,每次在进行配对的时候,服务器都需要产生一个随机的盐值 Salt。
Cost parameter Nscrypt: 4096 or higher 是一个自行选择的常量
Block size r: 8 算法常量固定为 8
Parallelization parameter p:1 算法固定值
Output length dkLen: 80 算法生成密钥的长度为 80bytes
G: ECC的基点
n: ECC的基点的阶

ECC详解参考:https://www.cnblogs.com/jockming/p/12111681.html


z=Scrypt(pwd, Salt,Nscrypt,r,p,dkLen)
z0 = z的左40字节
z1 = z的右40字节
w0=(z0 mod (n-1)) + 1 w0:可以理解成一个根据z0生成的ECC曲线为Secp256r1的私钥
w1=(z1 mod (n-1)) + 1 w1:可以理解成一个根据z1生成的ECC曲线为Secp256r1的私钥
L= w1*G:按照ECC的规则,w1是一把私钥,那么w1*G的值就是w1的公钥,所以L就是w1的公钥

第二步:

将w0,L,salt给到车端。
将pwd发给手机端。

第三步:
车端收到后,计算Y
N:是一个公钥恒定定值
M:是一个公钥恒定定值
y:随机私钥的S值
y*G:计算y的公钥
w0*M:将w0私钥和恒定公钥点N乘后获得一个在ECC曲线上的点。充当盐值
Y=y*G+w0*N
此时车端有y,Y,w0,N,M,L,salt
车端发起 SPAKE2+ REQUEST Command
7f50
c0:salt
c1:Nscrypt
c2:r
c3:p
发送salt给到手机


手机收到后,计算出w0
z=Scrypt(pwd, Salt,Nscrypt,r,p,dkLen)
z0 = z的左40字节
w0=(z0 mod (n-1)) + 1 w0:实际为ECC私钥
w1=(z1 mod (n-1)) + 1 w1:实际为ECC私钥
然后计算出X
M:是一个公钥恒定定值
x:随机私钥的S值
x*G:计算x的公钥
w0*M:将w0私钥和恒定公钥点M乘后获得一个在ECC曲线上的点。充当盐值
X=x*G + w0*M
此时手机端有x,X,w0,w1,N,M,L,salt
手机发送X到车端


车端收到X后计算Z和V
y:随机私钥的S值
w0*M:将w0私钥和恒定公钥点乘后获得一个在ECC曲线上的点。充当盐值
X-w0×M:按照手机端计算规则等同于x*G,也就是随机私钥x的公钥
Z=y×(X-w0×M)
X-w0×M = x*G:x的公钥
y*x*G= 将y私钥和x的公钥做点乘后获得一个在ECC曲线上的点。
Z的结果就是手机端随机私钥和车机端的随机公钥在在ECC曲线上的点
V=y*L:将y私钥和w1的公钥做点乘后获得一个在ECC曲线上的点。
此时车端有X,y,Y,w0,N,M,L,salt
车端发送Y到手机

手机端:
手机收到Y后计算Z和V
此时手机有Y,x,X,w0,w1,N,M,L,salt
x:随机私钥的S值
w0*M:将w0私钥和恒定公钥点乘后获得一个在ECC曲线上的点。充当盐值
Y-w0×N:按照车端计算规则等同于y*G,也就是随机私钥y的公钥
Z=x*(Y-w0×N)
Y-w0×N = y*G:y的公钥
x*y*G= 将x私钥和y的公钥做点乘后获得一个在ECC曲线上的点。
Z的结果就是手机端随机私钥和车机端的随机公钥在在ECC曲线上的点
V=w1*(Y-w0*N)
w1*(Y-w0*N) = w1*y*G 将w1私钥和y的公钥获得一个在ECC曲线上的点

此时手机端有2个ECC点,
手机端私钥和车端公钥的做点乘后获得一个在ECC曲线上的点(Z1)
将w1私钥和y的公钥获得一个在ECC曲线上的点(V1)

车端有2个ECC点
手机端公钥钥和车端私钥的做点乘后获得一个在ECC曲线上的点(Z2)
将w1公钥和y的私钥获得一个在ECC曲线上的点(V2)

按照ECC的计算规则,
Z1=Z2
V1=V2

所以之后计算CK和SK的时候,其实入参已经一致了

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值