现代密码学-密码学概论与基本知识

2023-11-17

目录

简介

密码学发展简史

创建

发展阶段

古典密码时期

近代密码时期

现代密码时期

密码主要功能

机密性

完整性

认证性

不可否认性

密码系统的组成

密码分析学

定义

密码攻击类型

针对对称密码体制

针对对称密码体制

常用方法

密码体制的安全性

无条件安全性

计算安全性

可证明安全性

思维导图

传统密码

对称密码

非对称密码

哈希函数与消息认证

数字签名

公钥管理

参考


简介

本文或本专栏针对现代密码学,传统密码有提及,但不会深入,想深入了解,请移步其他作者的专栏。算法没有自己实现,基本是采用Go语言去调库,感兴趣的读者请自行阅读crypto等标准库源代码。

密码学发展简史

创建

1949年,Shannon发表了“保密系统的通信理论(Communication Theory of Secrecy Systems)”一文,为密码学的发展奠定了坚实的理论基础,此后的密码技术才真正称得上密码学。提出了保密系统的数学模型、随机密码、纯密码、完善保密性、理想保密系统、唯一解距离、理论保密性和实际保密性等重要概念,并提出评价保密系统的5条标准,即保密度、密钥量、加密操作的复杂性、误差传播和消息扩展。(第一次飞跃)

1976年后,美国数据加密标准(DES)的公布使密码学的研究公开,密码学得到了迅速发展。(里程碑

1976年,DiffeHellman发表了《密码学的新方向》,提出了一种新的密码设计思想,从而开创了公钥密码学的新纪元。(第二次飞跃
1978年由RivestShamireAdleman首先提出第一个实用的公钥密码体制RSA,使公钥密码的研究进入了快速发展阶段。(里程碑

发展阶段

密码学发展大致分为三个阶段:

前两个阶段又称为传统密码。

古典密码时期

    起始时间:从古代到19世纪末,长达几千年。
    技术工具:手工。
    通信手段:信使。
    密码体制:纸、笔或者简单器械实现的代换置换,是一种艺术(富有创造性的方式、方法)。
    典型密码:凯撒密码维吉尼亚密码等。

近代密码时期

    起始时间:从20世纪初到20世纪50年代,即一战及二战时期。
    技术工具:机械设备。
    通信手段:电报。
    密码体制:手工或电动机械实现复杂的代换置换,仍是一门艺术。
    典型密码:Vernam密码、转轮密码等。

现代密码时期

    起始时间:从1949年至今。
    技术工具:计算机。(针对二进制的比特位,而不是字符)
    通信手段:无线通信、有线通信、计算网络等。
    密码体制:对称密码(分组密码、序列密码)和非对称密码(公钥密码),有坚实的数学理论基础,成为一门科学。
    典型密码:DESAES、RC4、RSA、SHA等。

密码主要功能

机密性

-我与你说话时,别人能不能偷听?

-别人偷听到了能不能听懂?

机密性是指保证信息不泄露给非授权的用户或实体,确保存储的信息和传输的信息仅能被授权的各方得到,而非授权用户即使得到信息也无法知晓信息内容,不能使用。

完整性

-收到的传真不太清楚?
-传送过程过程中别人篡改过没有?

完整性是指信息未经授权不能进行改变的特征,维护信息的一致性,即信息在生成、传输、存储和使用过程中不应发生人为或非人为的非授权篡改(插入、替换、删除、重排序等),如果发生,能够及时发现。

认证性

-我不认识你!
-你是谁?
-我怎么相信你就是你?
-要是别人冒充你怎么办?

    认证性是指确保一个信息的来源或源本身被正确地标识,同时确保该标识的真实性,分为实体认证和消息认证。
    消息认证是指能向接收方保证该信息确实来自于它所宣称的源。
    实体认证是指参与信息处理的实体是可信的,即每个实体的确是它所宣称的那个实体,使得任何其它实体不能假冒这个实体。

不可否认性

-我收到货后,不想付款,想抵赖,怎么样?
-我将钱寄给你后,你不给发货,想抵赖,如何?

不可否认性是防止发送方或接收方抵赖所传输的信息,要求无论发送方还是接收方都不能抵赖所进行的行为。因此,当发送方发送一个信息时,接收方能证实该信息的确是由所宣称的发送方发来的;当接收方收到一个信息时,发送方能够证实该信息的确送到了指定的接收方。

密码系统的组成

一个密码系统(System)是由明文(Plaintext)、密文(Ciphertext)、密钥(Key)、加密算法(Encryption Algorithm)和解密算法(Decryption Algorithm)五部分组成的,即s={M,C,K,E,D}。

  • 信息的原始形式称为明文。
  • 明文经过编码变换所生成的称为密文。
  • 密钥是指控制明文与密文之间相互变换的,分为加密密钥解密密钥
  • 对明文进行编码变换生成密文的过程称为加密,编码的规则称为加密算法。
  • 将密文恢复出明文的过程称为解密,恢复的规则称为解密算法。
密码系统关系图

密码分析学

定义

研究如何分析或破解各种密码编码体制的一门科学。密码分析俗称为密码破译,是指在密码通信过程中,非授权者在不知道解密密钥的条件下对密文进行分析,试图得到明文或密钥的过程。

密码攻击类型

针对对称密码体制

这五种攻击的类型通常是依次增强的,抵御这五种类型的攻击是密码算法的基本要求。

惟密文攻击(Ciphertext Only Attack)

密码分析者除了拥有截获的密文外(密码算法是公开的,以下同),没有其它可以利用的信息。密码分析者的任务是恢复尽可能多的明文,或者最好能推算出解密密钥,这样就很容易解出被加密的信息。这种攻击的方法至少可采用穷举搜索法,即对截获一定数量的密文依次用所有的密钥尝试,直到得到有意义的明文。在这种情况下进行密码破译是最困难的,经不起这种攻击的密码体制被认为是完全不安全的。(仅仅搭线窃听

已知明文攻击(Known Plaintext Attack)

密码分析者不仅掌握了相当数量的密文,还有一些已知的明-密文对可供利用。密码分析者的任务就是用密文信息推导出解密密钥或导出一个替代算法,此算法可以对所获得的密文恢复出相应的明文。

对于现代密码体制的基本要求:不仅要经受得住惟密文攻击,而且要经受得住已知明文攻击。(有内奸

选择明文攻击(Chosen Plaintext Attack)

密码分析者不仅能够获得一定数量的明-密文对,还可以选择任何明文并在使用同一未知密钥的情况下能得到相应的密文。这种情况往往是密码分析者通过某种手段暂时控制加密机。(暂时控制加密机

选择密文攻击(Chosen Ciphertext Attack)

密码分析者能选择不同被加密的密文,并还可得到对应的明文,密码分析者的任务是推出密钥及其它密文对应的明文。

这种情况往往是密码分析者通过某种手段暂时控制加密机和解密机。(暂时控制解密机

选择文本攻击(Chosen Text Attack)

它是选择明文攻击和选择密文攻击的组合(暂时控制加密机和解密机)。

针对对称密码体制

惟密钥攻击

攻击者仅知道签名者的公钥

已知消息攻击

攻击者可以获得一些消息和相应的权力,但没有选择的权力。

一般选择消息攻击

攻击者在知道签名者的公钥之前一次性选择所选择获得消息及其签名,即攻击者选择消息与签名者无关。

特殊选择消息攻击

攻击者在知道签名者的公钥之后一次性选择所获得消息及其签名,即攻击者选择消息与签名者有关。

常用方法

穷举攻击

密码分析者用试遍所有密钥的方法来破译密码。穷举攻击所花费的时间等于尝试次数乘以一次解密(加密)所需时间。(一般会有常用密码本,所以大家要常换密码,密码不要太简单呦~)

当解密(加密)算法的复杂性增大时,完成一次解密(加密)所需的时间也增大,从而使穷举攻击的时间也增加。(这也增加合法用户使用密码系统的计算量)

结论:抵御穷举攻击最好方法是有足够密钥空间

统计分析攻击

密码分析者通过分析密文和明文的统计规律来破译密码。统计分析攻击在历史上为破译做出过极大的贡献,大多数传统密码都可以通过统计分析的方法来破译。

结论:抵御统计分析攻击的方法是使明文的统计特征尽可能地不带入密文。如果密文不带有明文的痕迹,那么统计分析攻击成为不可能。(譬如重合指数法)

数学分析攻击

密码分析者针对加密变换所依赖的数学难题(如大整数的素因子分解、离散对数等),通过数学求解的方法(如二次筛法、积分指数法等)来设法找到相应的解密变化,从而实现破译。

结论:抵御数学分析攻击应该选用具有坚实的数学基础和足够复杂的加密方法。

密码体制的安全性

无条件安全性

不论提供的密文有多少,密文中所包含的信息都不足以惟一地确定其对应的明文;具有无限计算资源(诸如时间、空间、资金和设备等)的密码分析者也无法破译某个密码系统。

计算安全性

    这涉及到攻破密码体制所做计算的工作量。
    计算出或估计出破译它的计算量下限,利用已有的最好方法破译该密码系统所需要的努力超出了破译者的破译能力(诸如时间、空间、资金等资源)。即破译密码系统的成本不能超过被加密信息本身的价值,以及破译密码系统的时间不能超过被加密信息的有效生命周期。

    任何密码总有一天都会被破译的。

可证明安全性

    通过有效的转化,将对密码体制的任何有效攻击归约到解一类已知难处理问题,即使用多项式归约技术形式化证明一种密码体制的安全性,称为可证明安全性。
    譬如,如果给定大整数的素因子分解是不可行的,那么RSA密码体制是不可破解的。
    这种方法只是说明了安全性和另一个问题相关的,并没有完全证明它是安全的。

思维导图

传统密码

现代密码学-传统密码技术(置换、代换密码)

对称密码

des

Go-Des和3Des算法详解与代码

aes

Go-AES算法详解与代码

非对称密码

rsa

ecc

哈希函数与消息认证

MD5

SHA

数字签名

 

公钥管理

数字证书

参考

《现代密码学教程(第2版)谷利泽,杨义先等》

更新中...

更多内容查看:网络安全-自学笔记

喜欢本文的请动动小手点个赞,收藏一下,有问题请下方评论,转载请注明出处,并附有原文链接,谢谢!如有侵权,请及时联系。如果您感觉有所收获,自愿打赏,可选择支付宝18833895206(小于),您的支持是我不断更新的动力。

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

现代密码学-密码学概论与基本知识 的相关文章

随机推荐

  • Android屏幕适配

    一 一些概念的理解 屏幕尺寸 屏幕的对角线 如一台小米电视49寸说的就是电视对角线长度是49寸 1英寸 2 54厘米 分辨率 1920 1080指纵向1920个像素点 横向1080个像素点 1280 720同理 屏幕像素密度 DPI
  • 跟我说回家,却还在外面鬼混,python程序员教你用微信给对方定位

    跟我说回家 却还在外面鬼混 其实很多情侣之间存在很多这样的信任问题 不相信他 去查岗 可能会恶化两人之间的关系 比如跟我说回家了 但是想知道他是否真的回家了 打电话 打视频查岗吗 今天教大家一个利用微信来给对方定位的黑科技 实现方法 其实实
  • python连接clickhouse,并实现对表内数据的增删改查

    基本信息 clickhouse 基本介绍可以参考 https clickhouse com docs zh python 连接 clickhouse 可以参考 https clickhouse com docs en integration
  • 网络 链路层

    数据链路层是计算机网络的底层 主要负责相邻设备之间的数据帧传输 链路层就是负责每一个相邻结点之间的数据传输 但是相邻设备之间也需要描述识别 主要是因为每一个设备都有可能有多个相邻的设备 这种识别在链路层中是通过MAC地址来实现的 MAC地址
  • C++ 类型转换

    文章目录 c语言中的类型转换 为什么C 需要四种类型转换 C 强制类型转换 static cast reinterpret cast const cast dynamic cast c语言中的类型转换 在C语言中 如果赋值运算符左右两侧类型
  • centos7 搭建深度学习环境

    本文引用转载自博客园 经实践可用 对原内容进行了删减调整 后续作者理解更深了 可能更新 一 安装NVIDA组件 1 安装CUDA CUDA又叫cuda toolkit 是NVIDA公司专门开发的一套接口 方便利用GPU做高速计算 主流的深度
  • 将hexo博客搭建在github上

    注册github账号并创建仓库 首先在github上注册账号 填写用户名 email 密码 会有验证通过邮箱发送给你 进行验证 选择仓库 创建一个和你用户名相同的仓库 如 你的 用户名 github io 必须以用户名开头 创建仓库 步骤
  • java8的函数式编程

    1 函数式接口 特定的一类接口 概念 接口里面有且只有一个抽象方法 对于接口里面的默认方法和静态方法不作限制 一般会有 FunctionalInterface修饰 可以没有 FunctionalInterface public interf
  • Redis如何实现布隆过滤器

    本文将介绍布隆过滤器的原理以及Redis如何实现布隆过滤器 应用场景 1 50亿个电话号码 现有10万个电话号码 如何判断这10万个是否已经存在在50亿个之中 可能方案 数据库 set hyperloglog 2 新闻客户端看新闻时 它会不
  • QObject::connect: Cannot queue arguments of type 'string'

    信号槽传递非Qt库类型参数时 出现QObject connect Cannot queue arguments of type string Make sure string is regi 例如以C 标准库中string做参数 则会出现
  • mockjs的基本使用和登录跳转到主页加折叠事件

    目录 1 mockjs 1 1 mockjs介绍 1 2 mockjs使用步骤 1 2 1 安装mockjs依赖 1 2 2 在项目中引入mockjs 1 2 3 创建目录和文件 1 2 4 为每个组件准备模拟数据 1 2 5 测试 1 2
  • 零基础如何学习Java?Java学习路线图

    课程表 笔记 包含知识点 Java 第一天 基础语法 人机交互 Java以及发展史 主要特性 JRE和JDK Java 第二天 Java基础 注释 字面量 变量 数据类型 标识符 键盘录入 Java 第三天 IDEA下载安装 IDEA下载安
  • MySql-MHA-Docker 集群部署搭建

    MySql MHA Docker集群部署搭建 本文概述 机器准备 前置条件 MySQL主从复制集群搭建 1 安装mysql 准备3台机器安装mysql 2 安装配置mysql master 3 安装配置 88 mysql slave 4 安
  • [665]微信之wechat-sender(基于wxpy库)

    注意 wechat sender基于wxpy wxpy基于itchat 目前腾讯以大批量关闭微信网页版接口 所以wechat sender当前已不能使用 以下仅做学习记录 wechat sender 是基于 wxpy 和 tornado 实
  • [软件工程] 实现

    实现 实现 7 1 编码 7 1 1 选择程序设计语言 7 1 2 编码风格 1 程序内部的文档 2 数据说明 3 语句构造 4 输入输出 5 效率 7 2 软件测试基础 7 2 1 软件测试的目标 7 2 2 软件测试准则 1 所有测试都
  • layui table按条件设置背景颜色

    var that this elem next res data forEach function item index if item deleted 1 var tr that find layui table box tbody tr
  • eclipse创建webservice客户端和服务端

    先附上一个webservice的视频教程 链接 https pan baidu com s 1qesv A7cp zYsL7fE5nmFw 提取码 3d6k 创建服务端 提供接口 方式一 创建一个web工程 创建一个ServiceHello
  • 分享一波程序猿专属表情包

    不擅交流 沉默寡言的程序员 只能用表情包在群里大展身手 所以程序员之间的斗图表情包就产生了 每一张表情包都是活生生的影子 下面 是时候展示真正的技术了
  • 设计模式(四) —— 观察者模式/发布订阅模式,c和c++示例代码

    往期地址 设计模式 一 简单工厂模式 设计模式 二 策略模式 设计模式 三 装饰模式 本期主题 使用c和c 代码 讲解观察者模式 发布订阅模式 发布 订阅模式 1 什么是发布 订阅模式 2 实例 2 1 场景 2 2 代码设计 2 3 代码
  • 现代密码学-密码学概论与基本知识

    目录 简介 密码学发展简史 创建 发展阶段 古典密码时期 近代密码时期 现代密码时期 密码主要功能 机密性 完整性 认证性 不可否认性 密码系统的组成 密码分析学 定义 密码攻击类型 针对对称密码体制 针对对称密码体制 常用方法 密码体制的