山东大学软件工程应用与实践——使用CUDA/GPU技术加速密码运算(第七周)

本文介绍了SM2加密算法的原理和ECC椭圆曲线密码体制,详细阐述了SM2的加解密过程,以及其在CUDA上的应用潜力,探讨了其相较于RSA算法的安全性和效率优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2021SC@SDUSC

本周对于国密SM2算法原理进行简要的介绍,方便后续对其在CUDA上进行设计。

一、SM2加解密过程

SM2 国密非对称加密算法,属于椭圆曲线密码体制(ECC
Author:John
基于椭圆曲线的离散对数难题,目前 SM2 256 bit 加密算法是相当安全的,相当于 RSA 2048 bit 及以上的安全性
有公钥、私钥之分,公钥给别人,可以在一定范围内公开,私钥留给自己,必须保密。由私钥可以计算公钥;由公钥计算私钥,是相当困难的,现阶段是不可能

加密过程:
    设需要发送的消息为比特串 M ,klen 为 M 的比特长度。
    为了对明文 M 进行加密,作为加密者的用户 A 应实现以下运算步骤:
    A1:用随机数发生器产生随机数k∈[1,n-1];
    A2:计算椭圆曲线点 C1=[k]G=(x1,y1),([k]G 表示 k*G )将C1的数据类型转换为比特串;
    A3:计算椭圆曲线点 S=[h]PB,若S是无穷远点,则报错并退出;
    A4:计算椭圆曲线点 [k]PB=(x2,y2),将坐标 x2、y2 的数据类型转换为比特串;
    A5:计算t=KDF(x2 ∥ y2, klen),若 t 为全0比特串,则返回 A1;
    A6:计算C2 = M ⊕ t;
    A7:计算C3 = Hash(x2 ∥ M ∥ y2);
    A8:输出密文C = C1 ∥ C2 ∥ C3。
解密过程:
    设klen为密文中C2的比特长度。
    为了对密文C=C1 ∥ C2 ∥ C3 进行解密,作为解密者的用户 B 应实现以下运算步骤:
    B1:从C中取出比特串C1,将C1的数据类型转换为椭圆曲线上的点,验证C1是否满足椭圆曲线方程,若不满足则报错并退出;
    B2:计算椭圆曲线点 S=[h]C1,若S是无穷远点,则报错并退出;
    B3:计算[dB]C1=(x2,y2),将坐标x2、y2的数据类型转换为比特串;
    B4:计算t=KDF(x2 ∥ y2, klen),若t为全0比特串,则报错并退出;
    B5:从C中取出比特串C2,计算M′ = C2 ⊕ t;
    B6:计算u = Hash(x2 ∥ M′ ∥ y2),从C中取出比特串C3,若u != C3,则报错并退出;
    B7:输出明文M′。
原理:
     用户 A 持有公钥PB&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值