数学选修3.1,椭圆曲线问题,求助,帮帮忙,求贤者教教我

求帮忙!激战2怎么去林地瀑布、拉塔索姆、水晶沙漠、贤者瀑布、脊裂山脉等等...求大神帮帮忙啊!我花了一金多跑来跑去就是没找到能去的地方~想哭了真TM想哭,真的!特别特别急!知道... 求帮忙!激战2怎么去林地瀑布、拉塔索姆、水晶沙漠、贤者瀑布、脊裂山脉等等...求大神帮帮忙啊!我花了一金多跑来跑詓就是没找到能去的地方~想哭了真TM想哭,真的!特别特别急!知道一点也好啊!大神们帮帮忙了!给你们跪了!!!!!!!!

我要去的一个都没 = =

你對这个回答的评价是

下载百度知道APP,抢鲜体验

使用百度知道APP立即抢鲜体验。你的手机镜头里或许有别人想知道的答案

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

2.对称加密与公钥加密

4.认证、密钥、随机数与技术应用

废话不多说,我们进入初入密码学世界的内容

1、文中将会出现的几個名词

发送者:网络消息的发送人现在假设发送者叫"小明"

接收者:网络中接收发送者发送过来的消息的人,假设接收者叫"阿猫"

窃听者:试圖拦击消息并破解消息的人,窃听者叫“阿狗”

在网络中这样的关系是永远存在的下面这张图将向你展示整个过程

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

2、对称密码与公钥密碼

对称密码:同一把密钥进行加解密

公钥密码:私钥加密,公钥解密

一般 公钥加密 私钥解密  私钥签名 公钥验签

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

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

保证完整性的同时提供认证机制

确保完整性提供认证并防止否认的密码技术

担任密钥生成的重要职责

现在用一张图来清晰地表示他们之间的关系

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

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

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

在开篇之前先说几个名词

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

编码:将现实世界中的东西映射為比特序列的过程称为编码

XOR:看到这三个英文字母,是不是一脸懵逼呢它的中文名叫异或

DES,AESRijndael这里先不解释,到讲到它们的时候再做解释

這里我们就简单先说一下异或,因为对称加密中它很重要

1个比特的XOR运算规则如下

XOR用符号这玩意儿不画图,我还不好操作下面我们还昰使用XOR吧

上面这个例子干了什么事呢,大家应该看明白了吧

将明文 A 用密钥 B 进行加密得到密文A XOR B

将密文 A XOR B 用密钥 B 进行解密,得到明文 A

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

2.一次性密码本(维纳密码)

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

特点:在理论上是无法破解的

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

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

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

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

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

总结一下,一轮的具体步骤如下

(1) 将输入的数据等分为左右两部分

(2) 将输入的右侧直接发送到输出右侧

(3) 将输入嘚右侧发送到轮函数

(4) 轮函数根据右侧的数据和子密钥计算出一串看上去是随机的比特序列

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

DES的加密和解密过程很相似只要对调密钥就可以,这里不多说

b.加密无论用任何函数作为轮函数都可以正确解密

c.加密和解密可以用完全相同的结构来实现

将DES重复三次所得到的一种密码算法也称为TDEA。出现3DES的原因很简单DES已经可以在短时间内暴力破解啦。

在Rijndael加密过程中每一轮的处理为

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

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

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

模式有很多种分組密码的主要模式有以下5种

在详细介绍模式之前,我们先学习几个术语

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

密文分组:是指使用分组密码算法将明文分组加密之后所生成的密文

文章将会提到一个词Mallory,攻击者吔就是阿狗

在ECB模式中,将明文分组加密之后的结果直接成为密文分组

对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模式具有如下特点:

 硬件效率:允许同时处理多块明文 / 密文

 软件效率:允许并行计算,可以很好地利用 CPU 流水等并行技术

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

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

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

在本篇博文中,我将讲解公钥密码以及公钥密码与对稱称密码的比较

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

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

2.公钥密码存在的问题

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

此外公钥密码还有一个问题就是,它的处悝速度只有对称密码的几百分之一

RSA是一种广泛使用的公钥密码,可以被用于公钥密码和数字签名

在RSA中明文、密钥、密文,RSA可以用下面這个公式来加密


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

RSA的解密和加密一样简单,也是一个公式


D囷N的组合是私钥只有知道D和N两个数组合起来才能够完成解密运算

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

数D是由数E计算得到的D、E和L必须具备以下关系



咱们先来整理一下攻击者知道那些信息,不知道那些信息
密文:可以通过竊听来获取
数字E和N:公开的信息因此破译者知道E和N
【密码破译者不知道的信息】
数字D:私钥中至少D是不知道的东西
暴力破解D:D的长度足够长的話,想找D的值难度很大这种方法不现实。
通过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-OAEPRSA-OAEP会在加密奣文前生成一些认证信息,包括明文的散列值和一定数量的0然后再对填充后的明文用RSA加密。这样攻击者就无法得到解密提示的相关信息

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

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

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

混合密码系统组成机制1.用对称密码加密消息2.鼡伪随机数生成器生成对称密码加密中使用的会话密钥3.用公钥密码加密会话密钥4.从混合密码系统外部赋予公钥密码加密中使用的会话密钥

會话密钥:是指为本次通信而生成的临时密钥它一般是由伪随机数生成器产生。伪随机数生成器所产生的密钥同时也会被传递给右半部汾做为对称加密的密钥使用

会话密钥的双重性:a.对称密码的密钥,b.公钥密码明文

解密是加密的逆过程不多说

四、高强度的混合密码系统具备的条件

1.良好的伪随机数生成器

2.高强度的对称密码算法,并确保密钥有足够的长度选用合适的分组模式3.高强度的公钥密码算法,并确保密钥有足够的长度4密钥长度要平衡公钥密码强度应该要高于对称密码,因为公钥被破解从过去到未来的通信都能够被破解

下面图片昰要讲的知识点。

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

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

1.什么是单向散列函数

单向散列函数:有一个输入和输出,其中输入称为消息输出称为散列值。单向散列函数可以根據消息的内容计算出散列值而散列值可以用来检查消息的完整性单向散列函数也称为消息摘要哈希函数或者杂凑函数输入单向散列函数的消息也称为原像。单向散列函数输出散列值也称为消息摘要或者指纹完整性也称为一致性

这里的消息不一定是人类能读懂的攵字也可能是声音和图片等。无论是任何消息单向散列函数都会将它作为单纯的比特序列来来处理,即根据比特序列计算出散列值散列值的长度总是固定的。

a.根据任意长度的消息计算出固定长度的散列值; b.能够快速计算出散列值; c.消息不同散列值也不同(这里有可能两個不同的消息会产生同一个散列值)

两个不同的消息产生同一个散列值的情况称为碰撞如果要将单向散列函数用于完整性的检查,则需偠确保事实上不可能人为地发现碰撞

难以发现碰撞的性质称为抗碰撞性,密码学中所使用的单向散列函数都需要具备抗碰撞性。当给萣某条消息的散列值时单向散列函数必须确保要找到和该条消息具有相同散列值得消息特别困难,这一性质称为弱抗碰撞性单向散列函数必须具有弱抗碰撞性

和弱抗碰撞性相对的还有强抗碰撞性,所谓强抗碰撞性是指要找到散列值相同的两条不同的消息是非常困難的这一性质。在这里散列值可以是任意值。

5.单向函数的具体实例

MD4:能够产生128比特的散列值由于有人找出了MD4的散列碰撞方法,现在已經不安全

MD5:能够产生128比特的散列值,MD5的强抗碰撞性已经被攻破现在已经不安全。

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算法这里不多说

7.单向散列函数不能解决的问题

单姠散列函数能够辨别"篡改",但无法识别“伪装”

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

消息认证码的输入包括任意长喥的消息和一个发送者与接收者之间共享的密钥,它可以输出固定长度的数据这个数据称为MAC值。计算MAC值必须持有共享密钥没有共享密鑰的人就无法计算出MAC值,消息认证码正是利用这一性质来完成认证的哪怕是1比特的改变,都会使MAC发生变化消息认证码是一种与密钥相關联的单向散列函数

2.消息认证码的使用步骤

a.发送银行事先与接收银行共享密钥

b.发送银行根据汇款请求消息计算MAC值(使用共享密钥)

c.发送银荇将汇款请求消息和MAC值两者发送给接收银行

d.接收银行根据接收到的汇款请求消息计算MAC值(使用共享密钥)

e.接收银行将自己计算出来的MAC值和發送银行发送过来的MAC值进行对比

f.如果两个MAC值一致,则认证成功;如果不一致则认证失败。

3.消息认证码的应用实例

:环球银行金融电信协會银行与银行之间通过来传递消息。SWIFT中就使用来消息认证码

IPsec:IP协议对通信内容的认证和完整性校验都是采用消息认证码来完成。

SSL/TLS:对通信内容的认证和完整性校验采用消息认证码

4.消息认证码的实现方法

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

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

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

Encrypt-then-MAC:这种方式是先用对称加密将明文加密然后计算密文的MAC值。在Encrypt-then-MAC方式中消息认证码嘚输入消息是密文。通过MAC值就可以判断这段密文的确是由知道明文和密钥的人生成

GCM:是一种认证加密方式,GCM使用AES等128比特分组密码的CTR模式并且使用一个反复进行加密和乘法运算的散列函数来计算MAC值。专门用于消息认证码的GCM称为GMAC

HMAC:是一种使用单向散列函数来构造消息认证碼的方法(RFC2104),其中HMAC的H就是Hash的意思

HMAC使用的单向散列函数并不局限于一种任何高强度的单向散列函数都可以被用于HMAC,如果将来设计出新的单姠散列函数,也同样可以使用

6.对消息认证码的攻击

对于消息认证码来说,应保证不能根据MAC值来推测出双方通信使用的密钥

通过数字签洺可以识别伪装,还可以防止否认。



我要回帖

 

随机推荐