Presentation is loading. Please wait.

Presentation is loading. Please wait.

中国科学技术大学 肖 明 军 xiaomj@ustc.edu.cn 《网络信息安全》 中国科学技术大学 肖 明 军 xiaomj@ustc.edu.cn.

Similar presentations


Presentation on theme: "中国科学技术大学 肖 明 军 xiaomj@ustc.edu.cn 《网络信息安全》 中国科学技术大学 肖 明 军 xiaomj@ustc.edu.cn."— Presentation transcript:

1 中国科学技术大学 肖 明 军 xiaomj@ustc.edu.cn
《网络信息安全》 中国科学技术大学 肖 明 军

2 复习 对称加密算法 1 DES算法 2 IDEA算法 2

3 第二章 信息加密技术(3) 本节学习目标: 掌握常用加密算法及其相关知识 对称加密算法:DES、IDEA 非对称加密算法:RSA 3

4 非对称密码算法原理 对称密钥密码系统的缺陷 密钥必须经过安全的信道分配 无法用于数字签名 密钥管理复杂 O(n2)
76年Diffie和Hellman发表了“密码学的新方向”,奠定了公钥密码学的基础 公钥技术是二十世纪最伟大的思想之一 ,是密码学历史上唯一的一次真正的革命 改变了密钥分发的方式 可以广泛用于数字签名和身份认证服务 基于数学函数而不是代替和换位 4

5 公钥密码系统的加密原理 A B 加密 算法 解密 算法 任何人向B发送信息都可以使用同一个密钥(B的公钥)加密
每个通信实体有一对密钥(公钥,私钥)。公钥公开,用于加密和验证签名,私钥保密,用作解密和签名 A向B 发送消息,用B的公钥加密 B收到密文后,用自己的私钥解密 A B C的公钥 B的私钥 B的公钥 加密 算法 cipher 解密 算法 PlainText PlainText 任何人向B发送信息都可以使用同一个密钥(B的公钥)加密 没有其他人可以得到B的私钥,所以只有B可以解密 5

6 公钥密码系统的签名原理 A向B 发送消息,用A的私钥加密(签名) B收到密文后,用A的公钥解密(验证) A B 加密 解密 算法
PlainText 加密 算法 解密 cipher A B A的私钥 A的公钥 A向B 发送消息,用A的私钥加密(签名) B收到密文后,用A的公钥解密(验证) 6

7 公钥密码算法的表示 对称密钥密码 公开密钥 密钥:会话密钥(Ks) 加密函数:C= EKs[P] 对密文C,解密函数:DKs[C],
(KUa,KRa) 加密/签名:C= EKUb[P],EKRa[P] 解密/验证:P= DKRb[C],DKUa[C] 7

8 数字签名和加密同时使用 A B Y = EKRa (X), Z= EKUb[Y] = EKUb [ EKRa (X)]
(签名) 加密 解密 解密 (验证) Y Z Y X X KRb KUb 产生密钥对 KUa KRa 产生密钥对 Y = EKRa (X), Z= EKUb[Y] = EKUb [ EKRa (X)] Y = DKRb (Z), X= DKUa[Y] = DKUa [ DKRb (Z)] 8

9 基本思想和要求 涉及到各方:发送方、接收方、攻击者 涉及到数据:公钥、私钥、明文、密文 公钥算法的条件: 产生一对密钥是计算可行的
已知公钥和明文,产生密文是计算可行的 接收方利用私钥来解密密文是计算可行的 对于攻击者,利用公钥来推断私钥是计算不可行的 已知公钥和密文,恢复明文是计算不可行的 (可选)加密和解密的顺序可交换 9

10 如何设计一个公钥算法 公钥和私钥必须相关,而且从公钥到私钥不可推断 计算可行和不可行的界
必须要找到一个难题,从一个方向走是容易的,从另一个方向走是困难的 如何把这个难题跟加解密结合起来 计算可行和不可行的界 10

11 公钥密码学的研究情况 与计算复杂性理论密切相关 计算复杂性理论可以提供指导 一个困难问题必然会导致一个保密性很好的密码系统吗?
但是需求不尽相同 计算复杂性通常针对一个孤立的问题进行研究 而公钥密码学往往需要考虑一些相关的问题 比如,密码分析还需要考虑已知明文、选择明文等相关的情形 讨论的情形不同 计算复杂性考虑最坏的情形 而对于公钥密码学则是不够的 一个困难问题必然会导致一个保密性很好的密码系统吗? 不一定,还需要有好的构造 11

12 RSA算法简介 77年发明,78年公布 Ron Rivest, Adi Shamir , Leonard Adleman (这是三位发明人)
12

13 数论基础 a与b的最大公因数:gcd(a, b),简记为(a, b) 如果gcd(a, b)=1 ,称a与b 互素 模运算 mod
gcd(20, 24)=4 , gcd(15, 16)=1 如果gcd(a, b)=1 ,称a与b 互素 模运算 mod a= q n +r ≤r<n ; q=[a/n] ; [x] 表示小于或等于x的最大整数 a=[a/n]n + (a mod n) , r = a mod n 如果 (a mod n )= (b mod n) ,则称a 与b 模n同余,记为 a = b mod n 例如, 23 =8 mod 5 , 8 =1 mod 7 13

14 数论基础(续) 模运算对加法和乘法是可交换的、可结合的、可分配的 幂,模运算 ma mod n
(a+b) mod n = ((a mod n ) + (b mod n) ) mod n (a-b) mod n = ((a mod n) – (b mod n) ) mod n (a×b) mod n = ((a mod n )× (b mod n) ) mod n (a × (b+c) ) mod n = (( a ×b) mod n + (a ×c) mod n) mod n 幂,模运算 ma mod n m2 mod n = (m×m) mod n = (m mod n ) 2 mod n m4 mod n = (m2 mod n ) 2 mod n m8 mod n = ((m2 mod n )2 mod n )2 mod n m25 mod n = (m × m8 × m16) mod n 14

15 数论基础(续) 欧拉函数ф(n) n是正整数, ф(n)是比n小且与n 互素的正整数的个数
ф(2) = |{1}| =1 ф(3) = |{1, 2}| =2 ф(4) = |{1, 3}| =2 ф(5) = |{1, 2, 3, 4 }| =4 ф(6) = |{1, 5}| =2 ф(7) = |{1, 2, 3, 4, 5, 6}| =6 ф(10) = |{1, 3, 7, 9}| =4 ф(11) = |{1, 2,3,4,5,6, 7,8, 9,10}| =10 如果p是素数,则ф(p)=(p-1), 比如ф(2), ф(5), ф(11) 如果p,q 是素数,则ф(pq)=ф(p)ф(q)= (p-1)(q-1),比如, ф(10) 15

16 数论基础(续) 定理1 若ac=bd mod n 且c=d mod n 及 (c,n)=1,则 a=b mod n
证明 由(a-b)c+b(c-d)=ac-bd=0 mod n 可得 n | (a-b)c。因为及 (c,n)=1,故n | (a-b)。因此a=b mod n 定理2 若(a,n)=1,则存在唯一整数b,0<b<n,且(b,n)=1,使得ab=1 mod n 证明 由定理1知,若(a,n)=1,且ij mod n,则aiaj mod n。因此,集合{ai mod n}i=0,1,…,n-1为集合{0,1,…,n-1}的一个排列。因此b为ab=1 mod n的唯一解。此外,因ab-1=kn,k为正数,若(b,n)=g则g | (ab-1)。因g | ab,所以g|1。因此,g=1。故b也与n互素。 16

17 数论基础(续) 定理3 令{r1,r2,…,rф(n)}为模n的一既约剩余系,且(a,n)=1,则{ar1,ar2,…,arф(n)}也为模n的一既约剩余系 证明 设(arj,n)=g,则g|a或g|rj。因此我们得以下两种情况。 1) g|a且g|n,或 2) g|rj且g|n。 首先 1)不可能,因为(a,n)=1;其次 2)也不可能,因为rj为模n既约剩余系的一元素。因此(arj,n)=1。此外, ariarj,否则ri=rj。因此{ar1,ar2,…,arф(n)}也为模n的一既约剩余系。 定理4 欧拉定理:若(a,n)=1,则aф(n)=1 mod n 证明 令{r1,r2,…,rф(n)}为模n的一既约剩余系,由定理3知,若(a,n)=1,则{ar1,ar2,…,arф(n)}也为模n的一既约剩余系。因此 1<=i<=ф(n) ( ari) mod n = 1<=i<=ф(n) (ri) mod n,由消去法,可得 aф(n)=1 mod n 17

18 数论基础(续) 推论:给定两个素数p, q , 两个整数 n, m ,使得n=pq, 0<m<n ; 则对于任意整数k ,下列关系成立:m kф(n)+1 ≡ m mod n 证明:分两种情况: 1)m与n互素,则由欧拉定理得 mф(n) ≡1 mod n m kф(n) ≡1 mod n m kф(n)+1 ≡m mod n 2) gcd(m,n)1,由于n=pq,则gcd(m,n)1意味着m要么是p的倍数,要么是q的倍数,不妨设m=tp,其中t为一正整数。此时,gcd(m,q)=1,否则m也是q的倍数,从而是pq的倍数,与m<n=pq矛盾。 由gcd(m,q)=1及欧拉定理得mф(q) ≡1 mod q, [mkф(q)] ф(p)≡1 mod q, mkф(n) ≡1 mod q 因此存在一整数r,使得mkф(n) =1+rq,两边同乘以m=tp,得 mkф(n)+1 =m+rtpq=m+rtn,即m kф(n)+1 ≡m mod n 18

19 RSA算法操作过程 密钥产生 1. 取两个大素数 p, q , pq, 保密; 2. 计算n=pq,公开n;
4. 选择整数e,使得 gcd (e, ф(n))=1; 1<e<ф(n) 5.计算d = e-1 mod (n) 公开(e, n)=(5, 119) 将d 保密,丢弃p, q p=7,q=17 n=119 Ф(n)=96 选择e=5 5d=k×96+1 令 k=4, 得到 d=77 19

20 RSA 算法加密/解密过程 公开密钥: KU={e, n} 秘密密钥: KR={d, n} 加密过程 把待加密的内容分成k比特的分组,
k≤ log2n,并写成数字,设为M,则: C= Me mod n 解密过程 M = Cd mod n {5, 119} {77, 119} c=m5 mod 119 m=c77 mod 119 20

21 = M mod n RSA 算法正确性 M=Cd mod n = (Me mod n)d mod n = Med mod n
= M kф(n)+1 mod n = M mod n = M 21

22 计算乘幂 计算d=am, m=bkbk-1…b0(二进制表示) 原理: d1 For ik downto 0 Do
d(dd) mod n If bi = 1 Then d(da) mod n Return d 原理: m = ((((((bk2+bk-1)2+bk-2)2+bk-3)2+…)2+b0 22

23 RSA密钥产生 产生两个素数 选择e或者d,然后求出另一个
由于n = pq是公开的,所以,为了防止攻击者利用n获得p和q,必须选择足够大的素数p和q 大素数产生算法 选择e或者d,然后求出另一个 23

24 大素数产生 素数生成过程: 素数理论: 在N附近,每ln(N)个整数中有一个素数 随机选择一个奇数n(如通过伪随机数发生器)
随机选择a, 使a<n 进行素性测试(例如用Miller-Rabin算法),若n没有通过测试,抛弃n,转到 如果通过了足够次数的测试,认为n是素数,否则转到. 素数理论: 在N附近,每ln(N)个整数中有一个素数 24

25 素性测试 素性测试是检验一个给定的整数是否为素数的测试。 确定型算法: 试除法:尝试从2到根号N的整数是否整除N。
AKS 质数测试:PRIMES in P 这篇论文提到的方法,是第一个多项式时间的质数测试算法。 随机算法 费马测试:利用费马小定理来测试。 费马小定理:如果p是一个素数,且0<a<p,则a p-1≡1(mod p) 利用费马小定理,对于给定整数n,可以设计一个素数判定算法,通过计算d=2n-1mod n (a=2)来判定整数n的素性。当d1时,n肯定不是素数;当d=1时,n则很可能是素数,但也可能是合数(满足费马小定理的合数被称作Carmichael数,前3个是561,1105,1729,这种数非常少, 内只有255个),为了提高测试的准确性,可用随机的多次选取a 25

26 素性测试 Miller-Rabin(米勒-拉宾 ) 质数测试
定理 如果p为大于2的素数,则方程x2≡1(mod p)的解只有x≡1或x≡-1。 证明 由x2≡1(mod p),有x2-1≡0(mod p),(x+1)(x-1) ≡0(mod p),因此p|(x+1)或p|(x-1)或p|(x+1)且p|(x-1)。若p|(x+1)且p|(x-1),则存在两个整数k和j,使得x+1=kp,x-1=jp两式相减得2=(k-j)p,为不可能结果。所以有p|(x+1)或p|(x-1)。设p|(x+1),则x+1=kp,因此x≡-1(mod p),同理若p|(x-1),则x≡1(mod p)。 26

27 素性测试 逆否命题:如果方程x2≡1(mod p)有一解x0{1,-1},那么p不是素数 例如,考虑方程x2≡1(mod 8),我们有:
12≡1(mod 8), 32≡1(mod 8), 52≡1(mod 8), 72≡1(mod 8) 又5≡-3(mod 8), 7≡-1(mod 8),所以方程的解为1,-1,3,-3,可见8不是素数。 27

28 素性测试 Miller-Rabin算法 WITNESS(a,n)  设bkbk-1…b0是(n-1)的二进制表示  d1
 for ik downto 0 do  xd  d(dd) mod n  if (d=1 & x1 & xn-1) return TRUE  if (bi=1) then d(da) mod n  if (d1) return TRUE  else return FALSE 如返回TRUE,说明n不是素数。 28

29 素性测试 For循环结束后,有d≡ an-1(mod n),由费马定理知,若n为素数,则d为1。因此若d1,则n不为素数,所以返回false。 因为n-1≡-1(mod n),所以(x1)and(xn-1)意指x2≡1(mod n)有不在{-1,1}中的根,因此n不为素数,返回false。 该算法具有以下性质:对s个不同的a,重复调用这一算法,只要有一次算法返回false,就可以肯定n不是素数。如果算法每次返回都为true,则n是素数的概率至少为1-2-s。因此,对于足够大的s,就可以非常肯定地相信n为素数 29

30 RSA加密过程举例 30

31 举例 取两个质数p=11,q=13,p和q的乘积为n=p×q=143,算出另一个数z=(p-1)×(q-1)=120;再选取一个与z=120互质的数,例如e=7,则公开密钥=(n,e)=(143,7)。 对于这个e值,可以算出其逆:d=103。因为e×d=7×103=721,满足e×d mod z =1;即721 mod 120=1成立。则秘密密钥=(n,d)=(143,103)。 31

32 设张小姐需要发送机密信息(明文)m=85给李先生,她已经从公开媒体得到了李先生的公开密钥(n,e)=(143,7),于是她算出加密值:
c= me mod n=857 mod 143=123并发送给李先生。 李先生在收到密文c=123后,利用只有他自己知道的秘密密钥计算:m= cd mod n = mod 143=85,所以,李先生可以得到张小姐发给他的真正的信息m=85,实现了解密。 32

33 RSA 算法的安全性 攻击方法 大数的因子分解是数论中的一个难题 蛮力攻击:对所有密钥都进行尝试
数学攻击:等效于对两个素数乘积(n)的因子分解 大数的因子分解是数论中的一个难题 因子分解的进展 十进制数字位数 近似比特数 得到的数据 MIPS年 100 332 1991 7 110 365 1992 75 120 398 1993 830 129 428 1994 5000 130 431 1996 500 并没有严格的数学证明表示破译RSA必须分解两个素数的乘积。 33

34 RSA 算法的安全性 就目前的计算机水平用1024位的密钥是安全的,2048位是绝对安全的。RSA实验室认为,512位的n已不够安全,应停止使用,现在的个人需要用668位的n,公司要用1024位的n,极其重要的场合应该用2048位的n。 34

35 RSA 算法的性能 速度 软件实现比DES慢100倍 硬件实现比DES慢1000倍 8位公开密钥的RSA的加密速度 512位 768位
1024位 加密(秒) 0.03 0.05 0.08 解密(秒) 0.16 0.48 0.93 签名(秒) 0.52 0.97 验证(秒) 0.02 0.07 35

36 对公钥密码算法的误解 公开密钥算法比对称密钥密码算法更安全 公开密钥算法使对称密钥成为过时了的技术 使用公开密钥加密,密钥分配变得非常简单
任何一种算法都依赖于密钥长度、破译密码的工作量,从抗分析角度,没有一方更优越 公开密钥算法使对称密钥成为过时了的技术 公开密钥很慢,主要用在密钥管理和数字签名,对称密钥密码算法将长期存在 使用公开密钥加密,密钥分配变得非常简单 事实上的密钥分配既不简单,也不有效 公认的有效方法是通过密钥分配中心KDC来管理和分配公开密钥。 36

37 同态加密算法 同态加密算法是指具有同态性质的公钥加密体制,设E(m)表示m的加密密文,如果已知E(a)、E(b),任何人都可以通过某种计算得到 的密文 ab, 将这个计算过程表示为E(a) E(b),即 E(ab)= E(a) E(b)  分别是明文空间和密文空间集合上的一个二元运算符 37

38 同态加密算法 乘法同态加密算法 Epk(m1)•Epk(m2)=Epk(m1•m2) example: RSA
加法同态加密算法Epk(m1;r1)•Epk(m2;r2)=Epk(m1+m2;r1•r2) examples: Benaloh [Ben94], Naccache and Stern [NS98], Okmoto and Uchiyama [OU98], Paillier [Pai99] 38

39 同态加密算法例子:OU 加密体系构建于集合Z/nZ(n=p2q) 之上,其算法基于一个对数函数L
(Z/p2Z)*对于乘法运算是一个阶为 p(p-1)的循环群。定义其子群 : 在 上定义函数L: 函数L具有同态性质,即 若 且 ,则当 时 39

40 同态加密算法例子:OU 公钥密钥对的生成 加密 解密 令k为安全参数,取大质数p,q且 |p|=|q|=k。令n=p2q 。
随机取g(Z/nZ)*,令gp=gp-1mod p2 。 因为 所以 ,令 公钥:n,g,h,k 私钥:p,gp 加密 明文 ,随机数 解密 40

41 散 列 (hash)函 数 签名方案一般地都是对一个较短的消息签名,对一个很长的消息,如果直接处理,则首先要把它分割成较短的段,再进行签名。显然,用这种方法签名一个几兆的文件是不合适的。 解决这一问题的方法:对被签名消息用一个快速散列函数产生一个确定长度的消息摘要,比如:160比特,最后对这个摘要签名。 所谓散列函数是:从一个消息空间到另一个消息空间的一个映射,这是一个多一对应,可能出现不同消息对应于相同散列值的情形,这一现象称为碰撞 41

42 散 列 (hash)函 数 无碰撞散列函数: 对应用散列函数的数字签名的一个可能攻击方法是寻找一个碰撞:对给定的签名消息(x,y),y=sigk(h(x)),如果找到一个消息x’x,h(x’)=h(x), 则(x’,y)成为一个伪造签名。为了阻止这种攻击,无碰撞散列函数是必须的。 弱无碰撞散列函数: 对于给定消息x,在计算上几乎找不到另一个消息x’x,使得h(x’)= h(x) ; 强无碰撞散列函数: 在计算上几乎不可能找到两个消息x’x,使得 h(x’)=h(x); 单向散列函数: 对于给定的一个消息摘要(散列值)z,找到一个消息x,满足h(x)=z是计算上不可能的; 42

43 散 列 (hash)函 数 强无碰撞性包含弱无碰撞、单向性。
MD4,MD5散列函数:1990年,Rivest提出了散列函数MD4(Message Digest) ,MD4输入任意长度消息,输出128比特消息摘要,它是一个强无碰撞散列函数。1992年Rivest提出改进算法MD5,它比MD4复杂,但思想类似。 43

44 MD5算法 输入:任意长度的消息 输出:128位消息摘要 处理:以512位输入数据块为单位 44

45 MD5步骤 第一步:消息填充 补长到512的倍数 最后64位为消息长度(填充前的长度)的低64位(如果消息长大于264,则以264为模数取模) 一定要补长(64+1~512),内容为100…0(如若消息长448,则填充512+64) 第二步 把结果分割为512位的块:Y0,Y1,…YL-1(每一个有16个32比特长字) 第三步 初始化MD buffer,128位常量(4个32bit字),进入循环迭代,共L次 每次:一个输入128位,另一个输入512位,结果输出128位,用于下一轮输入 第四步 最后一步的输出即为散列结果128位 45

46 MD5: 示意图 46

47 MD5的每一步运算 将512位的明文分成16份,每份为32位的子明文分组,用X[k],k=0,1,…,15表示。
每一步的数据处理都是针对4个32位记录单元中数据进行的。它们的初始值为:A= ,B=89ABCDEF,C=FEDCBA98,D= 。 每一步有4轮,每一轮又有16小步,共64个步骤运算后,记录单元A、B、C、D中的128位即为中间散列值。 每一步的第一轮开始时,将A、B、C、D复制到另外的记录单元AA、BB、CC、DD中。这4个值将在第4轮的最后与相关的A、B、C、D相加。 47

48 MD5的每一步运算示意图 48

49 每一轮中16步的每一步运算 在每一轮的每一小步中,将A、B、C、D中3个记录单元中的数据以非线性的操作方式处理,结果再与512位明文分组中的一个32位子明文分组X[k]及一个固定数T[i]相加。再将结果左循环移位s位,再与剩下的单元中的数据相加。最后的32位结果重新存入A、B、C、D中的一个记录单元中。 49

50 每一轮中16步的每一步运算结构 A B C D + g M[j]=X[k] + ti=T[i] + CLSs + A B C D 50

51 每一轮中16步的每一步运算结构 Function g g(x,y,z) 1 F(x,y,z) (xy)(xz)
2 G(x,y,z) (xz)(yz) 3 H(x,y,z) xyz 4 I (x,y,z) y(xz) 设M[j]表示消息的第j个分组(0j 15),<<s表示循环左移s位,则 FF(a,b,c,d,M[j],s,ti)表示a=b+((a+F(b,c,d)+M[j]+ti)<<s) GG(a,b,c,d,M[j],s,ti)表示a=b+((a+G(b,c,d)+M[j]+ti)<<s) HH(a,b,c,d,M[j],s,ti)表示a=b+((a+H(b,c,d)+M[j]+ti)<<s) II(a,b,c,d,M[j],s,ti)表示a=b+((a+I(b,c,d)+M[j]+ti)<<s) 51

52 (A,B,C,D,X[k],S,T[i])
52

53 (A,B,C,D,X[k],S,T[i])
53

54 关于MD5 常数ti的选择: 生日攻击 在第i步中,ti是232abs(sin(i))的整数部分,i的单位是弧度。
对于单向散列函数有两种穷举攻击方法: 给定消息的散列函数H(M),破译者逐个生产其他文件M’,以使H(M)=H(M’) 攻击者寻找两个随机的消息M,M’,使H(M)=H(M’) 生日悖论是一个标准的统计问题:房子里面应有多少人才有可能(概率大于0.5)使至少1人与你生日相同?答案是253。既然这样,那么应该有多少人才能使他们中至少两个人的生日相同呢?答案出人意料地低,是23人。寻找两个随机的具有相同生日的两个人属于第二种穷举攻击,通常被称为生日攻击 54

55 关于MD5 安全性 Rivest猜想作为128比特长的杂凑值来说,MD5的强度达到了最大,找出具有相同杂凑值的两个消息需要执行O(264)次运算,寻找具有给定杂凑值的消息需要执行O(2128)次运算 2004年,山东大学王小云等成功找出了MD5的碰撞,发生碰撞的消息是由两个1024比特长的串M、Ni构成,设消息M||Ni的碰撞是M’||Ni’,在IBM P690上找M和M’花费的时间大约1小时,找出M和M’后,则只需15秒至5分钟就可找到Ni和Ni’。 MD5不是足够安全的 55

56 安全杂凑算法SHA 安全杂凑算法SHA(secure hash algorithm)
由美国NIST设计,于1993年作为联邦信息处理标准,SHA-0是SHA的早期版本,公布后很快发现的它的缺陷,修改后的版本称为SHA-1,简称SHA SHA是基于MD4算法,输入为小于264比特长的消息,分为512比特长的分组,输出为160比特的消息摘要。由于摘要长度长于128位,其抗穷尽搜索攻击的强度强于MD5,而SHA的设计准则没有公开,所以它的抗密码分析的强度难以判断,猜测强于MD5 2005年,王小云等提出了对SHA-1的碰撞搜索攻击,该方法用于攻击完全版的SHA-0时,所需的运算次数少于239,攻击58步的SHA-1时,所需的运算次数少于233。分析指出,用他们的方法攻击70步的SHA-1时,所需的运算次数少于250,而攻击80步的SHA-1时,所需的运算次数少于269。 56


Download ppt "中国科学技术大学 肖 明 军 xiaomj@ustc.edu.cn 《网络信息安全》 中国科学技术大学 肖 明 军 xiaomj@ustc.edu.cn."

Similar presentations


Ads by Google