本篇文章根据老师给的重点有针对性的快速复习。
对于河南大学的学弟学妹们,如果你们任课老师是袁老师的话,他会给复习要点,跟着复习要点有针对性的复习就行。
1.清楚信息安全专业学习密码学的原因 (非标准答案)(必考!)
答:信息在社会中的地位和作用越来越重要,而其安全也愈发重要,而密码学是保障信息安全的核心技术。密码学已渗透到我们日常生活各个方面。比如公钥密码技术用于数字签名,认证服务,没有它,常用的网上支付系统就无法存在。还有一些重要的用户登录系统,手机通信中的信息加密等也依赖密码学。信息安全专业学习密码学有利于学生了解如何保障信息的安全和基本思想的建立。
2.流密码的基本思想: (必考!)
3.CBC工作模式为:它一次对一个明文分组(8个字节一组)加密,每次加密使用同一密钥,加密算法的输入是当前明文分组和前一次密文分组的异或,因此加密算法的输入不会显示出这次的明文分组之间的固定关系,所以重复的明文分组不会在密文中暴露出这种重复关系 (必须背会!)
CBC模式加解密示意图 (必考!)
加密: Ci= Ek[Pi⊕Ci-1] (可认为C0=IV) 解密:Pi= DK[Ci]⊕Ci-1
IV初始向量与第一个明文分组异或,应像密钥一样被保护。该模式能够获得保密性也可认证,适合加密64比特的消息
4.弱单向函数和强单向函数 (必考!)
单向函数:已知h,求使得H(x)=h的x在计算上是不可行的。
已知x,找出y (y≠x) 使得H(y)=H(x)在计算上是不可行的,若单向函数满足这种性质则称其为弱单向函数 (必须会背!)
找出任意两个不同的输入x、y,使得H(x)=H(y)在计算上是不可行的,若单向函数满足这种性质则称其为强单向函数 (必须会背!)
已知一个另找一个使得H函数相等是弱单向,任意给倆使其H函数相等是强单向(看谁单的很)
5.写出5个密码学新方向或新技术
身份基加密(IBE)、属性基加密(ABE)、全同态加密、动态加密、可搜索加密
1.对字节a=1011 0110字节替代变换,设a的逆为a-1 ( 必考!)
答:先求a的逆,再用仿射变换即可
1️⃣ 由a得(x7+x5+x4+x2+x)a-1 ≡ 1(mod x8+x4+x3+x+1)
所以a-1=x6+x5+x4+x3 即0111 1000 (二进制对应位数有1就代表有x的那一次方)
根据老师给的考试要点,仿射变换和m(x)题目会给出,a的逆试试就出来了
a*a-1即1011 0110*0111 1000 = 1101 0110 0100 00
a*a-1 mod m(x):1101 0110 0100 00 % 1000 1101 1(m(x)) = 1
考试时试试1的二进制,2的二进制,3的二进制,和a相乘%m(x)看是否为1
2️⃣ 使用仿射变换 (注意要用a的逆而且注意x的顺序从下往上读)
注意是模2加,即只有0和1
即(0100 1110)2=(4E)16 注意也是从下开始读 因为最下面的是字节高位即最前面的01…
2.1 RSA加密体制中,接收方的公开钥是(e,n)=(5,35),接收到的密文是C=10,求明文M (必考!)
答:( m ≡ cd mod n 所以得先算出d -----> d*e ≡ 1 mod φ(n) )
n=35 所以 p=5,q=7
φ(35) = (p-1)*(q-1) =4*6=24
因为 d*e ≡ 1 mod φ(n) 所以d=5 (这个到时候一个一个试就行)
m ≡ cd mod n ≡ 105 mod 35 ≡ 5 (注意不是等号)
考试可求出明文再反推密文试下看看密文是不是10
2.2 假设明文m=5,e=7,p=11,q=13,给出RSA的加密解密过程 (必考!)
答:n=p*q=11*13=143 φ(143) = (p-1)*(q-1) = 10*12=120
因为d*e ≡ 1 mod φ(n) 即d*7 ≡ 1 mod 120 所以 d=103
加密:c ≡ me mod n ≡ 57 ≡ 47 mod 143
解密:m ≡ cd mod n ≡ 47103 ≡ 5 mod 143
3.ElGamal签名体制中,假设p=19,g=13。签名者A的私钥为x = 10,试计算公钥。设消息M=15,k=11,求签名过程并验证。 (必考!)
答:公钥:y ≡ gx mod p ≡ 1310 mod 19 = 6
签名:r ≡ gk (mod p) ≡ 1311 mod 19 =2
s ≡ (H(m)-xr)k-1 (mod p-1) ≡ (m-xr)k-1 (mod p-1) ≡ (15-10*2)*11-1 mod 18 = 11
所以(r,s)=(2,11)
验证:yrrs ≡ 62*211 mod 19 ≡ 8 ≡ gm (mod p) ≡ 1315 ≡ 8 mod 19
根据老师的重点中给出的a*b (mod q) = a (mod q) * b (mod q)应该是用在比如这题求62*211 mod 19就等同于求62 mod 19 * 211 mod 19 ≡ 17 *15 ≡ 8 mod 19
求上面的11-1mod 18:
11*x ≡ 1 mod 18可算出x=5,而11*11-1 ≡ 1 mod 18 即11-1 ≡ 5 mod 18
4.在Diffie- Hellman密钥交换过程中,设大素数p=11,a=2是p的本原根。 (必考!)
(1) 用户A的公开钥YA=9,求其秘密钥XA。
(2)设用户B的公开钥YB=3,求A和B的共享密钥K。
答:1️⃣ YA=aXA mod p = aXA mod p 即 9=2XA mod 11 所以 XA=6 (考试时一个一个试就行)
2️⃣ K=YBXA mod p = 36 mod 11 =3
https://baike.baidu.com/item/%E9%9B%B6%E7%9F%A5%E8%AF%86%E8%AF%81%E6%98%8E
零知识证明是在20世纪80年代初提出的。它指的是证明者能够在不向验证者提供任何有用的信息的情况下,使验证者相信某个论断是正确的。零知识证明实质上是一种涉及两方或更多方的协议,即两方或更多方完成一项任务所需采取的一系列步骤。证明者向验证者证明并使其相信自己知道或拥有某一消息,但证明过程不能向验证者泄漏任何关于被证明消息的信息。
要是太多这段可省略
零知识证明起源于最小泄露证明。设P表示掌握某些信息,并希望证实这一事实的实体,设V是证明这一事实的实体。假如某个协议向V证明P的确掌握某些信息,但V无法推断出这些信息是什么,我们称P实现了最小泄露证明。不仅如此,如果V除了知道P能够证明某一事实外,不能够得到其他任何知识,我们称P实现了零知识证明,相应的协议称作零知识协议。
例如,A要向B证明自己拥有某个房间的钥匙,假设该房间只能用钥匙打开锁,而其他任何方法都打不开。这时有2个方法:
①A把钥匙出示给B,B用这把钥匙打开该房间的锁,从而证明A拥有该房间的正确的钥匙。
②B确定该房间内有某一物体,A用自己拥有的钥匙打开该房间的门,然后把物体拿出来出示给B,从而证明自己确实拥有该房间的钥匙。
后面的②方法属于零知识证明。它的好处在于,在整个证明的过程中,B始终不能看到钥匙的样子,从而避免了钥匙的泄露。
零知识证明在区块链里的应用非常广泛。最早使用零知识证明技术的区块链叫做 Zcash,这是许多零知识证明的做法之一,也是最有名的一个。V神就曾表示称,零知识证明能够被应用于以太坊区块链上几乎所有的场景。
相对于ZCash来说,比特币的转账并不是完全匿名的,只要知道了一个比特币地址,任何人都可以通过这个网站,查到这个地址的所有“消费”行为。比如给谁转了账,又从谁那里收到过转账,在以区块链技术为基础的“账本”上都详细地记录着。
例如A有3个BTC,要给B转账1个BTC,那么在账本上就会记录着:A转出了两笔BTC,一笔为1BTC,转给了B;另一笔为2BTC,转给了自己。
那么利用了“零知识证明”的ZCash是怎么做到的所谓匿名呢?
ZCash的代币为ZEC。同样假设A有3个ZEC,要给B转账1个ZEC。
首先,A会将自己的1个ZEC分成若干份随机投入一系列的“混合容器”中,指定接收方B的地址,同时混入的时候还有其他交易方输出的若干份ZEC。这些ZEC又被混合容器随机拆分,再从这些被拆分生成的所有的ZEC中取出合计为1ZEC的若干份,转移到B的地址中,同时在发送的时间上也可以设置一定的延迟。
其中的“混合容器”,就是一条“公有链”。经过这条公有链一系列的“混币”过程,就使得包括交易地址和具体金额在内的交易信息变得无从考证了。
零知识证明技术虽然会给区块链带来更强的匿名性,但同时会引起大量的监管问题,这是零知识证明技术无法回避的一个问题。