密码学基础概念及常见术语的简述

注:本文为自己对密码学内容的一些基础概念的见解并不涉及算法,只介绍一些概念方便初学者理解

学密码学,可能觉得内容很多,但密码学实际上就是一门基于加密与解密的学问,各种层出不穷的加密方式也很多。但现如今主要加密方式终归不过4大类,所以,密码学也就分为对称加密,非对称加密,哈希函数与公钥基础设施架构(PKI,在非对称加密的基础之上引入了CA证书概念)

对称加密与非对称加密
其中对称加密最简单,也最容易被破解。加密与解密使用同一个密钥,所以导致密钥分发时会有泄露的危险,密钥的管理需要十分小心,但其简单的加密方式也促成了他加密速度快,加密成本低的特点,为了得到最大的安全收益,他经常被使用于数据量大,数据机密性低的数据传输。而与之相对应的非对称加密实际上是一种密钥的保密方法,非对称加密算法需要两个密钥:公开密钥(publickey:公钥)和私有密钥(privatekey:私钥)。公钥与私钥是一对,接收方与发送方都分别拥有一公钥私钥。接收信息方将公钥公布出去,保管好私钥,如果发送方用接收方的公钥对数据进行加密,只有用接收方的私钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。

哈希函数
哈希函数(Hash)又称为散列,我之所以叫他哈希函数,而不叫他哈希加密,是因为我觉得他在严格意义上不能算一种加密方式,他的本质是一个数学函数。比如一个数据数字5假如使用函数x²将他变成25,他还是一个明文,并没有实际意义上的将他变成一个密文。就好比哈希算法是一个烤箱,加入面粉,水等将他烤成面包,你不知道加了多少面粉,也不知道加了多少水,但出来的只能是面包。而加密算法像一个保险柜,将你的面粉和水锁起来。常见哈希算法有MD5、SHA(SHA-1、SHA-2、SHA-256等)其算法特点有不可逆性、可重复性(相同输入得到相同哈希值,而相同哈希值并非都是相同输入)、抗冲突(改变输入的很小部分,哈希的变化会很大,产生哈希冲突的几率很小)、输出长度固定。所以由于哈希的特性,可以用来验证数据的完整性。

哈希冲突:简而言之就是不同的输入结果得到相同的哈希值。

我们知道了哈希算法是有可能产生冲突的,而一些不怀好意的人一旦发现了哈希冲突,就可以使用这些个漏洞来篡改发送方的信息,再传递给接收方,由于篡改后的信息编造出的哈希值没有变,所以接收方并不能发现。为了最大可能的避免这种情况的发生,所以引入了密码盐(Cryptographic salt)的概念,密码盐就是信息在密码散列的过程中被添加到明文的一个随机数。由于哈希函数的特性,就算是添加一个随机数,哈希值也就是消息摘要也会极大的改变,而使用不同的密码盐就会生成不同的消息摘要。由于密码盐是直接加入到明文中的,这样就很难去伪造信息了。攻击者必须生成唯一的彩虹表才能计算盐,彩虹表攻击就无效了。

PKI
公钥基础设施架构(PKI)是一系列硬件、软件、人员、策略的集合。简而言之是一组在分布式计算系统中利用公钥技术和CA证书所提供的安全服务(也就是非对称加密技术与CA)。在PKI中密钥有两对,一对密钥用于数据的加解密,称作加密密钥对,一对密钥用作数字签名,称作签名密钥对。而什么又是数据签名,数据签名的作用又是什么呢?假如有一些数据需要传送,有一个发送方和一个接收方。发送方拥有用作数字签名的公钥,接收方拥有数字签名的私钥。发送使用私钥加密原文作为数字签名并附加在原文上发送给接受方,这样接受方就可以通过公钥解密数字签名来验证传输数据的完整性与信息是否真的来自发送方以防止数据被替换和篡改。在发送方想使用数字签名是他必须得到可信第三方(CA证书机构)得到私钥与公钥。因此数字签名拥有保持数据完整性,不可否认性与真实性的特点。

  • 这是一个初学者萌新对密码学的一些概念介绍,也是我学习网络安全的第一篇文章,接下来我会开始写kali linux渗透测试 从初学者开始的文章,从kali linux的安装开始,有兴趣的可以关注我,有描述错误或者不清楚的地方希望大家指出。

你可能感兴趣的:(密码学)