DLMS/COSEM中公开密钥算法的使用_椭圆曲线加密法

1.概述

椭圆曲线密码涉及有限域上的椭圆曲线上的算术运算。椭圆曲线可以定义在任何数字域上(实数、整数、复数),但在密码学中,椭圆曲线最常用于有限素数域。

素数域上的椭圆曲线由一组实数(x, y)组成,满足以下等式:

方程的所有解的集合构成了椭圆曲线。改变a和b会改变曲线的形状,这些参数的微小变化会导致(x, y)解集的重大变化。

2.NIST推荐使用椭圆曲线

美国国家标准与技术研究院(National Institute of Standards and Technology,NIST)直属美国商务部,从事物理、生物和工程方面的基础和应用研究,以及测量技术和测试方法方面的研究,提供标准、标准参考数据及有关服务,在国际上享有很高的声誉。

FIPS PUB 186- 4:13推荐了素数域GF(p)上的五素数域椭圆曲线。DLMS/COSEM选取P-256和P-384曲线,如表13所示。

表13 - DLMS/COSEM安全套件中的椭圆曲线

3.数据转换

本条款描述了用于将不同用于指定公钥算法的数据类型之间进行转换的原始数据类型。这些数据类型包括八进制字符串(OS)、位字符串(BS)、整数(I)、域元素(FE)和椭圆曲线点(ECP)。DLMS/COSEM使用八进制字符串来表示公钥算法的元素,并使用从和到八进制字符串的数据类型之间的转换原始数据类型。长度为d的八进制字符串Md-1 Md-2 ... M0被编码为A-XDR OCTET STRING,其中左起第一个八进制字符Md-1对应于OCTET STRING编码值的第一个八进制字符。

3.1 位字符串和八位字符串之间的转换(BS2OS)

将位串转换为字节串的原始数据转换函数称为位串到字节串转换函数(BS2OS)。它将位串作为输入,并输出字节串。位串bl-1 bl-2 ... b0的长度为l,将被转换为字节串Md-1 Md-2 ... M0的长度d = ⌈l/8⌉。

转换器在左边添加足够的零来使位数成为8的倍数,然后将数据分割成八位字节。更确切地说,转换应如下:

  • 当0≤i < d - 1时,令八位元Mi = b8i+7 b8i+6...b8i,;
  • 最左边的八位Md-1应当将其最左边的8d-l位设为零。
  • 它最右边的8 - (8d - 1)位应该是bl-1 bl-2...b8d-8。

3.2八位串和位串之间的转换(OS2BS)

将八位字符串转换为位字符串的数据转换原语称为八位字符串到位字符串转换原语(octet string to bit string conversion primitive, OS2BS)。它接受八位字符串作为输入,并输出位字符串。长度为d的八位字符串Md-1 Md-2...M0需要转换为长度为l的位字符串bl-1 bl-2...b0,其中d =⌈l/8⌉,最左八位的最左8d-l位为零。

更准确地说,转换应如下:

  • 当0≤I < l - 1时,设比特b8i+7 b8i+6...b8i = Mi;
  • 其最左边八位的最左边(8d - l)位应为零。

3.3整数与八位字符串的转换(i2s)

将整数转换为八位字节字符串的数据转换原语称为integer to octet

字符串转换原语,或i2s。它接受一个非负整数x和八位字符串的期望长度d作为输入。长度d必须满足256d > x,否则输出"error"。i2s输出相应的八位字节字符串。

整数x应以其唯一的l位进制256表示:

  • x = xd-1·256 d 1 + xd-2·256 d2 + x1····+ 256 + x0,;
  • 当0≤I≤d-1时,0≤xi < 256;
  • Mi = xi,对于0≤i≤d-1。

输出字节串为Md-1 Md-2...M0。

3.4八字节串与整数的转换(OS2I)

将八位字节字符串转换为整数的数据转换原语称为"八位字节字符串"

整数转换原语,或OS2I。它以长度为d的八位串Md-1 Md-2...M0作为输入,输出相应的整数x。对于长度为0的八位串,转换输出整数0。

每个八位被解释为以256为基数的非负整数。更确切地说,转换应如下:

  • xi = Mi,对于0≤i≤d-1;
  • x = xd-1·256 d 1 + xd-2·256 d2的x1 +····256 + x0。

3.5字段元素与八位字符串之间的转换(fe2s)

将字段元素转换为八位元组字符串的数据转换原语称为字段元素到八位元组字符串转换原语,或fe2o。它接受一个字段元素作为输入,并输出相应的八位字节字符串。将域元素x∈Fp应用带参数l的i2s转换原语转换为长度d =≤log256 p <e:1>的八位元字符串Md-1 Md-2...M0,其中

**•**FE2OS(x) = I2OS(x, l)。

3.6八位字符串和字段元素之间的转换(OS2FE)

将八位元组字符串转换为字段元素的数据转换原语称为八位元组字符串到字段元素转换原语,或OS2FE。它接受一个八位字符串作为输入,并输出相应的字段元素。长度为d的八位字符串Md-1 Md-2...M0被转换为字段元素x

∈Fp,其中应用OS2I转换原语:

**•**OS2FE(x) = OS2I(x) mod p。

相关推荐
罗湖老棍子2 小时前
Biorhythms(信息学奥赛一本通- P1639)
算法·数论·裴蜀定理·扩展欧几里得·扩展中国剩余定理
奋发向前wcx7 小时前
CSP-J复赛模拟赛4 王晨旭补题 2026.10.5
算法
XiaoMaqqqq9 小时前
市面上正规的IP驱动产业新场景新工具哪家强
运维·python·网络协议·tcp/ip
huainingning9 小时前
RJ SW Console口忘记密码处理方法
linux·运维·服务器
布裘9 小时前
【银河麒麟】桌面系统循环登录,无法进入桌面?
linux·运维·服务器
慧都小项9 小时前
程序到了Linux才出错?用CLion把调试接到目标环境
linux·运维·服务器
念何架构之路10 小时前
zap采样器与性能优化内幕
算法·性能优化·哈希算法
Lsetea10 小时前
OpenSSL verify报unhandled critical extension:error 34与关键扩展排查
运维·https·ssl证书·openssl·证书链
guo_wen_qiang10 小时前
docker的备份与迁移
运维·docker·容器
晒太羊的猫11 小时前
hot100动态规划刷题
算法·动态规划