密码学基础_密码体制的五个要素-程序员宅基地

技术标签: 安全  密码学  网络安全  

密码学基本概念

      密码学(Cryptology)是结合数学、计算机科学、电子与通信等学科于一体的交叉学科,研究信息系统安全的科学。起源于保密通信技术。具体来讲,研究信息系统安全保密和认证的一门科学。

      密码编码学,通过变换消息(对信息编码)使其保密的科学和艺术

      密码分析学,在未知密钥的情况下从密文推演出明文或密钥(破解或攻击)的艺术

密码系统的组成

      一个加密系统是由明文、密文、加密算法、解密算法、密钥五部分组成。

  • 明文:作为加密输入的原始信息,即消息的原始形式
  • 密文:明文经加密变换后的结果,即消息被加密处理后的形式
  • 密钥:参与明密文变换的参数
  • 加密算法:将明文变换为密文的变换函数,相应的变换过程称为加密,即编码的过程
  • 解密算法:将密文恢复为明文的变换函数,相应的变换过程称为解密

在这里插入图片描述

密码系统形式化的定义

The syntax of encryption. A private-key encryption scheme,or cipher,is comprised of three algorithms: the first is a procedure for generating keys, the second a procedurefor encrypting, and the third a procedure for decrypting. These algorithms have the following functionality:
      1、The key-generation algorithm Gen is a probabilistic algorithm that out-puts a key k k k chosen according to some distribution that is determinedby the scheme.

      2、The encraption algorithm Enc takes as input a key k k k and a plaintext m m m and outputs a ciphertext c c c. We denote the encryption of the plaintextm using the key k k k by E n c k ( m ) Enc_k(m) Enck(m).

      3、The decryption algorithm Dec takes as input a key k k k and a ciphertext c c c and outputs a plaintext m m m. We denote the decryption of the ciphertext c c c using the key k k k by D e c k ( c ) Dec_k(c) Deck(c).

现代密码体制的分类
  • 对称密码体制(Symmetric System)
          加密密钥和解密密钥相同,又称为秘密密钥体制或单密钥体制。从密钥使用方式上分为分组密码和序列密码。

  • 非对称密码体制(Asymmetric System)
          加密密钥和解密密钥不相同,并且从加密密钥很难推出解密密钥,又称为公钥密码体制。该体制下,用一个密钥进行加密,而用另一个密钥进行解密。参与加密运算的密钥称为加密密钥,又称为公钥;参与解密运算的密钥称为解密密钥,也称为私钥。

密码体制的基本要求
  • 密码体制既易于实现又便于使用,主要是指加密函数和解密函数都可以高效的计算
  • 密码体制的安全性是依赖于密钥的安全性,密码算法是公开的
  • 密码算法安全强度高,密码分析者除了穷举搜索攻击外再找不到更好的攻击方法
  • 密钥空间应足够大,使得试图通过穷举密钥空间进行搜索的方式在计算上不可行

密码算法公开的意义
有利于增强密码算法的安全性
有利于密码技术的推广应用
有利于增加用户使用的信心
有利于密码技术的发展

密码分析学

      研究如何分析或破解各种密码编码体制的一门科学,密码分析也称为密码破译,是指在密码通信过程中,非授权者在不知道密钥的条件下对密文进行分析,试图得到明文或密钥的过程。解密和密钥破译都是设法将密文还原成明文的过程,但具备的条件不同。

密码分析分类

  • 唯密文攻击(Ciphertext only),破译者已知:加密算法、待破译的密文

    密码分析者除了拥有截获的密文外(密码算法是公开的),没有其它可以利用的消息。密码分析者的任务是恢复尽可能多的明文,或者最好能推算出解密密钥,这样就很容易解出被加密的信息。这种攻击的方法至少可采用穷举搜索法,即对截获的密文依次用所有的密钥尝试,直到得到有意义的明文。只要有足够多的计算资源和存储资源,理论上穷举搜索是可以成功的,但实际上,任何一种能保障安全要求的算法复杂度都是实际攻击者无法承受的。在这种情况下进行密码破译是最困难的,经不起这种攻击的密码体制被认为是完全不安全的(类似网络通信中仅仅进行搭线窃听)
    在这里插入图片描述

  • 已知明文攻击(Known plaintext),破译者已知:加密算法、一定数量的明文和对应的密文

    密码分析者不仅掌握了相当数量的密文,还有一些已知的明-密文对可供利用。密码分析者的任务是用密文信息推导出解密密钥或导出一个替代算法,此算法可以对所获得的密文恢复出相应的明文。在现实中,密码分析者可能通过各种手段得到更多的信息,即得到若干个明-密文对并不是十分困难的事,而且明文消息往往采用某种特定的格式,如电子现金传送消息总有一个标准的报头或标题等等。对于现代密码体制的基本要求:不仅要经受得住唯密文攻击,而且还要经受得住已知明文攻击
    在这里插入图片描述

  • 选择明文攻击(Chosen plaintext)CPA,破译者已知:加密算法、选定的明文和对应的密文

    密码分析者不仅能够获得一定数量的明-密文对,还可以选择任何明文并在使用同一未知密钥的情况下能得到相应的密文。如果攻击者在加密系统中能选择特定的明文消息,则通过该明文消息对应的密文就有可能确定密钥的结构或获取更多关于密钥的信息。选择明文攻击比已知明文攻击更有效,这种情况往往是密码分析者通过某种手段暂时控制加密机
    在这里插入图片描述

  • 选择密文攻击(Chosen ciphertext)CCA,破译者已知:加密算法、选定的密文和对应的明文

    密码分析者能选择不同被加密的密文,并还可得到对应的明文,密码分析者的任务是推出密钥及其它密文对应的明文。如果攻击者能从密文中选择特定的密文消息,则通过该密文消息对应的明文有可能推导出密钥的结构或产生更多关于密钥的信息。这种情况往往是密码分析者通过某种手段暂时控制解密机。(暂时控制解密机)
    在这里插入图片描述

  • 选择文本攻击(Chosen text),破译者已知:加密算法、选定的明文和对应的密文、选定的密文和对应的明文

    它是选择明文攻击和选择密文攻击的组合,即密码分析者在掌握密码算法的前提下,不仅能够选择明文并得到对应的密文,而且还能选择密文得到对应的明文。这种情况往往是密码分析者通过某种手段暂时控制加密机和解密机。

攻击密码体制的常用方法
  • 穷举攻击
          密码分析者尝试所有的密钥来破译密码。穷举攻击所花费的时间等于尝试次数乘以一次解密所需时间。因此,可以通过增大密钥量或增加解密算法的复杂性来对抗穷举攻击。不过抵御穷尽攻击最好的方法是增大密钥空间,因为增加解密算法的复杂性,也增加了合法用户使用密码系统的计算量

  • 统计分析攻击
          密码分析者通过分析密文和明文的统计规律来破译密码。统计分析攻击在历史上为破译做出过极大的贡献,大多数传统密码都可以通过统计分析的方法来破译。对抗统计分析攻击的方法是设法使明文的统计特征尽可能地不带入密文。如果密文不带有明文的痕迹,那么统计分析攻击成为不可能。

  • 数学分析攻击
          密码分析者针对加密变换所依赖的数学难题(如大整数的素因子分解、离散对数等),通过数学求解的方法(如二次筛法、积分指数法等)来设法找到相应的解密变化,从而实现破译。对抗这种攻击,应该选用具有坚实的数学基础和足够复杂的加密方法。

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

  • 计算安全性
          涉及到攻破密码体制所做计算的工作量。计算出或估计出破译密码系统的计算量下限,利用已有的最好方法破译该密码系统所需要的努力超出了破译者的破译能力(诸如时间、空间、资金等资源)。

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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_43707926/article/details/123917454

智能推荐

iOS踩坑App Store Connect Operation Error_sdk version issue. this app was built with the ios-程序员宅基地

文章浏览阅读3.4k次。这个应用程序是用iOS 15.5 SDK构建的。从2023年4月开始,所有提交到应用商店的iOS应用程序都必须使用iOS 16.1 SDK或更高版本构建,包括在Xcode 14.1或更高版本中。目前iOS 开发工具Xcode 版本号是13.4.1 ,系统无法升级,也会导致Xcode无法升级。1、苹果官方提示: 2023年4月开始,开发必须使用 Xcode 14.1 以上的版本,2、目前此电脑无法在升级, 2023年4月开始 ,此电脑就无法正常开发使用,应用程序商店连接操作错误。_sdk version issue. this app was built with the ios 15.5 sdk. all ios and ipa

接单平台汇总_excel接单平台-程序员宅基地

文章浏览阅读335次。接单平台汇总程序员客栈码市开源众包智慧外包实现网猿急送人人开发网开发邦点鸭网快码网英选网外包大师我爱方案网智筹网自由智客接单注意事项:1、没有第三方担保的个人单子,尽量少接2、无需求文档、没有具体要求的不接3、没有预付的不做,尽量用442的分步步骤方式4、没有金刚钻,别揽瓷器活5、急单勿接6、任何不付定金的单子都是耍赖7、不计得失,不怕吃亏..._excel接单平台

CPU如何跑分_cpu跑分教程-程序员宅基地

文章浏览阅读1k次。烤CPU的时候,占用率满了,CPU频率的槽有一些还是空的…… 有没有能跑分的软件?好像有的【聊电Jing】你的CPU性能如何? 来跑个分测试看看吧! | Cinebench R15 & R20 使用教学_哔哩哔哩_bilibili 好像还是免费的Cinebench - Maxon Cinebench - Microsoft Store Apps 频率为什么就是超不过3Ghz? 多核,100度了? 可能频率最高只能这么高,再高可能就烧掉了…… 多核结果.................._cpu跑分教程

最大流问题的Ford-Fulkerson解法_ford capacity 详解-程序员宅基地

文章浏览阅读498次。这是一种方法,而不是算法,因为它包含具有不同运行时间的几种实现。该方法依赖于三种重要思想:残留网络,增广路径和割我们先简单介绍下Ford-Fulkerson方法的基本思想。首先需要了解的是Ford-Fulkerson是一种迭代的方法。开始时,对所有的u,v属于V,f(u,v)=0(这里f(u,v)代表u到v的边当前流量),即初始状态时流的值为0。在每次迭代中,可以通过寻找一个“增广路径”来增加_ford capacity 详解

Windows10下多版本CUDA的安装与切换 超详细教程_cuda版本-程序员宅基地

文章浏览阅读1.9w次,点赞69次,收藏379次。当我们跑深度学习的代码时,有时会遇到上古的代码,环境比较老,是低版本的 CUDA,此时我们就需要多个 CUDA 版本,并能灵活切换。本文是在已有CUDA11.2的环境下安装CUDA9.2。Windows10下多版本CUDA的安装与切换保姆级教学。_cuda版本

C语言——数组逆置(内含递归实现)-程序员宅基地

文章浏览阅读5k次,点赞5次,收藏25次。一.什么是数组的逆置呢?int a[10]={1,2,3,4,5,6,7,8,9,10};将数组变为 a[10]={10,9,8,7,6,5,4,3,2,1};这就叫做数组的逆置。二.1.循环实现数组的逆置这个是我们在初学C语言时最容易的实现方法!a.通过for循环实现//通过循环完成对数组的逆置#include<stdio.h>#define size 10void Inversion(int[], int);int main(void){ i_数组逆置

随便推点

understand 代码解析工具的使用_understand代码-程序员宅基地

文章浏览阅读8.8k次,点赞15次,收藏80次。understand 常用操作文章目录understand 常用操作简单介绍软件下载常用基本操作新建工程并添加现有文件如何找到自己当前想要去编辑的文件?如何在当前文件中找到你要编辑的函数?如何跳转到定义?查看当前文件的函数列表如何查看函数都被谁调用了?查看函数的调用逻辑如何查找如何找到函数的被调用图除此之外可以分析出代码的各种结构文本的编辑格式设置双屏一边看代码,一遍看代码地图简单介绍understand对分析代码有非常强的能力,完全可以代替sourceinsight,并且可以在linux上mac上使_understand代码

Oracle 闪回(flashback)数据库到指定时间点_数据库 oracle时间戳闪回-程序员宅基地

文章浏览阅读4.1k次。如果是update,delete类误操作且已经commit,优先考虑使用flashback query进行恢复。select * from test1 as of timestamp to_timestamp('2018-01-13 16:59:29','YYYY-MM-DD hh24:mi:ss');如果是drop或truncate table,则不能使用闪回查询,需要使用备库进行整库..._数据库 oracle时间戳闪回

[bigdata-124] docker+django2.0 构建web服务_docker django print-程序员宅基地

文章浏览阅读660次。在本地运行django1.python3.42.安装django,安装特定版本pip3 install django==2.03.测试安装python3import djangoprint(django.get_version())4.django使用创建一个新目录test_djangopython -m django --version_docker django print

话题的发布与订阅_话题订阅频率和发布频率一样-程序员宅基地

文章浏览阅读2.6k次,点赞3次,收藏11次。Ros话题发布与订阅节点的编写(C++)_话题订阅频率和发布频率一样

Qt Creator 安装 VLD_qtcreater vld-程序员宅基地

文章浏览阅读509次。Qt Creator 安装 VLD2015-04-14 16:52:55你好L阅读数 2325更多分类专栏:qt版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/lin_jianbin/article/details/45044459一、环境说明1、VLD内存..._qtcreater vld

Linux 开发环境工具[zt]-程序员宅基地

文章浏览阅读120次。软件集成开发环境(代码编辑、浏览、编译、调试)Emacs http://www.gnu.org/software/emacs/Source-Navigator 5.2b2 http://sourceforge.net/projects/sourcenavAnjuta http://anjuta.sourceforge...._linux上安装flawfinder