密码技术小总结

密码技术与编码技术不同,但现在很多人把两者的技术混在一起,但两者某些地方界限确实有些模糊。密码技术与信息隐藏也不同,密码技术是让你看得到但是看不懂,信息隐藏是让你看不到找不到

参考和查看更多内容推荐

本文只是简要总结
http://www.mamicode.com/info-detail-2252602.html
https://blog.csdn.net/pdsu161530247/article/details/75667218
《码书 解码与编码的战争》
《图解密码技术 第三版》
《现代密码学》杨波

古典密码

主要是置换(搞乱明文顺序)和代换(将明文字符替换成其它字符)

凯撒密码

加密:将字母按照字母表顺序进行x的平移,x即为秘钥
解密:将密文进行x的反向平移
破译:暴力破解法:平移26次,找出明文

简单替换密码

加密:建立26个字母与另外26个字母的一一对应关系(成为一张密码表),按照密码表将明文替换
解密:按照密码表解密
破译:因为秘钥空间足够大,暴力破解困难。采用频率分析——在英文中一些字母,组合,单词出现的频率不同。(为了对抗频率分析,还有同音法,出现频率越多的字母有越多的替换字符,如出现最多的e可以用数字14,16 74,82等代替,出现频率少的如v只用一个数字34代替)

维吉尼亚密码

加密:有一个单词作为密钥,在26组密码中替换,具体https://baike.baidu.com/item/维吉尼亚密码/4905472?fr=aladdin
破译:找重复组合,确定相隔距离,找距离的公因数可以确定密钥长度,将密文按密钥长度分组,用频率分析法
因为可能有相同明文被相同密钥加密变成了相同密文(其它的情况概率较小)

近代密码

恩格玛密码

恩格玛机加密部分主要由接线板、转盘组成,接线板可以对调字母,转盘有3到5个,每输入一次转盘1就转一次,转盘1每转26次转盘2就转1次。
密钥即接线板的接线,选用的转盘数和转盘的顺序以及转盘初始位置。

希尔密码

即26个字母对应0到25,密钥为一个矩阵,将密文变为一个矩阵与密钥矩阵相乘后模26,即得密文,解密是将密文乘以密钥矩阵的逆,再模26
如密钥矩阵为
\(\left(\begin{array}{ccc}{6} & {4} & {1} \\ {3} & {6} & {1} \\ {2} & {7} & {9}\end{array}\right)\)
明文为abc,对应矩阵为
\(\left(\begin{array}{c}{0} \\ {1} \\ {2}\end{array}\right)\)
加密即\(\left(\begin{array}{ccc}{6} & {4} & {1} \\ {3} & {6} & {1} \\ {2} & {7} & {9}\end{array}\right)\left(\begin{array}{c}{0} \\ {1} \\ {2}\end{array}\right)(\bmod 26)=\left(\begin{array}{c}{6} \\ {8} \\ {25}\end{array}\right)\)
解密为\(\left(\begin{array}{ccc}{6} & {4} & {1} \\ {3} & {6} & {1} \\ {2} & {7} & {9}\end{array}\right)^{-1}\left(\begin{array}{c}{0} \\ {1} \\ {2}\end{array}\right)(\bmod 26)\)

现代密码

对称密码

DES

将明文64位为一组,密钥也为64(实际为56,因为每7位会有一位用于错误检验),进行DES加密,是分组密码的一种。DES结构采用Feistel结构,在Feistel中加密的步骤称为轮,加密的过程即为轮的循环。
加密:以三轮为例,将64比特分为两组,一组32比特。右侧32直接与轮函数运算,子密钥1再和运算结果组成一串序列,该序列与左侧32异或运算后的结果向下,将左侧向下结果和右侧向下结果调换,进行第2轮,此子密钥变化为密钥2,最后进行第三轮,输出是不再调换顺序。
解密:倒过来
破译:
(1)差分分析:将明文改变,分析密文的偏差
(2)线性分析:如果密钥随机,那么明文和密文异或为0的概率为0.5,如果能找到大幅偏离0.5的地方,则可找到密钥的一些信息。
三重DES
进行三次des,即进行加密-解密-加密

AES

128个比特为一组,即16个字节
加密:进行逐字节替换,行移动,列运算,与密钥异或,进行10~14轮
解密:反过来

SM4

https://www.cnblogs.com/Qi-Lin/p/11218845.html

RC4

是流密码,以下为过程
s表初始化
对s表线性填充,如s[0]=0,s[1]=1……s[255]=255,共256个字节
使用密钥填充r表,如密钥123,那么r[0]=1,r[1]=2循环填充直至填满256字节
接着对s表置乱,算法如下

j = 0;
for (i = 0 ; i < 256 ; i++)
{
   j = (j + S[i] + R[i]) mod 256;
  swap(S[i] , S[j]);//交换
}

密钥流产生
明文有多长就循环多少次

i=0;
j=0;
while(明文长度--)
{
   i = (i + 1) mod 256;
   j = (j + S[i]) mod 256;
   swap(S[i] , S[j]);
   t = (S[i] + S[j]) mod 256;
   k[i] = S[t];
}

k为密钥
加解密部分
明文与密钥的异或操作

公钥密码

rsa

基于大整数难分解
一、加解密步骤
1、选择两个大素数p和q
2、计算\(n=p*q\) 与 \(\varphi(n)=(p-1)(q-1)\)
3、随机挑选整数值e,使其满足\(1<e<\varphi(n)\),且与\(\varphi(n)\)互素
4、计算\(d*e=1\bmod\varphi(n)\)
5、e,n作为公钥 d,n作为私钥
6、加密\(c=m^{e}\bmod(n)\)
7、解密\(m=c^{d}\bmod(n)\)
二、攻击
1、共模攻击
如果给每个用户的e不同但n都相同,那么对于明文m有
\(c_{1}=m^{e_{1}}(modn)\)
\(c_{2}=m^{e_{2}}(modn)\)
如果c1和c1泄露,那么可以求出r,s满足
\(re_{1}+se_{2}=1\)
假设其中r是负数的那一个则
\((c_{1}^{-1})^rc_{2}^s=m(modn)\)得出m
2、低指数攻击
当e较小时出现,比如e=3,假设得到3组密文
\(c_{1}=m^e(modn_{1})\)
\(c_{2}=m^e(modn_{2})\)
\(c_{3}=m^e(modn_{3})\)
那么密文可以通过此求出
\(c_{x}=m^{3}mod(n_{1}n_{2}n_{3})\)

背包密码

这里只大概说明加解密过程
密钥产生
选择一个超递增背包如(1,3,5,11,21,44,87,175,349,701)以及两个互素的参数k=1590,t=43,并求出t的逆元\(t^{-1}=37mod1590\),这个背包向量和t的逆元为私钥
然后分别对背包中的元素进行如下模运算,如对第一个元素1,进行运算\(1*43=43mod1590\),得出一个经过伪装的背包(43,129,215,473,903,302,561,1165,697,1523),这个背包作为公钥
加密过程
比如要加密nb,这个对应的二进制为0111000010,那么用公钥加密,即把二进制为1的位置对应的背包元素加在一起,为129+215+473+697=1514,这个就是密文
解密过程
通过运算\(1517*37=368mod1590\)得到368,之后解背包问题
368<701为0
368>349为1 368-349后为19
19<175为0
19<87为0
19<44为0
19<21为0
19>11为1 19-11后为8
8>5为1 8-5后为3
3>=3为1 3-3后为0
0<1为0
所以明文为0111000010,即nb

其它

elgamal 基于模离散对数难解
rabin 基于模平方根难解https://www.cnblogs.com/Qi-Lin/p/12221751.html
椭圆曲线密码ECC
sm2

分组模式

以下分组模式的配图均来自《图解密码学技术 第三版》

密码可以分为分组密码与流密码
流密码:以特定长度的比特为单位进行连续的处理。
分组密码:将明文按照密钥的长度进行分组,一次只能处理特定长度的明文。(如果明文分组长度不够,则要进行填充,由此产生一种填充攻击,不断发送相同的密文而只略微改变填充的数据,则会获得一部分与明文相关的信息)
分组密码的模式:因为明文比分组密码的长度长,就需要对分组密码算法进行迭代,而迭代的方式就是分组密码的模式。

ecb电子密码本模式

明文分组加密的结果直接为密文分组
特点:
1、如果有相同的明文分组,则会产生相同的密文分组
2、攻击:可以对调不同的密文分组,而不需知道明文,密钥等

cbc密文分组链接模式

开始先产生一个与密钥等长的随机序列(初始化向量),第一个分组与其进行异或后进行加密,之后的明文分组与上一个得到的密文分组进行异或后进行加密
特点:
1、如果密文值发生改变导致密文分组发生变化会导致无法解密。若分组没有发生变化则至多导致两个分组损坏。
2、攻击:如果对初始化向量的比特进行反转,则会操纵明文
3、初始化向量必须使用不可预测的随机数。如果相同,则用相同的密钥对相同的明文进行加密时会产生相同的密文

cfb密文反馈模式

也要生成一个初始化向量,现对初始化向量加密后(这里的加密是用其来生成密钥流),然后和明文分组进行异或得到密文分组,下一组用上一组得密文加密(生成密钥流),在进行异或……
攻击:重放攻击

ofb输出反馈模式

也先生成初始化向量,对初始化向量加密(用其来生成密钥流),再与明文分组异或,下一次用这一次生成的密钥流加密(生成密钥流),再与明文分组异或

ctr计数器模式

相当于每一个明文分组都有一个计数器生成的密钥流与其异或得到密文分组

单向散列函数

由不同长度的输入,生成固定长度的输出。可以由输入得到输出,由输出得不到输入。只要输入发生一点变化,输出就会变化。用于防篡改
1、评价其的一个标准
抗撞击性:弱抗撞击性:不容易找到一条消息与该消息的散列值相同 强抗撞击性:不容易找到两条消息的散列值相同
2、种类:
md4、md5:产生128比特的输出。
sha1:160比特输出
sha2:有256,384,512
ripemd:160
ripemd160:有128,256,320
sha3:采用与以上不同的结构,有海绵体和双工两种结构。采用keccak算法
sm3
3、对单向散列函数的攻击
暴力破解:对弱抗碰撞性攻击
生日攻击:对强抗碰撞性攻击(生日悖论)

消息认证码

1、消息认证码的实现方法
单向散列函数
分组密码
其它密码
2、hmac一种使用单向散列函数实现消息认证的方法
https://www.cnblogs.com/Qi-Lin/p/11222226.html
3、对消息认证码的攻击
重放攻击
应对措施:加入序号,时间戳,nonce等

数字签名

为了防止否认,利用单向散列函数
实现:
(1)对消息的散列值,用自己的私钥加密
(2)对方收到后用对应的公钥进行解密
(3)用解密的散列值与发送的散列值对比

证书

1、证书大致应用过程:
bob生成密钥,认证机构生成密钥,将bob的私钥用自己的私钥生成数字签名并附上bob的公钥,证书放在仓库中,alice得到证书,用认证机构的公钥进行验证
2、kpi公钥基础设施
是认证机构,有层级,kpi由用户,仓库,认证机构组成。

密钥

生成
1、通过随机数生成
真随机序列(完全随机,不可预测,不可重现)——如噪音
主密钥+强算法
高级密钥对随机数解密
2、基于口令的密钥生成
随机生成密钥加密消息,用口令和盐(一段随机数)生成的散列值作为密钥的密钥,加密该密钥,对盐和加密后的密钥进行保存,自己记住口令(盐的作用:防御字典攻击)
配送
1、事先直接共享
2、通过密钥中心共享
3、diffie-hellman密钥协商
可以通过椭圆曲线实现
可以通过离散对数实现:a与b事先生成两个质数p和g,g为p的原根,a生成自己的随机数x,范围为1到p-2,将g的x次方模p发给b,b生成自己的随机数y,同样的范围,将g的y次方模p发给a,然后生成共同的密钥,g的xy次方模p
保存
通过明文或密文保存,或者对根密钥有门限的方式,比如shamir门限https://www.cnblogs.com/Qi-Lin/p/11222067.html,asmuth-bloom门限

同态加密

对密文的运算与对明文的运算等价,如a加密后与b加密后运算的结果解密,与a与b运算等价
有加同态和乘同态,如果都满足就叫全同态
乘同态,如rsa。加同态,如paillier

量子交换密钥

爱丽丝发送一串不同偏振的光子,鲍勃尝试测定这些光子的偏振方向,爱丽丝告诉鲍勃哪些正确测定了,爱丽丝与鲍勃把正确的作为密钥,并且如果有人拦截过,光子就会发生变化,产生错误

其它在ctf中可能碰到的密码

ROT5/13/18/47https://www.qqxiuzi.cn/bianma/ROT5-13-18-47.php
Ook!加密后为Ook. Ook? Ook!组成的字符串https://www.splitbrain.org/services/ook
Brainfuck加密后为.<+[-组成的字符串https://www.splitbrain.org/services/ook
jsfuck加密后为 ! +组成的字符串,一般用于加密javascript代码,还有个jother密码与此很像
富强民主,加密后是由核心价值观组成的密文
猪圈密码https://baike.baidu.com/item/猪圈密码/5538711?fr=aladdin
曲路密码密钥:实现约定的行列数和路径加密:将密文排列为约定的行列,按照路径将其记下,打乱明文
放射密码字母按照如下公式加密 (ax+b)mod26,ab为密钥,26与a互质,当a为1时其实为凯撒密码,解密为\(a^{-1}\)(a-b)mod26

栅栏密码

将明文分成几组,然后从各组取同位的字母组成新的组合,再将这些组合拼接在一起。几栏即几个一组。如:
加密:how are ok(明文)
两个一组:ho wa re ok
取同位:hwro oaek
拼接:hwrooaek(密文)
解密:hwrooaek(密文) 两栏
分成两组:hwro oaek
取同位: ho wa re ok
拼接:how are ok
另:
1、对于一串字母不知道它是几栏,可以尝试它的公因数。
2、一些可能有变形,如一个素数个数的字母串,可能是拼音按声母韵母分,有捆绑。

利用键盘

1、即abcdefghigklmnopqrstuvwxyz对应键盘上的字母顺序qwertyuiopasdfghjklzxcvbnm
2、或者利用键盘包围,比如rgdv在键盘包围f,那么rgdv就是f

原文地址:https://www.cnblogs.com/Qi-Lin/p/12237287.html

时间: 2024-10-26 21:35:03

密码技术小总结的相关文章

什么是私有密钥密码技术——密钥加密算法采用同一把密钥进行加密和解密

什么是私有密钥密码技术 私有密钥(Symmetric Key),又叫对称密钥.密钥加密算法采用同一把密钥进行加密和解密.它的优点是加密和解密速度非常快,但密钥的分发和管理比较困难.信息的发送者和接收者必须明确同一把密钥.因此,必须进行密钥交流,这通常需要其他更安全的信道来传送密钥.另外,每一对用户都需要有自己的一个独一无二的密钥.因此,如果一个发送者与很多人通信,就需要管理很多密钥.主要的对称密钥加密算法有DES.3DES.RC2.RC4.RC5.Blowtish和CAST等.在VPN中常用的有

图解密码技术一些笔记

因为明年的工作可能要涉及到加密的问题,所以要看一下加密方面,刚好之前对于web开发方面的加密,https也一直有疑问,于是就买了本图解密码技术来看看 1.如何保证数据只能单向解密: 比较流行的一个就是公钥和私钥,公钥负责加密,私钥负责解密,只要私钥没有被拿到,数据就不会被破解,比较流行的 就是RSA算法,公司项目也用过,不过当时搞不清公钥和私钥,迷迷糊糊的 2.如何保证收到的数据没有被修改过利用私钥加密,然后用公钥解密 这个就是数字签名,在发送给客户端的时候,除了原有的数据以外,还要再发送一个对

《图解密码技术》[01] 密码概述

<图解密码技术>(点击查看详情) 1.写在前面的话 因为接触了微信公众号开发,之中涉及支付功能时用到了大量签名加密之类的东西,对于密码安全这一块,其实一直不是很明白,大部分方法自己在用到时也是去直接google,然后复制粘贴,可以说完全不知其所以然. 加密这一块查了下有很多人推荐这本书,于是就决定看看.我个人涉及到真正的加密技术的实际应用可能不算那么多,所以这里笔记准备记录一些浅显和核心的东西. 2.加密和解密 发送信息和接受信息的过程中,因为传递过程涉及多方,可能会存在窃听者.就像你给别人写

Webcast / 技术小视频制作方法——自己动手录制video轻松搞定

Webcast / 技术小视频制作方法——自己动手录制video轻松搞定 http://blog.sina.com.cn/s/blog_67d387490100wdnh.html 最近申请加入MSP的童鞋应该发现了一个新的要求——制作简短的视频!视频的内容要求是与微软技术相关~我们希望通过使用这种方法,简化申请流程,加强对创意.微软相关技术的考察~关于MSP项目以及申请流程的细则近期也会出台,请童鞋们耐心等待~ 首先呢,就跟广大的童鞋们介绍一款简单使用的录屏软件~而通过简单的安装,便可以轻松.便

深入理解密码技术

对称加密: DES DES是1977年美国联邦信息处理标准中使用的一种对称密码技术,曾今被美国和其他国家政府银行使用. 不过现在已被暴力破解,我们除了用它解密以前的密文外,已不再使用DES了.不过这里我们可以用它来了解下什么是对称加密. <!--more--> 加密和解密 DES是一种把64比特明文加密成64比特的密文的对称密码算法,密钥长度56位,其中每隔7比特有个错误检查比特.结果DES密钥总长度为64比特. 分组密码 DES以64比特明文为一个单位进行加密,这64比特单位称为分组.so,

忘记mysql root 密码修改小技巧

首先我说一下我的情况,我并不是忘记了我的root密码,只不过是我在使用phpmyadmin的时候更改密码的时候选择了如图1 的这个方法将密码加密并更改了,然后就再次登录的时候登录不上,所以对于菜鸟级的用户学习mysql来说我推荐我的这个方法. 网上搜索相关的帖子的整体思路都是关闭mysql的进程然后跳过权限设置最后重新设定密码,不过我不是很清楚是不是mysql新版本的问题,mysql根目录/bin下没有mysqld-nt.exe导致很多帖子的相关命令都失效,对于菜鸟又不知道该对应哪些地方才行.于

暴力破解sshd服务的密码的小技巧

暴力破解sshd服务的密码的小技巧 准备环境   1:在虚拟机上准备一台XP系统   2:开启两台Linux系统 超级管理员为root 密码为 123456       192.168.1.63  密码 123456       192.168.1.65  密码 123456 注:找来的破解软件,肯定被编写者留下了后门,所以为了便于安全和测试,我只能用虚拟机上的XP系统和Linux系统来进行测试,Linux系统上的账号密码都设置简单点,便于快速出现结果.                     

《图解密码技术》-1.环游密码世界

1.对称密码和公钥密码 对称密码:是指在加密和解密时使用同一秘钥的方式 公钥密码:又称非对称加密,指在加密和解码时使用的不是用一秘钥的方式 2.混合密码系统 将对称密码和非对称密码结合起来的密码方式称为混合密码系统, 这种系统结合了对称加密和非对称加密的优势. 3.其他密码技术 1.单项散列函数:是一种保证完整性的密码技术. 2.消息认证码:消息认证码是一种能够保证完整性和提供认证的密码技术. 3.数字签名:能够防止伪装.篡改.和否认等威胁的技术. 4.伪随机数生成器:是一种能够模拟产生出随机数

《图解密码技术》——记录1

[MENU] 主要角色 名称 说明 Alice 一般角色 Bob 一般角色 Eve 窃听者,可窃听通讯内容 Mallory 主动攻击者,可妨碍通信.伪造消息等 Trent 可信的第三方 Victor 验证者 关键词 加密前的消息称为明文,加密后的消息称为密文. 对称密码是指在加密和解密时使用同一密钥的方式. 对称密码的别名:公共密钥密码.传统密码.私钥密码.共享密钥密码等. 首次见到此书.读此书,是在学校的图书馆. 参考资料 图解密码技术,结城浩 著 原文地址:https://www.cnblo