密码编码学与网络安全(2):对称密码之传统加密技术

2023-11-06

关于对称加密

对称加密,也称为传统加密或单密钥加密,是20世纪70年代公钥密码产生之前唯一的
加密类型。
明文:原始的消息
密文:加密后的消息
加密:从明文到密文的变化过程
解密:从密文到明文的变化过程
密码编码学:研究各种加密方案(密码体制或密码)的领域称为密码编码学
密码分析学:不知道任何加密加密细节的条件下解密消息的技术
密码学:密码编码学和密码分析学统称为密码学

对称密码模型

下图为传统密码的简化模型:
在这里插入图片描述
对称加密方案有5个基本成分

  1. 明文:原始可理解的消息或数据,是算法的输入。
  2. 加密算法:加密算法对明文进行各种代替或变化。
  3. 密钥:加密算法的输入。密钥独立于明文和算法。算法根据所用的特定密钥而产生不同的输出。算法所用的确切代替和变化也依靠密钥。
  4. 密文:算法的输出,依赖于明文和密钥。
  5. 解密算法:加密算法的逆运算。输入密文和密钥,输出原始明文。

传统密码的安全使用需要满足的要求

  1. 加密算法必须足够强。即使敌人拥有一定数量的密文和产生这些密文的明文,也不能破译密文或发现密钥。
  2. 发送者和接收者必须在某种安全的形式下获得密钥并且必须保证密钥安全。

下图为对称密码体制模型:
在这里插入图片描述

密码编码学

密码编码学系统有3个独立特征:

  1. 转换明文为密文的运算类型。所有的加密算法都基于两个原理:代替和替换,代替是将明文中的每个元素(如位、字母或字母组等)映射成另一个元素;置换是将明文中的元素重新排列。上述运算的基本还要求是不允许有消息的丢失(即所有的运算时是可逆的)。大多数的密码体制,也称为乘积密码系统,都使用了多层代替和置换。
  2. 所用的密钥数。如果发送方和接收方使用相同的密钥,这种密码称为对称密码、单密钥密码、秘密钥密码或传统密码。如果收发双方使用不同的密钥,这种密钥称为非对称密码、双钥或者公钥密码。
  3. 处理明文的方法。分组密码每次处理输入的一组元素,相应的输出一组元素。流密码则连续地输入元素,每次输出一个元素。

密码分析学与穷举攻击

攻击密码系统的典型目标是恢复使用的密钥而不是仅仅恢复出单个密文对应的明文。攻击传统的密码体制有两种通用的方法:

  1. 密码分析学:密码分析学攻击依赖于算法的性质、明文的一般特征或某些明密文对。这总形式的攻击企图利用算法的特征来推导出特定的明文或使用的密钥。
    在这里插入图片描述
    如果一个密码体制满足条件:无论有多少可使用的密文,都不足以唯一地确定密文所对应的明文,则称该加密体制是无条件安全的
    除了一次一密之外,所有的加密算法都不是无条件安全的。因此,加密算法的使用者应挑选尽量满足以下标准的算法:
    (1)破译密码的代价超出密文信息的代价。
    (2)破译密码的时间超出密文信息的有效生命期。
    如果加密体制满足了上述两条标准的任意一条,则它是计算上安全的。
    对称密码体制的所有分析方法都利用了这样一个事实,明文的结构和模式在加密之后仍然保存下来,并能在密文中找到一些蛛丝马迹
  2. 穷举攻击:攻击者对一条密文尝试所有可能的密钥直到把它转换为可读的有意义的明文。平均而言,获得成功至少要尝试所有可能密钥的一半。

古典加密算法

所有加密技术都要用到两个基本模块:代替和替换。

代替技术

代替技术是将明文字母替换成其他字母、数字或符号的方法。如果把明文看成是二进制序列的话,那么代替就是用密文位串来替换明文位串。
Caeser(凯撒)密码:已知最早的替换密码,由Julius Caesar发明。它非常简单,就是对字母表中的每个字母,用它之后的第3个字母来替换,并且字母表可循环,即认为Z后的字母是A。
单表代替密码:Caeser密码仅有25种可能的密钥,容易受到穷举攻击,远不够安全。定义术语置换:有限元素的集合S的置换是S的所有元素的有序排列,且每个元素只出现一次。例如S={a,b,c},则S有六个置换:abc,acb,bac,bca,cab,cba。一般有n个元素的集合有n!个置换,因为第一个元素有那种选择方式,第二个有n-1种方式,以此下去得到结论。这种方法被称为单表代替密码,这是因为每条消息用一个字母表(给出明文字母到密文字母的映射)加密。
但是单表代替密码带有原始字母使用频率的一些统计学特征,也较容易被攻破。有两种主要的方法可以减少代替密码里明文结构在密文种的残留度:一种是明文种的多个字谜一起加密,另一种是采用多表代替密码。
Playfair密码:一种多字母代替密码,它将明文种的双字母音节作为一个单元并将其转换成密文的“双字母音节”。
Hill密码:一种多表代替密码,利用Hill算法。
多表代替加密:采用相关的单表代替规则表,密钥决定给定变换的具体规则。常见的有Vigenere密码和Vernam密码。Vernam运算基于二进制数据而非字母:该体制可以表述位下图:
在这里插入图片描述
参数说明:
在这里插入图片描述
加密过程:
在这里插入图片描述
解密过程:
在这里插入图片描述
一次一密:改进Vernam加密,加密时每一条消息都需要一个与其等长的新密钥,它产生的随机输出与明文没有任何统计关系。因为密文不包含明文的任何信息,所以无法可破。
一次一密实际使用中的难点:
(1)产生大规模随机密码有实际困难。
(2)密钥的分配和保护困难。

置换技术

到现在为止我们讨论的都是将明文字母代替位密文字母。与之极不相同的一种加密方法是对明文进行置换,这总密码称为置换密码。
栅栏置换:按照对角线的顺序写出明文,而按照顺序读出密文。
矩阵置换:把消息一行一行写成矩形块。然后按列读出,但是把列的次序打乱。列的次序即使算法的密钥。
在这里插入图片描述
多次置换:将已经置换的消息再次或多次置换。

转轮机

代替密码的多层加密原理。
在这里插入图片描述

隐写术

有两种方法可用来隐藏明文信息。隐写术,它可以隐藏信息的存在;而密码学则是通过对文本信息的不同转换来实现信息的对外不可读。下面是几种隐写术:
文本字词重新排列:在一整段文本中用每个单词的第一个字母连起开接可以拼出隐藏的消息。
字符标记:选择一些印刷体字母或者打字机打出的文本,用铅笔在其上写一遍。这些标记在一般场合辨认不出,除非在某个角度对着光看。
不可见墨水:不留痕迹的化学物质,除非满足一定条件(受热、浸水等)才可显现。
针刺:在某些字母上刺上小针孔,一般条件不易分辨,除非对着光。
打字机的色带校正:黑色色带上打印,打印后只有强光可见。

说明:该篇内容引用自《密码编码学与网络安全》

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

密码编码学与网络安全(2):对称密码之传统加密技术 的相关文章

  • 格密码学习,抽代基础学习(二)

    今天找到了一个比较新手友好的slides 结合lec1和学姐的笔记一起看 full rank lattice 满格 R n mathbb R n Rn的概念 n维度实数集 每个元素是n维向量 向量中的每个分量是实数 Z
  • openssl evp 对称加密(AES_ecb,ccb)

    openssl evp 对称加密 AES ecb ccb evp h 封装了openssl常用密码学工具 以下主要说对称加密的接口 1 如下使用 aes 256 ecb 模式的加密解密测试代码 unsigned char key 32 1
  • 2、隐私计算--安全多方计算

    目录 安全多方计算 安全多方计算的技术架构 安全挑战敌手模型 安全多方计算关键技术 安全多方计算主要特点 安全多方计算应用 安全多方计算与区块链 JUGO平台 参考 https blog csdn net w365904 article d
  • 【BingGPT对话记录】基于格的密码学简介

    格密码学是一种基于格 lattice 的数学结构的密码学分支 它具有抵抗量子计算攻击的特性 格是一个由线性无关向量生成的离散点集 可以用来描述许多复杂的几何和代数问题 格密码学的安全性通常建立在最坏情况下的难度假设上 即即使给定最优化算法
  • 今天我抓了个 HTTPS 的包

    之前写过一篇讲 HTTPS 的思想的文章 破玩意 用 HTTPS 传纸条 后来又写了篇用更凝练的语言总体描述了 HTTPS 的主干 叮咚 HTTPS 的分支和主干 想必通过这两篇文章 HTTPS 为什么要这么设计 以及它是用来解决什么问题的
  • Access Token(访问令牌)学习

    Access Token 访问令牌 是一种用于身份验证和授权的令牌 在软件开发中 访问令牌通常用于访问受限资源或执行特定操作 Access Token 通常由身份验证服务器颁发 以授权客户端应用程序代表用户访问受保护的资源 当用户进行身份验
  • 斯坦福密码学课程-笔记-02-Stream Ciphers流密码

    斯坦福密码学课程笔记 02 流密码 Stream Ciphers The One Time Pad Symmetric Ciphers definition The One Time Pad Vernam 1917 Information
  • 动手学区块链学习笔记(一):加密算法介绍

    引言 本文根据实验楼以及自己查询到的一些资料 文末给出 模拟了一下区块链从诞生到交易的整个过程 也算是弥补了一下之前区块链的一些缺失知识 哈希加密原理介绍 什么是比特币 比特币是一种加密货币 也是一种分布式数字货币 它的创建者使用匿名身份被
  • RSA简介

    什么是RSA RSA算法是应用最广泛的公钥密码算法 1977年 RSA算法由MIT的罗纳德 李维斯特 Ron Rivest 阿迪 萨莫尔 Adi Shamir 和伦纳德 阿德曼 Leonard Adleman 共同设计 于1978年正式发布
  • 区块链密码学学习笔记

    一 哈希算法 哈希函数是将任意长度的二进制明文通过算法处理映射为较短且固定长度的 二进制值 映射后的值也被称为哈希值 哈希值的数据唯一 且形式紧凑 即使只是变更明文中的一个字母 最终得到的哈希值也会发生变更 由于哈希算法本身的特点 任何人都
  • 密码学基础(一)——哈希算法

    一 常用密码学算法分类 哈希算法 哈希算法不可逆 包括 MD4 MD5 hash1 ripeMD160 SHA256 SHA3 Keccak256 国家标准SM3 国家密码管理局 加密 解密算法 加密解密算法可逆 但是必须要有秘钥 对称加密
  • 传统加密技术总结

    密码编码学与网络安全讨论两大领域 密码算法和协议 又可以分为4个主要的领域 对称加密 Symmetric encryption 用于加密任意大小的数据块或数据流的内容 消息 文件 加密密钥和口令 非对称加密 Asymmetric encry
  • 北大肖臻老师<<区块链技术>>笔记1

    课程的大纲 密码学基础 比特币的数据结构 共识协议和系统实现 挖矿算法和难度调整 比特币的脚本 软分叉和硬分叉 匿名和隐私保护 以太坊是后面的 首先是密码学基础的学习 crypto currency 虚拟货币 是不加密的 区块链上所有的教以
  • openssl hmac源码分析

    hmac 原理 HMAC 用于保护消息的完整性 它采用摘要算法对消息 填充以及秘密密钥进行混合 运算 在消息传输时 用户不仅传送消息本身 还传送 HMAC 值 接收方接收数据后也进 行 HMAC 运算 再比对 MAC 值是否一致 由于秘密密
  • EIGamal数字签名的实现(c++)——大三密码学实验

    实验原理 1 密钥产生 Alice要对一个消息签名 她选择一个大素数p和一个本原根g 选择一个秘密整数 并且计算 p g y 公开 x秘密保存 注 EIGamal签名方案的安全性在于x的保密性 由于离散对数学问题难解 很难由 p g y 确
  • 密码学概述

    一 密码学的起源与发展 密码学英文名称为Cryptography 密码学最为一门学科 是最近几十年开始迅速被人们重视和发展起来的 密码学往往与信息安全四个字精密的联系着 最早的密码学的 始祖 可以说是早在公元前几百年就已经出现了 当然 当时
  • 区块链Blockchain

    区块链Blockchain 区块链是分布式数据存储 点对点传输 共识机制 加密算法等计算机技术的新型应用模式 所谓共识机制是区块链系统中实现不同节点之间建立信任 获取权益的数学算法 狭义来讲 区块链是一种按照时间顺序将数据区块以顺序相连的方
  • CTF入门学习笔记——Crypto密码(古典密码)

    文章目录 CTF入门学习笔记 Crypto密码 古典密码 凯撒密码 看我回旋踢 摩斯密码 摩斯 维吉尼亚密码 Vigen re 栅栏密码 篱笆墙的影子 栅栏密码 篱笆墙的影子 猪圈密码 待补充 CTF入门学习笔记 Crypto密码 古典密码
  • 【密码学】破解维吉尼亚密码(C++代码实现)

    问题简述 维吉尼亚密码是使用一系列凯撒密码组成密码字母表的加密算法 属于多表密码的一种简单形式 在一个凯撒密码中 字母表中的每一字母都会作一定的偏移 例如偏移量为3时 A就转换为了D B转换为了E 而维吉尼亚密码则是由一些偏移量不同的凯撒密
  • 区块链中的哈希算法

    区块链中的密码学 密码学在区块链中的应用主要有两个 哈希算法与非对称加密算法 这次主要对哈希算法进行详细的说明 哈希算法 哈希算法的特点有 1 输入可以为任意大小的字符串 2 产生固定大小的输出 3 可以在合理的时间内算出输出值 若要满足密

随机推荐

  • 【2023最全最新教程】RobotFramework的介绍与环境搭建(超详细~)

    本文使用的环境 win10系统 python3 6 一 RobotFramework介绍 1 1 框架基本介绍 1 Robot Framework 简称RF 是基于python编写的 开源的 功能自动化框架 2 RF是一款关键字驱动的测试框
  • STM32外设芯片驱动学习记录 —— (一) BH1750光照传感器驱动开发

    目录 一 芯片介绍 二 Datasheet解读 1 硬件说明 2 寄存器说明 3 通信过程 三 驱动代码编写 1 软件I2C驱动 2 BH1750芯片驱动函数 总结 一 芯片介绍 BH1750是16位数字输出型 环境光强度传感器集成电路 使
  • VanillaNet实战:使用VanillaNet实现图像分类(二)

    文章目录 训练部分 导入项目使用的库 设置随机因子 设置全局参数 图像预处理与增强 读取数据 设置Loss 设置模型 设置优化器和学习率调整算法 设置混合精度 DP多卡 EMA 定义训练和验证函数 训练函数 验证函数 调用训练和验证方法 运
  • 1.1python中print的使用方法

    1 对于初学者开始学习python 首先应该学会的就是对python中的print用法 学习一个函数 首先需要知道该函数的使用方法 使用参数以及使用后的结果 本文以pycharm解释器对python中函数print 做出以下解释 1 打开p
  • 赣榆高中2021高考成绩查询,赣榆中考成绩查询2021

    2021赣榆中考成绩查询时间方法 91中考网消息 2021年赣榆中考即将开始 在中考后 广大考生最关心的无疑就是中考成绩查询方法 赣榆中考成绩什么时候公布 根据往年经验 小编收集整理了2021赣榆中考成绩查询时间方法 具体如下 2021赣榆
  • 数字黑洞 C语言

    题目 给定任一个各位数字不完全相同的 4 位正整数 如果我们先把 4 个数字按非递增排序 再按非递减排序 然后用第 1 个数字减第 2 个数字 将得到一个新的数字 一直重复这样做 我们很快会停在有 数字黑洞 之称的 6174 这个神奇的数字
  • java: javamail 1.6.2 using jdk 19

    版权所有 2022 涂聚文有限公司 许可信息查看 描述 数据库 Ms SQL server 2019 IDE Eclipse IDE for Enterprise Java and Web Developers 2021 09 OS Win
  • Vue中打包压缩插件:compression-webpack-plugin

    1 http gzip 介绍 Encoding type gzip GNU zip 压缩格式 也是互联网上最流行的压缩格式 deflate zlib deflate 压缩格式 流行程度仅次于 gzip br 一种专门为 HTTP 优化的新压
  • Jmeter集合点

    一 集合点简介 1 我们怎么实现真正的并发 并发 指的是系统中真正操作业务的用户 在jmeter中 称为线程数 jmeter中 各个线程 用户 在进行业务操作中的顺序存在一定的随机性 2 集合点的目的 让各个线程 用户 步调一致 对系统进行
  • 小记跨域相关问题

    注解 CrossOrigin 支持跨域 跨域 不同的域名A 访问 域名B 的数据就是跨域 端口不同 也是跨域 loalhost 18081 gt localhost 18082 协议不同 也是跨域 域名不同 也是跨域 协议一直 端口一致 域
  • Verilog小心得

    一 概念 阻塞赋值 在always过程块中 当存在多条阻塞赋值语句时 在前面的赋值语句没有完成之前 后面的语句就不能被执行 阻塞赋值语句顺序执行 就像被阻塞了一样 因此被称为阻塞赋值 非阻塞赋值 lt 在always过程块中 当存在多条阻塞
  • Golang——从入门到放弃

    文章目录 一 golang 简介 1 go 语言特点 2 go 语言应用领域 3 使用 go 语言的公司有哪些 二 安装 golang 1 golang 下载安装 2 配置环境变量 三 golang 开发工具 1 安装 VSCode 2 下
  • C++ template的使用

    1 template的使用 C 的高级玩法 当然包含了模板 模板 template 是实现代码重用机制的一种工具 它可以实现类型参数化 把类型定义为参数 模板元编程 从而实现了真正的代码可重用性 模板是用来批量生成功能和形式都几乎相同的代码
  • 基于tensorflow2.3.0的手写数字识别案例

    本程序使用mnist训练数据集进行训练得出模型 再利用mnist测试数据集进行验证 得出模型的实际效果 1 引入运行需要的环境 import tensorflow as tf from tensorflow import keras fro
  • python中 返回json 字符串时,出现 转义字符\u4e09

    1 问题 接口中 返回的json 中出现 u4e09 的 Unicode 转义字符出现在字符串中 2 原因 JSON 格式要求字符串中的非 ASCII 字符必须转义为 Unicode 序列 3 解决方法 将 JSON 字符串中的转义字符还原
  • C++程序设计3版谭浩强(读书笔记)-1初步知识

    历史知识大概是贝尔实验室C语言广泛被大众所接受 但是随着软件变大 C跟不上需求 C 登上历史舞台 C 1 0增加了类 C 2 0增加了类的多继承 C 3 0增加了模板 C 4 0增加了异常处理 命名空间 运行时类型识别 RTTI 然后第一次
  • oracle 一维数转二维数组,js将一维数组转化为二维数组

    遇到的问题 后端返回的是一组一维数组 但是需要展示的格式是二维数组 常见的场景举例 后台返回10个长度的数组 需要分成3个一组展示在banner上 例 1 2 3 4 5 6 7 8 9 10 gt 1 2 3 4 5 6 7 8 9 10
  • 下载vimeo视频_使用Vimeo的API和Slim构建基本的视频搜索应用

    下载vimeo视频 In this tutorial you ll get to know the basics of the Vimeo API With it you can fetch information on a specifi
  • git本地分支修改名称

    给一个git分支改名的方法很简单 如果对于分支不是当前分支 可以使用下面代码 git branch m 原分支名 新分支名 如果是当前 那么可以使用加上新名字 git branch m 新分支名称
  • 密码编码学与网络安全(2):对称密码之传统加密技术

    对称密码之传统加密技术 关于对称加密 对称密码模型 密码编码学 密码分析学与穷举攻击 古典加密算法 代替技术 置换技术 转轮机 隐写术 关于对称加密 对称加密 也称为传统加密或单密钥加密 是20世纪70年代公钥密码产生之前唯一的 加密类型