密码安全之古典密码、对称密码_古典密码和现代密码的区别-程序员宅基地

技术标签: 网安入门基础  网安  

密码安全(2019.11.19)

阅读前推荐观看我之前做的分类图URL:https://blog.csdn.net/qq_26139045/article/details/103113818

密码算法

密码学可以分为古典密码学和现代密码学。其中现代密码学的出现于一个熟悉的人脱不了关系,他就是香农了,绝对的大佬。

古典密码于现代密码的区别之处,我认为就是古典密码是依赖于加密算法的精心设计和保密性,而现代密码这是公开了加密所用的算法,注重的是对密钥的保密。两者的侧重点不同,一个在算法的保密上,另一个则是在密钥的保密上。而将现代密码在以密钥细分就会分为,对称加密和非对称加密。所谓的对称加密,就是加密时和解密时的密钥是一样的;而非对称加密则是加密密钥和解密密钥不同,在我看来就目前而言,似乎非对称加密会使用更多,最近经常看到的RSA就是一种非对称加密方法,只可惜还没有搞明白RSA。

古典密码

置换密码

所谓置换密码真的就只是置换,把明文通过一些方法排列,然后按你想要的方向或者顺序读出,就成为一个密文。这是一种比较简单的加密方式。正是由于这种方法过于简单,所以它禁不起穷举的,是可以进行爆破的。置换密码可能是先排矩阵再按列读取,也有可能会使用密钥,但是这里的密钥只是为了助记,与现代密码的密钥大不相同。通过密钥去除重复字母后,按字典序编号,然后按编号读出相应的列,实现加密。

例如:明文:this is transposition cipher

密钥:password

数字序列:4167352

密文:hath ts iiphtripsocin iessor

注意!!!密文要写的与明文格式相同。

t h i s j s t
r a n s p o s
i t i o n e i
p h e r

替代密码

说到替代密码,大家最熟悉的可能就是凯撒密码。替代密码是利用了替代法进行加密的,通过将明文中的字符使用其他的字符替代后形成密文。

它还有很多类型,比如单表替代密码,多明码替代密码,多字母替代密码,多表替代密码。凯撒加密就是单表替代密码了,所有的字母都是相同的偏移量,所以凯撒是可以被轻易的破解的,直接暴力破解,CTFCracker就可以实现凯撒爆破。而多表替代密码就提高了破解的难度,像维吉尼亚密码、希尔密码,一次一密钥密码、Playfair密码等等,由于使用了多个替换表,情况更加复杂,爆破难度就蹭蹭蹭上去。

在我看来维吉尼亚其实就是凯撒的加强版,只不过是每个字符都有自己独特的偏移量了,不在如凯撒一样统一偏移量,所以对于破解而言就提高难度了。

加密:Ci=(Mi+Ki)mod26

解密就是i一个逆过程,Mi=(Ki-Ci)mod26

例如密钥可能为:cipher即(3,9,16,8,5,18)

明文 :this is substitution cipher

密文:vpxz mj ucqzxzvcipse eqeoii

对称密码

对称密码可以分为分组密码和序列密码。分组密码是以一个固定大小作为每次处理的基本单元,而序列密码则是以一个单位元素(通常是一个字母或一个比特)作为基本的处理单元。当分组长度等于单位长度的是否,分组密码也就是序列密码,所以你可以这样理解,序列密码是分组密码中特殊的一种情况,即分组长=单位长。

分组密码的常用工作模式:

1、电子密码本(ECB)

最简单的加密模式即电子密码本模式,将加密的消息按照密码块的块大小分为数块,对每一块进行独立加密。

优点:实现简单、效率高;有利于并行计算;误差不会被传送。

缺点:不能隐藏明文的模式,相同的明文会产生相同的密文;可能对明文进行主动攻击,比如说黑客可以通过获取账号对应的密文段,进行密文段替换,成功实施ECB重放攻击

2、密码块链接(CBC)

在CBC模式下,每个密文块先要与前一个密文进行异或,然后再加密,所以它高度依赖于上一个密文块,这就对数据完整性要求很高。因为第一个明文没有上一个密文,所以就要引入一个初始化矢量(IV)。

优点:不易被主动攻击,这也是得益于它的这种像串行的机密模式,安全性高于ECB,适合传输长度较长的报文,是目前SSL和IPSec安全协议的应用标准。

缺点:不利于并行计算;有误差传输效应;需要维护初始化矢量IV。

3、密文反馈(CFB)

密文反馈模式我觉得和CBC非常相似,区别上我觉得就是,一个先异或,一个后异或,它把上一个密文进行分组密码加密,然后再和明文进行异或。与CBC一样,也需要一开始引入一个初始化矢量。

优点:隐藏了明文模式;分组密码转化为流模式,增强了安全强度;可以及时加密传送小于分组的数据。

缺点:不利于并行运算;存在误差传送效应,即一个明文单元受损可以影响多个单元;需要维护一个IV。

分组密码包括DES、IDEA、SAFER、Blowfish和Skipjack等等,最新国际标准算法是AES,以前使用的是DES/3DES算法。分组密码的一个核心变换——Feistel结构。大多数分组密码的结构本质上都是基于Feistel网格结构,所以这是一个很重要的地方。

Feistel网络的安全性与一下参数有关。

(1)分组大小

(2)密钥大小

(3)子密钥产生算法:该算法复杂性越高,则密码分析越困难

(4)轮数n:单轮结构远不足以保证安全,一般轮数选取16

(5)轮函数F:结构越复杂越难分析

分组加密算法DES

DES算法为密码体制中的对称密码体制,又被称为美国数据加密标准,是1972年美国IBM公司研制的对称密码体制加密算法。明文按64bit进行分组,密钥长64bit。

DES算法具有极高的安全性,到日前为止,除了用穷举搜索法对DES算法进行攻击外,还没有发现更有效的办法。但是随着计算处理能力的提升,为了克服DES密钥空间小的缺陷,研究人员提出了三重DES的变形方式,即采用了两个密钥共128bit长度,仅加大了穷举密钥的计算复杂度。

分组加密标准AES

AES算法基于排列和置换运算。排列是对数据重新进行安排,置换是将一个数据单元替换为另一个。AES使用几种不同的方法来执行排列和置换运算。AES是一个迭代的、对称的密钥分组的密码,它可以使用128、192、256位密钥,并且通过128bit分组加密或解密数据,既然是对称加密,所以它使用相同的密钥进行加密解密。迭代加密时就要使用一个循环结构,在循环中重复置换和替换输入数据。

序列密码

序列密码是一个随时间变化的加密变换,具有转换速度快、低错误传播的有点,硬件实现电路简单,缺点是有低扩散、插入或修改等不敏感性。
目前序列密码研究成果没有完全公开,因为序列密码更多应用于外交和军事部门等机密部门。目前公开的序列密码算法有RC4、SEAL等。 说到序列密码必须说一次一密,如果序列密码所使用的是真正随机方式的、与消息流长度相同的密钥流,那么这个序列密码就是一次一密的密码体制(One-Time Password)。

至于序列密码加密和解密,加密过程大概就是密钥K通过密钥流生成器生成密钥流,使用密钥流和明文进行异或运算得到密文;解密过程这是使用密钥K通过密钥生成器生成密钥流,在用密钥流和密文进行异或得到明文。

注:密钥流生成器的核心是一个伪随机数发生器,而密钥K为该随机数发生器的种子。应用最广的随机数发生器为线性反馈一位寄存器(LFSR)。当LFSR周期无限长即可形成OTP一次一密系统,OPT是一种理想的安全流密码体制。

一次一密系统应用目前面临的挑战:

1、密钥配送问题,OTP的密钥长度和明文长度相同,若能把密钥安全有效地发生出去,那还加什么密呢??

2、密钥的保存问题,OTP把保存明文问题转化为保存于明文等长的密钥问题

3、密钥的复用:OTP不能使用过去用过的随机比特序列,否则就会泄露之前的通讯内容,这也叫前向安全。

4、密钥的同步,明文很长的时候,密钥也会一样长,在同步密钥的过程中一旦出现错误,后续通讯就无法解密,有时也被称为后向安全。

5、密钥的生成问题,OTP需要生成大量的随机数,而我们目前只能使用计算机生成伪随机数来暂时替代,凯撒伪随机数终究不是随机数,无法满足需求,而想要无重现性的真正随机数生成的难度极大。

流密码的安全性主要依赖于主控密钥K的保密性和密钥流发生器的可靠性。密钥序列产生算法最为关键,其生成的密钥必须具备伪随机性,至于什么是伪随机性,就留给大家自行百度了。序列密码的安全性确实高,加密速度也快,实时性好,就是过于要求同步,要实现严格同步,需要付出很高的代价。

RC4序列密码

RC4由RSA Security的Ron Rivest在1987年设计的一种高速简洁的流密码,被广泛用于常用协议,比如无线网络安全算法、SSL/TLS、HTTPS等安全协议。RC4加密分为两步:

1、Key-Scheduling Algorithm(KSA)密钥调度算法,采用可变长度的加密密钥产生密钥流生成器的初始状态。

2、Pseudo-Random Generation Algorithm(PRGA)伪随机子密码生成算法,根据初始状态生成密码流,并于明文进行相异或产生密文。

RC4采用的是XOR运算,一旦子密码序列出现了重复,密文就有可能被破解。存在部分弱密钥,是子密序列在不到100B内就出现重复。那么就可能在10万字节内就发生完全重复风险。所以在使用RC4算法时候,必须对加密密钥进行安全测试,避免出现弱密钥问题。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_26139045/article/details/103153172

智能推荐

java快捷键调字体_设置MyEclipse编码、补全快捷键、字体大小-程序员宅基地

文章浏览阅读534次。一、设置MyEclipse编码(1)修改工作空间的编码方式:Window-->Preferences-->General-->Workspace-->Text file encoding(2)修改一类文件的编码方式:Window-->Preferences-->General-->content Types-->修改default Encoding(..._java修改快捷缩写内容

解析蓝牙原理_蓝牙原理图详解-程序员宅基地

文章浏览阅读1.4w次,点赞19次,收藏76次。1.前言市面上关于Android的技术书籍很多,几乎每本书也都会涉及到蓝牙开发,但均是上层应用级别的,而且篇幅也普遍短小。对于手机行业的开发者,要进行蓝牙模块的维护,就必须从Android系统底层,至少框架层开始,了解蓝牙的结构和代码实现原理。这方面的文档、网上的各个论坛的相关资料却少之又少。分析原因,大概因为虽然蓝牙协议是完整的,但是并没有具体的实现。蓝牙芯片公司只负责提供最底层的API_蓝牙原理图详解

从未在一起更让人遗憾_“从未在一起和最终没有在一起哪个更遗憾”-程序员宅基地

文章浏览阅读7.7k次。图/源于网络文/曲尚菇凉1.今天早上出门去逛街,在那家冰雪融城店里等待冰淇淋的时候,听到旁边两个女生在讨论很久之前的一期《奇葩说》。那期节目主持人给的辩论题是“从未在一起和最终没有在一起哪个更遗憾”,旁边其中一个女生说,她记得当时印象最深的是有个女孩子说了这样一句话。她说:“如果我喜欢一个人呢,我就从第一眼到最后一眼,把这个人爱够,把我的感觉用光,我只希望那些年让我成长的人是他,之后的那些年他喝过..._从未在一起更遗憾

【CSDN精选】基于龙芯1B200的rt-thread基础_龙芯1b200参数-程序员宅基地

文章浏览阅读927次,点赞15次,收藏13次。龙芯是中国的一款自主设计的处理器架构,由中国科学院计算技术研究所(ICT)主导研发。龙芯处理器最早的版本为Loongson-1,其后发展出Loongson-2、Loongson-3等系列。这些处理器主要用于高性能计算、服务器、嵌入式系统等领域。Loongson架构具有独立知识产权,是中国自主研发的一种指令集架构。龙芯的设计旨在实现对计算机体系结构的自主掌握,减少对外部知识产权的依赖。RT-Thread(Real-Time Thread)是一个开源的实时嵌入式操作系统。_龙芯1b200参数

Python函数知识点(详解)-程序员宅基地

文章浏览阅读6w次,点赞584次,收藏2.9k次。本篇总结了Python函数相关的基础知识点,代码案例超详细,欢迎阅读,交流!_python函数知识点

虚拟机如何在net模式下进行联网_虚拟机net网络-程序员宅基地

文章浏览阅读1.7k次,点赞3次,收藏7次。虚拟机如何在net模式下进行联网(centos7)1.首先你需要先将虚拟机安装好,如果不会可以参考[centos7安装教程](https://blog.csdn.net/qq_44714603/article/details/88829423?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161949204316780274178621%2522%252C%2522scm%2522%253A%252220140713.130102334…_虚拟机net网络

随便推点

强化学习在制造业领域的应用:智能制造的未来-程序员宅基地

文章浏览阅读223次,点赞3次,收藏5次。1.背景介绍制造业是国家经济发展的重要引擎,其产能和质量对于国家经济的稳定和发展具有重要意义。随着工业技术的不断发展,制造业的生产方式也不断发生变化。传统的制造业通常依赖于人工操作和手工艺,这种方式的缺点是低效率、低产量和不稳定的质量。随着信息化、智能化和网络化等新技术的出现,制造业开始向智能制造迈出了第一步。智能制造的核心是通过大数据、人工智能、计算机视觉等技术,实现制造过程的智能化、自动化...

ansible--安装与使用_pip安装ansible-程序员宅基地

文章浏览阅读938次。系列文章目录文章目录系列文章目录 前言 一、ansible是什么? 二、使用步骤 1.引入库 2.读入数据 总结前言菜鸟一只,刚开始使用,仅作以后参考使用。边学习,边记录,介绍一下最基础的使用,可能会有理解不到位的地方,可以共同交流,废话不多说,走起。一、ansible 简介?ansible是自动化运维工具的一种,基于Python开发,可以实现批量系统配置,批量程序部署,批量运行命令,ansible是基于模块工作的,它本身没有批量部署的能力,真正.._pip安装ansible

RPMs系列卟啉框架材料ZnMn-RPM/AZn-RPM/FeZn-RPM/ZnPO-MOF齐岳供应金属-四羧基苯基卟啉(M-TCPPs)及三维框架卟啉材料[Cu(TPyP)Cu2Mo3O1]_fezn-5是什么意思-程序员宅基地

文章浏览阅读298次。RPMs系列卟啉框架材料ZnMn-RPM/AZn-RPM/FeZn-RPM/ZnPO-MOF齐岳供应金属-四羧基苯基卟啉(M-TCPPs)及三维框架卟啉材料[Cu(TPyP)Cu2Mo3O1]_fezn-5是什么意思

51单片机与ESP8266-01s模块通讯点灯_51单片机与eps826601s通信-程序员宅基地

文章浏览阅读9.9k次,点赞10次,收藏92次。前言 本文章为方便新手上手直接用最简单的点灯展示,关于ESP8266-01s的AT指令类就上网搜有很多这就不多讲了。接线ESP-01S USB转TTL 51单片机 VCC 3.3V 3.3V GND GND GND EN 3.3V 3.3V TX RX P3.0 RX TX P3.1 IO0(注刷固件时插) GND(注刷固件时插) 一、ESP8266-01S接US..._51单片机与eps826601s通信

麒麟820也迎来鸿蒙系统,魅族适配麒麟820系统 和鸿蒙OS,魅族要入赘华为系-程序员宅基地

文章浏览阅读188次。蜗居在珠海的小厂魅族,虽然是“小厂”,但是其一路走来的历史,一直被科技圈津津乐道,而深入简出的带头大哥黄章,更是魅友的精神领袖。魅族是一个很低调的企业,但是却有这样一种魅力,总能有意无意的成为新闻的主角,比如近日知名科技大V中国IT杂谈发布了这样一条微博:魅族正在适配麒麟820和鸿蒙系统,未来还要加入华为系。关于这条信息的真实性后面再说,我们先来讨论下华为和魅族是否真的可以成为CP,共同走向人生巅..._鸿蒙420支持麒麟820吗