密码学——密码学概述、分类、加密技术(山东省大数据职称考试)

ops/2024/12/16 18:56:10/

 大数据分析应用-初级

第一部分 基础知识

       一、大数据法律法规、政策文件、相关标准

       二、计算机基础知识

       三、信息化基础知识

       四、密码学

       五、大数据安全

       六、数据库系统

       七、数据仓库.

第二部分 专业知识

       一、大数据技术与应用

       二、大数据分析模型

       三、数据科学


密码学


前言

密码学

(一)密码学概述

1、了解密码学发展史、密码学概念。

(二)密码学分类

1、了解密码学的分类,包括按时间、按密钥、按密码体制和按明文处理方法分类等。

(三)加密技术

1、了解古典密码学、对称密码算法、非对称密码算法、哈希算法、散列函数(MD5算法)、数字签名技术。

2、掌握软件与硬件加密技术。


一、密码学概述

密码学概念:

密码学(Cryptology)是一门研究密码保护通信手段的科学,属于应用数学的范畴,包括加密理论与解密理论密码学技术可以使消息的内容对(除发送者和接收者以外)的所有人保密,可以使接收者验证消息的正确性

密码学发展史:

1. 古典密码学阶段(古代至1949年)

古典密码学主要基于替换和置换这两种核心手段。替换是指明文中的每一个字符被替换成密文中的另一个字符;置换是密文和明文字母保持相同,但顺序被打乱

这一时期出现了多种加密方法,如斯巴达的“塞塔式密码”、凯撒密码、维吉尼亚密码、滚筒密码、掩格密码以及圆盘密码等。这些密码技术更像是一门艺术,其数据的安全基于算法的保密,密码学专家是凭知觉和信念来进行密码设计和分析,而不是推理和证明。

2. 近代密码学阶段(1949年至1975年)

1949年,香农发表了《保密系统的通信理论》,为对称密码系统建立了理论基础,从此密码学成为一门科学。

20世纪70年代,随着计算机科学的蓬勃发展,密码学得到了新的概念和工具,如快速电子计算机和现代数学方法。

Arthur Scherbius于1919年设计出了历史上最著名的密码机——德国的Enigma机,它在二战期间被广泛使用,但也引发了加密与破译的激烈对抗。

近代密码发展中一个重要突破是“数据加密标准”(DES)的出现,它使密码学得以从政府走向民间,并在金融等商业领域广泛使用

3. 现代密码学阶段(1976年至今)

1976年,W.Diffie和M.Hellman在发表的文章“密码学的新方向”中首次公开提出了公钥密码(Public-key Cryptography)的概念。公钥密码的提出实现了加密密钥和解密密钥之间的独立,解决了对称密码体制中通信双方必须共享密钥的问题,在密码学界具有划时代的意义。

1977年,美国麻省理工学院提出第一个公钥加密算法RSA算法,之后ElGamal、椭圆曲线、双线性对等公钥密码相继被提出,密码学真正进入了一个新的发展时期。

现代密码学技术得到蓬勃发展,密码学技术趋于标准化,并广泛应用于金融、民生、教育、电子商务、物联网、工业制造等领域。

二、密码学分类

按时间分类

  • 古典密码:古典密码主要以字符为基本加密单元,用于早期的保密通信。
  • 现代密码:现代密码以信息块(多个字符)为基本的加密单元,采用更复杂的算法和密钥管理机制,以提高保密性和安全性。

按密钥分类

  • 对称密钥:又称单钥密码或私钥密码,指加密密钥与解密密钥相同。这种密码体制运算速度快,适用于大数据量的加密,但密钥管理相对困难。
  • 非对称密钥:又称双钥密码或公钥密码,指加密密钥与解密密钥不同。其中,加密密钥(公钥)可以公开,而解密密钥(私钥)需要保密。非对称密钥密码体制解决了密钥分发和不可否认性的问题,但运算速度相对较慢。

按密码体制分类

  • 对称密码体制:如上文所述,加密和解密使用相同的密钥。
  • 非对称密码体制:如上文所述,加密和解密使用不同的密钥。

按明文处理方法分类

  • 分组密码:加密时将明文分成固定长度的组,用同一密钥和算法对每组进行加密,输出也是固定长度的密文。分组密码多用于网络加密。
  • 流密码:也称序列密码,对明文进行连续处理,每次处理一个字符或字节,生成相应的密文。流密码适用于实时通信等需要连续处理的场景。

此外,密码学还可以从其他角度进行分类,如按保密内容算法分类,可以分为受限制算法(算法的保密性基于对算法的保密)和基于密钥算法(算法的保密性基于对密钥的保密);按安全目标分类,可以分为保密体制(主要保证信息不被攻击者窃取)和认证体制(主要保证信息源不被假冒以及信息发送和接受方的身份真实性)。

三、加密技术

1.古典密码学

      定义与原理:古典密码学密码学发展早期阶段的技术,主要通过简单的替换或置换操作来隐藏明文信息。替换密码是将明文中的每个字符按照一定规则替换为其他字符,如凯撒密码,它将字母表中的字母按照固定的位移量进行替换。置换密码则是改变明文中字符的位置顺序,比如栅栏密码,把明文按一定规律分组后重新排列组合得到密文。

      示例与局限性:以凯撒密码为例,如果设定位移量为 3,字母 A 就会被替换成 D,B 替换成 E,以此类推。但这种密码很容易被破解,因为它的密钥空间(可能的密钥数量)较小,对于有一定规律的文本,通过简单的频率分析(统计密文中每个字母出现的频率,与正常语言中字母频率对比)就可以猜出加密规则。

2.对称密码算法:

        定义与原理:对称密码算法也叫单钥密码算法,加密和解密使用相同的密钥。发送方和接收方需要事先共享密钥,加密时通过特定的算法将明文和密钥一起运算得到密文,解密时则使用相同的密钥和对应的解密算法把密文还原为明文。

       应用场景与安全:它的加密和解密速度相对较快,适用于对大量数据进行加密,如在本地硬盘数据加密、企业内部网络数据传输加密等场景广泛应用。然而,其安全性依赖于密钥的保密性,密钥管理是一个关键问题。因为在多个用户通信的情况下,需要安全地分发和存储大量的密钥。常见的对称密码算法包括DES、IDEA、AES、BlowFish、Twofish等。其中,AES(高级加密标准)是最常见的对称密码算法之一,被广泛应用于各种安全通信和存储系统中。

3.非对称密码算法

       定义与原理:非对称密码算法又称为双钥密码算法,加密和解密使用不同的密钥,分别是公钥和私钥。公钥可以公开,任何人都可以使用公钥对信息进行加密,但只有拥有私钥的人才能解密。其原理基于数学难题,如 RSA 算法是基于大整数分解问题。

       应用场景与优势:主要用于密钥交换、数字签名等场景。在电子商务和电子政务等领域发挥重要作用,例如在网上银行中,银行将公钥公开,客户用公钥加密账户信息等敏感数据发送给银行,银行用私钥解密,这种方式解决了对称密码算法中密钥分发的难题,同时还可以提供身份认证功能。常见的非对称密码算法包括RSA、DSA、ECC等。其中,RSA是最著名的非对称密码算法之一,被广泛应用于数字签名、密钥交换等领域。

4.哈希算法与散列函数(以 MD5 算法为例)

        定义与原理哈希算法(也称散列算法)是一种将任意长度的数据映射为固定长度的散列值(也叫哈希值)的算法(该过程不可逆)。散列函数是哈希算法的具体实现。散列函数的主要特点是:

  1. 查找速度较快:给定明文和哈希算法,在有限时间和有限资源内能计算出哈希值。
  2. 不可逆:哈希算法是一种单向密码体制,即它是一个从明文到密文的不可逆的映射。只有加密过程,没有解密过程(在理论上无法从哈希值反推出原始数据)。
  3. 输入敏感:如果散列一段明文,哪怕只更改该段落的一个字母,随后的哈希值都将产生不同的结果。

      MD5算法是一种具体的哈希算法实现,它接收任意长度的输入数据,并通过一系列复杂的数学运算生成一个128位的哈希值。MD5算法以512位数据块为单位来处理输入信息,将输入信息划分为若干个512位的数据块,如果最后一块不足512位,会进行填充处理。在处理过程中,MD5算法会进行四轮循环运算,每轮包含16步操作,这些操作涉及到布尔函数(如与、或、非等逻辑运算)、加法运算和移位操作等。

       应用场景与局限性:主要用于数据完整性验证和数字签名等。比如在文件下载过程中,网站可以提供文件的 MD5 值,用户下载后可以自行计算文件的 MD5 值并与网站提供的进行对比,如果相同则说明文件在传输过程中没有被篡改。然而,MD5 存在安全隐患,由于其算法结构的一些弱点,已经可以通过碰撞攻击(找到两个不同的输入产生相同的 MD5 值)来破解它,在高安全要求的场景下逐渐被更安全的哈希算法如 SHA - 256 等替代。MD5算法的应用非常广泛,包括安全加密、唯一标识、数据校验等。然而,由于MD5算法的安全性问题(如碰撞问题),在一些安全性要求较高的场合(如金融领域、重要信息系统等),MD5已经被更安全的哈希算法所替代

5.数字签名技术

       定义与原理:数字签名是一种用于验证消息来源和完整性的技术。发送方使用自己的私钥对消息进行签名操作,生成数字签名,接收方可以使用发送方的公钥来验证数字签名。签名过程通常结合哈希算法,先对消息计算哈希值,然后用私钥对哈希值进行加密得到数字签名。验证时,接收方先计算收到消息的哈希值,再用发送方公钥解密数字签名得到原始哈希值,比较两者是否一致来判断消息是否被篡改和是否来自声称的发送者。

       应用场景与重要性在电子合同、电子文档审批等场景中至关重要。它提供了不可否认性,确保发送方不能否认发送过该消息,同时保证了消息的完整性,防止消息在传输过程中被篡改,从而保障了电子通信的安全性和可信度。

软件加密技术

原理:

      软件加密主要是通过编程的方式,利用加密算法对数据进行处理。它将加密算法以软件代码的形式实现,在软件运行过程中,对需要保护的数据进行加密和解密操作。例如,在一个文档编辑软件中,可以通过软件加密技术对文档内容进行加密,当用户保存文档时,软件会使用特定的加密算法(如 AES 等)和用户设置的密钥将文档内容转换为密文进行存储。

常见加密方法:

       对称密钥加密软件实现:利用对称密钥算法(如 AES、DES 等)在软件层面进行加密。例如,AES 算法在软件中实现时,会将数据分成固定长度的块(如 128 位),然后通过多轮的字节替换、行移位、列混合和轮密钥加等操作,使用相同的密钥进行加密和解密。这种方法加密和解密速度相对较快,适合对大量数据进行加密。

        非对称密钥加密软件实现:基于非对称密钥算法(如 RSA 等)实现软件加密。软件使用公钥和私钥对数据进行加密和解密。例如,在数字签名软件中,发送方使用自己的私钥对文件的哈希值进行加密生成数字签名,接收方使用发送方的公钥进行验证。这种方法在密钥管理和身份认证方面有优势,但加密和解密速度比对称密钥算法慢。

        代码混淆与加密:为了防止软件本身的算法被破解,还可以对软件代码进行混淆和加密。代码混淆是通过改变代码的结构和逻辑,使攻击者难以理解代码的真实意图。例如,将变量名替换为无意义的字符,打乱函数的执行顺序等。软件代码加密则是直接对可执行文件或脚本进行加密,在运行时再解密,增加了软件逆向分析的难度。

应用场景:

       数据保护:用于保护各种类型的数据,如企业的财务数据、个人的隐私文件等。例如,数据库管理系统可以使用软件加密技术对存储在数据库中的敏感数据进行加密,防止数据泄露。

       软件授权与版权保护:通过软件加密可以实现软件的授权管理。例如,软件开发者可以使用加密技术对软件的许可证进行加密,用户只有在获得合法的解密密钥(许可证密钥)后才能正常使用软件,这样可以防止软件盗版。

硬件加密技术

原理:

       硬件加密是将加密功能集成到专门的硬件设备中,如加密芯片、加密狗等。这些硬件设备内部包含了加密算法的实现电路和存储密钥的安全区域。在进行加密操作时,数据被发送到硬件设备中,由硬件设备内部的电路使用存储的密钥和加密算法进行加密处理,密文再返回给外部设备。由于密钥存储在硬件的安全区域,并且加密过程在硬件内部完成,大大提高了加密的安全性。

常见加密设备及方法:

        加密芯片:加密芯片是一种高度集成的硬件加密设备。它可以实现多种加密算法,并且具有很高的安全。例如,在一些高端智能手机中,会内置加密芯片来保护用户的数据(如指纹信息、支付信息等)。加密芯片内部有专门的密钥存储区域,采用物理防护措施(如防篡改封装)来防止密钥泄露,同时,芯片内的加密电路可以快速地执行加密和解密操作。

        加密狗:加密狗是一种外置的硬件加密设备,通常通过 USB 接口等方式与计算机相连软件开发者可以将软件的关键部分(如加密算法和密钥)存储在加密狗中,软件在运行时需要与加密狗进行交互才能正常工作。例如,一些专业的设计软件使用加密狗来进行软件授权,用户只有插入合法的加密狗,软件才能启动并使用全部功能,这有效地防止了软件的非法复制和使用。

应用场景:

       金融安全领域:在银行卡、U 盾等设备中广泛应用。例如,U 盾内部有加密芯片,存储着用户的数字证书和私钥。当用户进行网上银行转账等操作时,U 盾会使用内部的加密电路和存储的密钥对交易数据进行数字签名等加密操作,确保交易的安全性和用户身份的真实性。

       企业数据安全:企业可以使用硬件加密设备来保护重要的数据服务器。例如,在服务器的硬盘阵列中加入硬件加密模块,对存储的数据进行加密,防止数据被非法访问,即使硬盘被盗,没有正确的密钥也无法读取数据。

软件加密与硬件加密的比较

  1. 安全硬件加密由于在硬件层面操作,通常认为更安全,不易受到恶意软件的攻击。而软件加密则可能受到操作系统漏洞或底层硬件性能的影响。
  2. 成本硬件加密设备可能需要额外的购买和维护成本,而软件加密则通常成本较低,易于部署。
  3. 灵活性软件加密可以更容易地更新和升级,以适应新的加密标准和算法。而硬件加密则需要更换硬件设备或进行专门的升级操作。
  4. 性能硬件加密通常提供更高的性能,尤其是在处理大量数据时。而软件加密则可能受到计算机性能的限制。

       综上所述,软件加密和硬件加密各有其优势和局限。在实际应用中,应根据具体需求和安全要求选择合适的加密技术。例如,在需要高安全性和稳定性的场合下,可以选择硬件加密;而在成本预算有限或需要频繁更新加密算法的情况下,则可以选择软件加密。


练习题目

一、单选题

  1. 密码学中,用于隐藏信息原始含义的转换后信息被称为( )
    A. 明文
    B. 密文
    C. 密钥
    D. 密码协议
    答案:B。解析:明文是未加密的原始信息,密文是将明文通过特定的算法和密钥转换后的信息,用于隐藏原文含义;密钥是用于加解密算法的秘密参数;密码协议是使用密码技术的通信协议。

  2. 以下哪个时期标志着密码学从古典向现代转变的关键阶段( )
    A. 19 世纪末 - 20 世纪初
    B. 第一次世界大战期间
    C. 第二次世界大战期间
    D. 20 世纪 70 年代
    答案:A。解析:19 世纪末 - 20 世纪初,随着计算机技术和数学理论的初步发展,密码学开始从基于简单手工操作的古典密码学向依赖复杂数学算法和计算机技术的现代密码学转变。

  3. 对称密钥密码体制中,如果密钥长度为 128 位,那么理论上密钥的可能组合数量是( )
    A. 2^{​{128}}
    B. 128^{​{2}}
    C. 10^{​{128}}
    D. 2\times 128
    答案:A。解析:对于 n 位的二进制密钥,其可能的组合数量是2^{​{n}},所以 128 位密钥的可能组合数量是2^{​{128}}

  4. 下列哪种古典密码方式是通过改变字符位置顺序来加密的( )
    A. 凯撒密码
    B. 替换密码
    C. 栅栏密码
    D. 仿射密码
    答案:C。解析:凯撒密码和仿射密码属于替换密码,是用其他字符替换明文字符;栅栏密码是将明文字符分组后改变位置顺序,属于置换密码。

  5. 以下哪种算法主要用于验证数据完整性和数字签名( )
    A. 对称密码算法
    B. 非对称密码算法
    C. 哈希算法
    D. 序列密码算法
    答案:C。解析:哈希算法将任意长度的数据映射为固定长度的散列值,主要用于验证数据完整性和数字签名;对称密码算法用于加密和解密数据;非对称密码算法用于密钥交换和数字签名等多种功能;序列密码算法是一种加密方式,重点在加密数据而不是验证完整性。

  6. 在非对称密钥密码体制中,公钥用于( )
    A. 解密
    B. 签名
    C. 加密
    D. 验证签名
    答案:C。解析:在非对称密钥密码体制中,公钥用于加密,私钥用于解密和签名,验证签名也是使用公钥。

  7. MD5 算法产生的散列值长度是( )
    A. 128 位
    B. 160 位
    C. 256 位
    D. 512 位
    答案:A。解析:MD5 算法产生的散列值长度是 128 位。

  8. 软件加密中,代码混淆的主要目的是( )
    A. 提高软件运行速度
    B. 减小软件体积
    C. 防止软件算法被破解
    D. 增加软件功能
    答案:C。解析:代码混淆是通过改变代码的结构和逻辑,使攻击者难以理解代码的真实意图,主要目的是防止软件算法被破解。

  9. 以下硬件加密设备中,常用于高端智能手机保护用户数据的是( )
    A. 加密狗
    B. 加密芯片
    C. U 盾
    D. 硬盘加密模块
    答案:B。解析:加密芯片可集成到智能手机中,用于保护用户的数据,如指纹信息、支付信息等;加密狗主要用于软件授权;U 盾主要用于网上银行等金融操作;硬盘加密模块用于服务器或计算机硬盘数据加密。

  10. 在密码体制分类中,将明文逐位与密钥流运算的是( )
    A. 分组密码
    B. 序列密码
    C. 公钥密码
    D. 哈希密码
    答案:B。解析:序列密码(流密码)将明文逐位地与密钥流进行运算;分组密码是将明文划分成固定长度的组进行加密;公钥密码是基于非对称密钥的密码系统;哈希密码主要用于生成散列值,不是加密明文的方式。

二、多选题

  1. 密码学按时间分类包括( )
    A. 古代密码学
    B. 古典密码学
    C. 近代密码学
    D. 现代密码学
    答案:BD。解析:密码学按时间分为古典密码学(古代到 19 世纪末)和现代密码学(20 世纪初至今)。

  2. 对称密钥密码体制的优点有( )
    A. 加密和解密速度快
    B. 密钥管理相对简单
    C. 适用于大量数据加密
    D. 提供身份认证功能
    答案:AC。解析:对称密钥密码体制加密和解密速度快,适用于大量数据加密;但其密钥管理困难,不直接提供身份认证功能。

  3. 以下属于古典密码学替换密码的有( )
    A. 简单替换密码
    B. 维吉尼亚密码
    C. 希尔密码
    D. 置换密码
    答案:ABC。解析:简单替换密码、维吉尼亚密码、希尔密码都属于替换密码,是将明文字符替换为其他字符来加密;置换密码是改变字符位置顺序,不属于替换密码。

  4. 哈希算法的应用场景包括( )
    A. 数据完整性检查
    B. 数字签名
    C. 密码存储
    D. 数据加密
    答案:ABC。解析:哈希算法主要用于数据完整性检查、数字签名和密码存储(存储密码的哈希值而不是明文密码),它一般不用于数据加密,因为哈希是单向的,很难从哈希值还原出原始数据。

  5. 软件加密技术的实现方式包括( )
    A. 对称密钥加密软件实现
    B. 非对称密钥加密软件实现
    C. 代码混淆与加密
    D. 硬件绑定软件加密
    答案:ABC。解析:软件加密技术可以通过对称密钥加密软件实现、非对称密钥加密软件实现以及代码混淆与加密来实现;硬件绑定软件加密不是软件加密技术本身的实现方式,而是涉及软件与硬件结合的加密方式。

  6. 硬件加密技术的优势有( )
    A. 安全性高
    B. 加密速度快
    C. 密钥存储安全
    D. 便于软件升级
    答案:ABC。解析:硬件加密技术将加密功能集成到硬件设备中,具有安全性高(如采用物理防护措施防止密钥泄露)、加密速度快(硬件电路执行加密操作)、密钥存储安全(有专门的安全区域存储密钥)等优势;硬件加密设备可能会对软件升级有一定限制,并不一定便于软件升级。

三、判断题

  1. 古典密码学的加密方法在现代已经完全没有应用价值。( )
    答案:错误。解析:虽然现代密码学技术先进,但古典密码学的一些基本思想和简单加密方式在某些简单场景或教学等领域仍有一定价值。

  2. 非对称密钥密码体制中,加密和解密速度比对称密钥密码体制快。( )
    答案:错误。解析:非对称密钥密码体制加密和解密速度相对较慢,对称密钥密码体制加密和解密速度快。

  3. 只要哈希算法产生的散列值相同,那么原始数据一定相同。( )
    答案:正确。解析:哈希算法的特点是对于给定的数据能产生唯一固定长度的散列值,如果散列值相同,理论上原始数据相同,但目前一些哈希算法可能受到碰撞攻击的影响。

  4. 软件加密技术比硬件加密技术安全性更高。( )
    答案:错误。解析:硬件加密技术通常具有更高的安全性,因为它将加密功能集成在专门的硬件设备中,有物理防护措施防止密钥泄露等优势。


http://www.ppmy.cn/ops/142438.html

相关文章

⭐Redis - 手动实现分布式锁 Redisson 的使用

概述 定义:分布式系统或集群模式下,多进程或多节点之间 “可见” 并且 “互斥” 的锁机制 功能:确保同一时刻只有一个进程或节点能够获取某项资源的访问权 特点 互斥高可用多进程可见高并发 (高性能)安全性 (避免死锁问题) 常见的分布式锁 …

Flutter 桌面端串口配置

前言 我使用flutter_libserialport包在macOS中实现串口通信的功能,可以实现数据收发,但是收到的内容是乱码。这种情况一般都是由于波特率和硬件设备不一致导致的。 配置串口配置 1.打开串口读写 import package:flutter_libserialport/flutter_libser…

爬虫基础知识点

最近看了看爬虫相关知识点,做了记录,具体代码放到了仓库,本文仅学习使用,如有违规请联系博主删除。 这个流程图是我使用在线AI工具infography生成的,这个网站可以根据url或者文本等数据自动生成流程图,挺…

Spring WebFlux 和 Reactor关系

Spring WebFlux 和 Reactor 是紧密相关的,Spring WebFlux 基于 Reactor 构建,两者共同推动了响应式编程在 Java 开发中的应用。以下是它们的具体关系和分工: 1. Reactor: 响应式编程核心库 Reactor 是一个响应式编程库,实现了Rea…

elasticsearch 使用预处理将JSON类型转换成Object类型

文章目录 使用 Ingest Pipeline 和 json 处理器示例:使用Ingest Pipeline 写入数据使用该Pipeline 在Elasticsearch(ES)中,您可以使用“预处理”(通常是通过处理器、Ingest Pipeline等方式)将JSON类型的数据…

设计模式学习之——适配器模式

适配器模式(Adapter Pattern),又称作变压器模式(因为这两者都体现了“转换”或“适配”的核心概念),是一种结构型设计模式。它将一个类的接口转换成客户端所期望的另一种接口,从而使得原本因接口…

解析UnityEditor.TransformWorldPlacementJSON数据

Unity拷贝运行时数据的世界Trans信息可以得到json数据,稍微改装一下就可以得到对象数据了(没找到官方对应的接口,如果有知道的可以评论区留言),如下图: 代码如下: [MenuItem("Assets/解析…

与 Cursor AI 对话编程:2小时开发报修维修微信小程序

本文记录了如何通过与 Cursor AI 对话,全程不写一行代码的情况下,完成一个完整的报修小程序。整个过程展示了 AI 如何帮助我们: 生成代码 、解决问题、优化实现、完善细节。 先看一下效果图: 一、项目配置 首先我是这样和 AI 对…