密码学基础——密码学相关概念

目录

1.1 密码系统(Cryptosystem)

1.2 密码编码学

1.3 密码分析学

1.4 基于算法保密

1.5 基于密钥保密

1.6密码系统的设计要求

1.7 单钥体制

1.8 双钥体制

密钥管理


1.1 密码系统(Cryptosystem)

        也称为密码体制,主要包括以下几个基本要素:明文,密文,加密算法,解密算法和密钥。用数学符号描述为:S = {M, C, K, E, D}

  • M明文:发送方即将要发送的消息。
  • C密文:明文经过密码变换后的消息。
  • E加密:由明文变换为密文的过程。
  • D解密:由密文恢复出原明文的过程。
  • K密钥/或密钥空间:是一种特定的值,能使密码算法按照指定的方式进行,并产生相应的密文,密钥是密码体制安全保密的关键。
  • 加密算法:对明文进行加密时所采用的一组规则。
  • 解密算法:对密文进行解密时所采用的一组规则。

密码系统中的一些基本术语:

  • 加密员(密码员):对明文进行加密操作的人员。
  • 接收者:传送消息的预定对象。
  • 截收者:在信息传输和处理系统中,通过搭线窃听、电磁窃听、声音窃听等方式来窃取机密信息。 加密密钥和解密密钥:加密算法和解密算法的操作通常都是在一组密钥控制下进行。
  • 单钥密码体制(对称密码体制):传统密码体制所用的加密密钥和解密密钥相同,或实质上等同,即从一个易于得出另一个。如DES、ARS、RC4、
  • 双钥密码体制(非对称密码体制):若是加密密钥和解密密钥不相同,即从一个难于推出另一个。
  • 密码分析:截收者通过分析可能从截获的密文推断出原来的明文或密钥。
  • 密码分析学:研究如何从密文推演出明文、密钥或解密算法的学问。
  • 密码分析员:从事密码分析这一工作的人。
  • 被动攻击:对一个保密通信系统采取截获密文进行分析的这类攻击。分为获取消息的内容和业务流分析。
  • 主动攻击:非法入侵者、攻击者或黑客主动向系统窜扰,采用删除、增添、重放、伪造等窜改手段向系统注入假消息,达到利已害人的目的。主要有三类:中断、篡改、伪造。

   

   密码学(cryptology):是一门关于发现、认识、掌握和利用密码内在规律的科学,由密码编码学(cryptography)和密码分析学(cryptanalysis) 组成。

1.2 密码编码学

  • 定义:密码编码学主要研究如何对信息进行编码,以实现信息的保密性、完整性、认证性和不可否认性等安全目标。它通过设计各种加密算法和密码体制,将明文信息转化为密文形式,使得只有合法的接收者能够在密钥的帮助下还原出原始明文。
  • 具体内容
    • 设计加密算法:运用数学原理和计算方法,构造出复杂的变换规则,将明文按照特定方式进行混淆和扩散,例如著名的 AES(高级加密标准)算法,通过字节替换、行移位、列混合和轮密钥加等操作,对明文进行多次变换,使其变成难以理解的密文。
    • 密钥生成与管理:产生安全可靠的密钥,并确保密钥在生成、存储、分发和使用过程中的安全性和保密性。例如,使用密钥交换协议在不安全的网络环境中安全地共享密钥。
    • 构建密码体制:将加密算法、密钥管理等要素有机结合,形成一个完整的密码系统,以满足不同应用场景的安全需求,如对称密码体制、非对称密码体制等。

1.3 密码分析学

  • 定义:密码分析学主要研究如何通过分析截获的密文、已知的加密算法以及可能获取的相关信息,来推断出原始明文、密钥或解密算法等。它是对密码体制进行安全性评估和攻击的学科。
  • 具体内容
    • 分析加密算法:研究加密算法的数学原理和逻辑结构,寻找其中可能存在的弱点和漏洞。例如,通过对 RSA 算法中模数分解的难度分析,来评估其安全性。
    • 实施攻击方法:利用各种技术和手段对密文进行攻击,如穷举攻击、字典攻击、差分密码分析、线性密码分析等。例如,穷举攻击通过尝试所有可能的密钥来解密密文。
    • 评估密码体制安全性:根据对加密算法的分析和攻击结果,对密码体制的安全性进行量化评估,确定其能够抵御何种类型和强度的攻击,以及在何种情况下可能被破解。

密码系统可以采用的两种安全策略:基于算法保密和基于密钥保密。在实际应用中,基于密钥保密的方式使用得更为广泛。

1.4 基于算法保密

  • 策略原理:该策略主要依靠对加密算法本身进行保密来实现信息安全。即通过隐藏加密算法的具体细节、操作步骤以及数学原理等,使得未授权者难以知晓信息是如何被加密的,从而无法轻易破解密文。
  • 优点:在一定程度上能提供安全保障,若算法保密工作做得好,外界难以通过分析算法来进行解密。在早期一些简单的密码系统中,这种方式较为常见,例如古代一些通过特定的字符替换或移位规则进行加密的方法,只要这些规则不被泄露,信息就具有一定的保密性。
  • 缺点
    • 难以实现绝对保密:随着技术的发展和人员的流动,算法的细节很可能会被泄露。而且,保密算法的相关人员一旦出现疏忽或被敌方策反,整个密码系统的安全性就会立刻崩溃。
    • 算法的开发非常复杂:一旦算法泄密,重新开发需要一定的时间;
    • 不便于标准化:由于每个用户单位必须有自己的加密算法,不可能采用统一的硬件和软件产品;
    • 不便于质量控制:用户自己开发算法,需要好的密码专家,否则对安全性难于保障。

1.5 基于密钥保密

  • 策略原理:这种策略是将加密算法公开,但是通过使用密钥来对信息进行加密和解密。合法用户拥有正确的密钥就能顺利进行加解密操作,而没有密钥的攻击者即使知道加密算法,也难以从密文还原出明文。例如在现代的对称加密算法如 AES(高级加密标准)和非对称加密算法如 RSA 中,算法都是公开的,安全性主要依赖于密钥的保密性。
  • 优点
    • 安全性高且可验证:由于算法公开,能够接受全球范围内密码学专家的分析和检验,其安全性可以得到更可靠的评估。如果经过长时间的公开验证后没有发现重大安全漏洞,那么该算法在当前技术条件下是较为安全的。
    • 便于密钥管理:可以通过专门的密钥管理系统来生成、分发、存储和更新密钥,相较于保密算法,密钥的管理更加集中和可控。而且可以根据不同的安全需求,灵活地更换密钥,而无需改变加密算法。
    • 促进技术发展:公开的算法为密码学研究人员提供了研究和改进的基础,有利于推动密码技术的不断发展和创新。新的算法可以在已有的公开算法基础上进行优化和改进,提高加密效率和安全性。
  • 缺点
    • 对密钥的保密性要求极高。一旦密钥泄露,那么整个密码系统就会失去安全性,攻击者可以利用获取的密钥轻易解密所有使用该密钥加密的信息。因此,需要建立完善的密钥保护机制,防止密钥被窃取、篡改或泄露。

1.6密码系统的设计要求

  • 系统即使达不到理论上不可破译,也应该是实际上不可破译的(也就是说,从截获的密文或某些已知的明文和密文对,要决定密钥或任意明文在计算上是不可行的);
  • 加密算法和解密算法适用于所有密钥空间的元素
  • 系统便于实现和使用方便;
  • 系统的保密性不依赖于对加密体制或算法的保密,而依赖于密钥(著名的Kerckhoff原则,现代密码学的一个基本原则)。

密码体制从原理上分为两类:

  • 单钥密码体制(One-key System)或对称密码体制(Symmetric Cryptosystem)
  • 双钥密码体制(Two-Key System)或公开密码体制(Public Key Cryptosystem)

1.7 单钥体制

        对称密码体制(symmetric cryptosystem)的加密密钥和解密密钥相同,也叫单钥密码体制或者秘密密码体制

  • 单钥体制的加密密钥和解密密钥相同
  • 单钥体制有很高的保密性,很强的安全性,根据这种特性,单钥加解密算法可通过低费用的芯片来实现。
  • 单钥体制不仅可用于数据加密,也用于消息的认证。

单钥体制对明文消息的加密有两种方式:

  • 流密码(序列密码,Stream Cipher:对明文消息按字符(如二元数字)逐位地进行加密。
  • 分组密码(Block Cipher:将明文消息分组(含有多个字符),逐组地进行加密。

下面为对称密码体制的基本流程,发送者需要发送明文消息m,发送前在加密器中使用密钥K将明文加密,得到密文c;接受者受到密文c后在解密器使用密钥K解密得到明文消息m。

1.8 双钥体制

        双钥体制又称作公钥体制。采用双钥体制的每个用户都有一对选定的密钥:一个是可以公开的,可以像电话号码一样进行注册公布;另一个则是秘密的。   

公钥密码中,加密密钥一般是公开的,因此被称为公开密钥(public key),简称公钥。相对地,解密密钥是绝对不能公开的,不可以将它发送给别人(通信对象也不可以),只能由自己使用,因此被称为秘密密钥(private key),简称私钥。因此公钥密码体制也叫做双钥密码体制。公钥和私钥是一一对应的,一对公钥和私钥统称为密钥对(key pair)。公钥和私钥是不能分别单独生成的,成对存在。
   

双钥密码体制的特点:将加密和解密能力分开

  • 可以实现多个用户加密的消息只能由一个用户解读,可用于公共网络中实现保密通信。
  • 由一个用户加密的消息而使多个用户可以解读,可用于实现对用户的认证。

密钥管理

  • 主要包括密钥产生、分配、存储、销毁等问题。
  • 密钥管理是影响系统安全的关键因素,即使密码算法再好,若密钥管理问题处理不好,就很难保证系统的安全保密。

下面是公钥密码体制的基本流程:

  • 密钥生成:用户首先生成一对密钥,一个是公钥K1,一个是私钥K2。这对密钥在数学上是相关的,但从公钥很难推导出私钥。例如,RSA 算法中,通过选择两个大素数相乘等一系列操作生成公钥和私钥。
  • 加密过程:当发送方要向接收方发送明文信息m时,发送方使用接收方的公钥K1对明文进行加密得到密文C。由于公钥是公开的,所以任何人都可以获取接收方的公钥来加密信息。加密后的信息称为密文,这个过程是基于公钥和特定的加密算法实现的。
  •  解密过程:接收方收到密文C后,使用自己的私钥K2对密文进行解密,从而得到原始的明文信息m。只有拥有正确私钥的接收方才能完成解密操作,因为私钥是保密的,所以保证了信息的安全性。

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

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

相关文章

初始JavaEE篇 —— Mybatis-plus 操作数据库

找往期文章包括但不限于本期文章中不懂的知识点: 个人主页:我要学编程程(ಥ_ಥ)-CSDN博客 所属专栏:JavaEE 目录 前言 Mybatis-plus 快速上手 Mybatis-plus 复杂操作 常用注解 TableName TableField TableId 打印日志 条件构造器 …

PyQt6实例_批量下载pdf工具_主线程启用线程池

目录 前置: 代码: 视频: 前置: 1 本系列将以 “PyQt6实例_批量下载pdf工具”开头,放在 【PyQt6实例】 专栏 2 本系列涉及到的PyQt6知识点: 线程池:QThreadPool,QRunnable; 信号与…

1.2 斐波那契数列模型:LeetCode 面试题 08.01. 三步问题

动态规划解三步问题:LeetCode 面试题 08.01. 三步问题 1. 题目链接 LeetCode 面试题 08.01. 三步问题 题目要求:小孩上楼梯,每次可以走1、2或3步,计算到达第 n 阶台阶的不同方式数,结果需对 1e9 7 取模。 2. 题目描述…

UE5 学习笔记 FPS游戏制作30 显示击杀信息 水平框 UI模板(预制体)

文章目录 一制作单条死亡信息框水平框的使用创建一个水平框添加子元素调整子元素顺序子元素的布局插槽尺寸填充对齐 制作UI 根据队伍,设置文本的名字和颜色声明变量 将变量设置为构造参数根据队伍,设置文本的名字和颜色在构造事件中,获取玩家…

HTTP---基础知识

天天开心!!! 文章目录 一、HTTP基本概念1. 什么是HTTP,又有什么用?2. 一次HTTP请求的过程3.HTTP的协议头4.POST和GET的区别5. HTTP状态码6.HTTP的优缺点 二、HTTP的版本演进1.各个版本的应用场景2、注意要点 三、HTTP与…

数据结构 KMP 字符串匹配算法

KMP算法是计算机科学中的一种字符串匹配算法,KMP是三个创始人名字首字母 题目 AcWing - 算法基础课 前置知识点 KMP算法是一种高效的字符串匹配算法,算法名称取自于三位共同发明人名字的首字母组合。该算法的主要使用场景就是在字符串(也叫…

Conda配置Python环境

1. 安装 Conda 选择发行版: Anaconda:适合需要预装大量科学计算包的用户(体积较大)。 Miniconda:轻量版,仅包含 Conda 和 Python(推荐自行安装所需包)。 验证安装: co…

数仓开发那些事(11)

某神州优秀员工:一闪,领导说要给我涨米。 一闪:。。。。(着急的团团转) 老运维:Oi,两个吊毛,看看你们的hadoop集群,健康度30分,怎么还在抽思谋克&#xff1f…

MyBatis Plus 中 update_time 字段自动填充失效的原因分析及解决方案

✅ MyBatis Plus 中 update_time 字段自动填充失效的原因分析及解决方案 前言一、问题现象二、原因分析1. 使用了 strictInsertFill/strictUpdateFill 导致更新失效2. 实体类注解配置错误3. MetaObjectHandler 未生效4. 使用自定义 SQL 导致自动填充失效5. 字段类型不匹配 三、…

C++ STL常用算法之常用算术生成算法

常用算术生成算法 学习目标: 掌握常用的算术生成算法 注意: 算术生成算法属于小型算法&#xff0c;使用时包含的头文件为 #include <numeric> 算法简介: accumulate // 计算容器元素累计总和 fill // 向容器中添加元素 accumulate 功能描述: 计算区间内容器元素…

axios基础入门教程

一、axios 简介 axios 是一个基于 Promise 的 HTTP 客户端&#xff0c;可用于浏览器和 Node.js 环境&#xff0c;支持以下特性&#xff1a; 发送 HTTP 请求&#xff08;GET/POST/PUT/DELETE 等&#xff09; 拦截请求和响应 自动转换 JSON 数据 取消请求 并发请求处理 二…

短视频团队架构工作流程---2025.3.30 李劭卓

短视频团队架构&工作流程—2025.3.30 李劭卓 文章目录 短视频团队架构&工作流程---2025.3.30 李劭卓1 工作职责1.1 编剧&#xff1a;1.2 主编&#xff1a;1.3 总编&#xff1a;1.4 导演&#xff1a;1.5 摄影&#xff1a;1.6 演员&#xff1a;1.7 后期&#xff1a;1.8 美…

MySQL 高效 SQL 使用技巧详解

MySQL 高效 SQL 使用 技巧详解 一、为什么需要优化 SQL&#xff1f; 性能瓶颈&#xff1a;慢查询导致数据库负载升高&#xff0c;响应时间延长。资源浪费&#xff1a;低效 SQL 可能占用大量 CPU、内存和磁盘 I/O。 目标&#xff1a;通过优化 SQL 将查询性能提升 10 倍以上&am…

AI基础03-视频数据采集

上篇文章我们学习了图片的数据采集&#xff0c;今天主要了解一下视频数据采集的方法。视频是由一系列图像构成的&#xff0c;其中每一张图片就是一帧。视频数据采集方法通常有自动图像采集和基于处理器的图像采集两种。我们学习一下如何利用python 工具和笔记本计算机摄像头进行…

Scala 数组

Scala 数组 引言 Scala 作为一门多范式编程语言&#xff0c;融合了面向对象和函数式编程的特点。数组是编程语言中非常基础和常见的数据结构&#xff0c;在 Scala 中也不例外。本文将详细介绍 Scala 中的数组&#xff0c;包括其定义、操作以及在实际开发中的应用。 Scala 数…

Text-to-SQL将自然语言转换为数据库查询语句

有关Text-To-SQL方法&#xff0c;可以查阅我的另一篇文章&#xff0c;Text-to-SQL方法研究 直接与数据库对话-text2sql Text2sql就是把文本转换为sql语言&#xff0c;这段时间公司有这方面的需求&#xff0c;调研了一下市面上text2sql的方法&#xff0c;比如阿里的Chat2DB,麻…

golang 的strconv包常用方法

目录 1. 字符串与整数的转换 2. 字符串与浮点数的转换 3. 布尔值的转换 4. 字符串的转义 5. 补充&#xff1a;rune 类型的使用 方法功能详解 代码示例&#xff1a; 1. 字符串与整数的转换 方法名称功能描述示例Atoi将字符串转换为十进制整数。strconv.Atoi("123&q…

MATLAB详细图文安装教程(附安装包)

前言 MATLAB&#xff08;Matrix Laboratory&#xff09;是由MathWorks公司开发的一款高性能的编程语言和交互式环境&#xff0c;主要用于数值计算、数据分析和算法开发。内置数学函数和工具箱丰富&#xff0c;开发效率高&#xff0c;特别适合矩阵运算和领域特定问题。接下来就…

ShapeCrawler:.NET开发者的PPTX操控魔法

引言 在当今的软件开发领域&#xff0c;随着数据可视化和信息展示需求的不断增长&#xff0c;处理 PPTX 文件的场景日益频繁。无论是自动化生成报告、批量制作演示文稿&#xff0c;还是对现有 PPT 进行内容更新与格式调整&#xff0c;开发者都需要高效的工具来完成这些任务。传…

HTML5贪吃蛇游戏开发经验分享

HTML5贪吃蛇游戏开发经验分享 这里写目录标题 HTML5贪吃蛇游戏开发经验分享项目介绍技术栈核心功能实现1. 游戏初始化2. 蛇的移动控制3. 碰撞检测4. 食物生成 开发心得项目收获后续优化方向结语 项目介绍 在这个项目中&#xff0c;我使用HTML5 Canvas和原生JavaScript实现了一…