2.1 密码学基础

news2024/9/20 8:13:29

数据参考:CISP官方 

目录

  • 密码学基本概念
  • 对称密码算法
  • 非对称密码算法
  • 哈希函数与数字签名
  • 公钥基础设施 

一、密码学基本概念 

1、密码学形成与发展

发展历程

古典密码学 (1949年之前)

  • 主要特点:数据的安全基于算法的保密

近代密码学 (1949~1975年)

  • 主要特点:密码学真正成为一门科学

现代密码学 (1976年以后)

  • 密码学的新方向一公钥密码学
  • 主要特点:解决了密钥分发和管理的问题 

古典密码学

  • 凯撒密码 

ENIGMA转轮机

古典密码介绍

安全性在于保持算法本身的保密性·

  • 不适合大规模生产
  • 不适合较大的或者人员变动较大的组织
  • 用户无法了解算法的安全性

主要分类

  • 替代密码
  • 置换密码
  • 替代密码与置换密码的组合

近代密码学

  • 1949年, Shannon (香农) 发表论文" The communicationTheory of Secret Systems",将信息论引入了密码,从而把已有数千年历史的密码学推向了科学的轨道,奠定了密码学的理论基础。 

现代密码学

  • 解决了密钥分发、管理问题,并提供更多服务
  • 1976年, Diffie& Hellman的“ New directions in Cryptography"提出了非对称密钥密码

2、基本保密通信模型

基本概念:

  • 密码编码学:密码编码学是密码学的一个分支,研究如何将信息进行编码和解码的技术和方法。密码编码学旨在保证信息的保密性和完整性,通常涉及加密算法、解密算法和密钥管理等方面的内容。

  • 密码分析学:密码分析学是密码学的一个重要分支,研究如何通过分析密码系统的安全性进行破解或攻击的技术和方法。密码分析学涉及研究密码算法的强度、攻击者的攻击策略、密码系统的弱点以及密码算法破解的数学和计算方法等方面的内容。

传统密码学主要用于保密通信,解决了在不安全的通道中安全的传递信息。

现代密码学涵盖了数据处理过程的各个环节 (数据加密,密码分析,数字签名,身份识别,零知识证明,密码分享等)

密码学技术在信息安全中的应用

基本概念

  • 明文、密文
  • 加密、解密、加密密钥、解密密钥
  • ......

 

3、密码系统安全性

基本概念

  • 明文 ( Plain text):不需要任何解密工具就可以读懂内容的原始消息称为明文。
  • 密文 ( Cipher text):明文变换成一种在通常情况下无法读懂的内容这种隐蔽后的信息称为密文。
  • 加密 ( Encryption):由明文到密文的变换过程称作加密
  • 解密 ( Decryption):从密文到明文的变换过程称为解密。
  • 加/解密算法:对明文进行加密时采取的一组规则称作加密算法,密文的接收方对密文进行解密时采取的一组规则称为解密算法。
  • 密钥 (Keγ):密钥在明文转换为密文或将密文转换为明文的算法中输入的参数。

影响密码系统安全性的基本因素

  • 密码算法复杂度、密钥机密性、密钥长度

科克霍夫 ( Kerckhoff) 原则

  • 密码体制可以对外公开,对密钥必须保密
  • 如果一个密码系统需要保密的越多,可能的弱点也越多 

4、密码系统实际安全性

评估密码系统安全性

  • 无条件安全
  • 计算安全性
  • 可证明安全性

密码系统要达到实际安全,就要满足以下准则

  • 破译该密码系统的实际计算量无法实现
  • 破译该密码系统所需计算时间超过信息的生命周期
  • 破译该密码系统的费用超过被加密信息本身的价值 

二、对称密码算法  

介绍

  • 对称密码算法也称传统密码算法、秘密密钥算法或单密钥算法
  • 加密密钥和解密密钥相同,或实质上等同

算法优点

  • 算法简单、计算量小、加密速度快、加密效率高,适合加密大量数据,明文长度与密文长度相等。

算法缺点:

  • 安全信道难以实现
  • 安全交换密钥问题及密钥管理复杂
  • 无法解决对消息的篡改、否认等问题。·

典型的对称密码算法包括:

  • DES、3DES、DEA、AES、RC4、RC5、 Twofish、CAST-256、MARS等

三、非对称密码算法

1、介绍

  • 非对称密码算法也称双钥或公钥密码算法。
  • 其加密密钥和解密密钥不同,从一个很难推出另一个

应用上两个密钥,一个是可以公开的 (称为公钥),一个是私有的 (称为私钥),这两个密钥组成一个密钥对。使用公钥对数据进行加密,则只有用对应的私钥才能解密

 2、非对称密码算法特点

公钥密码的特点:

  • 公私钥成对出现:在公钥密码学中,每个用户拥有一个与其身份相关的公钥和私钥。公钥可公开,用于加密数据;私钥保密,用于解密数据或生成数字签名。

  • 公钥加密私钥解密:公钥可以用于加密数据,只有私钥才能解密被加密的数据,因此保证了机密性。

  • 私钥加密公钥解密:私钥可以用于加密数据,只有公钥才能解密被加密的数据,用于生成数字签名,验证数据的完整性和身份认证等。

公钥密码学的优点:

  • 解决了密钥传递问题:在对称加密中,密钥的传递和管理是一个困难的问题。而公钥密码学通过使用公钥进行加密,私钥进行解密,解决了密钥分发和管理的问题。

  • 减少了密钥持有量:在对称加密中,每个用户需要持有其他用户的密钥来进行通信。而在公钥密码学中,每个用户只需要自己的一对公私钥即可完成加密和解密操作,减少了密钥的持有量。

  • 提供了数字签名等服务:公钥密码学不仅仅用于保密通信,还提供了数字签名和身份认证等服务。数字签名用于验证数据的完整性和身份认证,可以防止数据被篡改。

公钥密码学的缺点:

  • 计算复杂、资源消耗大:与对称密码学相比,公钥密码学的加密和解密过程更加复杂,涉及更多的数学计算,因此计算复杂性较高,对计算资源的需求也相应增大。

  • 密文变长:公钥密码学中使用的加密算法通常会导致密文的长度变长,相对于对称密码学来说,传输和存储密文的开销会更大一些。

综上所述,公钥密码学通过解决密钥传递问题和提供数字签名等服务,在信息安全领域具有重要的优势,但也有一些计算复杂性和密文长度增加的缺点需要考虑。

公钥密码典型算法:

  • Merkle-Hellman:Merke-Hellman是一种基于背包问题的公钥密码算法,但已被发现存在安全性问题,因此不再被广泛使用

  • RSA:RSA是最常用的公钥密码算法之一。它是基于大素数分解困难性的数论算法。RSA可用于加密、解密和数字签名等操作,广泛应用于网络通信和数据保护领域

  • Rabin:Rabin是一种基于整数因子分解问题的公钥密码算法。它具有和RSA相似的功能,但由于一些特性,它的使用并不像RSA那样广泛。

  • ElGamal:ElGamal是一种基于离散对数问题的公钥密码算法。它提供加密和数字签名功能,并被认为是一种比较安全的算法。

  • ECC(椭圆曲线密码学):ECC是一种基于椭圆曲线数学问题的公钥密码算法。相比于其他算法,ECC在提供相同安全性的情况下,使用更短的密钥长度,从而节省了存储空间和计算资源。

关于公钥密码,有几种常见的误解:

  • 公钥密码更安全?公钥密码相对于对称密码,提供了更强的密钥管理和分发方式,但并不意味着公钥密码一定比对称密码更安全。实际的安全性取决于算法的设计、密钥长度、实施方式以及系统的整体安全性
  • 公钥密码算法使得对称密码算法成为了过时技术?公钥密码和对称密码各有优势和适用场景,并不能说公钥密码使得对称密码技术过时。在实际应用中,对称密码仍然被广泛使用,尤其在资源受限的设备和大规模数据传输中具有优势。
  • 使用公钥密码实现密钥分配非常简单?尽管公钥密码的密钥分发方式相对简单,但仍然需要确保私钥的安全性和可靠的密钥分发机制。密钥分配涉及各种复杂的问题,如密钥管理、信任建立和密钥更新等

四、哈希函数与数字签名

1、哈希函数

介绍

  • 哈希函数也称单向散列函数,它可以将任意有限长度信息映射为固定长度的值。·它的特点是输入数据的微小改动会导致输出结果的巨大变化,且几乎不可能从输出来逆向计算出输入数据。常用于保证数据的完整性和实现数字签名

主要用途包括:

  • 消息完整性检测:哈希函数可用于验证数据的完整性。发送方对要传输的数据进行哈希计算,并将哈希值一同传递给接收方。接收方收到数据后,再次进行哈希计算,并与传递的哈希值进行比较。如果哈希值一致,说明数据在传输过程中没有被篡改,保证了数据的完整性。

  • 数字签名:哈希函数在数字签名中起到重要的作用。对于要签名的数据,发送方首先将其进行哈希计算得到哈希值。然后,发送方使用自己的私钥对哈希值进行加密,生成数字签名。接收方使用发送方的公钥对数字签名解密得到哈希值,并对原始数据进行哈希计算。如果两个哈希值相同,即说明数字签名的有效性和数据的完整性。

安全的哈希函数需要满足以下性质:

  • 单向性:对任意给定的码h,寻求x使得在计算上是不可行的;
  • 弱抗碰撞性:任意给定分组×,寻求不等于x的y,使得在计算上不可行;
  • 强抗碰撞性:寻求对任何的 (x,y) 对,使得在计算上不可行。

目前常用的哈希函数:

MD5算法

  • 消息摘要算法 (RFC1321) 由 Ron rivest提出。该算法以一个任意长的消息作为输,输出128bt的消息摘要。

SHA-1算法

  • 安全Hash算法 ( Secure Hash Algorithm,SHA) 由美国标准与技术研究所设计并于1993年作为联邦信息处理标准 (FPS180) 发布,修改版于1995年发布 (FPS180-1),通常称之为SHA-1。SHA-1算法的输入是长度小于2^64的任意消息x,输出160位的散列值。

2、数字签名

介绍

  • 对数据进行加密、哈希可以避免第三方对数据进行窃取和篡改、破坏,但它无法防止通信双方的互相攻击。通信双方可能存在欺骗和抵赖,一种有效的解决方案是数字签名。
  • 数字签名是指附加在数据单元上的一些数据,或是对数据单元所做的密码变换,这种数据或变换能使数据单元的接收者确认数据单元来源和数据单元的完整性,并保护数据,防止被人伪造。·
  • 数字签名是公钥加密技术与数字摘要技术相结合的应用

数字签名基本特性

  • 不可伪造性(Non-repudiation):一旦数字签名被创建,除非拥有签名者的私钥,其他人很难伪造一个合法的数字签名。这意味着数字签名可以被用来验证数据的真实性和完整性,并能防止签名者对签名行为的否认。

  • 不可否认性(Non-deniability):使用签名者的公钥,任何人都可以验证数字签名的有效性。由于数字签名的不可伪造性,签名者无法否认自己创建的签名。这使得签名接收者可以确认消息的来源,并防止签名者在后期否认签名行为。
  • 保证消息完整性,即消息防篡改通过数字签名,可以保证消息的完整性和防止篡改。发送方使用私钥对消息进行签名,接收方使用发送方的公钥进行验证。如果验证通过,即表示消息没有被篡改。这为数据传输的安全性和可靠性提供了保障,特别适用于数字通信、电子合同和在线交易等场景中。

应用示例

发送过程

  1. 发送方创建消息:发送方准备要发送的消息,并使用哈希函数对消息进行摘要计算,生成消息的哈希值。

  2. 发送方签名:发送方使用自己的私钥对消息的哈希值进行加密,生成数字签名。

  3. 发送消息和签名:发送方将消息和数字签名一起发送给接收方。

接收过程

  1. 接收方接收消息和签名:接收方接收到发送方发送的消息和数字签名。

  2. 使用公钥解码签名:接收方使用发送方的公钥对数字签名进行解密,得到解密后的哈希值。

  3. 验证消息完整性:接收方使用相同的哈希函数对接收到的消息进行摘要计算,生成接收到消息的哈希值。

  4. 比对哈希值:接收方将解密后的哈希值与自己计算得到的哈希值进行比对。如果两个哈希值相同,说明接收到的消息没有被篡改;如果不同,则意味着消息被篡改

  5. 验证签名的有效性:如果哈希值比对成功,接收方可以确信消息的完整性。然后接收方可以使用发送方的公钥对签名进行验证,确认签名的有效性。如果签名验证通过,那么可以确定消息的来源。

通过以上的过程,数字签名可以在发送过程中保证消息的完整性,并在接收过程中验证消息的完整性和来源认证。如果消息被篡改或签名验证失败,接收方将意识到确保消息安全性和完整性的因素不符合预期,并可能拒绝接受该消息。

请注意,在实际应用中,还需考虑密钥管理、数字证书的使用等问题,以确保数字签名的安全性和有效性。

 

五、公钥基础设施

1、PKI架构

公钥基础设施 ( Public Key Infrastructure,PK),也称公开密钥基础设施

  • 按照国际电联 (ITU) 制定的X.509标准,PKI "是一个包括硬件、软件、人员、策略和规程的集合,用来实现基于公钥密码体制的密钥和证书的产生、管理、存储、分发和撤销等功能。
  • PKl是一种遵循标准,利用公钥加密技术提供安全基础平合的技术和规范,是能够为网络应用提供信任、加密以及密码服务的一种基本解决方案。
  • PKI的本质是实现了大规模网络中的公钥分发问题,为大规模网络中的信任建立基础。

PKI架构 - 四类实体

CA(Certification Authority):

  • CA是指证书颁发机构,负责管理用户数字证书的生成、发放、更新和撤销等工作
  • CA作为权威机构,对持有者进行验证,并签署数字证书,用于证明用户的真实身份

RA(Registration Authority):

  • RA是数字证书的申请、审核和注册中心,同时也是CA的延伸。
  • RA负责收集用户的身份信息,并进行验证和审核后将信息传递给CA签发证书。

证书:

  • 证书是一种符合特定格式的电子文件,用于识别数字证书持有者的真实身份并提供公钥。
  • 它由CA签发,包含持有者的公钥、数字签名、有效期等信息,用于进行认证和加密通信。

终端实体:

  • 终端实体是指拥有公私密钥对和相应公钥证书的最终用户,可以是人、设备或进程等。
  • 终端实体使用证书进行身份验证和安全通信,保证信息的机密性和完整性。

 

2、数字证书

什么是数字证书

  • 一段电子数据,是经证书权威机构CA签名的、包含拥有者身份信息和公开密钥的数据体
  • 数字证书和一对公私钥相对应,而公钥以明文形式放到数字证书中,私钥则为拥有者所秘密掌握

数字证书的作用

  • 经过了证书权威机构CA的签名,确保了数字证书中信息的真实性,数字证书可以作为终端实体的身份证明
  • 在电子商务和网络信息交流中,数字证书常用来解决相互间的信任问题。通过验证数字证书的真实性和完整性,通信双方可以相互确认对方的身份,确保信息的安全性和可靠性。

3、CA( Certification Authority)认证权威

CA是PKI的核心组成部分,PKI体系也往往称为PKCA体系。

证书权威机构CA专门负责数字证书的产生、发放和管理,以保证数字证书的真实可靠。

  • 签发数字证书:签发证书、更新证书
  • 管理数字证书:撤销、查询、审计、统计
  • 验证数字证书:黑名单认证 (CRL)、在线认证 (OCSP)

4、RA:证书注册机构

  • 又称数字证书注册中心
  • 是数字证书的申请、审核和注册中心,同时也是CA认证机构的延伸。
  • 在逻辑上RA和CA是一个整体,主要负责提供证书注册、审核以及发证功能。 

5、PKI定义及构成

证书/CRL库

  • 证书/CRL库主要用来发布、存储数字证书和证书撤销列表 (Certificate Revocation List,CRL),供用户查询、获取其他用户的数字证书和系统中的证书撤销列表所用。

终端实体

  • 指拥有公私密钥对和相应公钥证书的最终用户,可以是人、设备、进程等。

6、PKI体系工作流程

7、PKI/CA技术的典型应用

 

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

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

相关文章

第4章 案例研究:JavaScript图片库

案例 html部分 <h1 id"title">图片1</h1> <ul><li><!-- onclick绑定点击事件&#xff0c;this为触发dom&#xff0c;return false阻止默认行为 --><a onclick"show_img(this); return false" title"图片1" h…

数字信号处理中的基本运算——乘法运算

一、二进制乘法原理 二进制乘法可分为&#xff1a;无符号乘法和有符号乘法 整个相乘过程可分解为一系列的移位、相加操作。 有符号数乘法可分为&#xff1a;&#xff08;1&#xff09;正数*正数&#xff1b;&#xff08;2&#xff09;正数*负数&#xff1b;&#xff08;3&…

申请软件著作权都有什么好处?

随着社会的发展&#xff0c;知识产权保护意识对于公司而言尤为重要&#xff0c;对自己的权利进行最大限度的保护&#xff0c;以防止被别有用心的人侵权。那么&#xff0c;申请软著的好处到底是什么?软著有什么用呢? 无形资产软著是一种无形的知识产权&#xff0c;是开发者智慧…

(常压)室温超导体:The First Room-Temperature Ambient-Pressure Superconductor

2023年7月23日&#xff0c;一支韩国的研究团队声称他们已经成功研制出了一种在室温和常压下的超导体&#xff0c;名为LK-99。这一发现在科学界引起了广泛的关注和讨论。 然而&#xff0c;这项研究的结果也引起了一些科学家的怀疑。有些人对数据的真实性表示了疑虑&#xff0c;认…

【UEC++学习】UE网络 - Replication、RPC

1. UE网络架构 &#xff08;1&#xff09;UE的网络架构是SC&#xff08;Server - Client&#xff09;的模式&#xff0c;这种模式的优势&#xff1a;这种模式让所有客户端都在服务器端进行安全验证&#xff0c;这样可以有效的防止客户端上的作弊问题。 &#xff08;2&#xff…

【编程范式】聊聊什么是数据类型和范式的本质

什么是编程范式 范式其实就是做事的方式&#xff0c;编程范式可以理解为如何编程&#xff0c;按照什么样的模式或者风格进行编程。 编程范式包含哪些 泛型编程函数式编程面向对象编程编程本质和逻辑编程 虽然有不同的编程范式&#xff0c;但是对于目的来说都是为了解决同一…

关于vs下多态虚表中存储的地址和实际成员函数地址不一样的原因

以如下代码为例&#xff1a; class Base1 { public: virtual void func1() { cout << "Base1::func1" << endl; } virtual void func2() { cout << "Base1::func2" << endl; } private: int b1; }; class Base2 { public: virtual…

BES 平台 SDK之LED的配置

本文章是基于BES2700 芯片&#xff0c;其他BESxxx 芯片可做参考&#xff0c;如有不当之处&#xff0c;欢迎评论区留言指出。仅供参考学习用&#xff01; BES 平台 SDK之代码架构讲解二_谢文浩的博客-CSDN博客 关于SDK 系统框架简介可参考上一篇文章。链接如上所示&#xff01…

学python需要下载什么软件,自学python需要安装什么

大家好&#xff0c;小编来为大家解答以下问题&#xff0c;学python需要安装一些什么软件好&#xff0c;学python需要安装一些什么软件&#xff0c;今天让我们一起来看看吧&#xff01; 工欲善其事必先利其器。初学者在学Python的时候&#xff0c;往往会因为没有好用的软件工具&…

2.5 BUMP图改进

一、Bump Mapping介绍 凹凸贴图映射技术是对物体表面贴图进行变化然后进行光计算的一种技术。例如给法线分量添加噪音&#xff0c;或者在一个保护扰动值的纹理图中进行查找。这是一个提升物理真实感的有效方法&#xff0c;但却不需要额外的提升物体的几何复杂度。这种法式在提…

华为OD机试真题 Java 实现【简单的自动曝光】【2023Q1 100分】,附详细解题思路

目录 专栏导读一、题目描述二、输入描述三、输出描述四、备注五、解题思路六、Java算法源码七、效果展示1、输入2、输出3、说明4、再输入5、输出6、说明 华为OD机试 2023B卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff…

【雕爷学编程】Arduino动手做(173)---SG90舵机双轴云台模块2

37款传感器与执行器的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&am…

数据库事务--springboot事务处理

二、简单事务使用 模拟一 1、数据库 db.sql drop database if exists supermarket; create database supermarket; use supermarket; drop table if exists order_item; CREATE TABLE order_item (item_id bigint(20) NOT NULL AUTO_INCREMENT COMMENT 订单ID,order_no …

Linux 用户和权限

一、root 用户 root 用户(超级管理员) 无论是windows、Macos、Linux均采用多用户的管理模式进行权限管理。在Linux系统中&#xff0c;拥有最大权限的账户名为&#xff1a;root (超级管理员)。 root用户拥有最大的系统操作权限&#xff0c;而普通用户在许多地方的权限是受限的。…

一文教你吃透Git工具

目录 Git简介 git的安装和配置 新建仓库 工作区域和文件状态 git reset回退版本 使用git diff比较差异 Git简介 git是一个免费开源的分布式版本控制系统&#xff0c;它使用一个特殊的叫做仓库的数据库来记录文件的变化&#xff0c;仓库中的每个文件都有一个完整的版本历史…

windows10 wifi情况下修改静态IP

1.鼠标右击网络选择属性 2.选择更改适配器设置 3.在WLAN&#xff0c;右击选择属性 4. 双击Internet 协议版本4(TCP/IPv4) 5. 启用“使用下面的IP地址” 6.输入目标IP地址&#xff0c;子网掩码&#xff0c;默认网关 我以192.167.1.2为例&#xff1a; 7.cmd中ipconfig查询验证…

【驱动开发day8作业】

作业1&#xff1a; 应用层代码 #include <stdlib.h> #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> #include <string.h> #include <sys/ioctl.h>int main(int…

P3855 [TJOI2008] Binary Land

[TJOI2008] Binary Land 题目背景 Binary Land是一款任天堂红白机上的经典游戏&#xff0c;讲述的是两只相爱的企鹅Gurin和Malon的故事。两只企鹅在一个封闭的迷宫中&#xff0c;你可以控制他们向上下左右四个方向移动。但是他们的移动有一个奇怪的规则&#xff0c;即如果你按…

【技术讨论】RF环境搭建手册

简要整理下环境搭建的步骤&#xff0c;以便快速、准确的搭建测试环境。 一、环境搭建 一、Python 2.7 1、 不要用Python3.6&#xff0c;很多库3.6中还没有&#xff0c;wxPython官方只支持Python 2。 2、 环境变量配置后需要重启才能生效。 3、 环境变量添加C:\Python27\Sc…

k8s概念-deployment

deployment用于部署无状态应用 Deployment集成了上线部署、滚动升级、创建副本、回滚等功能 Deployment里包含并使用了ReplicaSet Replicaset 通过改变Pod副本数量实现Pod的扩容和缩容 参考文档 https://kubernetes.io/zh-cn/docs/concepts/workloads/controllers/deployment/ …