web安全基础入门(四):密码学、编码、进制及其应用的初步了解

密码学值得网络安全的小伙伴进行学习,可以不用学的非常深入,但是至少,基本的概念要理解,以及常见的应用常见在哪,学完至少能分辨常见的字符串是何种编码或加密方式,如果文章有不正确的地方,欢迎大家指出来~

特征

密码存储加密:
MD5 SHA1 NTLM AES DES RC4
MD5 值是 32 或 16 位位由数字"0-9"和字母"a-f"所组成的字符串
SHA1 这种加密的密文特征跟 MD5 差不多,只不过位数是 40
NTLM 这种加密是 Windows 的哈希密码,标准通讯安全协议
AES,DES,RC4 这些都是非对称性加密算法,引入密钥,密文特征与 Base64 类似
应用场景:各类应用密文,自定义算法,代码分析,CTF 安全比赛等


传输数据编码:
BASE64 URL HEX ASCII
BASE64 值是由数字"0-9"和字母"a-f"所组成的字符串,大小写敏感,结尾通常有符号=
URL 编码是由数字"0-9"和字母"a-f"所组成的字符串,大小写敏感,通常以%数字字母间隔
HEX 编码是计算机中数据的一种表示方法,将数据进行十六进制转换,它由 0-9,A-F,组成
ASCII 编码是将 128 个字符进行进制数来表示,常见 ASCII 码表大小规则:0~9<A~Z<a~z

常用的解密网站

www.cmd5.com(带批量解密工具)
www.somd5.com
cmd5.la
pmd5.com
www.ttmd5.com(带批量解密工具)

古典密码学

核心原理:替换法、移位法

替换法

①替换法很好理解,就是用固定的信息将原文替换成无法直接阅读的密文信息。例如将 b 替换成 we 替换成p ,这样bee 单词就变换成了wpp,不知道替换规则的人就无法阅读出原文的含义。

单表替换:原文和密文使用的是同一张表

多表替换:表示有多张表格,原文和密文进行对比

移位法

②移位法就是将原文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后得出密文,典型的移位法应用有 “ 恺撒密码 ”。

典型:凯撒加密

是一种位移加密方式,只对26个字母进行位移替换加密。将明文字母表向后移动1位,A变成了B,B变成了C……,Z变成了A。同理,若将明文字母表向后移动3位:则A变成了D,B变成了E……,Z变成了C。字母表最多可以移动25位。凯撒密码的明文字母表向后或向前移动都是可以的,通常表述为向后移动,如果要向前移动1位,则等同于向后移动25位,位移选择为25即可。

典密码学的破解方式

频度分析法进行破译密码,在不知道密码的规则前提下,进行破译密码

近代密码学

核心原理:替换法、移位法(机器进行 恩尼格玛密码机)

人工智能之父图灵破解

现代密码学

基本的加密思想

置换、移位

加密的实现,不只是依赖以上这些基本的思想,同时也依赖于很多巧妙的设计

除军事应用中的加密电报,除了使用安全性很高的编码规则以外,解密还涉及到收发报文双方的约定

①哈希Hash(也叫散列函数)MD5 SHA

散列函数,也见杂凑函数、摘要函数或哈希函数,可将任意长度的消息经过运算,变成固定长度数值,常见的有MD5SHA-1SHA256,多应用在文件校验,数字签名中。

将一段数据(任意长度)经过计算,转换为一段定长的数据;
不可逆性,几乎无法通过hash结果推导出原文;
无法碰撞,几乎没有可能找到一个y,是的y的hash值等于x的hash值
雪崩效益,输入轻微变化,hash输出值产生巨大变化
单向,不可能从散列值推出原始数据

也叫做哈希函数

常见的加密方式:MD5,SHA-1,SHA-256,SHA-512

MD5 可以将任意长度的原文生成一个128位(16字节)的哈希值

SHA-1可以将任意长度的原文生成一个160位(20字节)的哈希值

哈希加密算法是不可逆的,也就是说无论是网站的数据库管理员还是获取了密码数据的黑客,能看到的只是一长串毫无意义的字符,不可能将它还原成真正的密码。常见的解密办法就是彩虹表攻击(从存储在数据库中的散列值中找到它们的明文版本的一种常见攻击。)

自从出现彩虹表,可以反查数据,获取不可能的权限,所以更多的适合存储密码都是加盐存储。盐可以利用生成的随机数。可以将密码结合MD5加盐,生成的数据摘要和盐保存起来 。以便于下次用户验证使用。在用户表里面,也保存salt。

img

②对称加密

采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。

工作过程

用户A–>明文–>私钥A–>密文------网络传输------密文–>同一私钥A–>明文–>用户B

对称加密的缺点以及特点

缺点:密钥分发、密钥存储和管理。缺乏对数字签名/不可否认的支持

image-20230222165622069

特点

加密速度快, 可以加密大文件
密文可逆, 一旦密钥文件泄漏, 就会导致数据暴露
加密后编码表找不到对应字符, 出现乱码
一般结合Base64使用,解决乱码的问题
常见的对称加密算法

DES : Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法,1977年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),并授权在非密级政府通信中使用,随后该算法在国际上广泛流传开来。

DES是一种块或者分组加密算法;DES密钥是固定的56bit,不安全;DES以块模式对64bit的密文块进行操作

DES算法框架图

image-20230222171400918

DES的两种方式:ECB、CBC

AES : Advanced Encryption Standard, 高级加密标准 .在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。

取代DES算法;适用于高速网络,适合在和硬件上实现;使用128位、192位、256位的密钥块(还能以32bit扩展)、3DES的替代加密集数;软硬件运行效率高,可用于无线/语音视频加密。

RC系列、IDEA…

对称密码应用了相同的加密密钥和解密密钥。对称密码分为:序列密码(流密码),分组密码(块密码)两种。流密码是对信息流中的每一个元素(一个字母或一个比特)作为基本的处理单元进行加密,块密码是先对信息流分块,再对每一块分别加密。

使用的加密方式和解密方式都是同一把密钥

对称加密的核心原理:流加密、块加密

加密模式:ECB、CBC

③非对称加密

用途:加密/解密;数字签名:发送方用自己的私钥签署报文,接收方用对方的公钥验证对方的签名;密钥交换:双方协商会话密钥

对称密码的密钥安全极其重要,加密者和解密者需要提前协商密钥,并各自确保密钥的安全性,一但密钥泄露,即使算法是安全的也无法保障原文信息的私密性。

在实际的使用中,远程的提前协商密钥不容易实现,即使协商好,在远程传输过程中也容易被他人获取,因此非对称密钥此时就凸显出了优势。

非对称密码有两支密钥,公钥(publickey)和私钥(privatekey),加密和解密运算使用的密钥不同。用公钥对原文进行加密后,需要由私钥进行解密;用私钥对原文进行加密后(此时一般称为签名),需要由公钥进行解密(此时一般称为验签)。公钥可以公开的,大家使用公钥对信息进行加密,再发送给私钥的持有者,私钥持有者使用私钥对信息进行解密,获得信息原文。因为私钥只有单一人持有,因此不用担心被他人解密获取信息原文。

非对称加密的特点:有两把密钥,使用公钥加密,必须使用私钥解密,或者私钥加密,必须使用公钥解密

工作过程

A 使用公钥对明文信息进行加密–>变成密文–>传输–>B通过使用私钥对密文进行解密–>得到明文

非对称加密的缺点以及特点

私钥需要安全保存、公钥公开、加密速度慢、密文紧凑、可以与对称加密相互结合

常见的非对称加密算法

RSA、DH(Diffie-Hellman)、DSA、ECC

DH(Diffie-Hellman)

解决对称加密过程中密钥发布的问题

RSA

RSA主要功能:加密、数字签名和密钥交换(加密散列、密钥)

ECC

比特币…

④数字签名

在写信的时候落款处总是要留下自己的名字,用来表示写信的人是谁。我们签的这个字就是生活中的签名。而数字签名呢?其实也是同样的道理,他的含义是:在网络中传输数据时候,给数据添加一个数字签名,表示是谁发的数据,而且还能证明数据没有被篡改。数字签名的主要作用就是保证了数据的有效性(验证是谁发的)和完整性(证明信息没有被篡改)。

数字签名(又称公钥数字签名)是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。它是一种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术来实现的,用于鉴别数字信息的方法。一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。

RSA提供认证和抗抵赖性(私钥签名)

image-20230227160606244

数字签名有着跟RSA异曲同工之妙

image-20230227162258817

⑤数字证书与CA

上面提到我们对签名进行验证时,需要用到公钥。如果公钥是伪造的,那我们无法验证数字签名了,也就根本不可能从数字签名确定对方的合法性了。这时候证书就闪亮登场了。我们可能都有考各种证书的经历,比如说普通话证书,四六级证书等等,但是归根结底,到任何场合我们都能拿出我们的证书来证明自己确实已经考过了普通话,考过了四六级。这里的证书也是同样的道理。

如果不理解证书的作用,举一个例子,比如说我们的毕业证书,任何公司都会承认。为什么会承认?因为那是国家发得,大家都信任国家。也就是说只要是国家的认证机构,我们都信任它是合法的。

服务器有公钥A,私钥A。认证机构有私钥B,公钥B

服务器把公钥A给认证机构,为了让认证中心给自己开个证明说我这个公钥确实是我的,而认证中心自己系统里也知道我给谁鉴定过以及他的公钥。

CA是Certificate Authority的缩写,也叫“证书授权中心”。它是负责管理和签发证书的第三方机构

keytool工具的使用

如何设置密码才安全

1、密码不要太常见

2、各个应用软件里面的密码不要设置一样

编码

ASCIl编码

ASCIl(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC 6 46。

base64编码

Base64是一种用64个字符来表示任意二进制数据的方法。它是一种编码方式,而非加密方式。它通过将二进制数据转变为64个“可打印字符”,完成了数据在HTTP协议上的传输。

标准的Base64并不适合直接放在URL里传输,因为URL编码器会把标准Base64中的“/”和“+”字符变为形如“%XX”的形式,而这些“%”号在存入数据库时还需要再进行转换,因为ANSI SQL中已将“%”号用作通配符。

为解决此问题,可采用一种用于URL的改进Base64编码,它在末尾填充’='号,并将标准Base64中的“+”和“/”分别改成了“-”和“_”,这样就免去了在URL编解码和数据库存储时所要作的转换,避免了编码信息长度在此过程中的增加,并统一了数据库、表单等处对象标识符的格式。

base58编码

在base64编码的基础上去掉了6个

Base58是用于比特币(Bitcoin)中使用的一种独特的编码方式,主要用于产生Bitcoin的钱包地址。

image-20230222164002188

URL编码

当 URL 路径,或者查询参数中带有中文、特殊字符的时候,就需要对 URL 进行编码(采用十六进制编码格式)。URL 编码的原则是使用安全字符(即没有特殊用途或者特殊意义的字符)去表示那些不安全的字符。

编码是由数字"0-9"和字母"a-f"所组成的字符串,大小写敏感,通常以%数字字母间隔

作用

URL 之所以需要编码,是因为 URL 中的某些字符会引起歧义,比如若 URL 查询参数中包含”&”或者”%”就会造成服务器解析错误,再比如,URL 的编码格式采用的是 ASCII 码而非 Unicode,这表明 URL 中不允许包含任何非 ASCII 字符(比如中文),否则就会造成 URL 解析错误。

HEX编码

编码是计算机中数据的一种表示方法,将数据进行十六进制转换,它由 0-9,A-F,组成

hex编码也称之为Base16 编码;就是把一个字节,用十六进制来表示, 表示的结果得是字符形式的。 比如说字符的 a,在计算机底层存储的是0110 0001,对应的16进制就是61 ,它对应的字符 是61

也就是说 a 经过HEX编码转化成了 61 ,从计算存储二进制的角度是 从0110 0001经过HEX编码成了 0011011000110001

Unicode

Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。

我们都知道中文的字符肯定不止256个汉字,使用ASCII编码来处理中文显然是不够的,所以中国制定了GB2312编码,用两个字节表示一个汉字,碰到及其特殊的情况,还会用三个字节来表示一个汉字。GB2312还把ASCII包含进去了。同理,日文,韩文等上百个国家为了解决这个问题发展了一套自己的编码,于是乎标准越来越多,如果出现多种语言混合显示就一定会出现乱码。那么针对这种编码“乱象”,Unicode便应运而生了,其将所有语言统一到一套编码规则里。

参考视频以及资料

https://www.bilibili.com/video/BV1vq4y1R7Yt
https://blog.csdn.net/hancoder/article/details/111464250
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咸鱼讲技术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值