密码学概论之基本概念

本人信息安全专业,大三,为着将来考研做准备,打算按照自己目前的理解给大家唠唠密码学。

这个专栏我将从以下七个章节来聊聊密码学,若有不当之处,敬请指出。

• 密码学概论

• 流密码

• 分组密码

• 公钥密码

• 消息认证和Hash函数

• 数字签名和认证协议

• 密钥分配与密钥管理

这篇文章则主要是聊聊密码学的一些基本概念。

什么是密码学?

信息在网络中不总是安全的,存在着人为攻击以获取信息或破坏信息;其中获取信息属于被动攻击,破坏信息属于主动攻击,那么什么是被动攻击?什么是主动攻击?两者的区别是啥呢?

如上图所示,被动攻击只获取信息,不破坏伪造信息,也就是说不改变信息;而主动攻击则改变了传递的信息。两者的区别正在于是否改变了传递的信息。

正是由于信息或数据在网络中传递的这种不安全性,密码学应运而生。维基百科上是这样说的:密码学是对安全通信技术的研究,要能够有效的防范潜在攻击。

用通俗易懂的语言来说就是,密码学是研究如何安全传递信息的一门学科,其中包括加密解密、hash函数、数字签名等。加密解密实现数据的保密性,hash函数验证数据的完整性,数字签名验证发送方的身份。

很多同学可能把密码学等同于加密解密,事实上这种观点是不太全面的,毕竟仅仅实现数据保密还远远不够。

举个例子,假设你发现自己收到小明发来的好友申请,同意后,他发消息让你借给他一万元,说第二天还你两万,你傻呵呵地给他转过去了,结果第二天和小明说起这件事时,他却死不承认,"我昨天没给你发消息借钱呀,还什么钱?"

当然,这完全有可能发生,你以为对面给你发消息的是小明,事实上可不一定是小明,很可能是别人冒充小明的身份给你发消息。但是如果这时候你能够验证对方是不是小明,这个问题不就不存在了吗?假设验证结果显示对面确实是小明,第二天他就没法赖账不还了;而如果验证显示不是小明,那很显然你也不会被骗了。

结果,第二天你让小明还你两万的时候小明说:"我明明说的是到时候还你10002。"你傻眼了。这不都保证数据保密和验证身份了吗,他怎么还能抵赖呢?可别忘了,数据虽然保密了,但是保密不代表不被篡改,没准小明当时发送的确实是10002,被攻击方篡改,恰好改成两万了,这个又怎么说得清呢?但假设你能够验证数据的完整性,即是否被篡改,小明就算想抵赖也不成了。

大家是不是清楚多了呢?如果现在对这几个概念不太理解也没事,谁都是从不懂到懂的,知道有这么个概念就行,之后将详细讲解。

密码发展简史

大体分三个阶段

• 历史时期的古典密码加密手段 (1949年之前 加密技术的开拓)

-- 恺撒密码

• 计算机出现以来的现代阶段 (1949-1976年 密码学成为一门科学)

-- Shannon

• 公钥体系阶段 (1976年之后 公钥密码思想的出现)

-- Diffie/Hellman、RSA

如果大家之前没接触过密码学,可能对这些概念不是很了解,没关系,咱们之后还会讲解的(如果没讲的话,可以提醒一下),我在这里也不过分解释了。

密码学基本概念

明文P:发送方即将要发送的消息。

密文C:明文经过密码变换后的消息。

加密E:由明文变换为密文的过程。

解密D:由密文恢复出原明文的过程。

加密算法:对明文进行加密时所采用的一组规则。

解密算法:对密文进行解密时所采用的一组规则。

K密钥:是一种特定的值,能使密码算法按照指定的方式进行,并产生相应的密文。

开始时,可能会把P和C搞混,把E和D搞错,在这里教大家一个小窍门,大家应该对Ciphertext不陌生,这是密文的意思,那自然C和P谁对应明文谁对应密文就很清楚了。什么?之前不知道这个单词?

那教大家个记忆方法,你看C是不是一个半圆,看起来快把自己包裹住了,为啥把自己包住呀,肯定有秘密呗,这不就记住了吗?另一个P自然对应着明文。当然,前提是你得清楚P和C一个是明文一个是密文,要是和E、D搞混了,我就爱莫能助了。不过,也不是没办法,记英语单词。

E和D也是同样的道理,加密的英文encrypt,解密的英文decrypt,记住一个的英文就记住另一个了,也不是必须记住英语单词,记首字母也行,但很容易就弄混了。当然也有个窍门,en前缀表示"使......成某种状态",使明文被加密;de前缀表示"否定",对密文进行反加密,即解密。这样是不是就清楚多了呢?

加密算法是对明文进行加密时采用的算法;解密算法则是对密文进行解密是采用的算法,举个栗子,小明给好哥们用英文发微信约他出去玩耍,又怕被女朋友发现,于是将每个英文单词向后移一位,得到的结果发给好哥们。小明和好哥们事先就约定好了,如果发的是一团奇奇怪怪的字母,那就说明字母往后移了一位。于是,收到消息的好哥们将字母往前一位以得到小明发来的消息。在这里,加密算法就是所有字母全都向后移一位;解密算法就是所有字母全向前移一位。在这个层面看,其实密码学也就是为了保证信息的安全性,所以运用数学知识进行一些变换,以达到数据安全的目的。

密码学基本术语

发送者:对明文进行加密操作的人员。

接收者:传送消息的预定对象。

敌手:在信息传输和处理系统中,通过搭线窃听、电磁窃听、声音窃听等方式来窃取机密信息。

加密密钥和解密密钥:加密算法和解密算法的操作通常都是在一组密钥控制下进行。

单钥密码体制(对称密码体制,分组密码体制):传统密码体制所用的加密密钥和解密密钥相同,或实质上等同,即从一个易于得出另一个。

双钥密码体制(非对称密码体制,公钥密码体制):若是加密密钥和解密密钥不相同,即从一个难于推出另一个。

发送方顾名思义就是发送消息的一方,而消息如果以明文的形式发送很容易被窃取,于是自然发送方需要对信息进行加密,接收方收到消息后需要进行解密以获取消息,毕竟一串奇奇怪怪的东西谁看得懂呢?

加密密钥可以理解为一把钥匙,发送方用加密密钥对信息进行上锁,防止别的人看见或窃取;解密密钥也类似,接收方用解密密钥对信息开锁,获得锁里面的东西。我们的日常生活中,同一把钥匙既能上锁也能开锁,如果上锁时向左边转三圈,那开锁自然是向右边转三圈。密码学中与之对应的是对称密码,对称密码加密解密使用同一把密钥或易于从加密密钥得出解密密钥。

然而,密码学中还有一种密码:公钥密码,也被称为非对称密码。与对称密码不同,公钥密码使用一对密钥来进行加密和解密操作:公钥和私钥。在公钥密码中,发送方会生成一对密钥,其中一个是公钥,用于加密要发送的信息。公钥可以被任何人获取,并用于对信息进行加密。而私钥则由接收方保密,并用于解密被加密的信息。公钥密码的工作原理是基于数学上的难题,例如大素数分解或椭圆曲线离散对数等。通过这些数学问题的特性,公钥和私钥之间存在一种数学上的关联,使得使用公钥加密的信息只能通过私钥解密,而无法通过公钥本身推导出私钥。

密码分析的攻击类型

破译是试图恢复明文或找出密钥的尝试

• 唯密文攻击

-- 只有一些密文

• 已知明文攻击

-- 知道一些过去的(明文及其密文)作参考和启发

• 选择明文攻击

-- 相当于有一台加密机(能使用加密密钥)

• 选择密文攻击

-- 相当于有一台解密机(能使用解密密钥)

这篇文章暂时就先讲到这里,凡时不可求之过急,咱们先休息一会,把这篇理解一下,下篇文章接着学习。

相关推荐
应长天4 小时前
密码学(斯坦福)
密码学
Turbo正则1 天前
量子计算基础概念以及八大分支
密码学·量子计算
网安INF12 天前
公钥加密与签名算法计算详解(含计算题例子)
网络·算法·网络安全·密码学
电院工程师13 天前
基于机器学习的侧信道分析(MLSCA)Python实现(带测试)
人工智能·python·嵌入式硬件·安全·机器学习·密码学
电院工程师14 天前
SM3算法C语言实现(无第三方库,带测试)
c语言·算法·安全·密码学
小七mod16 天前
【BTC】密码学原理
web3·区块链·密码学·比特币·btc·肖臻·北大区块链
电院工程师21 天前
轻量级密码算法PRESENT的C语言实现(无第三方库)
c语言·算法·安全·密码学
电院工程师21 天前
轻量级密码算法CHAM的python实现
python·嵌入式硬件·算法·安全·密码学
电院工程师22 天前
SM3算法Python实现(无第三方库)
开发语言·python·算法·安全·密码学
网安INF22 天前
SHA-1算法详解:原理、特点与应用
java·算法·密码学