您好、欢迎来到现金彩票网!
当前位置:秒速时时彩开奖 > 算法保密 >

密码学与算法

发布时间:2019-06-12 00:48 来源:未知 编辑:admin

  首先说一下,我为什么要写密码学的博客,由于hyperledger fabric中加密算法和哈希算贯穿整个项目,所以在分析加密那部分的代码之前,我将简单的介绍一下密码学的内容。密码学的内容我将写以下几篇博文

  由上图我们可以看出,小明将明文加密成密文再发送给阿猫,但在消息传送的过程中,总会存在阿狗这样牛逼人物,把消息拦击并破解,当然,有可能只是把消息拦击啦,但是破解需要的时间很长,所以阿狗中途放弃了也是可能的,这就要看加密算法的强度是不是够大啦。

  为了防止软件被篡改,发布软件的同时发布该软件的散列值,散列值有称哈希值、密码校验、指纹和消息摘要。散列值就是用单项散列函数计算出来的值。

  单项散列函数并不是保证安机密性,而是完整性,使用它可以检测数据是否被篡改过。

  我们把上面说到的6种技术统称为密码学家的工具箱,关于他们的细节内容我们将在接下来的博客将介绍。

  接着上一篇初入密码学世界,这一篇博客我们将介绍以下内容,先来一个思维导图,看看这篇博客的内容

  以上内容在这篇博客中我都会详细地讲解,当然,这只是个大体的架构图,很多细节的知识点没有包含进去。

  比特序列:对于这个词,学过任何一门编程语言的人都不陌生,其实它就是0和1排列而成的数字

  对于密码技术来说,“是否可以预测”是非常重要的一点,能够产生不可预测的比特序列,对于密码学技术贡献是巨大的。这种不可预测的比特序列就称为随机数。关于这个问题以后的博文中再做介绍

  原理就是将明文与一串随机比特序列进行XOR运算,与上面的算法一致,不多做解释。

  由于一次性密码本并没有什么卵用,故而不在这里不多讲,有兴趣的人自己去查资料。虽然一次性密码本是一种几乎没有实用性的密码,但是,一次性密码本的思路却孕育出了流密码。流密码使用的不是真正的随机比特序列,而是伪随机数生成器产生的比特序列。流密码虽然不是无法破译的,但是只要使用高性能的伪随机数生成器,就能够构建出强度较高的密码系统。关于流密码下面会详细介绍。关于伪随机数生成器估计要在后面的博文中才能介绍。

  DES是一种将64比特的明文加密成64比特的密文的对称密码算法,它的密钥长度是56比特。为什么密钥长度只有56比特呢,原因是每隔7个比特位会设置一个用于错误检查的比特,因而其密钥长度是56位。

  DES是以64比特的明文(比特序列)为一个单位来进行加密的,这个64比特的单位称为分组。DES其实就是分组密码中的一种。

  DES每次只能加密64比特的数据,如果要加密的明文长度比较长,就需要对DES加密进行迭代,迭代的具体方式成为模式(mode)

  在Feistel网络中,加密的各个步骤称为轮(round),整个加密过程就是进行若干次轮的循环

  (5) 将上一侧得到的比特序列与左侧数据进行XOR运算,并将结果做为加密后的左侧

  分组密码:是每次只能处理特定长度的一块数据的一类算法,这里的一块就称为分组。此外,一个分组的比特数就称为比特长度;DES和3DES分组长度都是64比特,AES的分组长度是128比特。

  流密码:对数据流进行连续处理的一类密码算法。流密码中一般以1比特,8比特或32比特等为单位进行加密与解密。

  模式:分组密码算法只能加密固定长度的分组,但是我们需要加密的明文长度可能会超过分组密码的分组长度,这时就需要对分组密码算法进行迭代,以便将一段很长的明文全部加密。而迭代的方法就称为模式。

  明文分组:是指分组密码算法中做为加密对象的明文。明文分组的长度与分组密码的分组长度是相等的。

  对ECB模式的攻击其实很简单Mallory只要将其中分组进行对调就会出现很大的问题。只要观察一下密文,就知道明文是什么样的组合,可以以此为线索来破解密码,故而ECB模式存在较大的风险。

  初始化向量:当加密第一个个明文分组时,由于不存在前一个密文分组,因此需要事先准备一个长度为一个分组的比特序列来代替前一个密文分组,这个比特序列就是初始化向量IV。

  如果有一个密文分组坏了,那么解密之后将会影响两个明文的内容;CBC模式中密文分组存在缺失比特时,之后所有的明文分组都会受到影响;初始化向量如果发生比特反转,会使第一个明文分组也会受到比特反转。

  密文反馈(CFB,Cipher feedback)模式类似于CBC,可以将块密码变为自同步的流密码;工作过程亦非常相似,CFB的解密过程几乎就是颠倒的CBC的加密过程:

  需要使用一个与块的大小相同的移位寄存器,并用IV将寄存器初始化。然后,将寄存器内容使用块密码加密,然后将结果的最高x位与平文的x进行异或,以产生密文的x位。下一步将生成的x位密文移入寄存器中,并对下面的x位平文重复这一过程。解密过程与加密过程相似,以IV开始,对寄存器加密,将结果的高x与密文异或,产生x位平文,再将密文的下面x位移入寄存器。

  与CBC相似,平文的改变会影响接下来所有的密文,因此加密过程不能并行化;而同样的,与CBC类似,解密过程是可以并行化的。

  输出反馈模式(Output feedback, OFB)可以将块密码变成同步的流密码。它产生密钥流的块,然后将其与平文块进行异或,得到密文。与其它流密码一样,密文中一个位的翻转会使平文中同样位置的位也产生翻转。这种特性使得许多错误校正码,例如奇偶校验位,即使在加密前计算而在加密后进行校验也可以得出正确结果。

  每个使用OFB的输出块与其前面所有的输出块相关,因此不能并行化处理。然而,由于平文和密文只在最终的异或过程中使用,因此可以事先对IV进行加密,最后并行的将平文或密文进行并行的异或处理。

  可以利用输入全0的CBC模式产生OFB模式的密钥流。这种方法十分实用,因为可以利用快速的CBC硬件实现来加速OFB模式的加密过程。

  计数模式(CTR模式)加密是对一系列输入数据块(称为计数)进行加密,产生一系列的输出块,输出块与明文异或得到密文。

  CTR 模式被广泛用于 ATM 网络安全和 IPSec应用中,相对于其它模式而言,CTR模式具有如下特点:

  预处理:算法和加密盒的输出不依靠明文和密文的输入,因此如果有足够的保证安全的存储器,加密算法将仅仅是一系列异或运算,这将极大地提高吞吐量。

  随机访问:第 i 块密文的解密不依赖于第 i-1 块密文,提供很高的随机访问能力

  可证明的安全性:能够证明 CTR 至少和其他模式一样安全(CBC, CFB, OFB, ...)

  简单性:与其它模式不同,CTR模式仅要求实现加密算法,但不要求实现解密算法。对于 AES 等加/解密本质上不同的算法来说,这种简化是巨大的。

  公钥密码这种,密钥分为两种,加密密钥与解密密钥,发送用加密密钥对消息进行加密,接收者用解密密钥对密文进行解密。一般情况下,加密密钥是公开的,称为公钥,解密密钥是非公开的,称为私钥。公钥与私钥是一一对应的。

  这样,阿狗可能拥有阿猫的公钥,但公钥并不是解密的密钥,故而阿狗无法完成解密操作

  公钥密码解决了密钥配送问题,但并不意味着它能解决所有的问题,因为我们要判断所得到的公钥是否正确合法,这个问题被称为公钥认证问题。

  E和N是RSA的加密密钥,也就是说,E和N组合就是公钥,一般会写成“公钥是(E, N)或者“公钥{(E, N}”

  E和N是公钥,D和N是私钥,因此求E、D和N这三个数就是生成密钥。RSA密钥生成步骤如下

  通过E和N求出D:E x D mod L = 1; L = lcm(p-1, q-1),p和q无法知道,N=p x q,可以对N做质因数分解,但是如果N是大整数,现在还没有很好的算法,这种方法不现实;但如果质因数分解求q和p,恭喜你,你已经破解RSA啦

  通过推测p和q:这还是有可能的,如果推测出来,也恭喜你,你已经破解RSA啦

  这种方法虽然不能破解RSA,但却是一种针对机密性的有效攻击,看下图你就明白

  选择密文攻击一般是通过提示信息去尝试解密,使用RSA-OAEP,RSA-OAEP会在加密明文前生成一些认证信息,包括明文的散列值和一定数量的0,然后再对填充后的明文用RSA加密。这样攻击者就无法得到解密提示的相关信息

  我们都知道,对称密码和混合密码,各有各的优点,也各有缺点。而将他们组合到一起,的确是一种不错的选择。取对称密码之长补公钥密码之不足,取公钥密码之长补对称密码之不足,下面我们将开启混合加密之旅。

  用对称密码来加密明文,用公钥密码来加密对称密码中所使用的密钥。通过使用混合密码系统,就能够将在通信中对称密码与公有密码的优势结合起来。

  混合密码系统中会先用对称密码来对消息进行加密,这样消息就被转换为密文,从而保证消息的机密性,然后我们只要保证对称密码的机密性就可以啦。用公有密码对加密消息时使用的对称密码的密钥进行加密。由于密钥比较短,公钥密码速度慢的问题就得以解决啦。

  2.用伪随机数生成器生成对称密码加密中使用的会线.用公钥密码加密会线.从混合密码系统外部赋予公钥密码加密中使用的会话密钥

  ,并确保密钥有足够的长度4。密钥长度要平衡公钥密码强度应该要高于对称密码,因为公钥被破解,从过去到未来的通信都能够被破解下面图片是要讲的知识点。

  现在假设小明以前写来一个文件保存到硬盘,它的文件可能面临被攻击之后遭到篡改,那它怎么证明现在他手上的文件没有遭到篡改的呢?文件是真的,“是真的”的性质称为完整性,也称为一致性。

  怎么保证文件一致性,也许我们会想到,把文件复制一份到硬盘,到要用文件的时候对比一下不就行了吗。那么如果文件很大的时候咋办,这样效率非常低。而我们这儿要介绍的单向散列函数

  单向散列函数也称为消息摘要、哈希函数或者杂凑函数。输入单向散列函数的消息也称为原像。单向散列函数输出散列值也称为消息摘要或者指纹。完整性也称为一致性。这里的消息不一定是人类能读懂的文字,也可能是声音和图片等。无论是任何消息,单向散列函数都会将它作为单纯的比特序列来来处理,即根据比特序列计算出散列值。散列值的长度总是固定的。

  。如果要将单向散列函数用于完整性的检查,则需要确保事实上不可能人为地发现碰撞。

  弱抗碰撞性。单向散列函数必须具有弱抗碰撞性。和弱抗碰撞性相对的,还有强抗碰撞性,所谓强抗碰撞性

  ,是指要找到散列值相同的两条不同的消息是非常困难的这一性质。在这里,散列值可以是任意值。4.单向性

  SHA-1:能够产生160比特的散列值,强抗碰撞性在2005年已经被攻破,已经被列入”谨慎使用密码清单“

  SHA-3:新一代的单向散列函数,目前最安全的,以太坊中使用的就是SHA-3算法。

  采用了与SHA-2完全不同的结构;结构清晰,易于分析;能够适用于各种设备,也适用于嵌入式应用;在硬件上的实现显示出了很高的性能;比其他入选算法安全性边界会更大。Keccak可以生成任意长度的散列值,但是为了配合SHA-2的散列长度,SHA-3标准中规定了SHA-3-224、SHA-3-256、SHA-3-384、SHA-3-512 四个版本。关于.Keccak算法这里不多说。

  1.什么是消息认证码消息认证码:是一种确认完整性认证的技术,英文缩写MAC。

  共享的密钥,它可以输出固定长度的数据,这个数据称为MAC值。计算MAC值必须持有共享密钥,没有共享密钥的人就无法计算出MAC值,消息认证码正是利用这一性质来完成认证的。哪怕是1比特的改变,都会使MAC发生变化。消息认证码是一种与密钥相关联的单向散列函数2.消息认证码的使用步骤

  d.接收银行根据接收到的汇款请求消息计算MAC值(使用共享密钥)e.接收银行将自己计算出来的MAC值和发送银行发送过来的MAC值进行对比

  Swift:环球银行金融电信协会,银行与银行之间通过swift来传递消息。SWIFT中就使用来消息认证码IPsec:IP协议,对通信内容的认证和完整性校验都是采用消息认证码来完成。

  a.使用单向散列函数实现:使用SHA-2之类的单向散列函数可以实现消息认证码。

  b.使用分组密码实现:使用AES之类的分组密码可以实现消息认证码。具体看分组密码博文。

  认证加密是一种将对称密码与消息认证码相结合,同时满足机密性、完整性和认证三大功能的机制

  Encrypt-then-MAC:这种方式是先用对称加密将明文加密,然后计算密文的MAC值。在Encrypt-then-MAC方式中,消息认证码的输入消息是密文。通过MAC值就可以判断这段密文的确是由知道明文和密钥的人生成。GCM:是一种认证加密方式,GCM使用AES等128比特分组密码的CTR模式,并且使用一个反复进行加密和乘法运算的散列函数来计算MAC值。专门用于消息认证码的GCM称为GMAC。

  是一种使用单向散列函数来构造消息认证码的方法(RFC2104),其中HMAC的H就是Hash的意思HMAC使用的单向散列函数并不局限于一种,任何高强度的单向散列函数都可以被用于HMAC,如果将来设计出新的单向散列函数,也同样可以使用。

  1哈希算法哈希算法是将任意长度的二进制值映射为较短的固定长度的二进制值,这个小的二进制值称为哈希值。哈希值是一段数据唯一且极其紧凑的数值表示形式。如果散列一段明文而且哪怕只更改该段落的一个字母,随后的...

  本文主要介绍一些加密库中加密算法的使用原则和需要注意的问题。首要原则:如果工程中涉及任何安全加密相关的内容,**绝对绝对不要**尝试自己实现加密算法。对称加密相关当你不知道选什么加密算法时,用AES...

  密码算法介绍本文概要介绍密码算法,针对各算法原理及实现,将在接下来的文章中提及。密码体制也叫密码系统,是指能完整地解决信息安全中的机密性、完整性、真实性、不可否认性等问题的一个系统。密码技术主要分为对...

  密码学六元组-明文-密文-加密算法-解密算法-加密秘钥-解密秘钥  其中加密算法和解密算法一般都是公开的,只有公开的算法才能被验证是安全的。不要试图开发自己的保密加密算法,一旦算法泄露,加密体系就崩溃...

  声明:本篇博文的内容摘自于《密码编码学与网络安全》这本书。群、环和域都是数学理论中的一个分支,即抽象代数或称为近世代数的基本元素。在抽象代数中,我们关心的是其元素能进行代数运算的集合,也就是说,我们可...

  Java密码学原型算法实现——第三部分:双线性对背景介绍技术博客已经好久没更新了。倒不是因为没得写,是因为实在是太忙了,而且研究也到了一个瓶颈期,需要大量阅读文献。本来打算很长一段时间都不更新博客了,...

  非对称加密算法RSA基于大素数分解难题的加密算法取两个大素数pq,N=p*q,则根据欧拉定理的各种延伸,得f(N)=(p-1)(q-1)=pq-p-q+1利用定理为:其中pi为不同的素因子,ei为pi...

  那么,首先要知道,什么是散列算法呢?产生一些数据片段(例如消息或会话项)的散列值的算法。例如,md5就是一种散列算法。软件开发中的散列函数或散列算法,又称哈希函数,英语:HashFunction,是一...

  【密码学02】密码系统原理及数学背景上一篇文章【密码学】四大主题简单介绍 一文提到要实现信息传输的保密性、完整性,以及身份鉴别和抗抵赖,使用的技术手段有:1)      密码技术(加密与解密)。2) ...

  最近对接某媒体,其部分内容使用了AES对称加密算法,我对该算法做了一些大致的研究,整理如下:1.什么是AES加密算法2.AES常见的几种加密模式与填充模式3.AES算法的几种加密模式介绍4.A...

  欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上...

  对称加密算法对称加密算法用来对敏感数据等信息进行加密,常用的算法包括:DES(DataEncryptionStandard):数据加密标准,速度较快,适用于加密大量数据的场合。3DES(TripleD...

  古典密码学可以分为代替密码(也叫做移位密码)和置换密码(也叫做换位密码)两种,其中代替密码典型的有Caesar密码,仿射变换等,置换密码有单表置换和多表置换等。下面是几种常见古典密码算法的实现。1.C...

  【密码学02】密码系统原理及数学背景上一篇文章【密码学】四大主题简单介绍 一文提到要实现信息传输的保密性、完整性,以及身份鉴别和抗抵赖,使用的技术手段有:1)      密码技术(加密与解密)。2) ...

  本文是学习区块链技术中关于密码学哈希算法这一部分的相关知识点学习总结整理.........

  RSA算法一直是最广为使用的非对称加密算法。本文旨在说明RSA加密算法的原理及实现,而其相关的数学部分的证明则不是本文内容。...

  加密算法分为对称性加密算法和非对称性加密算法。1.对称性加密算法对称性加密算法:发信方和收信方使用同样的秘钥对数据进行加密和解密,这就要求解密方必须事先知道秘钥。优点:加解密的高速度和使用长密钥时的难...

  发表者:Google(谷歌)研究员吴军前一阵子看了电视剧《暗算》,蛮喜欢它的构思和里面的表演。其中有一个故事提到了密码学,故事本身不错,但是有点故弄玄虚。不过有一点是对的,就是当今的密码学是以数学为基...

  前言撰写本文时TLS1.3RFC 已经发布到28版本。以前写过一点密码学及TLS相关的文章,为了更深入理解TLS1.3协议,这次将尝试使用Go语言实现它。网络上已有部分站点支持TLS1.3,Chrom...

  前言:与boost支持lambda不同的是,VS2010提供对lambda的内建支持。  Lambdas在C++0x中,“lambda表达式”隐式定义并构建不具名函数对象,这些对象就像手写函数对象...

  什么是范数?我们知道距离的定义是一个宽泛的概念,只要满足非负、自反、三角不等式就可以称之为距离。范数是一种强化了的距离概念,它在定义上比距离多了一条数乘的运算法则。有时候为了便于理解,我们可以把范数当...

  1.什么是RSARSA算法是现今使用最广泛的公钥密码算法,也是号称地球上最安全的加密算法。在了解RSA算法之前,先熟悉下几个术语 根据密钥的使用方法,可以将密码分为对称密码和公钥密码 对称密码:加密和...

  密码学入门:几种简单的密码一.维吉尼亚密码   维吉尼亚密码引入了“密钥”的概念,即根据密钥来决定用哪一行的密表来进行替换,以此来对抗字频统计。假如以上面第一行代表明文字母,左面第一列代表密钥字母,对...

  三个阶段古典密码近代密码现代密码古典密码基本思想: (1)代替和替换,文字符被其他字符所替换。 (2)置乱或置换,打乱明文字符的顺序。基本类型:    i.凯撒密码    ii.棋盘密码    iii...

  密码学入门研究生的第一年就要过完了。有幸在号称中国密码学界的“黄埔军校”学习密码,得以见识老一辈和新一辈密码学大师的风采。虽然学的不好,但感觉也有所收获,主要是自己的基础知识太缺乏了,觉得有必要写一篇...

  1、对称加密(1)DESDES是1977年美国联邦信息处理标准中使用的一种对称密码技术,曾今被美国和其他国家政府银行使用。不过现在已被暴力破解,我们除了用它解密以前的密文外,已不再使用DES了。不过这...

  密码学基础​注:本文不涉及复杂的算法,主要是梳理密码学知识体系,为以后系统地深入地学习打好基础。​整理本文的过程中,主要参考了以下文档:​

  解密解密算法的分类一、对称加密  单密码系统的加密方法中,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。密钥是控制加密及解密过程的指令。对称加密过程中,数据发送方...

  目录密码学密码学发展对称加密体制非对称加密体制混合加密数字信封哈希算法密码学密码学发展古典密码:古代----19世纪末 近代密码:20世纪初---1949年 现代密码:1949(香农发表的《保密系统的...

  在介绍NTRU之前,我需要学习一些格的知识,点击查看。格的基本知识在离散数学中格的定义:格是其非空有限有限子集都有一个上确界和下确界的偏序集合。偏序集合:(英语:Partiallyorderedset...

  比特币中的密码学知识汇总目前,我的阅读比特币源码系列文章已经更新了5篇,对应于精通比特币前3章内容的学习。现在来到第4章密钥与地址的学习,本章主要介绍了比特币系统中公钥,私钥和地址之间相互的关系,如何...

  引文密码学是研究编制密码和破译密码的技术科学。研究密码变化的客观规律,应用于编制密码以保守通信秘密的,称为编码学;应用于破译密码以获取通信情报的,称为破译学,总称密码学。为了使读者对密码学有一个整体的...

  密码学课程设计试验代码,加标准的运行,C语言编写, 可以运行,希望同学们可以下载,尤其是信息安全技术的啊哈哈

  对于广大Coder、SA等IT人士来说,密码学是一个很常见的词语。我们对重要数据进行加密处理,我们对登陆用户密码进行验证,我们……加解密是我们日常工作的一个重要组成部分。简单来讲,密码学是研究如何隐密...

  Intellij IDEA 如何通过数据库表生成带注解的实体类图文详细教程06-08阅读数 2万+

  jquery/js实现一个网页同时调用多个倒计时(最新的)11-25阅读数 54万+

http://homeschoolwwh.com/suanfabaomi/287.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有