当前位置: 首页 > news >正文

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

1.概述 

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

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

y^{2}= x^{3}+ax+b 

        方程的所有解的集合构成了椭圆曲线。改变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。

http://www.lryc.cn/news/407044.html

相关文章:

  • argon主题调整日记
  • Godot入门 05收集物品
  • 353_C++_Boost.Asio库来处理异步操作
  • 【Django】django模板与前端技术(html模板)
  • Java连接Redis和SpringBoot整合Redis
  • 快速入门Jupyter notebook
  • Java反射详细学习笔记
  • 区块链在艺术市场中的创新:数字艺术品的溯源与版权保护
  • 智能编程,一触即发:使用AIGC优化CSS——提升前端开发效率与质量
  • 鸿蒙界面开发
  • 【JavaScript】use strict
  • Linux云计算 |【第一阶段】SERVICES-DAY3
  • Java面试八股之Spring-boot-starter-parent的作用是什么
  • Python 和 Boto3 生成 Amazon S3 对象的 HTTPS URL
  • V-bind动态绑定style的案例集合
  • 深度学习守护夜行安全:夜视行人检测系统详解
  • 亚信安慧AntDB亮相PostgreSQL中国技术大会,获“数据库最佳应用奖”并分享数据库应用实践
  • 如何减少白屏的时间
  • 科研成果 | 高精尖中心取得高性能区块链交易调度技术突破
  • go语言学习文档精简版
  • 立元科技-Java面经
  • OpenGL入门第六步:材质
  • 新版SpringSecurity5.x使用与配置
  • JavaScript实战 - JavaScript 中实现线程锁
  • 基于PaddleClas的人物年龄分类项目
  • 20240725java的Controller、DAO、DO、Mapper、Service层、反射、AOP注解等内容的学习
  • dynslam的安装
  • stats 监控 macOS 系统
  • 后端面试题日常练-day05 【Java基础】
  • mac|安装PostgreSQL