应用密码学(书籍学习笔记、基础知识) 一

本博客为读《应用密码学》所得笔记

image-20250821153029538

文章目录

  • 一、 加密与解密
    • 1.2 秘钥Key
    • 1.2.1 引入秘钥K
    • 1.2.2 加密秘钥K1,解密秘钥K2
  • 二、对称算法 VS 公开密钥算法
    • **① 对称算法** - 传统密码算法 **(Symmetric Algorithm) 🔑**
    • **② 非对称算法特点** - 公开秘钥算法 **(Public-Key Algorithm) 🗝️**
    • 密码分析
      • 🔬 (1) 正规密码学攻击 (Technical Attacks)
      • 😄(2)非正规/社会工程学攻击 (Non-Technical Attacks)
      • ✅ 总结与对比
  • 三、 代替密码或者换位密码
  • 四、了解即可

一、 加密与解密

加密:明文消息需要通过某种方式伪装的过程E(M) = C

被加密后的消息被称为秘文。

解密:由秘文转为明文的过程D(C) = M

image-20250821154307291

密码学还起到 鉴别(抗伪装)、消息完整性、抗抵赖的作用。
在这里插入图片描述

1.2 秘钥Key

在密码系统中由算法以及“明文、秘文和秘钥”构成。

✨自此开发者将目光从算法的安全性,转向了对于秘钥守护的安全性的考虑。

1.2.1 引入秘钥K

现代密码学来说,引入秘钥K,K其范围可被称为”秘钥空间“。

✨(为解决受到算法的保密性基于对于算法的一种秘密的现象)

在这里插入图片描述

✨ 三个公式 Eₖ(M) = C, Dₖ(C) = M, 和 Dₖ(Eₖ(M)) = M 之间的逻辑关系。

  1. 起点 📄 明文 M: 这是需要加密的原始信息。
  2. 加密过程 Eₖ(M) = C: 使用加密函数 E密钥 K,对明文 M 进行运算,得到密文 C
  3. 中间状态 🔒 密文 C: 加密后的输出,即 C = Eₖ(M)
  4. 解密过程 Dₖ(C) = M: 使用解密函数 D相同的密钥 K,对密文 C 进行运算,理论上应还原出明文 M
  5. 数学验证 Dₖ(Eₖ(M)) = M: 这是加解密系统核心的正确性条件。将解密后的结果与原始明文 M 进行比对。
  6. 最终结果:
    • 是 ✅ -> Dₖ(Eₖ(M)) = M 成立,意味着 🎉 加解密系统工作正常
    • 否 ❌ -> 等式不成立,意味着过程中出现 🔥 算法或密钥错误

1.2.2 加密秘钥K1,解密秘钥K2

✨ 三个公式Eₖ₁(M) = C, Dₖ₂(C) = M, 和 Dₖ₂(Eₖ₁(M)) = M 之间的逻辑关系。
在这里插入图片描述

  1. 起点 📄 明文 M: 这是需要加密的原始信息。
  2. 加密过程 Eₖ₁(M) = C: 使用加密函数 E加密密钥 K₁,对明文 M 进行运算,得到密文 C
  3. 中间状态 🔒 密文 C: 加密后的输出,即 C = Eₖ₁(M)
  4. 解密过程 Dₖ₂(C) = M: 使用解密函数 D解密密钥 K₂,对密文 C 进行运算,还原出明文 M
  5. 数学验证 Dₖ₂(Eₖ₁(M)) = M: 这是非对称加密系统的核心正确性条件。使用不同的密钥(K₁ ≠ K₂) 能成功完成加解密循环。
  6. 最终结果:
    • 是 ✅ -> Dₖ₂(Eₖ₁(M)) = M 成立,意味着 🔑 非对称/公钥密码系统工作正常。这正是公钥密码学的特征(例如RSA算法),用一个密钥(公钥)加密,另一个配对但不同的密钥(私钥)解密。
    • 否 ❌ -> 等式不成立,意味着 🔥 密钥不匹配或算法错误

二、对称算法 VS 公开密钥算法

① 对称算法 - 传统密码算法 (Symmetric Algorithm) 🔑

  • 流程数据📄 -> (用密钥🔑加密🔒) -> 密文📦 -> (用同一把密钥🔑解密🔓) -> 数据📄
  • 核心:加密和解密使用同一把密钥
  • 特点:速度快,效率高,但密钥分发不安全。
  • 常见算法:AES, DES, 3DES

  • 在这里插入图片描述

✨ 对称算法特点:

  • **⚡ 高速性能 - 加解密速度快

  • 🔑 单密钥 - 加密解密使用相同密钥

  • 📏 适合大数据 - 处理大量数据效率高

  • ⚠️ 密钥分发挑战 - 需要安全共享密钥

② 非对称算法特点 - 公开秘钥算法 (Public-Key Algorithm) 🗝️

  • 流程数据📄 -> (用接收者的公钥🌐加密🔒) -> 密文📦 -> (用接收者的私钥🛡️解密🔓) -> 数据📄
  • 核心:使用一对密钥:公钥(公开)和私钥(自己保留)。
  • 特点:速度慢,但解决了密钥分发问题,用于数字签名、密钥交换等。
  • 常见算法:RSA, ECC, ElGamal

在这里插入图片描述

✨ 非对称算法特点:

  • 🛡️ 双重密钥 - 公钥加密,私钥解密

  • 🌍 公钥共享 - 公钥可以自由分发

  • 🔐 私钥保护 - 私钥必须严格保密

  • 🐢 速度较慢 - 适合小数据量加密

  • 解决密钥分发 - 无需预先共享密钥

密码分析

密码编码学的目的:防止偷听者知晓发送方和接收方之间的通讯信息。

密码分析学的目的:未知秘钥的情况下,恢复明文的科学方式。(此时也就是恢复明文和对应秘钥)

秘钥通过非密码分析得来行为称为泄露

分析阶段的一列尝试称为:攻击(attack)

下面展示常见的方式

在这里插入图片描述

🔬 (1) 正规密码学攻击 (Technical Attacks)

这些是教科书和学术论文中严格定义的攻击模型。

攻击方式正式英文名原理比喻
唯密文攻击Ciphertext-Only Attack最基础的攻击。分析者只有一段或几段密文,没有其他信息。难度最大。只听到一段加密的外语,试图理解它。
已知明文攻击Known-Plaintext Attack (KPA)分析者拥有一些密文以及这些密文对应的明文。目标是破解密钥或其他密文。拿到一张“密码本”的一页,试图破解整个密码本。
选择明文攻击Chosen-Plaintext Attack (CPA)分析者可以选择任意明文,并获取其对应的密文。这是现代加密算法必须抵御的攻击。可以让翻译官把你说的任何话都翻译成那种外语,你通过对比来学习规则。
自适应选择明文攻击Adaptive CPACPA的强化版。分析者可以基于之前加密的结果,动态地选择下一个要加密的明文。更接近现实攻击。不仅能让翻译官翻译,还能根据上一句的翻译结果,机智地问下一句。
选择密文攻击Chosen-Ciphertext Attack (CCA)分析者可以选择任意密文,并获取其解密后的明文。目标是破解密钥。可以让翻译官把任何你提供的“密文”翻译回明文,从而找出规则。
选择密钥攻击Chosen-Key Attack分析者对密钥之间的关系有一定的了解或选择能力。这种攻击更理论化,主要用于分析加密算法的某些数学属性。你知道两把钥匙之间有某种联系,试图利用这种联系。

😄(2)非正规/社会工程学攻击 (Non-Technical Attacks)

这些不是密码学意义上的数学分析,而是通过“人”的弱点来获取密钥的非常规手段,通常被称为 “旁路攻击”“社会工程学攻击”

攻击方式“黑话”英文名原理比喻
软磨硬泡攻击Rubber-Hose Cryptanalysis通过威胁、勒索或暴力手段(比如用橡胶水管抽打)逼迫密钥持有者交出密钥。不是破解保险箱,而是用枪指着保险箱的主人让他打开。
购买密钥攻击Purchase-Key Attack通过贿赂或直接购买的方式从内部人员或意志不坚定的持有者那里获得密钥。直接花钱从保安那里买钥匙。

✅ 总结与对比

**安全性顺序:**全部破译 > 全盘推导 > 实例(局部)推导 > 信息推导

复杂性包含: 数据载入量 、 工作因素(处理复杂度)、存储

特性正规密码学攻击非正规社会工程学攻击
目标算法本身的数学缺陷的弱点(恐惧、贪婪、疏忽)
方式数学分析、计算威胁、贿赂、欺骗
防御使用更强加密算法加强法律、管理、培训、物理安全

一个安全的系统,必须同时能够抵御技术上的密码攻击现实中的软磨硬泡攻击

三、 代替密码或者换位密码

在我们日常使用图像中不难发现图像具有多种包含了多种信息。

例如我们有8位的灰度图,我们仅需“128 X 128"图像中每一个像素的最后1位,整体替换后就达成了实现“图像水印”的效果,虽然在肉眼上可能和原图近乎无差别,但是我们分解开其没一位的话,还是可以看见水印标志出制作者独特的标记的。

  • 代替密码

明文中的每一个字符被替换成秘文中的每一个字符,当接受者对秘文进行逆运算将恢复出明文。

经典密码学中:简单替换、多名码代提、多字母替代、多表替代。

  • 换位密码

image-20250822095600697

  • 转轮机

四、了解即可

  • 异或XOR操作

image-20250822100124203

  • 一次一密:

    用一把只能用一次的、完全随机生成的、和明文一样长的“钥匙”来加密。只要做到这三点,它在数学上就是“无法破解”的。

  • 计算机算法

    • 数据加密算法(DES):对称算法
    • RSA:用作加密和数字签名
    • 数字签名算法(DSA):不可在加密中运用

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

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

相关文章

【攻防世界】Web_php_include

1.信息收集题目&#xff1a;Web_php_include &#xff1a;PHP文件包含漏洞2.思路&#xff1a;1.代码审计&#xff1a;<?php show_source(__FILE__); echo $_GET[hello]; $page$_GET[page]; while (strstr($page, "php://")) { //在一个字符串中查…

cmake--CPack/deb

deb包的需求 怎么使用cmake把项目的依赖想打包为deb包,把项目的可执行文件和依赖文件打包为deb包,又怎么样配置apt源,让项目在jenkins构建之后,可以通过sudo apt install 下载deb包和安装到任意主机上? 整体流程概览 使用CMake构建项目:确保你的项目可以被CMake正确编译…

七十五、【Linux数据库】部署Redis服务 、 部署LNMP+Redis

Redis 与 LNMP 集成功能概述 Redis 核心功能 内存数据存储:高速读写性能 数据结构丰富:字符串、哈希、列表、集合等 持久化支持:RDB快照和AOF日志 发布订阅:消息队列功能 高可用:主从复制、哨兵模式、集群 LNMP+Redis 集成价值 会话共享:多Web服务器共享Session 数据缓存…

从YOLOv5到RKNN:零冲突转换YOLOv5模型至RK3588 NPU全指南

从YOLOv5到RKNN&#xff1a;零冲突转换YOLOv5模型至RK3588 NPU全指南 在嵌入式AI领域&#xff0c;将训练好的深度学习模型高效部署到边缘设备的NPU&#xff08;神经网络处理器&#xff09;上是提升性能的关键。本文将详细介绍如何在Ubuntu 20.04环境下&#xff0c;将YOLOv5l模型…

DNS的解析过程是怎样的?它基于传输层的什么协议?

问题DNS的解析过程是怎样的&#xff1f;它基于传输层的什么协议&#xff1f;我的回答&#xff1a;DNS解析过程是将域名转换为IP地址的一系列步骤。这个过程涉及多级缓存和查询&#xff1a;首先是浏览器缓存&#xff0c;浏览器会先检查自己的DNS缓存是否有记录。接着是操作系统缓…

模拟互联网大厂Java面试:电商场景下的技术探讨

模拟互联网大厂Java面试&#xff1a;电商场景下的技术探讨 场景概述 在这场模拟面试中&#xff0c;我们设定了一位互联网大厂的面试官与候选人小C之间的对话。面试官严肃专业&#xff0c;而小C则是搞笑的“水货程序员”。通过三轮问答&#xff0c;我们探索了Java技术栈在电商场…

遥感机器学习入门实战教程|Sklearn案例⑤:集成学习方法全览

在机器学习的实际应用中&#xff0c;单一分类器往往存在局限&#xff1a;比如决策树容易过拟合&#xff0c;kNN 对噪声敏感&#xff0c;逻辑回归在高维数据下收敛慢。为了提升整体效果&#xff0c;我们通常会采用 集成学习&#xff08;Ensemble Learning&#xff09;。 这篇文章…

大模型在垂直场景中的创新应用:搜索、推荐、营销与客服的新玩法

1. 引言 背景介绍:简述大模型(如GPT、BERT等)的发展历程及其在AI领域的核心作用,强调其在垂直场景中的潜力。 主题聚焦:说明本文将深入探讨搜索、推荐、营销、客服四大场景,分析大模型带来的创新开发方式。 目的与意义:阐述新玩法如何提升效率、增强用户体验,并推动行业…

华为仓颉语言的class(类)初步

华为仓颉语言的class&#xff08;类&#xff09;初步 class 概念 【官方文档 https://cangjie-lang.cn/docs?url%2F1.0.0%2Fuser_manual%2Fsource_zh_cn%2Fclass_and_interface%2Fclass.html 】 class 是仓颉面向对象体系的核心&#xff0c;用来描述“引用类型”对象。与 s…

健康常识查询系统|基于java和小程序的健康常识查询系统设计与实现(源码+数据库+文档)

健康常识查询系统 目录 基于java和小程序的健康常识查询系统设计与实现 一、前言 二、系统设计 三、系统功能设计 小程序功能设计 后台功能设计 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍&#xf…

MySQL的高可用+MHA

即MySQL 主从复制高可用架构&#xff0c;是一套优秀的MySQL 高可用解决方案&#xff0c;由日本 DeNA 公司 youshimaton 开发&#xff0c;主要用于保障 MySQL 数据库在主服务器出现故障时&#xff0c;能快速进行主从切换&#xff0c;减少数据库服务中断时间。其核心特点包括&…

淘宝pc端首页做了哪些性能优化?

淘宝PC端首页作为中国电商领域流量最大的页面之一&#xff0c;其性能优化手段可以说是业界标杆&#xff0c;非常全面和深入。这些优化不是单一技术&#xff0c;而是一个完整的体系。 我们可以从以下几个层面来分析和理解淘宝首页所做的性能优化&#xff1a; 一、核心指标与整体…

让医学数据更直观——MedCalc 23.1.7 最新版使用体验

软件介绍 MedCalc 23.1.7是一款功能强大的生物医学研究统计软件&#xff0c;专为医学科研人员和医疗保健专家设计。它提供了丰富的统计分析工具和方法&#xff0c;旨在帮助用户更好地分析和解释医学数据。以下是该软件的一些主要特点&#xff1a; 一、数据导入和管理 支持导…

Text2SQL、ChatBI简介

概述 传统BI的三大核心瓶颈&#xff1a; 问数之难&#xff1a;不同用户往往存在个性化的分析逻辑&#xff0c;尽管企业内部已经创建大量报表和看板&#xff0c;但仍然无法完全满足业务部门对数据的个性化需求。但传统BI门槛较高&#xff0c;非技术人员在统一培训前&#xff0…

神经网络中 标量求导和向量求导

0. 引出问题 在神经网络反向传播过程中 loss [loss₁,loss₂, loss₃]&#xff0c;为什么 ∂loss/∂w ∂loss₁/∂w ∂loss₂/∂w ∂loss₃/∂w ∂loss₁/∂w 和 loss 维度一样都是三位向量 &#xff0c;[∂loss₁/∂w, ∂loss₂/∂w, ∂loss₃/∂w] 就变成3*3的矩阵 如下所…

tcpdump命令打印抓包信息

tcpdump命令打印抓包信息 下面是在服务器抓取打印服务端7701端口打印 rootgb:/home/gb# ifconfig -a eth0: flags4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 10.250.251.197 netmask 255.255.255.0 broadcast 10.250.251.255inet6 fe80::76fe:48ff:fe94:5a5 …

Mysql-经典实战案例(13):如何通过Federated实现跨实例访问表

实现原理&#xff1a;使用Federated引擎本创建一个链接表实现&#xff0c;但是Federated 引擎只是一个按列的顺序和类型解析远程返回的数据流准备工作&#xff1a; 1. 本地库启用 Federated 引擎查看是否已启用&#xff1a; SHOW ENGINES;如果Federated 引擎的 Support 是 YES …

Linux -- 动静态库

一、什么是库1、动静态库概念# 库是写好的现有的&#xff0c;成熟的&#xff0c;可以复⽤的代码。现实中每个程序都要依赖很多基础的底层库&#xff0c;不可能每个⼈的代码都从零开始&#xff0c;因此库的存在意义⾮同寻常。# 本质上来说库是⼀种可执⾏代码的⼆进制形式&#x…

Linux笔记---单例模式与线程池

1. 单例模式单例模式是一种常用的设计模式&#xff0c;它确保一个类只有一个实例&#xff0c;并提供一个全局访问点来获取这个实例。这种模式在需要控制资源访问、管理共享状态或协调系统行为时非常有用。单例模式的核心特点&#xff1a;私有构造函数&#xff1a;防止外部通过n…

Linux中的指令

1.adduseradduser的作用是创立一个新的用户。当我们在命令行中输入1中的指令后&#xff0c;就会弹出2中的命令行&#xff0c;让我们设立新的密码&#xff0c;紧接着就会让我们再次输入新的密码&#xff0c;对于密码的输入它是不会显示出来的&#xff0c;如果输入错误就会让我们…