当前位置: 首页 > news >正文

密码学原理学习笔记

攻击的类型:

唯密文攻击(COA):攻击者只知道密文

已知明文攻击(KPA):攻击者知道同一密钥下密文对应的明文。

选择明文攻击(CPA):攻击者可以事先任意选择一定数量的明文,让被攻击的加密算法加密,并得到相应的密文。

选择密文攻击(CCA):攻击者事先知道任意一定数量的密文,让被攻击的解密算法解密,并得到对应的明文。

被动攻击:COA、KPA

主动攻击:CPA、CCA

 

补充(来源:https://www.zhihu.com/question/34624915):

 

 

 

古典密码学

凯撒密码:使用移位处理

维吉尼亚密码:确定密钥后,多次使用凯撒密码

破解维吉尼亚密码:关键在于确定密钥的长度t

 方法一  Kasiski方法:

在密文中出现相同的子串之间的距离可能是t的倍数,找出所有的相同的子串的距离,尤其出现次数较多的(避免巧合),t是这些距离的最大公约数。

方法二 Friedman试验:

以下内容推荐博客:https://blog.csdn.net/white_idiot/article/details/61201864

重合因子Index of Coincidence(IC):任意取两个字母(取后放回),使之结果相同的概率

英语中的重合因子定义如下:

,由每个字母出现的概率,可算得其结果为0.065

破解维吉尼亚密码的两个步骤:

1、确定密钥长度。

遍历密钥长度,使得某一个密钥长度下的分组算得的重合因子其结果接近0.065,可用以下公式:

,其中,i为英文字母顺序表中的第i个字母,ni为其在密文分组中出现的频数,N为该分组的长度。如果该密钥长度下的各个分组算得的平均重合因子的结果接近0.065,则找到正确的密钥长度。否则,换下一个密钥长度测试。

2、进行频率分析。

密文确定密钥长度后,可将密文划分成相应的分组。在划分出来的任一分组中,明文和密文都是通过同一个字母实现移位加密的,此时,只需将密文相对于明文进行移位测试,找出具有重合因子接近0.065的位移,即可确定该分组的偏移量,其他分组同理。可用以下公式:

(j的取值为[0,25],即我们需要求的偏移量)。可理解成:明文中出现的第i个字母可能映射成了密文中的第i+j个字母(两个"字母"都已经按顺序排好,但出现的频数不一定相同)

单字母替换(Mono-Alphabetic Substitution):将明文中的字母进行随机替换,密钥空间为26!

Kerckhoffs’s principle :

The cipher method must not be required to be secret, and it must be able to fall into the hands of the enemy without inconvenience.


Sufficient Key Space Principle:

Any secure encryption scheme must have a key space that is not vulnerable to exhaustive search

 

Arbitrary Adversary Principle :

Security must be guaranteed for any adversary within the class of adversaries having the specified power

现代密码学的三个主要规则

Principle 1: Formulation of Exact Definitions
No adversary can derive any meaningful information about the plaintext from the ciphertext.

Principle 2 – Reliance on Precise Assumptions


Principle 3 – Rigorous Proofs of Security


 

转载于:https://www.cnblogs.com/cellphone7/p/9595373.html

相关文章:

  • 杂谈
  • 07 numpy 一元函数
  • IBM AIX系统日志配置远程Syslog采集
  • 【跃迁之路】【585天】程序员高效学习方法论探索系列(实验阶段342-2018.09.13)...
  • css的transform属性让子元素在父元素里面垂直水平居中
  • 微信小程序的手机通讯录点击本页面跳转位置的代码详解
  • 阿里云搬家用。
  • 『中级篇』overlay网络和etcd实现多机的容器通信(31)
  • HTTPS协议详解(三):PKI 体系
  • 日志分析方法
  • 2018年最新苹果开发者账号申请流程
  • 【Spark】环境搭建(CentOS7)
  • 指定UIView的某几个角为圆角
  • 内存屏障和 volatile 语义
  • 上传本地代码到github
  • IP路由与转发
  • JavaScript类型识别
  • leetcode讲解--894. All Possible Full Binary Trees
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • Python socket服务器端、客户端传送信息
  • Shell编程
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • vue.js框架原理浅析
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 大型网站性能监测、分析与优化常见问题QA
  • 观察者模式实现非直接耦合
  • 模型微调
  • 容器化应用: 在阿里云搭建多节点 Openshift 集群
  • 如何学习JavaEE,项目又该如何做?
  • ​决定德拉瓦州地区版图的关键历史事件
  • ​人工智能书单(数学基础篇)
  • #数学建模# 线性规划问题的Matlab求解
  • (+4)2.2UML建模图
  • (pytorch进阶之路)CLIP模型 实现图像多模态检索任务
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (免费领源码)python#django#mysql公交线路查询系统85021- 计算机毕业设计项目选题推荐
  • (十二)devops持续集成开发——jenkins的全局工具配置之sonar qube环境安装及配置
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • (转)机器学习的数学基础(1)--Dirichlet分布
  • .NET 5种线程安全集合
  • .net core webapi Startup 注入ConfigurePrimaryHttpMessageHandler
  • .net websocket 获取http登录的用户_如何解密浏览器的登录密码?获取浏览器内用户信息?...
  • .php结尾的域名,【php】php正则截取url中域名后的内容
  • /etc/X11/xorg.conf 文件被误改后进不了图形化界面
  • @Autowired @Resource @Qualifier的区别
  • @hook扩展分析
  • [2669]2-2 Time类的定义
  • [AIGC] 开源流程引擎哪个好,如何选型?
  • [Android]通过PhoneLookup读取所有电话号码
  • [BZOJ] 1001: [BeiJing2006]狼抓兔子
  • [C++]unordered系列关联式容器
  • [CISCN 2019华东南]Web11
  • [codevs] 1029 遍历问题
  • [CVPR 2023:3D Gaussian Splatting:实时的神经场渲染]