密码学概论之基本概念

news2024/12/23 1:37:45

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

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

• 密码学概论

• 流密码

• 分组密码

• 公钥密码

• 消息认证和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前缀表示“否定”,对密文进行反加密,即解密。这样是不是就清楚多了呢?

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

密码学基本术语

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

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

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

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

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

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

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

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

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

密码分析的攻击类型

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

• 唯密文攻击

– 只有一些密文

• 已知明文攻击

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

• 选择明文攻击

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

• 选择密文攻击

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1277873.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数值计算方法(黄明游)】矩阵特征值与特征向量的计算(五):Householder方法【理论到程序】

文章目录 一、Jacobi 旋转法二、Jacobi 过关法三、Householder 方法1. 旋转变换a. 旋转变换的选择b. 旋转变换的顺序 2. Householder矩阵(Householder Matrix)a. H矩阵的定义b. H变换的几何解释c. H变换的应用场景 3. H变换过程详解a. 过程介绍b. 细节解…

vcomp140.dll是什么意思?vcomp140.dll缺失怎么修复的五个方法

在电脑使用过程中,我们常常会遇到一些错误提示,其中之一就是“由于找不到vcomp140.dll无法继续执行代码”。这个错误提示通常出现在运行某些程序时,给使用者带来了很大的困扰。那么,为什么会出现这个错误呢?又该如何解…

函数指针和指针函数的讲解

文章目录 指针函数函数指针函数指针的定义与指针函数的声明的区别函数指针的定义指针函数的声明 typedef在函数指针方面的使用typedef和using 给函数指针的类型取别名typedef和using 给函数的类型取别名 指针函数 指针函数: 也叫指针型函数,本质上就是一…

线上CPU飙高问题排查!

https://v.douyin.com/iRTqH5ug/ linux top命令 top 命令是 Linux 下一个强大的实用程序,提供了系统资源使用情况的动态、实时概览。它显示了当前正在运行的进程信息,以及有关系统性能和资源利用情况的信息。 以下是 top 命令提供的关键信息的简要概述…

整体迁移SVN仓库到新的windows服务器

一、背景 公司原有的SVN服务器年代比较久远经常出现重启情况,需要把SVN仓库重新迁移到新的服务器上,在网上也搜到过拷贝Repositories文件直接在新服务器覆盖的迁移方案,但考虑到原有的操作系统和现有的操作系统版本不一致,SVN版本…

【开源】基于JAVA的超市账单管理系统

项目编号: S 032 ,文末获取源码。 \color{red}{项目编号:S032,文末获取源码。} 项目编号:S032,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统设计3.1 总体设计3.2 前端设计3…

【计算机网络】14、DHCP

文章目录 一、概述1.1 好处 二、概念2.1 分配 IP2.2 控制租赁时间2.3 DHCP 的其他网络功能2.4 IP地址范围和用户类别2.5 安全 三、DHCP 消息3.1 DHCP discover message3.2 DHCP offers a message 如果没有 DHCP,IT管理者必须手动选出可用的 ip,这太耗时了…

每天五分钟计算机视觉:AlexNet网络的结构特点

本文重点 在前面的一篇文章中,我们对AlexNet网络模型的参数进行了详细的介绍,本文对其网络模型的特点进行总结。 特点 1、AlexNet的网络结构比LeNet5更深,模型包括5个卷积层和3个全连接层。参数总量大概为249MB。 2、Alex使用了ReLu激活函…

【vSphere 8 自签名 VMCA 证书】企业 CA 签名证书替换 vSphere VMCA CA 证书Ⅱ—— 创建和添加证书模板

目录 3. 使用 Microsoft 证书颁发机构创建 VMCA 证书模板3.1 打开 Certificate Template Console3.2 复制模板修改 Compatibility 选项卡修改 General 选项卡修改 Extensions 选项卡确认新模板 4. 将新模板添加到证书模板4.1 打开 Certificate Console4.2 创建证书模板 关联博文…

高端大气简历模板(精选8篇)

想要让简历在众多求职者中脱颖而出,吸引HR的眼球吗,可以看看这8篇精选的高端大气简历模板!本文为大家提供了多种行业、职位的简历案例,助大家打造一份令人惊艳的简历,轻松斩获心仪职位! 高端大气简历模板下…

【FPGA图像处理实战】- 图像基础知识

视频图像处理是FPGA主要应用方向之一,很多FPGA从事或准备进入这一领域,我们现在开始发布新的FPGA实战专栏——FPGA图像处理。 FPGA处理视频图像处理的主要优势是流水线和并行处理运算,特别是现在视频分辨率越来越大,从720p到1080…

机械臂运动规划、抓取末端执行器、抓取开源项目

运动规划 1.1已有抓取点 假设抓取点已检测到。这些方法设计了从机器人手到目标物体抓取点的路径。这里运动表示是关键问题。虽然存在从机器人手到目标抓握点的无限数量的轨迹,但是由于机器人臂的限制,许多区域无法到达。因此,需要对轨迹进行…

代码浅析DLIO(四)---位姿更新

0. 简介 我们刚刚了解过DLIO的整个流程,我们发现相比于Point-LIO而言,这个方法更适合我们去学习理解,同时官方给出的结果来看DLIO的结果明显好于现在的主流方法,当然指的一提的是,这个DLIO是必须需要六轴IMU的&#x…

面试就是这么简单,offer拿到手软(一)—— 常见非技术问题回答思路

面试系列: 面试就是这么简单,offer拿到手软(一)—— 常见非技术问题回答思路 面试就是这么简单,offer拿到手软(二)—— 常见65道非技术面试问题 文章目录 一、前言二、常见面试问题回答思路问…

webGIS使用JS,高德API完成简单的智慧校园项目基础

代码实现 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-width, i…

react之@路径解析配置和联想配置

react之路径解析配置和联想配置 一、介绍二、路径解析配置三、联想路径配置 一、介绍 1.路径解析配置&#xff08;webpack&#xff09;&#xff0c;把 / 解析为 src/2.路径联想配置&#xff08;VsCode&#xff09;&#xff0c;VsCode 在输入 / 时&#xff0c;自动联想出来对应…

ARM64版本的chrome浏览器安装

这一快比较玄学&#xff0c;花个半个小时左右才能安装好&#xff0c;也不知道是个什么情况。 sudo snap install chromium只需要以上这个命令&#xff0c;当然&#xff0c;也可以自己去找安装包进行安装&#xff0c;但是测试后发现并没有那么好装&#xff0c;主要是两个部分 一…

Halcon参考手册目标检测和实例分割知识总结

1.1 目标检测原理介 目标检测&#xff1a;我们希望找到图像中的不同实例并将它们分配给某一个类别。实例可以部分重叠&#xff0c;但仍然可以区分为不同的实例。如图(1)所示&#xff0c;在输入图像中找到三个实例并将其分配给某一个类别。 图(1)目标检测示例 实例分割是目标检…

打造个性化github主页 一

文章目录 概述创建仓库静态美化GitHub 统计信息卡仓库 GitHub 额外图钉仓库 热门语言卡仓库 GitHub 资料奖杯仓库 GitHub 活动统计图仓库 打字特效添加中文网站统计仓库 总结 概述 github作为全球最大的代码托管平台&#xff0c;作为程序员都多多少少&#xff0c;都使用过他。…

基于SpringBoot的公益慈善平台

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&#xff1a; 基于SpringBoot的公益…