type
status
date
slug
summary
tags
category
icon
password
Sub-item
Last edited time
Oct 28, 2023 10:40 AM
Parent item
领域
加密过程
加密过程可以描述为:
- 需要发送加密消息的发送者将待传输的明文()编码到椭圆曲线上一点,并产生一个随机整数;
- 发送者计算2个坐标点,;其中为接收者公开的公钥,为椭圆曲线的基点;
- 发送者将传输给接收者;
- 接收者接到密文信息后,计算,结果就是点,因为。其中为接收者持有的私钥;
- 接收者再将坐标点M翻译为原始消息;
在具体实现中,加密过程实例如下:
- 用随机数发生器产生随机数;
- 计算椭圆曲线点;
- 计算椭圆曲线点,若是无穷远点,则报错并退出,其中为接收者的公钥;
- 计算椭圆曲线点;
- 计算,是秘钥派生函数,根据输入值生成一个长度为的秘钥,若t为全0比特串,则需要重复第一步,重新计算;
- 计算;$该步骤的作用是对消息进行“加密”;
- 计算;该步骤的作用是对消息及参数进行“签名”;
- 输出密文;为''开头,再加64字节的和,为32字节的Hash值,和明文长度相同,即加密结果是原文长度加上97字节。
解密过程
设klen为密文中C2的比特长度。
根据上一小节的介绍,发送者持有接收者的公钥PB,经过非对称秘钥加密后的密文格式为,接收者可以通过以下计算流程进行解密:
- 从C中取出比特串,将的数据类型转换为椭圆曲线上的点,这里首先需要验证是否满足椭圆曲线方程,若不满足则说明密文有问题;
- 计算椭圆曲线点,若是无穷远点,则报错并退出;
- 计算,该值等于加密过程中的坐标,其中为接收者的私钥。根据加密过程中坐标的计算方法,, 可以推导出 ,而就是, 所以;
- 和加密过程一样,计算,若为全0比特串,则报错并退出;
- 从C中取出比特串,计算;该步骤的作用是恢复原始消息;
- 计算,从C中取出比特串,若u不等于,则报错并退出。该步骤的作用是验证原始消息是否被篡改;
- 输出明文。