点击上方蓝字谈思实验室
获取更多汽车网络安全资讯
讨论基于X25519密钥交换原理之前,需要理解一些数学知识。
除了个别点外,扭曲爱德华曲线(twisted Edwards curve)和蒙哥马利曲线(Montgomery curve)双向有理等价,即:扭曲爱德华曲线点和蒙哥马利曲线点可以相互映射。
按照RFC7748解释,扭曲爱德华曲线和蒙哥马利曲线公式表示如下:
两条曲线坐标点的转化关系如下所示:
01
基于X25519密钥交换原理
X25519 是 ECDH(Elliptic Curve Diffie-Hellman,椭圆曲线迪菲-赫尔曼密钥交换)的具体实现之一。X25519 使用特定的椭圆曲线(Curve25519)来进行密钥交换,同时,X25519定义了使用 Curve25519 曲线的具体算法和参数。
实现密钥交换功能之前,首先,需要实现X25519函数功能,之后,基于X25519函数完成密钥交换。
(一)X25519函数
X25519对蒙哥马利形式执行标量乘法,以一个标量和一个u坐标作为输入,并产生一个u坐标作为输出,即:u_out = X25519(k, u_in)。
其中,标量(k)是一个32bytes的随机数,注意,这个32byes随机数需要处理后使用,具体处理规则如下:
对应的代码示例如下:
(二)共享密钥交换原理
实现X25519功能以后,生成共享密钥也就相对简单了。
首先,通过私钥生成公钥,即:pub_key = X25519(pri_key, 9)。注意:第二个固定参数9按照小端格式存储,即:0x09后面跟31个0x00,共32 byte。规范描述如下:
其次,通过对端的公钥(pub_key_out)和自身的私钥(pri_key_in)生成共享密钥,即:shared_key = X25519(pri_key_in, pub_key_out)。
假设:需要建立安全通信的双方为Alice和Bob。
1、Alice通过私钥(a)生成公钥K_A = X25519(a, 9),并将公钥K_A发送给Bob。同时,Bob通过私钥(b)生成公钥K_B = X25519(b, 9),并将公钥K_B发送给Alice;
2、Alice由a和K_B生成共享密钥shared_key_A = X25519(a, K_B),同时,Bob由b和K_A生成共享密钥shared_key_B = X25519(b, K_A)。
3、shared_key_A == shared_key_B ,之后,Alice和Bob通过该共享密钥进行安全通信。
02
拓展思考
Q1:既然扭曲爱德华曲线(twisted Edwards curve)和蒙哥马利曲线(Montgomery curve)的坐标点可以相互转换,那么,基于EdDSA,是否可以进行密钥共享呢?
A1:可以。
Q2:X25519功能为什么要处理最高bit?
A2:为了避免符号位带来的影响,X25519需要对输入的u坐标系的最高bit进行处理,具体处理措施:
end
精品活动推荐
专业社群
部分入群专家来自:
新势力车企:
特斯拉、合众新能源-哪吒、理想、极氪、小米、宾理汽车、极越、零跑汽车、阿维塔汽车、智己汽车、小鹏、岚图汽车、蔚来汽车、吉祥汽车、赛力斯......
外资传统主流车企代表:
大众中国、大众酷翼、奥迪汽车、宝马、福特、戴姆勒-奔驰、通用、保时捷、沃尔沃、现代汽车、日产汽车、捷豹路虎、斯堪尼亚......
内资传统主流车企:
吉利汽车、上汽乘用车、长城汽车、上汽大众、长安汽车、北京汽车、东风汽车、广汽、比亚迪、一汽集团、一汽解放、东风商用、上汽商用......
全球领先一级供应商:
博世、大陆集团、联合汽车电子、安波福、采埃孚、科世达、舍弗勒、霍尼韦尔、大疆、日立、哈曼、华为、百度、联想、联发科、普瑞均胜、德赛西威、蜂巢转向、均联智行、武汉光庭、星纪魅族、中车集团、赢彻科技、潍柴集团、地平线、紫光同芯、字节跳动、......
二级供应商(500+以上):
Upstream、ETAS、Synopsys、NXP、TUV、上海软件中心、Deloitte、奇安信、为辰信安、云驰未来、信大捷安、信长城、泽鹿安全、纽创信安、复旦微电子、天融信、奇虎360、中汽中心、中国汽研、上海汽检、软安科技、浙江大学......
人员占比
公司类型占比
原文始发于微信公众号(谈思实验室):信息安全:密钥交换之X25519
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论