密码学——密码学基础、散列函数与数字签名

1.密码学概述

是信息安全的基础和核心,是防范各种安全威胁的重要手段,信息安全的许多相关知识都与密码学相关。

密码学发展

密码学是一门古老而又年轻的学科 ,几千年以前就存在,至今仍在发展演进。地位非常重要甚至起决定性作用。密码学源于希腊语kryptós,意为“隐藏的” 。 最早的密码学应用可追溯到公元前2000年古埃 及人使用的象形文字。

  历史上的第一件军用密码装置是公元前5世纪的斯巴达密码棒它采用了密码学上的移位法(Transposition)原理。发送方把兽皮缠在一根木棍上,在上面写字,写完字后把兽皮解下来,别人看不懂上面写的内容,接收方只要有一根差不多一样的木棒,把兽皮缠在密码棒上就能还原之前写的内容。

用途:保护军事通讯安全

  恺撒大帝发明了最早的实用代替密码方案(尤利 西斯.恺撒100-44 BC)把要发送的消息中的每个字母,根据代替表,替换成对应的字母 。

作用:保护机密通信     用途:保护军事通讯安全

例如:

this is caesar code

vjku ku ecguct eqfg

a  b  c  d  e  f  g  h  i   j k  l  m n  o  p  q  r … x y z

c  d  e  f   g  h  i   j  k  l m n o  p  q  r   s  t … z a b

  二战期间,日本采用M-209转轮机械加密机—紫密,这种加密方式,手工计算短时间无法破解。此时美国已经研制出计算机,1943年,通过解密通信内容获悉山本五十六将于4月18日乘中型轰炸机,由6架战斗机护航,到中途岛视察时,罗斯福总统下令拦截,山本坠机身亡,日本海军从此一蹶不振。

  德国采用的enigmam(谜语)密码机被盟军破译,对于扭转二战局面起到了重要作用。只有字母键,可以可输入的字母直接转化为密文,事先要约定好转子作为密钥。

密码学流派

密码学是在编码与破译的斗争实践中逐步发展起来的, 伴随着编码和破译之间的较量不断发展。

编码密码学:编制密码以保护通信秘密的,称为编码密码学 如:enigmam

密码分析学(或破译密码学):破译密码以获取通信情报的。

发展阶段

第一阶段:古代—1949年 ,密码技术可以说是一种艺术,而不是一种科学, 密码学者常常是凭直觉来进行密码设计和分析, 而不是推理和证明。 在现代计算机技术条件下都是不安全的 ,但是算法思想(代换、置换)是分组密码算法的基本运算模式。

第二阶段:1949年—1975年 ,1949年香农发表的<<保密系统的信息理论>>为私钥密码系统建立了理论基础,从此密码学成 为一门科学 。美、苏、英、法等很多国家已经意识到了密码的重要性,开始投入大量的人力和物力进行相 关的研究,研究成果都是保密的,Enigma的破解过程以及原理都是过 了几十年以后才公布的。

第三阶段:1976年—今 ,1976年Diffie 和 Hellman发表文章“密码学的新动向”开创了公钥密码学的新纪元。是密码学的一场革命。从此,密码开始充分发挥它的 商用价值和社会价值。1978年,Rivest、Shamir和Adleman公布了RSA 密码体制,是第一个真正实用的公钥密码体制,对计算机安全和通信产生巨大影响,发明人因此获得了图灵奖。计算机领域最高奖项。

密码学发展的新方向

量子密码

用目前物理学的知识来开发不能被破解的密码系统,不了解发送的密钥,攻击者无法破解所截获的内容,依赖于物理学作为安全关键,而不是数学上的困难问题。量子密码基于单光子的应用和它固有的量子性质开发出来的不可破解的密码系统。

 混沌密码

是新的密码加密算法,简单、高效。混沌密码是混沌理论的一个重要应用领域,混沌理论用于密码学主要依靠混沌的基本特征(随机性、便利性、确定性、和对初始条件的敏感性),混沌密码体系的结构与传统密码理论当中混淆和扩散概念联系起来,混沌理论和纯密码学之间的必然联系形成了混沌的密码学。

DNA密码

由DNA计算产生,主要特点:以DNA作为信息载体,以现代生物学为主要载体来挖掘DNA固有的高存储密度以及高并行性优点从而实现加密、认证、签名等密码学功能。

缺点:缺乏有效的安全理论依据以及简洁的实现方式,目前的研究主要都是基于发觉DNA可用于信息领域的优良性质,探寻DNA密码可能的发展方向,寻找实现DNA密码的简便方法。

基于格的密码体制

抗量子计算攻击的公钥密码体制,格密码理论研究涉及密码数学问题很多,学科交叉特色非常明显,研究方法也基于多元化。发展大概分为两条主线,一种是从具有历史悠久的经典的格的数学问题的研究发展到近30年来高围格困难问题的求解算法以及计算复杂性理论的研究;另一种是使用格困难问题的求解算法,分析非格公钥密码体制的安全性发展到基于格的困难问题的密码体制的设计。

轻量级密码

密码学分支的一个重要领域,它的目标是针对资源受限(这些设备的计算能力不够强或者无法提供复杂的持续的密码运算)的设备,经给定制和裁剪产生的一种密码解决方案。

应用领域:汽车系统、传感器网络、医疗设备、分布式控制、物联网等。

同态密码

同态密码是基于数学难题和计算机复杂性理论的一种密码学技术,对经过同态加密的数据进行处理,可以得到一个输出,这个结果与使用同一方法来处理未加密的原始数据得到的结果可以是一样的即两个数分别加密后在做加法,密文相加之后的结果解密以后跟直接把这两个数做加法的结果是一样的,这样就可以实现密文域上的运算。

应用领域:密文搜索、电子投票、移动代码和多方安全计算、云计算等。

2.密码学基础

密码学基本概念

要传输的消息M叫做明文,(可以是文本文件、位图、 数字化的语言、数字化的视频图像) 。明文通过加密器加密后得到密文C。将明文变成密文的过程叫加密, 一般记为E,它的逆过程称为解密一般记为D

C=E(M), M=D(C)

密码体制的分类

根据密钥的特点,密码体制可以分为对称密码体制 (Symmetric Cryptosystem) 和非对称密码体制 (Asymmetric Cryptosystem)两种。 加密、解密使用相同密钥的是对称密码体制,也称单钥(Onekey) 加密、解密使用不同密钥的是非对称密码体制,也称做双钥 (Two-Key) 或公钥(Public Key)密码体制。 加密密钥和解密密钥成对出现,从一个难于推算出另一个 ,一个叫公钥public key,一个叫私钥private key。

对称密码体制中,按照加密方式又可以分为流密码(Stream Cipher)和分组密码 (Block Cipher)两种。在流密码中将明文消息按字符逐个地进行加密,类似于流水线 ;在分组密码中将明文消息进行分组(每组N个字符),逐组地进行加密。

科克霍夫(Kerckhoff)原则 :现代密码学的一个基本原则——密码体制应该对外公开,仅需对密钥进行保密。 在设计加密系统时,总是假设密码算法是公开 的,真正需要保密的是密钥。一个密码系统需要保密的越多,可能的弱点也越多。依据柯克霍夫原则,大多数民用加密系统都使用公开的算法。 但相对地,用于政府或军事机密的加密算法通常是保密的。

DES加密算法:

在1976年,IBM沃森公司的菲斯特和美国国家安全局 一起制定了DES标准 (Data Encryption Standard) ,DES算法是美国政府机关为了保护信息处理中的计算机数据而使用的一种加密方式,属于对称密码体制,分组密码算法。加密时算法输入64比特的明文,在64比特密钥的控制下产生并输出64比特的密文;解密时输入64比特的密文,在密钥控制下输出64比特的明文分组。

64比特的密钥中含有 8个比特的奇偶校验位,所以实际有效密钥长度为56比特,密钥扩展6轮 ;解密是加密的逆过程 ;在密码学的历史上是 一个具有深远影响的。

64比特明文首先进行初始置换。功能是把输入的64位数据块按位重新组合,并把输出分为L0 、R0两部分, 每部分各长32位,置换规则使用的是置换表。

虽然由于密钥长度的原因,DES安全性已经无法满足现有信息安全要求 ,3DES是DES算法扩展其密钥长度的一种方法,可使加密密钥长度扩展到128比特 (112比特有效)或192比特(168比特有效)。

基本原理:是将192比特的密钥分为64比特的3组,对明文多次进行普通的DES加解密操作 ,比如用第1组密钥对明文进行DES加密,用第2组密钥对其结果进行DES解密,(第一组、第二组加密、解密使用的密钥不同)再使用第3组密钥对解密结果进行DES加密 ,解密过程还是逆过程。

RSA加密算法:

迄今为止的所有公钥密码体系中,RSA系统是最著名、使用最广泛的一种。RSA属于非对称密码体制。 是由R. Rivest、A. Shamir和L. Adleman三位教授提出的。

基本原理:密钥中心先产生两个足够大的强质数p、q,然后计算n=pxq,再由p和q算出另一个数z=(p-1)×(q-1),然后再选取一个与z互素的奇数e,e为公开指数;根据e值找出另一个值d,并能满足e×d=1 mod (z)条件。由此而得到的两组数(n,e) 和 (n,d)分别作为公钥 和私钥。 素数p、q以及z由密钥管理中心负责保密。在密钥对产生后将其销毁存入离线的安全库以备以后密钥恢复使用 。加密和解密过程都是模指数运算。使用公钥对明文加密得到密文C = M e mod( n) ;使用私钥解密密文得到明文 M= C d mod( n)。

例:

令p=3,q=11,得出n=p×q=3×11=33;z=(p-1)(q-1)=2×10=20;取e=3,(取一个跟20互素的数,3与20互质)则 e×d≡1 mod z,即3×d≡1 mod 20。

通过试算我们找到,当d=7时,e×d≡1 mod z 

公钥为:(e,n)=(3,33),私钥为:(d,n)=(7,33)  明文为 M=5,密文C=5^3 mod 33 = 26(mod 33为除以33之后的余数)  解密过程 M= 26^7 mod 33 = 5

RSA算法的安全性:基于数论中的大整数分解困难问题,即计算两个大的质数的乘积很容易 ,而给定大整数寻找其因子则非常困难。

比如:4399 = 53 X 83  因此,大数n的位数长度非常关键,一般公司级 应用需要1024比特的n,重要的场合应该用2048 比特的n。

3.散列函数与数字签名

哈希函数

也称为Hash函数、杂凑函数、散列函数 ,是密码学中另一个非常重要的工具。

经典的哈希函数: MD5、SHA-1、SHA-3、SM3 ,可以将任意长度的一块数据转换为一个定长的哈希值,可以敏感地检测到数据是否被篡改,结合其他的算法可以用来保护数据完整性,只要输入改一比特,输出就会有巨大不同。

哈希函数的性质:

单向性:给定x容易计算H(x) ,反之则非常困难。

抗碰撞性:对于任意给定的分块x,找到满足 y≠x且H(x)=H(y)的y 在计算上是不可行的,通常认为哈希值和消息是一一 对应的。

哈希函数还可以用来保护用户口令——我们使用很多的登录系统 ,为了不在服务器上明文存放,不在网络上明文传输,一般都将口令做哈希运算 ,用户端哈希值发到服务器验证 ,只能做到一定程度的保护,还是有方法破解(彩虹表:把常见的字母组合、英文单词来进行哈希运算得到一个巨大的明文哈希值的对应表,当攻击者截获到用户的口令哈希值后只要经过查表运算就有可能恢复出来用户口令的明文)

数字签名 

是目前电子商务、电子政务中应用最普遍、技术最成熟的、可操作性最强的一种电子签名方法。它采用了规范化的程序和科学化的方法,用于鉴定签名人的身份以及对一项电子数据内容的认可。它还可以用来验证文件在传输过程中有无内容变动,确保传输数据的完整性、真实性和不可抵赖性。

常见的数字签名算法: RSA Data Security公司的PKCS(Public Key Cryptography Standards)、DSA(Digital Signature Algorithm)、X.509、PGP(Pretty Good Privacy) 、DSS等

密码的相对安全 :数学家香农创立的信息论中用严格的数学方法证明了一个结论:除了一次一密以外,一切密码算法,在理论上都是可以破解的。 没有绝对安全,只有相对安全 。

假如一条信息需要保密10年,如果要花11年的时间才能破解它,那么保密方案就是安全的; 假如一条信息价值100万元,如果需要花1000万元的 代价才能破解它,那它就是安全的。

1.关于密码学学术流派说法错误的是

A. 编码密码学是由密码分析学发展而来

B. 密码学是在编码与破译的斗争实践中逐步发展起来的

C. 破译密码学也叫做密码分析学

D. 可以分为编码密码学和破译密码学

2.密码体制的分类说法错误的是

A. 对称密码体制也称做双钥密码体制

B. 加密、解密使用相同密钥的是对称密码体制

C. 非对称密码体制的加密密钥和解密密钥成对出现,从一个难于推算出另一个

D. 加密、解密使用不同密钥的是非对称密码体制

 3.关于密码学中的柯克霍夫原则,说法正确的是

A. 大多数民用加密系统都使用公开的算法

B. 大多数用于政府或军事机密的加密算法通常是公开的

C. 一个密码系统需要保密的越多,可能的弱点就越少

D. 密码算法应该和密钥一同保密

4.关于DES算法说法错误的是

A. 64比特的密钥中实际有效密钥长度为56比特

B. 64比特的密钥中含有8个比特的奇偶校验位

C. 是一个分组密码算法

D. 加密算法和解密算法是相同的

5.关于RSA算法说法错误的是

A. 基于大整数分解困难问题

B. 用于生成密钥的两个质数作为参数公开

C. RSA属于非对称密码体制

D. 加密和解密过程都是模指数运算

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JS API日期对象

目标&#xff1a;掌握日期对象&#xff0c;可以让网页显示日期 日期对象&#xff1a;用来表示时间的对象 作用&#xff1a;可以得到当前系统时间 实例化 目标&#xff1a;能够实现实例化日期对象 在代码中发现了new关键字时&#xff0c;一般将这个操作称为实例化 创建一个时…

CTFshow-命令执行(Web29-40)

CTFshow-命令执行(Web29-40) CTFWeb-命令执行漏洞过滤的绕过姿势_绕过空格过滤-CSDN博客 总结rce&#xff08;远程代码执行各种sao姿势&#xff09;绕过bypass_远程命令执行绕过-CSDN博客 对比两者的源代码&#xff0c;我们发现&#xff0c;cat指令把flag.php的内容导出后依…

Qt Pro 常用配置

Part1: Summary Qt 开发中 Pro 文件的内容很多&#xff0c;需要不断的去学习和使用&#xff0c;现系统性的整理一下。以备录&#xff1b; 1.创建pro文件 1.1 步骤&#xff1a; Qt Creator--->New Project--->应用程序--->Qt Widgets Application--->名称为&…

移动端自动化Auto.js入门及案例实操

前提&#xff1a; Appium 和 Airtest 编写的自动化脚本都依赖于 PC 端运行&#xff0c;没有办法直接运行在移动端 Auto.js是什么&#xff1f; 1.是 Android 平台上的一款自动化工具&#xff0c;它通过编写 JavaScript 脚本&#xff0c;对 App 进行自动化操作 2.只支持安卓&a…

【SH】微信小程序调用EasyDL零门槛AI开发平台的图像分类研发笔记

文章目录 微信小程序字符串字符串模板字符串拼接 上传图片编写JS代码编写wxml代码编写wxss代码 GET请求测试编写测试代码域名不合法问题 GET和POST请求测试编写JS代码编写wxml代码编写wxss代码 效果展示 微信小程序字符串 字符串模板 这是ES6引入的特性&#xff0c;允许你通过…

【深度学习入门】深度学习介绍

1.1 深度学习介绍 学习目标 目标 知道深度学习与机器学习的区别了解神经网络的结构组成知道深度学习效果特点 应用 无 1.1.1 区别 1.1.1.1 特征提取方面 机器学习的特征工程步骤是要靠手动完成的&#xff0c;而且需要大量领域专业知识深度学习通常由多个层组成&#xff0c…

SparkSQL与Hive的整合

文章目录 SparkSQL与Hive的整合1.1. Spark On Hive1.1.1. Hive的准备工作1.1.2. Spark的准备工作1.1.3. Spark代码开发1.1.4. Spark On Hive案例 1.2. Hive On Spark1.3. SparkSQL命令行1.4. SparkSQL分布式查询引擎1.4.1. 开启ThriftServer服务1.4.2. beeline连接ThriftServer…

梳理你的思路(从OOP到架构设计)_基本OOP知识03

目录 1、<基类/子类 >结构的接口(卡榫函数) 1&#xff09;卡榫(Hook) 2&#xff09;卡榫函数的Java实现 2、IoC机制与基於 Default 軟硬整合觀點 函数 1&#xff09;卡榫函数实现IoC机制 2&#xff09;默认(Default)行为 1、<基类/子类 >结构的接口(卡榫函数…

软件测试--录制与回放脚本

准备工作 安装phpstudy 配置两个内容 放demo44文件夹 在浏览器输入http://localhost/demo44/index.html&#xff0c;出现如图所示的网站 输入用户名和密码 步骤一&#xff1a;打开Virtual User Generator&#xff0c;点击新建&#xff0c;点击new 步骤二&#xff1a;点击如下…

1.2.3计算机软件

一个完整的计算机系统由硬件和软件组成&#xff0c;用户使用软件&#xff0c;而软件运行在硬件之上&#xff0c;软件进一步的划分为两类&#xff1a;应用软件和系统软件。普通用户通常只会跟应用软件打交道。应用软件是为了解决用户的某种特定的需求而研发出来的。除了每个人都…

前端传入Grule,后端保存到 .grl 文件中

前端传入Grule&#xff0c;后端保存到 .grl 文件中 通过简单的输入框&#xff0c;将Grule的部分拆解成 规则名称 规则描述 规则优先级 规则条件 规则逻辑Grule关键字 when Then 模拟了 if 判断的条件和逻辑部分 类似于 shell 和 ruby 之类的脚本语言&#xff0c;有 then 关键字…

公众号看到一个小知识(遥感影像标签的数值问题)

遥感影像标签的数值问题。 拿到手的标签图像&#xff0c;是二分类形式&#xff0c;分为0和1。 这样的形式&#xff0c;不能直接在win10打开。双击图像文件后&#xff0c;如下&#xff1a; 但是可以在QGIS可视化。在QGIS可视化如下&#xff1a; 为什么会这样&#xff1f;大概是因…

【干旱指数】非一致性干旱指数:SnsPI

非一致性干旱指数:SnsPI 非一致性SPI 干旱指数(SnsPI)指数简介MATLAB代码实现Python代码实现参考近年来受气候和人类活动的显著影响,水文序列形成的物理基础条件发生变化,导致水文序列不满足一致性假定即呈非一致性特征。 已有研究主要通过以下两类方法解决非一致性干旱问…

《九重紫》逐集分析鉴赏—序言、概览、框架分析

主标题:《九重紫》一起追剧吧副标题:《九重紫》逐集分析鉴赏—序言、概览、框架分析《永夜星河》后,以为要浅尝剧荒,一部《九重紫》突出重围。看了宣传片感觉不是很差,看了部分剪辑感觉还可以,看了一两集感觉可以追吧,又看了几集——有新欢了,永夜我终于可以放下了,终…

Python Bokeh库:实现实时数据可视化的实战指南

目录一、Bokeh简介二、安装Bokeh三、创建简单的Bokeh图表四、实时更新图表五、集成到Flask应用中六、注意事项七、总结在数据分析和科学计算中,数据可视化是不可或缺的一部分。它能够直观地展示数据,帮助我们快速发现规律和趋势。Bokeh是Python中一个强大的数据可视化库,尤其…

月底课程关闭 | 中国大学MOOC公开课《人工智能与交通大数据实战》首次开课,欢迎选修!...

各位小伙伴们,今年我在中国大学MOOC开设面向全国高校师生的《人工智能与交通大数据实战》课程,编号:0818BJTU217,交通、土木、规划、计算机等领域的本科生和研究生都可以选,欢迎大家选课交流!也欢迎大家推荐给身边的同学和学弟学妹们选课!今年首次开课,课程内容与我在北…

Node.js(v16.13.2版本)安装及环境配置教程

一、进入官网地址下载安装包 https://nodejs.org/zh-cn/download/ 选择对应你系统的Node.js版本&#xff0c;这里我选择的是Windows系统、64位&#xff08;v16.13.2版本&#xff09; 下载后的zip文件 二、解压文件到nodejs&#xff0c;并打开文件夹nodejs&#xff0c;复制解压…

UE5 C++ Subsystem 和 多线程

一.Subsystem先做一个简单的介绍&#xff0c;其实可以去看大钊的文章有一篇专门讲这个的。 GamePlay框架基础上的一个增强功能&#xff0c;属于GamePlay架构的范围。Subsystems是一套可以定义自动实例化和释放的类的框架。这个框架允许你从5类里选择一个来定义子类(只能在C定义…

探究有栈协程的实现以及ucontenxt函数族的使用

协程分类 对称协程与非对称协程 协程按概念分为对称协程、非对称协程&#xff0c;对称协程指的是协程a可任意跳转到协程b/c/d&#xff0c;所有的协程都是相同的&#xff0c;可任意跳转&#xff0c;称为对称协程。 非对称协程则是有类似函数调用栈的概念&#xff0c;如协程a调…

容器化:Containerd组件

一 什么是Containerd? Containerd 最早出现在 Docker Engine 中&#xff0c;后来为了将 Docker Engine 做得更加轻量、快速和健壮&#xff0c;在 2016 年 Docker 将 containerd 从 daemon&#xff08;dockerd&#xff09; 中独立出来&#xff0c;并完成了与 daemon 的集成 独…