奇妙的安全旅行之国密算法

651 阅读13分钟

hi,大家好,我是开发者FTD。今天我们来介绍一下我们国家密码局制定的加密算法 --- 国密算法。

为什么要制定国密算法?

密码算法是保障信息安全的核心技术,尤其是我国最关键的银行业核心领域长期以来都是沿用MD5、3DES、SHA-256、RSA等这些国际通用的密码算法体系及相关标准。

随着金融安全上升到国家安全高度,近年来国家有关机关和监管机构站在国家安全和长远战略的高度提出了推动国密算法应用实施、加强行业安全可控的要求。摆脱对国外技术和产品的过度依赖,建设行业网络安全环境,增强我国行业信息系统的“安全可控”能力显得尤为必要和迫切。

2010年底,国家密码管理局公布了我国自主研制的“椭圆曲线公钥密码算法”(SM2算法)。为保障重要经济系统密码应用安全,国家密码管理局于2011年发布了《关于做好公钥密码算法升级工作的通知》,要求“自2011年3月1日起,在建和拟建公钥密码基础设施电子认证系统和密钥管理系统应使用SM2算法。自2011年7月1日起,投入运行并使用公钥密码的信息系统,应使用SM2算法。”

国密算法简介

国产密码算法(国密算法)是指国家密码局认定的国产商用密码算法,主要有SM1,SM2,SM3,SM4,密钥长度和分组长度均为128位。在金融领域目前主要使用公开的SM2、SM3、SM4三类算法,分别是非对称加密算法、哈希算法和对称加密算法。

SM1 算法

SM1 为对称加密算法,其加密强度与AES相当。该算法不公开,调用该算法时,需要通过加密芯片的接口进行调用。 采用该算法已经研制了系列芯片、智能IC卡、智能密码钥匙、加密卡、加密机等安全产品,广泛应用于电子政务、电子商务及国民经济的各个应用领域(包括国家政务通、警务通等重要领域)。

SM2 算法

SM2 为非对称加密,基于ECC。该算法已公开。由于该算法基于ECC,故其签名速度与秘钥生成速度都快于RSA。ECC 256位(SM2采用的就是ECC 256位的一种)安全强度比RSA 2048位高,但运算速度快于RSA。

SM2椭圆曲线公钥密码算法是我国自主设计的公钥密码算法,包括SM2-1椭圆曲线数字签名算法,SM2-2椭圆曲线密钥交换协议,SM2-3椭圆曲线公钥加密算法,分别用于实现数字签名密钥协商和数据加密等功能。SM2算法与RSA算法不同的是,SM2算法是基于椭圆曲线上点群离散对数难题,相对于RSA算法,256位的SM2密码强度已经比2048位的RSA密码强度要高。

SM3 算法

SM3杂凑算法是我国自主设计的密码杂凑算法,适用于商用密码应用中的数字签名和验证消息认证码的生成与验证以及随机数的生成,可满足多种密码应用的安全需求。为了保证杂凑算法的安全性,其产生的杂凑值的长度不应太短,例如MD5输出128比特杂凑值,输出长度太短,影响其安全性。SHA-1算法的输出长度为160比特,SM3算法的输出长度为256比特,因此SM3算法的安全性要高于MD5算法和SHA-1算法。

SM4 算法

SM4 无线局域网标准的分组数据算法。

SM4分组密码算法是我国自主设计的分组对称密码算法,用于实现数据的加密/解密运算,以保证数据和信息的机密性。要保证一个对称密码算法的安全性的基本条件是其具备足够的密钥长度,SM4算法与AES算法具有相同的密钥长度分组长度128比特,因此在安全性上高于3DES算法。

由于SM1、SM4加解密的分组大小为128bit,故对消息进行加解密时,若消息长度过长,需要进行分组,要消息长度不足,则要进行填充。

国际算法和国密算法的区别

分组密码算法——国际DES,国产SM4

分组密码就是将明文数据按固定长度进行分组,然后在同一密钥控制下逐组进行加密,从而将各个明文分组变换成一个等长的密文分组的密码。其中二进制明文分组的长度称为该分组密码的分组规模。

分组密码的实现原则如下:

  1. 实现起来必须比较简单,加密和解密都十分容易,适合硬件和(或)软件实现。
  2. 加脱密速度和所消耗的资源和成本较低,能满足具体应用范围的需要。

分组密码的设计基本遵循混淆原则和扩散原则。

混淆原则就是将密文、明文、密钥三者之间的统计关系和代数关系变得尽可能复杂,使得破解人即使获得了密文和明文,也无法求出密钥的任何信息;即使获得了密文和明文的统计规律,也无法求出明文的任何信息。

扩散原则就是应将明文的统计规律和结构规律散射到相当长的一段统计中去。也就是说让明文中的每一位影响密文中的尽可能多的位,或者说让密文中的每一位都受到明文中的尽可能多位的影响。

  • DES 算法

DES算法是在美国NSA(国家安全局)资助下由IBM公司开发的密码算法,其初衷是为政府非机密的敏感信息提供较强的加密保护。它是美国政府担保的第一种加密算法,并在1977年被正式作为美国联邦信息处理标准。DES主要提供非军事性质的联邦政府机构和私营部门使用,并迅速成为名声最大,使用最广的商用密码算法。

  • SM4 算法

2006年我国公布了无限局域网产品使用的SM4密码算法。这是我国第一次公布自己的商用密码算法。

国际的DES算法和国产的SM4算法的目的都是为了加密保护静态储存和传输信道中的数据,主要特性如下:

DES 算法 SM4 算法
计算基础 二进制 二进制
算法结构 使用标准的算术和逻辑运算,先替代后置换,不含非线性变换 基本轮函数加迭代,含非线性变换
加解密算法是否相同
计算轮数 16轮(3DES 为 16轮 * 3) 32轮
分组长度 64位 128位
密钥长度 64位(3DES 为128位) 128位
有效密钥长度 56位(3DES 为112位) 128位
实现难度 易于实现 易于实现
实现性能 软件实现满,硬件实现快 软件实现和硬件实现都快
安全性 较低(3DES 较高) 算法较新,还未经过现实检验

从算法上看,国产SM4算法在计算过程中增加非线性变换,理论上能大大提高其算法的安全性,并且由专业机构进行了密码分析,民间也对21轮SM4进行了差分密码分析,结论均为安全性较高。

公钥密码算法——国际RSA,国产SM2

公钥密码学与其他密码学完全不同,使用这种方法的加密系统,不仅公开加密算法本身,也公开了加密用的密钥。

公钥密码系统与只使用一个密钥的对称传统密码不同,算法是基于数学函数而不是基于替换和置换。公钥密码学是非对称的,它使用两个独立的密钥,即密钥分为公钥和私钥,因此称双密钥体制。双钥体制的公钥可以公开,因此称为公钥算法。

公钥算法的出现,给密码的发展开辟了新的方向。公钥算法虽然已经历了20多年的发展,但仍具有强劲的发展势头,在鉴别系统和密钥交换等安全技术领域起着关键的作用。

公钥算法的加密与解密由不同的密钥完成,并且从加密密钥得到解密密钥在计算上是不可行的。通常,公钥算法的两个密钥中任何一个都可以作为加密而另一个用作解密,但不是所有的公钥算法都是如此。

  • RSA 算法

RSA算法由Rivest、Shamir、Adleman于1978年首次发表,是迄今为止最容易理解和实现的公钥算法,已经受住了多年深入的攻击,其理论基础是一种特殊的可逆模幂运算,其安全性基于分解大整数的困难性。

RSA算法既可用于加密,又可用于数字签名,已得到广泛采用,并被许多标准化组织(如ISO、ITU、IETF和SWIFT等)接纳。目前许多国家标准仍采用RSA算法或它的变型。

  • SM2 算法

**SM2算法由国家密码管理局于2010年12月17日发布,全称为椭圆曲线算法。**椭圆曲线并不是椭圆,之所以称为椭圆曲线是因为它们是用三次方程来表示的,并且该方程与计算椭圆周长的方程相似。

现今对椭圆曲线研究的时间短,经过许多优秀的数学家的努力,至今一直没有找到亚指数级算法。正是由于目前所知求解ECDLP的最好方法是指数级的,这使得我们选用SM2算法作加解密及数字签名时,所要求的密钥长度比RSA要短得多。

国际的RSA算法和国产的SM2算法的主要特性对比如下:

RSA 算法 SM2 算法
计算结构 基于特殊的可逆模幂运算 基于椭圆曲线
计算复杂度 亚指数级 完全指数级
相同的安全性能下所需公钥位数 较多 较少,160位的SM2与1024位的RSA具有相同的安全等级
密钥生成速度 较RSA算法快百倍以上
加解密速度 一般 较快
安全性难度 基于分解大整数的难度 基于离散对数问题,ECDLP数学难题
摘要算法——国际MD5、SHA256,国产SM3

摘要函数在密码学中具有重要的地位,被广泛应用在数字签名,消息认证,数据完整性检测等领域。摘要函数通常被认为需要满足三个基本特性:碰撞稳固性,原根稳固性和第二原根稳固性。

2005年,Wang等人给出了MD5算法和SHA-1算法的碰撞攻击方法,现今被广泛应用的MD5算法和SHA-1算法不再是安全的算法。

SM3密码摘要算法是中国国家密码管理局2010年公布的中国商用密码杂凑算法标准。SM3算法适用于商用密码应用中的数字签名和验证,是在SHA-256基础上改进实现的一种算法。SM3算法采用Merkle-Damgard结构,消息分组长度为512位,摘要值长度为256位。

SM3算法的压缩函数与SHA-256的压缩函数具有相似的结构,但是SM3算法的设计更加复杂,比如压缩函数的每一轮都使用2个消息字。

现今为止,SM3算法的安全性相对较高。

国密算法的应用

商用密码的应用领域十分广泛,主要用于对不涉及国家秘密内容但又具有敏感性的内部信息、行政事务信息、经济信息等进行加密保护。比如:商用密码可用于企业门禁管理、企业内部的各类敏感信息的传输加密、存储加密,防止非法第三方获取信息内容;也可用于各种安全认证、网上银行、数字签名等。

例如:在门禁应用中,采用SM1算法进行身份鉴别和数据加密通讯,实现卡片合法性的验证,保证身份识别的真实性。 安全是关系国家、城市信息、行业用户、百姓利益的关键问题。国家密码管理局针对现有重要门禁系统建设和升级改造应用也提出指导意见,加强芯片、卡片、系统的标准化建设。截止目前,国密门禁系统的升级的案例也逐渐增多,基于自主国产知识产权的CPU卡、CPU卡读写设备及密钥管理系统广泛受到关注。一些厂商如同方锐安在2009年推出CPU卡安全门禁系列产品,在2010年北京安博会上,该公司再次向业界展示出“御”系列CPU卡门禁系统、TF-DF6000系列安全门禁读卡器以及基于CPU卡技术的一卡通系统等主流产品和系统。这些厂商是全国推广的国密门禁产品的先驱者,使“御”系列CPU卡门禁系统广泛应用于政府、监狱、司法、军工企业和大型公共智能建筑等高安全领域。

总结

由于国密算法是国家密码局钦定的加密算法,目前已经逐渐在金融行业开始广泛使用了,相信在以后的应用中,我们会越来越经常的看到国密算法的身影。大家在以后的学习工作中也需要对国密算法有一定的了解,才能在需要用到的时候能快速的掌握它。

参考

1,国密算法概述

2,关于国密算法 SM1,SM2,SM3,SM4 的笔记

技术人,技术魂,每天肝一篇技术文,ヾ(◍°∇°◍)ノ゙哈哈~

关于作者
联系作者
  • 微信号:ForTheDeveloper

  • 公众号:ForTheDevelopers