2017-2018-2 20179205 《网络攻防》第十三周作业 国密算法实现

《网络攻防》第十三周 国密算法实现

一、SM2椭圆曲线公钥密码算法原理

  SM2椭圆曲线公钥密码算法(ECC)于2010年12月首次公开发布,2012年成为中国商用密码标准,2016年成为中国国家密码标准,国家公钥密码算法标准。SM2算法主要内容包括3部分:数字签名算法;密钥交换协议和公钥加密算法。在实际使用中,国密局推荐使用素数域256位椭圆曲线,其曲线方程为y^2= x^3+ax+b。a;b ∈ Fp,且(4a^3 +27b^2) modp ̸= 0。

  目前支持SM2算法的产品已达1000余款,广泛应用于电子政务、移动办公、电子商务、移动支付、电子证书等基础设施、云服务等领域。以《中华人民共和国电子签名法》为依据,各类应用数字签名/验签的旺盛需求,催生出一批支持SM2算法高性能产品,如中国科学院DCS中心研制的高性能金融数据密码机SM2签名速率超过33万次/秒;清华大学微电子所研制的单颗算法芯片SM2签名速率达81763.03次/秒。在公钥基础设施(PKI)领域,以基于SM2算法的数字证书应用最具有代表性,尤其是自2011年国家密码管理局发布公钥算法升级工作通知以来,全国总计有45家第三方电子认证服务机构(CA)完成了支持SM2算法的系统新建或升级改造,工行、农行、建行、交行、税务、海关、交通、教育等12家系统性电子认证服务系统也实现了对SM2算法的支持,累计证书发行量近亿张,支持SM2算法的智能密码钥匙、IC卡的芯片出货量达5亿颗,有力地促进了SM2算法在交通、能源、金融、税务、公安、卫生、社保、教育等多个领域的应用。SM2算法也已被纳人可信计算组织(TCG)发布的可信平台模块库规范(TPM2.0),由国民技术研制的支持TPM2.0的Z32H320TC系列芯片集成了SM2算法,被应用在微软于中国发售的Microsoft Surface Pro 3 pad中.

1.1 SM2数字签名算法

  数字签名算法由一个签名者对数据产生数字签名,并由一个验证者验证签名的可靠性.每个签名者有一个公钥和一个私钥,其中私钥用于产生签名,验证者用签名者的公钥验证签名.

  SM2数字签名算法中,作为签名者的用户A的密钥对包括其私钥dA,和公钥pA =[dA]G=(xA,yA),用户A具有位长为entlenA的可辨别标识IDA,记ENTLA,是由整数entlenA转换而成的2B数据,签名者和验证者都需要用密码杂凑算法求得用户A的杂凑值zA=H256 (ENTLA || IDA || a || b || xG || yG || xA || yA). SM2数字签名算法规定H256为SM3密码杂凑算法.

1.2 SM2密钥交换协议

  密钥交换协议是2个用户A和B通过交互的信息传递,用各自的私钥和对方的公钥来商定一个只有他们知道的秘密密钥.这个共享的秘密密钥通常用在某个对称密码算法中.

  SM2密钥交换协议中,用户A的密钥对包括其私钥dA和公钥pA=[dA]G=(xA,yA),用户B的密钥对包括其私钥dB和公钥pB=[dB]G=(xB,yB).用户A具有位长为entlenA的可辨别标识IDA,记ENTLA是由整数entLenA转换而成的2B数据;用户B具有位长为entlenB的可辨别标识IDB,记ENTLB是由整数entlenB转换而成的2B数据.A,B双方都需要用密码杂凑算法求得用户A的杂凑值ZA = H256 ( ENTLA || IDA || a || b || xG || yG || xA || yA)和用户B的杂凑值ZB = H256 ( ENTLB || IDB || a || b || xG || yG || xB || yB).

1.3 SM2公钥加密算法

  公钥加密算法规定发送者用接收者的公钥将消息加密成密文,接收者用自已的私钥对收到的密文进行解密还原成原始消息.

  SM2公钥加密算法中,用户B的密钥对包括其私钥dB和公钥PB=[dB]G.

1.4 python实现SM2算法

二、SM3密码杂凑算法原理

  SM3密码杂凑算法采用Merkle-Damgard结构,消息分组长度为512 b,摘要长度256 b.压缩函数状态256b,共64步操作。

  SM3算法作为标准杂凑算法使用非常广泛。目前支持SM3算法的产品包括安全芯片、终端、设备和应用系统,采用SM3算法的产品和系统运行安全稳定。如在智能电网领域,截至2016年10月,采用SM3算法的智能电表已经安装近6亿用户,均能安全稳定运行。在金融系统,目前大约有7亿多银行磁条卡更新为密码芯片卡,动态令牌累计发行7726万支,这些卡片及令牌均使用了SM3算法。SM3算法也支持可信计算组织(TCG)发布的可信平台模块库规范(TPM2.0)。该算法业已成为我国电子签名类密码系统、计算机安全登录系统、计算机安全通信系统、数字证书、网络安全基础设施、安全云计算平台与大数据等领域信息安全的基础技术。

2.1 SM3密码杂凑算法的特点

  SM3密码杂凑算法压缩函数整体结构与SHA-256相似,但是增加了多种新的设计技术,包括增加16步全异或操作、消息双字介人、增加快速雪崩效应的尸置换等.能够有效地避免高概率的局部碰撞,有效地抵抗强碰撞性的差分分析、弱碰撞性的线性分析和比特追踪法等密码分析。

  SM3密码杂凑算法合理使用字加运算,在不显著增加硬件开销的情况下,采用P置换,加速了算法的雪崩效应,提高了运算效率。同时,SM3密码杂凑算法采用了适合32 b微处理器和8b智能卡实现的基本运算,具有跨平台实现的高效性和广泛的适用性。

2.2 SM3密码杂凑算法的设计原理

SM3密码杂凑算法的设计主要遵循以下原则:

  • 能够有效抵抗比特追踪法及其他分析方法;
  • 在保障安全性的前提下,综合性能指标与SHA-256同等条件下相当.

(1)压缩函数的设计原则

压缩函数的设计具有结构清晰、雪崩效应强等特点,采用了以下设计技术:

  • 消息双字介人。输人的双字消息由消息扩展算法产生的消息字中选出。为了使介入的消息尽快产生雪崩效应,采用了模2^23算术加运算和P置换等
  • 每一步操作将上一步介入的消息比特非线性迅速扩散,每一消息比特快速地参与进一步的扩散和混乱
  • 采用混合来自不同群运算,模2^23算术加运算、异或运算、3元布尔函数和P置换
  • 在保证算法安全性的前提下,为兼顾算法的简介和软硬件及智能卡实现的有效性,非线性运算主要采用布尔运算和算术加运算
  • 压缩函数参数的选取应使压缩函数满足扩散的完全性、雪崩速度快的特点

(2)消息扩展算法的设计

  消息扩展算法将512b的消息分组扩展成2176b的消息分组。通过线性反馈移位寄存器来实现消息扩展,在较少的运算量下达到较好的扩展效果.消息扩展算法在SM3密码杂凑算法中作用主要是加强消息比特之间的相关性,减小通过消息扩展弱点对杂凑算法的攻击可能性。消息扩展算法有以下要求:

  • 消息扩展算法满足保墒性
  • 对消息进行线性扩展,使扩展后的消息之间具有良好的相关性
  • 具有较快的雪崩效应
  • 适合软硬件和智能卡实现

2.3 python实现SM3算法

部分代码:

三、SM4分组密码算法原理

  SMS4分组加密算法是中国无线标准中使用的分组加密算法,在2012年已经被国家商用密码管理局确定为国家密码行业标准,标准编号GM/T 0002-2012并且改名为SM4算法,是国内官方公布的第一个加密算法。该算法的分组长度为128比特,密钥长度为128比特。加密算法与密钥扩展算法都采用32轮非线性迭代结构。解密算法与加密算法的结构相同,只是轮密钥的使用顺序相反,解密轮密钥是加密轮密钥的逆序。

3.1 SMS4算法的加密过程

1.读入数据

2.计算轮密钥中间变量

3.计算轮密钥

4.SMS4算法第i+1轮加密

5.SMS4算法最终加密输出

3.2 SMS4算法的安全性

  SMS4算法作为我国专业机构设计的商用密码算法,经过充分分析和测试,可以抵抗差分攻击、线性攻击等。根据相关分析,SMS4算法的S盒设计得相当好。在设计原理上,SMS4比AES的S盒设计多了一个仿射变换,具有很高的灵活性,可以随时被替换以应对突发性安全威胁。SMS4的S盒在非线性度、自相关性、差分均匀性、代数免疫性等主要密码学指标方面都达到了相当高的水平。

3.3 python实现SM4算法

执行SM4算法,测试结果保存在log_file_0.txt下:

posted @ 2018-06-03 15:02  20179205王雅哲  阅读(1169)  评论(4编辑  收藏  举报