1 清华大学宋斌恒1 Lecture 10. Number theoretic Algorithm 清华大学 宋斌恒 清华大学宋斌恒2 From useless to useful ? Number theory is regarded as a beautiful but largely useless in the past ? Today number-theoretic algorithms are used widely 清华大学宋斌恒3 Contents ? Basic concepts ? Divisibility and divisor ? Prime and composite numbers ? Division theorem ? Greatest common divisors ? Relative prime integers ? Unique factorization ? Euclid algorithm and its complexity analysis ? Modular arithmetic ? Solving modular linear equation ?孙子定理【中国剩余数定理】 ? RSA 清华大学宋斌恒4 Basic Concepts ? Z={…,-2,-1,0,1,2,…} Integers 整数 ? N={0,1,2,3…} Natural numbers 自然数 ? d|a (d divides a) d整除a,存在整数k使得 a=kd ? Divisor: 约数 ? Trivial divisor:平凡约数【举例】 ?素数【1,2,3,4那个是素数】 ?合数【1,2,3,4那个是合数】 清华大学宋斌恒5 与算法复杂度相关的概念 ?整数的表示: ?一进制 ?二进制【十进制等】的长度作为一个整数的复 杂度度量。 ? The function of “Log * of n” ? f (i) (n)=n if i==0 ? f (i) (n)=f(f (i) (n)) if i>0 ? lg* n = min{i>=0: lg (i) (n)<=1} 清华大学宋斌恒6 除法定理 ?对任意整数a和正整数n,存在唯一整数q和r使 得0≤r<n, a=qn+r ? Quotient:【q】 ? Remainder (residue 【r】) ? Z n ={[a] n : 0≤a≤n-1} ? [a] n ={a+kn: k in Z} ?【[a] n 的代表?】 2 清华大学宋斌恒7 最大公约数 ? Gcd: greatest common devisors ?定理:如果a和b是任意不等于0的整数,则 gcd(a,b)=集合{ax+by:x,y in Z}的最小整数。 【证明!】 ?互素:Relative prime integers ?如果gcd(a, b)=1称a和b互素 ?唯一分解定理 ? a=Π i=1,…n (p i ei ), p i 是素数单调升【是否可以通过 此方法计算gcd? 复杂度?】 ??如何证明有无穷多素数??【课堂提问】 清华大学宋斌恒8 gcd ? GCD递推定理:gcd(a,b)=gcd(b,a mod b) ?辗转相除法【如何说明其正确性?】 ?存在x和y使得gcd(a,b)=xa+yb。 ?西方人叫Euclid算法 清华大学宋斌恒9 Euclid算法 1. Euclid(a,b) 1. If b==0 return a 2. Return Euclid(b,a mod b) ? Running time: ? Steps of division: O(lg a) = O(n) n is the bit length of a. ? Lame’s theorem: 欧几里德算法迭代步数小于k,其 中F k 是第k个Fibonacci数。 ?证明提示:数学归纳法证明:如果a>b>=1而且上述 Euclid算法进行了k步递归,则a>= F k+2 and b>= F k+1 清华大学宋斌恒10 扩展欧几里德算法 ? Extended-Euclid(a,b) ? If b=0 then return (a,1,0) ? (d’,x’,y’)?Extended-Euclid(b,a mod b) ? Return (d’,y’,x’-[a/b]y’); 清华大学宋斌恒11 计算最大公约数及其线性组合表示 ab[a/b] dxy 140 91 1 7 2 -3 91 49 1 7 -1 2 x’-[a/b]y’ 49 42 1 7 1 -1 x’-[a/b]y’ 42 7 6 7 0 1 x’-[a/b]y’ 70- 710 清华大学宋斌恒12 群的概念? ?群(S,⊕ ) 1.封闭性 2.么元 3.结合率 4.逆元 交换率:交换群=Abelian群 3 清华大学宋斌恒13 Modular arithmetic ?+ n 群, ?× n 群 ? (Z n ,+ n )是有限Abel群 ? (Z * n ,× n )是有限Abel群 ?其中Z * n ={[a] n : gcd(a,n)=1} 清华大学宋斌恒14 . 15 群 14 13 11 8 47 14 42 1 14131187421. 15 清华大学宋斌恒15 Euler’s phi function φ(n)=nΠ p|n (1-1/p) is the size of Z * n . 欧拉φ函数 ?子群,真子群, ? Lagrange’s theorem: 有限群的子群的元素个 数是原群元素个数的约数。 清华大学宋斌恒16 由一个元素生成[张成]的子群 ?幂: ? a (k) = a ⊕ a ⊕ a ⊕ a ⊕ …⊕ a ? <a>={a (k) , k>=1} ? Order of a: 使a (k) =e的最小k 清华大学宋斌恒17 Solving modular linear equation ? ax ≡b (mod n) ? <a> 表示由a 生成的Z n 的子群 ? d=gcd(a,n) ? ?<a>=<d> in Z n . ? |<a>|=n/d ?利用扩充欧拉算法求解上述问题,可以得到有无解,有解 时给出所有解。 ?如果d|b则有b/d个解,x 0 =x’(b/d) mod n, x’是扩展欧几理 德算法的系数 ? x 0 +i(n/d) mod n; i=0,…,d-1通解 清华大学宋斌恒18 孙子点兵【中国余数定理】 ? a ??(a 1 ,a 2 ,…,a k ), ? a in Z n , ? a i in Z n i , ? n= n 1 n 2 …n k 所有n i 两两互素 ? Z n 与Z n1 ×Z n2 ×…×Z nk .等价 ?求逆与系数。 ? a=Σ a i m i (m i -1 mod n i ), ? m i =n 1 n 2 …n i-1 n i+1 …n k ?其中m i (m i -1 mod n i )是基本解 4 清华大学宋斌恒19 鬼谷算题 ?在鬼谷算题中有这样一个著名的题目:“今有物 不知其数,三三数之剩二,五五数之剩三,七 七数之剩二,问物几何?” ?我国宋代学者对这类题目钻研已颇为精深,总 结出了“三人同行七十稀,五树梅花廿一枝,七 子团圆正半月,去百零五便得知。”这样的口 诀,意思是说“以三三数之,余数乘以七十;五 五数之,余数乘以二十一;七七数之,余数乘 十五。三者相加,如不大于一百零五,即为答 数;否则须减去一百零五或其倍数。 清华大学宋斌恒20 解答 ? 3个一排余2、 ? 5个一排余3、 ? 7个一排余2、 ?【2】×70+【3】×21+【2】×15-105= 128 ?三人同行70稀, 五树梅花廿一支, 七子团圆正半 月, 抛五去百便得知。 清华大学宋斌恒21 利用公式求基本解 ? 35×(35 -1 mod 3)=70 ? 21×(21 -1 mod 5)=21 ? 15×(15 -1 mod 7)=15 ?更多内容参见论文《中国剩余定理》 ?数学研究所李文林袁向东 清华大学宋斌恒22 元素的幂 ? 3 i mod 7 ? Euler’s theorem: ? For any integer n >1. ? a φ(n) ≡1 (mod n) for all a in Z * n . ? Fermat’s theorem: ? a p-1 ≡1 (mod p ) for all a in Z * p . ?如何计算a b (mod n)?见下页 清华大学宋斌恒23 MODULAR- EXPONENTIATION(a,b,n) 1 c←0 2 d←1 3 let <b k ,…b 0 > be the binary rep. of b 4 for i←k downto 0 1 c ←2c 2 d←(d ? d) mod n 3 if b i = 1 then 1 c←c + 1 2 d←(d ? a) mod n 5 return d 【复杂度?】 清华大学宋斌恒24 密码学 ?对称加密: ?明文m ?密文e ?密钥k ?加密函数E k : ?解密函数D k : ? e=E k (m), 要求 ? m=D k (e) ? D k E k =I. 5 清华大学宋斌恒25 经典与现代对称加密算法 ?字符移位 ?字符置换 ? DES ?双重DES 清华大学宋斌恒26 非对称加密算法 ?解决对称加密算法在分布系统中的密钥管理缺陷:n个 人通讯,需要每个人记载n个密码,秘码存储量总数为 n 2 。 ?工作原理:每个人有一个(公钥,私钥)对,其中公 钥可以发布到任何地方。每个人只需要保存自己的私 钥即可,其中要求: ?利用公钥加密可以用私钥解密,反之亦然, ?可以验证信息的发送人 ?保证只有信息的接收人才能得到消息等 清华大学宋斌恒27 公钥理论 ?理论上要达到以上要求,公钥和私钥是可以互 相确定的,即给定公钥可以求出私钥,反之亦 然,如果给定公钥能求出私钥,那公钥体系岂 不没有任何意义! ?问题是:理论上要存在,而实际上不可算,就 能达到目标。 清华大学宋斌恒28 RSA算法 ?取2个不等的大素数p,q, 如其长度为512【或更 长】位 ?计算n=pq ?选择较小的奇数e,它和φ(n)=(p-1)(q-1)互素 ?计算e在模φ(n)下的逆d ?发布(e,n)作为公钥 ?保存(d,n)作为私钥 清华大学宋斌恒29 RSA加密算法 ? A message m is a number in Z n , ?用公钥转换:P(M)=M e (mod n) ?用私钥转换:S (M)=M d (mod n) ?定理:PS(M)=SP(M)=M ?两次转换的复杂性:如果n的长度是k,则需要lge+lgd 次的长度是k的数的乘法,若乘法复杂度为长度的平 方,则整个复杂度为k 3 。如果k=1024,则需要1 giga的 运算量。 清华大学宋斌恒30 RSA被攻击的可能性 ?由于(e,n) 公开,从(e,n)计算(d,n) ?目前没有发现比分解n=pq更为容易的算法,而 因式分解是NPC问题,故目前攻击困难 6 清华大学宋斌恒31 RSA算法的应用 ?不可抵赖性:Alice 发信给Bob,如何保证 Bob有充分的理由证明此信是Alice发出而不是 他人?任何人包括Alice不能否认这是Alice发出 的信息。 清华大学宋斌恒32 实现RSA算法体系要做的工作 ?大整数的表示 ?如何任意选取两个大素数(512、1024甚至2048位的 素数)? ?没有直接方法可用,利用测试法可以保证以足够大的概 率保证选定的数是一个素数,参见p887.- ?大整数的加法运算和模加运算 ?大整数的乘法运算和模乘运算 ? Divide and Conquer 可以得到O(n lg 3 )复杂度的乘法 ?幂乘算法的实现。 清华大学宋斌恒33 RSA及其它加密算法的克星 ?干草堆里找针(大海捞针)Find a needle in a stack of hay, 量子计算机可以在sqrt(n)的时间 内找到n个散乱数字中的某一个。 ?大海捞针:大海里有一根针,需要判断它存在 的位置,如果你有一个具有魔法的吸铁石,可 以在一秒内判断任何区域内有没有针,则你可 以在非常短的时间内把针找到! ?非确定图灵机可以做到这一点 清华大学宋斌恒34 密码系统需要防范的攻击 1.监听与分析 2.伪造其中一方(服务器或客户端) 3.代理(在线路中伪造双方) 4.窜改 5.重放 6.综合 清华大学宋斌恒35 密码系统要考虑的问题 ?随机数 ?哈希函数 ?对称加密算法 ?非对称加密算法 ?密码协议 清华大学宋斌恒36 安全协议介绍 ?如何利用对称加密系统实现安全通话: ?设k是双方共享的秘密,可以利用此实现抗击前 面提到的各种攻击: ? Alice:生成随机数r1,r2,发送 (r1,des(k,r2))给Bob ? Bob:生成随机数r3,r4,发送 (r3,des(k,r4))给Alice 7 清华大学宋斌恒37 续 ? Alice:发送h(r3,k)给Bob ? Bob:发送h(r1,k)给Alice ? Alice:验证收到的值是否与h(r1,k)相等 ? Bob:验证收到的值是否与h(r3,k)相等 ?如果相等则双方互相验明共享秘密,然后利用其秘密k 解密互相发送过来的随机数r2和r4作为大家会话密钥 ?分析! 清华大学宋斌恒38 分布授权、验证 ? Alice授权给Bob,Bob以Alice的授权身份给 Carl发送消息,Carl从Alice处得到验证。 ?公钥实现:要求授权只能由Bob使用。 ? Alice发送用自己私钥和Bob公钥加密的授权书 给Bob,Bob解密可以得到授权书 ? Bob用自己私钥和Carl公钥发送授权书到Carl, Carl发送授权书到Alice即可验证