专栏中心

EEPW首页 > 专栏 > OpenSSL密码库算法笔记——第5.4.13章 椭圆曲线点的压缩

OpenSSL密码库算法笔记——第5.4.13章 椭圆曲线点的压缩

发布人:电子禅石 时间:2021-01-18 来源:工程师 发布文章

首先来看看什么是点的压缩。

        椭圆曲线上的任一仿射点(x, y)(非无穷远点)都可以压缩成利用其y坐标的最后一比特(记为y*)和x坐标来表示,即(x, y*),这就是点的压缩。反过来,利用(x, y*)恢复y坐标,还原仿射点(x, y)的过程就称为点的解压缩。

利用点的压缩可以减少存储和传输时的数据量,但增加了数据处理时间。

        代码中用参数point_conversion_form_t来表示是否进行点压缩,point_conversion_form_t的定义如下:

typedef enum {

        POINT_CONVERSION_COMPRESSED = 2,

        POINT_CONVERSION_UNCOMPRESSED = 4,

        POINT_CONVERSION_HYBRID = 6

} point_conversion_form_t;

其中

  1. POINT_CONVERSION_COMPRESSED 的值为 2,表示采用点压缩。

  2. POINT_CONVERSION_UNCOMPRESSED的值为4,表示不采用压缩。

  3. POINT_CONVERSION_HYBRID的值为6,表示混合使用,即既包含点压缩又包含未压缩。

为了节省资源,一般会用一个字节表示压缩形式和y坐标的最后一个字节(必要时)。假设用form来表示压缩形式,则表示压缩形式和y*的字节buf[0]为:

。               ………(5.16)

        点的压缩很简单,直接用(x, y*)表示即可。但是怎么解压缩该呢,怎么恢复y坐标呢?简而言之,就是利用Weierstrass方程计算平方根。具体过程如下:

其中,Step2计算可以利用文件bn_sqrt.c中的函数BN_mod_sqrt()实现(函数BIGNUM *BN_mod_sqrt(BIGNUM *in, const BIGNUM *a, const BIGNUM *p)的功能是计算a mod p的平方根)。

利用给定的压缩点(x, y*)来设置点坐标(x, y)的过程其实就是解压缩的过程:

  1. point->X ← x

  2. point->Y ← 取x3+ax+b的某一个平方(由y*决定)

  3. point->Z ← 1

其中y*=1表示y坐标为奇数,y*=0表示y坐标为偶数。

───────────────────────────────────────

int EC_POINT_set_compressed_coordinates_GFp(const EC_GROUP *group, EC_POINT *point, const BIGNUM *x, int y_bit) 

功能:    利用压缩点坐标来设置点坐标

输入:    group,x【压缩点的x坐标】,int y_bit【y坐标最后一比特】

输出:    point【不压缩的点】

返回:    1【正常】or 0【出错】

出处:    ec_lib.c

调用:        ec_GFp_simple_set_compressed_coordinates(const EC_GROUP *group, EC_POINT *point, const BIGNUM *x_, int y_bit)

───────────────────────────────────────

代码的处理过程是,先通过解压缩计算出y坐标,然后直接调用设置仿射点坐标的函数EC_POINT_set_affine_coordinates_GFp(group, point, x, y)


专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们

关键词:

相关推荐

Vishay推出车规级光伏MOSFET驱动器,提升高压系统可靠性并降低成本

铠侠UFS 5.0为端侧AI带来全新体验

TLC548C,TLC548I TLC549C,TLC549I 带串行控制8位模数转换器

英飞凌推出多相降压控制器和支持 PMBus 标准的负载点(PoL)

TLC2543C,TLC2543I 12位开关电容型逐次逼近模数转换器

赛灵思宣传片

视频 2012-06-08

波本威士忌废料可以提供下一代超级电容器组件

龙虾硬件大赛来了!第十四届中国电子信息博览会(CITE2026)展前揭秘

2026-04-01

英飞凌针对800 VDC架构AI数据中心推出基于CoolGaN高压IBC参考设计

大嘴业话:企业转型模式的探讨

视频 2012-06-11

加速器驱动的MCU为汽车带来了更多AI的普及

TLC5602C,TLC5602M D/A转换器

第三届OpenHW开源硬件与嵌入式大赛总决赛现场实录

视频 2012-06-08

你的虚拟双胞胎有朝一日可能拯救你的生命

TLC0831C_I,TLC0832C_I 通用串行输出8位A_D转换器

北京工业大学:基于FPGA的情绪检测程序与相关智能宠物的开发

视频 2012-06-15

TLC1542C_I_M_Q,TLC1543C_I_Q 10位开关电容逐次逼近模数转换器

财报PK:圣邦股份距离正面挑战ADI还有多远?

模拟技术 2026-04-01

为极致触控而生 汇顶发布新一代高性能柔性OLED触控芯片GT9926

中南民族大学:基于虚拟环绕声的音频处理器设计

视频 2012-06-15
更多 培训课堂
更多 焦点
更多 视频

技术专区