密码学知识点整理

2023-10-27

序列(流)密码的特点:加解密速度快,无错误扩散。
分组(块)密码的特点:应用模式灵活多样,组内有错误扩散。


在传统观念里,往往仅注重信息的秘密性;但近代人们认为,信息的真实性、完整性以及不可否认性,在应用上往往比秘密性更重要。

密钥的生命周期:

密钥产生:应该排除弱密钥和使密钥具有随机性;另外,密钥还须安全封装和导入到安全介质中。
证书签发:证书是将用户、密钥、以及密钥生存期等绑定在一起的合适方式,证书需由可信机关签发。
证书检验:这是为了验证证书是否合法、是否过期。
密钥使用:这是密钥应有的自然功能。
密钥吊销:当密钥过期或安全性受到怀疑时必须这样做。
密钥更新:这是维持系统周转的必然需要。

一个安全的非对称密钥密码体制,可以达成下列功能
(1)保护信息机密性:任何人均可将明文加密成密文,此后只有拥有解密密钥的人,才能解密。
(2)自身的密钥分配问题容易。
(3)可以用于对称密钥密码体制的密钥分配。
(4)直接认证发送方的身份。
(5)可达成不可否认功能
公开密钥密码体制虽具有许多优点,但仍然有缺点存在。其受人批评最多的方面,即在于加解密运算规模巨大、且速度缓慢。

在达成信息的真实性、完整性及不可否认性方面,利用基于公开密钥密码体制思想的数字签名;

在信息的秘密性方面,仍以对称密钥密码体制来达成,但是利用公开密钥密码体制解决其密钥分配问题。

分组密码安全性的一般设计原则:

分组长度n要足够大,以防止对明文的穷搜攻击奏效。
密钥空间K要足够大,以防止对密钥的穷搜攻击奏效。
混乱:要使密文和明文以及密钥之间的依赖关系相当复杂,以至于这种依赖性对密码分析者来说是无法利用的。这即要求密文所依赖于明文和密钥的函数关系是高度非线性的、且处处匀强的。
扩散:要使密钥的每一位数字影响密文的许多位数字以防止对密钥进行逐段破译,而且明文的每一位数字也应影响密文的许多位数字以便隐蔽明文数字的统计特性。


典型分组密码介绍
美国数据加密标准(DES)
欧洲国际数据加密算法(IDEA)
美国高级加密标准(AES)

DES使用一个长为56比特的密钥,每次对一个长为64比特的明文组进行加密,得到的密文组长仍为64比特。即M=F264,C= F264,K= F256 。

每个S-盒Si(i=1,2,,8)均以6bit作为输入、而输出4bit。

用S-盒实现小块的非线性变换,达到混乱目的;
用置换P实现大块的线性变换,达到扩散目的。

DES安全性完全依赖于所用的密钥。

DES的编码过程可使每个密文比特都是所有明文比特和所有密钥比特的复杂混合函数,而要达到这一要求至少需要DES的迭代:5轮。

DES的攻击方法:目前攻击DES的主要方法有时间-空间权衡攻击、差分攻击、线性攻击和相关密钥攻击等方法,在这些攻击方法中,线性攻击方法是最有效的一种方法。


IDEA使用一个长为128比特的密钥,每次对一个长为64比特的明文组进行加密,得到的密文组长仍为64比特。即=F264,C= F264,K= F2128 。

AES评估准则:
安全性;
代价;
算法和实现特性。

典型分组密码介绍——AES
RIJNDAEL使用一个长为32*Nk比特的密钥,每次对一个长为32*Nb比特的明文组进行加密,得到的密文组长仍为32*Nb比特。即M=F232*Nb ,C=F232*Nb,K=F232*Nk。

Hash函数又称为杂凑函数,一般用于对消息进行摘要,这摘要可用于保证消息的完整性和数字签名。


分组密码常见的工作模式:

分组模式
电码本(ECB―Electronic Code Book)模式:对给定的密钥K,集合{(M, C)|C=AESK(M), MF2128}中一共有2128个明密文对,相当于一个译码本,上述工作模式理论上可按查此译码本的思想实现,故名。
密文分组链接(CBC―Cipher Block Chaining)模式:可见,第i组密文Ci不但与当前的明文组Mi有关,还与前面一组密文Ci-1有关,从而Ci历史地与M1,M2,,Mi都有关。
CBC模式克服了ECB模式存在的两个缺陷,但该模式有错误扩散。

CBC模式较ECB模式慢、且需要另加存储器和分组的异或运算,但安全性得到加强;原则上两者都适合上述应用:小规格数据组(块)应用ECB、大规格数据组(块)应用CBC 。

序列模式
输出反馈(OFB―Output feedback)模式:
计数器(CTR―Counter Register)模式:
OFB、 CTR模式具有同步序列密码优点:无错误扩散。
密文反馈(CFB―Cipher Feedback)模式:
CFB模式存在有限的错误扩散:当传输的密文块Ci出现1 bit错误时,解密的明文块Mi也有1bit错误。
分组密码的序列应用模式有可能效率较低它们(包括其它序列密码)一般用于数据网中较低层次、且允许有一定延时的系统。
具体地,在字符为单元的加密中多选用CFB模式,如终端―主机或客户端―网络服务器之间的会话加密;而OFB、 CTR模式常用于高度同步的、不容差错传播的系统,如卫星通信中的加密。


加密算法的设计
设计加密算法的思想往往是:构造一个称为某种网络的固定结构,然后以该种网络的若干次迭代来对明文及密钥数据提供必要的混乱和扩散。

一个完整的网络应使每一输入比特经其变换以后都可能使形态改变至少一次。此外,按照Feistel构造中m与n是否相等可把Feistel网络分为平衡与非平衡的。
最基本的要素:S-盒、P-置换、以及结构(轮)函数

S-盒的设计准则:
非线性度
差分均匀性
代数次数及项数分布
完全性和雪崩效应. 称S满足雪崩效应,是指改变其输入的1个比特,大约有一半输出比特改变。
扩散特性
没有陷门

轮函数的设计准则:
安全性.
速度
灵活性.

轮函数的构造方法:
加法、减法和异或
乘法
固定循环/移位
依赖于数据的循环

现有的密码算法的轮函数可以分为两种,
一种是有S-盒的,例如DES、E2、Rijndael等;
另一种是没有S-盒的,例如IDEA、RC6等。

密钥扩展算法的设计
对于一般的迭代分组密码,都有一个由种子密钥生成子密钥的算法,称为密钥扩展算法(又称为密钥扩展方案)。

密钥扩展算法的设计应遵循下面几个准则:
实现简单.
速度.
不存在简单关系
种子密钥的所有比特对每个子密钥比特的影响应大致相同
从一些子密钥比特获得其它的子密钥(或种子密钥)比特在计算上是“难”的.
没有弱密钥.


差分攻击的基本思想是通过分析明文对的差值对密文对的差值的影响来恢复某些密钥比特

公钥密码(PKC)
典型PKC介绍
RSA体制
Merkle-Hellman体制
Rabin体制
ElGamal体制
钥基础设施(简称PKI)从概念上讲,PKI就是利用公钥密码理论和技术建立的提供安全服务的基础设施。


在使用公钥密码的系统中,一个用户的公钥是应该传递或广播给其他用户的;但如果只是直截了当地这样做会产生一个被冒充欺骗的问题:
用户C可能向用户B声称自己是用户A而让其得到一个公钥,用户B使用这个自己以为是用户A的公钥、却原来是在跟用户C秘密通信。
——避免被这种欺骗的较好办法是引进公众信任的第三方:签证机关(CA),并由CA颁发由其签名的所谓公钥证书。(当然整个系统建设之初应公开CA所用的一个签名-验证方法)

签证机关(CA) 人们成立一个使用某PKC体制的证书签发中心(公众信任机关)。


一个用户首先向CA提出申请,CA在验明其法性以后予以登记,并给其生成此种PKC算法的一对密钥,其中解密密钥存放到安全介质(如IC卡或USB-Key等)中交给用户妥善保管、而将加密密钥与对应用户的身份号ID一起做成证书发给用户或象电话号码簿一样列表后在一个公共服务器上公布。
(“证书”或“列表”须经CA签名以防伪造!)

一般会话密钥都由KDC来产生。

消息认证码是指消息被一密钥控制的公开函数作用后产生的、用作认证符的、固定长度的数值,也称为密码校验和。此时需要通信双方A和B共享一密钥K。设A欲发送给B的消息是M,A首先计算MAC= CK(M) ,其中CK是密钥控制的公开函数;然后向B发送M||MAC,B收到后做与A相同的计算,求得一新MAC,并与收到的MAC做比较

MAC函数与加密算法类似,不同之处为MAC函数不必是可逆的,因此与加密算法相比更不易被攻破。
上述过程中,由于消息本身在发送过程中是明文形式,所以这一过程只提供认证性而未提供保密性。为提供保密性,可在MAC函数以后(后面图(a))或以前(后面图(b))进行一次加密,而且加密密钥也需被收发双方共享。

Hash函数亦称杂凑函数或散列函数,它的作用是:由任意长度的消息形成某一固定长度的消息摘要(Message Digest)。
很多将Hash函数用于构造MAC的方法,HMAC是其中著名的一个hash函数创新性设计思想—MD4(MD是Message digest一词首字母的缩写)
MD5算法,按512位的分组进行处理,输出(摘要)的长度为128比特
安全Hash算法SHA(128位)1995年4月17日公布了修改后的版本SHA-1(160位)。
SHA-1限定输入消息M的长度|M|<264,也是按512位的分组进行处理,输出(摘要)的长度为160 比特
RIPEMD-160也限定输入消息M的长度|M|<264,且按512位的分组进行处理,输出(摘要)的长度为160 比特。

 

转载于:https://www.cnblogs.com/christychang/p/6192936.html

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

密码学知识点整理 的相关文章

  • Docker客户端连接Docker Daemon的方式

    Docker为C S架构 服务端为docker daemon 客户端为docker service 支持本地unix socket域套接字通信与远程socket通信 默认为本地unix socket通信 要支持远程客户端访问需要做如下设置
  • 实验吧-密码学-奇怪的短信(九键密码)

    短信里的一段密文 335321414374744361715332 一般来说是用手机接收短信的 于是可能是手机上的九键 将密文两个两个分隔开 33 53 21 41 43 74 74 43 61 71 53 32 然后对应着拼音九键来找出对
  • Codeup(云效)手把手教部署SpringCloud项目到私有主机

    博主介绍 小黄鸭技术 擅长领域 Java 实用工具 运维 系列专栏 开发工具 Java之路 八股文之路 如果文章写作时有错误的地方 请各位大佬指正 一起进步 欢迎大家点赞 收藏 评论 支持博主 开通云效 上传代码仓库 配置SSH公钥或者是H
  • 英语学习对程序员得重要性!

    程序世界的主导语言是英文 编写程序时使用的开发文档和开发工具的帮助文件离不开英文 了解业界的最新动向 阅读技术文章离不开英文 同世界各地编程高手往往也离不开英文 提高英文水平 能大大促进一个程序员的发展 让你有更多的资源 在此 个人总结了几
  • tomcat没有日志输出--解决办法

    程序没有问题 只是控制台信息卡 感觉像程序休眠了一样 然后在控制台点backspace或是enter 程序恢复正常 控制台日志正常输出 静态文件访问可以 解决办法 转载于 https blog 51cto com 13693838 2398
  • CTF入门学习笔记——Crypto密码(古典密码)

    文章目录 CTF入门学习笔记 Crypto密码 古典密码 凯撒密码 看我回旋踢 摩斯密码 摩斯 维吉尼亚密码 Vigen re 栅栏密码 篱笆墙的影子 栅栏密码 篱笆墙的影子 猪圈密码 待补充 CTF入门学习笔记 Crypto密码 古典密码
  • 设计模式三: 代理模式(Proxy) -- JDK的实现方式

    简介 代理模式属于行为型模式的一种 控制对其他对象的访问 起到中介作用 代理模式核心角色 真实角色 代理角色 按实现方式不同分为静态代理和动态代理两种 意图 控制对其它对象的访问 类图 实现 JDK自带了Proxy的实现 下面我们先使用JD
  • 教你利用IBM的开发手册

    在IBM AIX下做开发的不少人一直都不知道IBM其实已经提供了详尽的开发文档及手册供开发人员使用 很多人仍然使用很原始的方式 例如在GOOGLE中搜索 或者买本手册型的书放在边上 更有甚者直接记在脑子里 这算是相当聪明的了 但是 有许多与
  • JavaScript常见调试方法

    编辑导语 javascript调试方法 常见使用alert和console来定位出错和输出的结果是否是想要的 在chrome中 还可以使用断点来看运行的情况等 本文介绍了比较全面的调试方法 你知道console table console
  • [转] 解读IntelliJ IDEA的优缺点

    昨天去TW参加了pre class 就是类似于新员工入职前的培训 有很多很cool的东西 给我印象最深的就是IntelliJ IDEA了 coder么 刚才在网上搜了搜 发现很少有她的介绍资料 所以贴过来一个让大家看看 文章中有一句话值得大
  • CTF BugKu平台——Crypto篇刷题记录(后续更新)

    CTF BugKu平台 Crypto篇 前言 抄错的字符 聪明的小羊 ok lt gt 把猪困在猪圈里 你喜欢下棋吗 小山丘的秘密 EN 气泡 你以为是md5吗 Math English easy crypto 黄道十二官 一段新闻 7 1
  • 将onnx的静态batch改为动态batch及修改输入输出层的名称

    文章目录 背景 操作 修改输入输出层 修改输入输出层名称 完整代码 背景 在模型的部署中 为了高效利用硬件算力 常常会需要将多个输入组成一个batch同时输入网络进行推理 这个batch的大小根据系统的负载或者摄像头的路数时刻在变化 因此网
  • python中,获取字符串的长度

    说明 与其他的语言一样 有时候需要查看或者说计算字符串的长度 在此记录下python中通过哪个函数实现 操作过程 1 通过len 函数返回字符串的长度 gt gt gt text python gt gt gt len text 6 gt
  • 使用Idea更新数据库表的数据

    tags IDEA 我们在做案例的时候 经常需要改变数据表中的数据来进行简单测试 那我们在Idea下是如何修改数据表的数据的呢 我们可以看下面的图片 只要选择updata就行了 后面再按自动提交的标志 如果您觉得这篇文章帮助到了您 可以给作
  • visual studio2019(C#/.NET)安装教程

    前言 好久没有跟新版本了 博主还用的2017 看到最新的2019功能还是很强大的 版本可能越高越好 所以博主写了一个详细的博客 希望可以帮助到大家 一 visual studio 2019 下载 1 下载地址 visual studio官方
  • Clion中单行注释、多行注释及取消注释快捷键示例

    添加注释 单行注释 光标定位到指定代码行 Ctrl 多行注释 光标选定多行代码 Ctrl shift 取消注释 取消注释与添加注释快捷键相同 单行注释 光标定位到指定代码行 Ctrl 多行注释 光标定位到多行注释中 或选定全部被注释的内容
  • BeyondCompare破解版的下载安装

    目前Beyond Compare的版本已经支持到4 2的release版本 官网 https www scootersoftware com download php 支持 windows mac linux版本 这里我们选择的mac版本
  • Obsidian 入门使用手册

    文章目录 一 Obsidian 入门 1 1 什么是 Obsidian 1 2 安装 Obsidian 二 Obsidian 配置 2 1 创建第一个笔记 2 2 设置界面语言使用中文 2 3 主题 三 小结 一 Obsidian 入门 1
  • 【神器】wakatime代码时间追踪工具

    文章目录 wakatime简介 支持的IDE 安装步骤 API文档 插件费用 写在最后 wakatime简介 wakatime就是一个IDE插件 一个代码时间追踪工具 可自动获取码编码时长和度量指标 以产
  • 「Java开发指南」MyEclipse如何支持Spring Scaffolding?(一)

    MyEclipse v2023 1 2离线版下载 1 使用Spring的Scaffolding应用程序 支持Spring的 MyEclipse 目标之一是帮助开发人员从零开始编写更少的代码 并更广泛地使用代码生成 MyEclipse提供了丰

随机推荐

  • openGauss学习笔记-12 openGauss 简单数据管理-UPDATE语句

    文章目录 openGauss学习笔记 12 openGauss 简单数据管理 UPDATE语句 12 1 语法格式 12 2 参数说明 12 3 示例 openGauss学习笔记 12 openGauss 简单数据管理 UPDATE语句 修
  • ubuntu彻底卸载ffmpeg

    彻底卸载ffmpeg 查看ffmpeg sudo dpkg l grep ffmpeg 卸载 sudo find grep w ffmpeg sudo xargs rm r f sudo apt get purge remove ffmpe
  • OSI七层模型与TCP\IP协议

    目录 一 分层思想 二 OSI参考模型 三 TCP IP参考模型 四 TCP IP协议簇的组成 五 数据封装与解封装过程 一 分层思想 1 为什么要分层 很多不同的厂家生产各种型号的计算机 它们运行完全不同的操作系统 但 T C P I P
  • 极度简洁Ubuntu/wsl+cuda+pytorch/TensorFlow深度学习开发环境搭建

    安装CUDA wget https developer download nvidia com compute cuda 11 7 0 local installers cuda 11 7 0 515 43 04 linux run sud
  • 使用opencv时,cmake 编译,CMake Error at CMakeLists.txt:15 (find_package): 报错问题解决

    cmake时 报错CMake Error at CMakeLists txt 15 find package By not providing FindOpenCV cmake in CMAKE MODULE PATH this proje
  • electron-release-server服务器搭建遇坑记

    基础配置来自这里 不过需要另外安装一些依赖 以防出现下面的问题 sudo bower install allow root 会安装下载一堆文件 如一些静态文件js css等 npm install g grunt cli npm insta
  • git lfs linux,Git LFS 操作指南

    Gitee gitee com 已支持 Git LFS 功能 目前该功能针对付费企业开放 Git LFS 简介 Git LFS Large File Storage 大文件存储 是 Github 开发的一个 Git 的扩展 用于实现 Git
  • Node.js安装教程及其简介

    目录 Node js简介 Node js安装教程 案例 步骤一 引入 required 模块 步骤二 创建服务器 分析Node js 的 HTTP 服务器 Node js简介 本质 服务端的JS 引入 required 模块 我们可以使用
  • Java中PrintWriter、BufferedWriter以及BufferredReader基本使用详解

    PrintWriter的使用 PrintWriter 是具有自动行刷新的缓冲字符输出流 这是一个高级流 所谓的自动行刷新 意思就是说 在构造函数中指定autoFlush的值为true时 则 println printf 或 format 方
  • 测试用例_场景法

    场景法 一 应用场合 主要用于测试软件的业务流程和业务逻辑 是一种基于软件业务的测试方法 测试人员把自己当成最终用户 尽可能真实的模拟用于在使用该软件时的各种情景 重点模拟两类操作 模拟用户正确的业务操作流程 验证软件的业务功能是否能够正确
  • 智能车摄像头三轮PID参数调节

    代码已上传CSDN 包含摄像头和PID控制 设置了VIP可取这个小门槛 有兴趣可以点击下方链接自取哈 https download csdn net download weixin 53129688 87714428https downlo
  • 3 个技巧教你轻松查看多开模拟器的端口号~

    此文章来源于项目官方公众号 AirtestProject 版权声明 允许转载 但转载必须保留原链接 请勿用作商业或者非法用途 前言 我们都知道 连接模拟器设备的字符串里 需要填上各个模拟器的端口号 比如雷电模拟器的端口号为5554 auto
  • jsp简单页面计数器

    在制作站点计数器时 如果频繁的访问数数库 比如象哪种每增加一人 便写入数据库或文件的作法 当你的站点有很大的访问量时 必然会影响性能 通常的做法有两种 一是启动一个线程定时写入访问量 二是先在内存中保存访问量 只有当访问量达到一定的数量 比
  • 797. 所有可能的路径

    797 所有可能的路径 难度中等154 给你一个有 n 个节点的 有向无环图 DAG 请你找出所有从节点 0 到节点 n 1 的路径并输出 不要求按特定顺序 二维数组的第 i 个数组中的单元都表示有向图中 i 号节点所能到达的下一些节点 空
  • 如何垂直居中一个浮动元素?

    问题网址 http bbs daxiangclass com thread 163 htm 如何垂直居中一个浮动元素 方法一 已经知道元素高宽 子盒子 div1 width 200px height 200px position absol
  • [Python]网络爬虫(十):一个爬虫的诞生全过程(以山东大学绩点运算为例)...

    先来说一下我们学校的网站 http jwxt sdu edu cn 7777 zhxt bks zhxt bks html 查询成绩需要登录 然后显示各学科成绩 但是只显示成绩而没有绩点 也就是加权平均分 显然这样手动计算绩点是一件非常麻烦
  • android studio 中JAVA文件提示android.support.v7.app.actionbaractivity is deprecated怎样处理?

    出这个提示的地方有写解决办法呀 android support v7 app ActionBarActivity is deprecated use AppCompatActivity instead 意思是 ActionBarActivi
  • 文档工程师

    想做需求工程师 不想做开发了 行不行 请给些意见 悬赏 5 发布时间 2008 06 21 提问人 huihui2525 初级程序员 本人从事软件开发工作1年多 技术上一般般 我是做j2ee的 现在感觉越来越觉得不爱做开发了 我本人性格比较
  • [429]python下安装mayavi

    Mayavi基于Python作为VTK的载体在三维图像的渲染和交互操作方面具有很多优势 最近分析数据的混沌的状态时需要在四维层面上表现数据的效果 首先在matlab tecplot和origin试验了一番 可以说他们都可以实现 但在渲染效果
  • 密码学知识点整理

    序列 流 密码的特点 加解密速度快 无错误扩散 分组 块 密码的特点 应用模式灵活多样 组内有错误扩散 在传统观念里 往往仅注重信息的秘密性 但近代人们认为 信息的真实性 完整性以及不可否认性 在应用上往往比秘密性更重要 密钥的生命周期 密