国密——从小小白到小白(1)

目录

写在前面

一些专业名词

国密算法

算法

密钥

明文

密文

易混淆的名词

密码算法分类+简单介绍

对称密码算法

非对称密码算法

密码杂凑算法


写在前面

       因为一些原因,本人需要学习国家商用密码相关知识,虽然学工科,但和这个领域差得实在太远,所以在这方面完全是小白。小白到什么程度?计算机出问题只会重启的那种。因为呢本人是知识点需要翻来覆去揉碎才能理解的那一挂,本着费曼学习法的精神,打算边学边总结,不仅是分享,我也期望得到大家的反馈,欢迎各位大佬看着玩儿。

       本人以《商用密码应用与安全性评估》为学习线索,欢迎大家推荐学习资料。

一些专业名词

       对我来说,第一道坎是相关专业名词,让我来看看都有哪些。

国密算法:全称是国家商用密码,如SM系列密码,SM代表商密,即商用密码,是指用于商业的、不涉及国家秘密的密码技术。而在密码的分类当中,除了商用密码,还有核心密码、普通密码,后两类是国家秘密,实行严格管理,前者则用于保护不属于国家秘密的信息。按照算法来分类,可分为加解密算法(包括对称算法和非对称算法)和密码杂凑算法。

算法:如果是真小白(like me),可能连“算法”都无法理解,如果一定要比喻的话,可以类比数学当中的公式,但是算法的概念要比公式宽泛得多得多。这样讲吧,算法是一种特定变换,是一种数学方法和实现机制,它由求解问题的指令构成,我们进行输入,能获得有效的输出。

密钥:顾名思义,密钥就是钥匙。密钥在密码算法中极其重要,它其实是一组参数,算法是某种变化规则,而密钥则用于控制这种变化规则。比如我把明文“12”变为密文“34”,那么密钥可以理解为“2”,而算法则是“加法”。后面涉及到非对称加密的时候,我们还会看到私钥和公钥的概念,相信对区块链、比特币有了解的同学一定对此有印象。

       密码学是一个在战争中应运而生的学科,早期的加密信息传递中,不仅密钥需要保密,算法也需要保密,一旦算法泄露,信息也接近公开了,所以会有想尽办法获取对方密码机这样的事情发生。而现代密码学则不同,有一个科克霍夫斯原则,内容大意是:评估一个密码算法的安全性,必须假定攻击者知道密码算法所有细节,但不知道密钥,所以密码算法的安全性基于密钥的保密。所以有这样的说法:掌握了密钥,也就掌握了一切。

       密钥在一套密码系统中至关重要,我们需要不容易被破解的密钥,密钥的强度与什么有关呢?长度、复杂度、随机性、保密性都决定了密钥的强度。长度很好理解,当密钥只有一位数时,最多猜10次就能猜中,如果有两位呢,就需要102次,由此推之,位数越多越难被破解。复杂度呢?就是把猜一位数密码的10次增加到了更多,比如加入大小写字母、数字和特殊字符等。而随机性,是指密钥应该是随机生成的,我们会使用到随机数生成器,在计算机系统中,随机数生成器(TRNG)通常基于硬件随机数生成器(HRNG)实现。HRNG的原理是利用硬件设备的物理噪声来生成随机数。例如,HRNG可以利用计算机内部的电子噪声、热噪声或鼠标运动等物理事件来生成随机数。但在密码协议中,需要使用更加复杂的随机数生成方法来满足安全需求。保密性更简单了,当生成密钥之后,我们应当妥善保存,如果落入他人之手,那前面的工作都算白做了。 

明文、密文:这两个概念无需赘述,明文经过加密过程就变成了密文,密文经过解密就还原成明文。在密钥保密的前提下,一切密码算法的目的就是让这个还原过程变得极其困难甚至不可能。学到这里,我其实有个疑问,优质的算法效率要高,时间空间复杂度越小越好,但是加密过程又要越复杂越好,是不是优质的密码算法都是在找一个平衡呢?还是说它们并不矛盾?希望后面我自己也能给出答案。

易混淆名词的区分:初学密码,我就有个疑问,这和我登录账号的那个密码是相同的吗?显然不是,生活中我们所说的密码其实只是口令(password),它只是用于证明我们身份的一个字符串。在密码学中:密钥(key)是密码(cipher)这种加密技术中包含的一个概念,而算法(algorithm)则是为了实现加密技术而设计的一种具体算法或程序。现在还有点懵没关系,随着展开,慢慢就会越来越清晰。

       随着学习的深入,还有更多的专业名词需要了解,我们之后再一起学。

密码算法分类+简单介绍

       我们常见的密码算法可以分为三类,分别是对称密码算法、公钥密码算法、密码杂凑算法。可以用密钥的使用方式来判断是哪一类。对称密码算法加密和解密用的是同一密钥,公钥密码算法使用公钥加密而用私钥解密,密码杂凑算法则没有密钥。

对称密码算法

       又称为秘密秘钥算法或单密钥算法。

       这种算法比较符合我们生活中的经验,也就是只有一个密钥,早期的密码算法都是对称密码。书里的比方很到位了,我就把这个比喻搬上来,比如我们往一个带锁的盒子里放物品,上锁和开锁用的都是同一把钥匙,这把钥匙就是密钥。

       商用密码中,对称密码有ZUC(祖冲之密码算法)和SM4等;外国有AES算法,它是DES的升级版。

公钥密码算法

      又称为公开密码算法或非对称算法,该算法使用一个秘钥进行加密,用另外一个秘钥进行解密。

       公钥是公开的,所有人都能看到,而私钥由个人保管。

       为什么要这样设计呢?当双方进行通信时,如果只有一个密钥,那怎么安全地把密钥传递给对方就成了一个问题,有非常大的被人截获的风险,而非对称加密则可以规避这样的风险。有一个类似的例子可以帮助理解,那就是我们的邮件通信,把公钥比作邮件地址,私钥比作邮箱密码,通信时,双方都拥有了对方的公钥,其他人得知了一方的公钥,也可以发信给公钥的主人,但无法从公钥推出对应私钥,只有公钥对应私钥的保管者才能看到邮件内容。     

       商用密码中常见的国产公钥密码有SM2(它可以说是ECC的变种)、SM9,而国外应用较为广泛的有RSA。

密码杂凑算法

       又称为摘要算法,也称为散列函数、哈希函数、单向函数等,是指把任意长度的输入消息数据转化为固定长度的输出数据的一种密码算法,该种算法不需要密钥。

       这种算法是单向的,即:从消息(输入)计算杂凑值(输出)是容易的,但从杂凑值推出消息是困难的。这种算法通常用来做数据完整性的判定,即对数据进行哈希计算然后比较杂凑值是否一致。

       我国商密中的杂凑算法是SM3,国外的有MD5(已淘汰)和SHA-1、SHA-2、SHA-3等。

       现代密码算法都是建立在全世界的数学问题的基础之上,经过大量的检验,具有极高的安全性,是无法轻易被破解的。以上这就是三类算法的简要介绍,其中的一些内容不够精准或是有错误的,欢迎大佬们批评指正!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值