RSA的数学基础

概要

RSA是一种非对称加密算法,非常普遍,主要涉及的数学知识

  • 互质
  • 欧拉函数
  • 欧拉定理

互质

概念:两个正整数,除了1以外没有其他公因子(公约数)。
(补充:公因子同时能被两个数整数的整数,是这两个数的公因子,求最大公约数可以用辗转相除法
)

注意区分质数(素数prime)概念:质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。

举例: 7和20,20是不是质数,但是和7是互质数。

互质相关结论:

  • 任意两个质数构成互质关系,比如,13和97
  • 质数和非本身倍数的数都互质,比如,13和33
  • 两个数之中,大的数是质数,那么互质,比如,33和97
  • 1和任意自然数互质
  • p是大于1的整数,p和p-1互质,比如,23和24
  • p是大于1的奇数,p和p-2互质,比如,9和7

欧拉函数

假设需要求解下面问题:
给定正整数n,小于等于n的所有正整数中,求解有多少个与n互质?
欧拉函数就能解这个问题。
(欧拉函数用希腊字母 \phi表示,棒棒糖造型的那个符号,但是这里打不出来,后续用O代替。)

结合前面互质所得到的相关结论。

  • 【结论1】1和任意数互质
    O(1) = 1

  • 【结论2】n是质数,n与小于它的每个数都互质
    O(n) = n - 1

  • 【结论3】n是质数的k次方,n=p^k,p为质数
    O(n) = p^k - p^(k-1)
    这个公式理解起来意识是,p如果是质数,那么p的k次方,一定和p的整数倍不是互质,有共同的质因子p,其余都是和p互质。p^k 是总数,需要排除1p,2p,3p,...,p^(k-1)p,有p^(k-1)个。
    可以看出结论2是k=1的特例。

  • 【结论4】如果n可以分解为两个质数乘积 n = p1 × p2,
    φ(n) = φ(p1p2) = φ(p1)φ(p2)
    证明方式是【todo: 中国剩余定理】

  • 【结论5】任意一个正整数都可以写成一系列质数的乘积,得到欧拉函数通项公式:


    image

    (其中p1, p2……pn为x的所有质因数,x是不为0的整数)

【证明方式todo:剩余定理和拉格朗日定理】
理解这个公式的要领,这其实是一个概率公式,比如,x = 12,p1 = 2,p2 = 3,n = 2,第一个质因素p1 = 2,小于等于12的数字中,有多少和12有公约数p1呢,答案是有12 / p1 = 6个 。意思是,小于等于12的数字中,有 1/p1概率的数字和12不互质,那么有x*(1-1/p1)个数字与x互质。

欧拉定理

【定理】如果两个正整数a和n互质,则n的欧拉函数 φ(n) 可以让下面的等式成立(同余性质):


image

费马小定理

【定理】
a是不能被质数p整除的正整数,则有a^(p-1) ≡ 1 (mod p)

模反元素

【定义】如果两个正整数a和n互质,那么一定可以找到整数b,使得 ab-1 被n整除,或者说ab被n除的余数是1,b就叫做a的"模反元素"。

举例:
3和11互质,那么3的模反元素就是4,因为 (3 × 4)-1 可以被11整除。显然,模反元素不止一个, 4加减11的整数倍都是3的模反元素 {...,-18,-7,4,15,26,...},即如果b是a的模反元素,则 b+kn 都是a的模反元素

a的 φ(n)-1 次方,就是a的模反元素

扩展欧几里得算法

todo

RSA 生成公私钥过程

  • 第一步:选择随意两个不想等的质数p和q

  • 第二步:计算乘积: n = p * q
    其中n的二进制长度就是密钥的长度。
    比如: p和q是61和53,n = 3233
    那么n = 110010100001,12位长度。
    通常RSA长度是1024位,或者 2048位

  • 第三步: 计算n的欧拉函数
    O(n) = O(p) * O(q) = (p-1)(q-1) = 3120

  • 第四步: 选择一个整数e , 1< e< O(n), 且和 O(n) 互质
    比如选择 e = 17,
    实际应用中,常用的e是3和65537

  • 第五步:计算e对于O(n)的模反元素d
    ed = 1(mod O(n))
    这个式子等价于
    ed - 1 = k * O(n)

    所以:
    ed - kO(n) = 1
    这个式子等价于对于:
    e
    x + O(n)*y = 1 这个二元一次方程求解。
    17 * x + 3120 * y = 1

    【求解方式是: 扩展欧几里得算法】
    可以算出一组整数解为: x = 2753,y = -15
    所以d = 2753。

  • 到这里所有的解就完成了
    公钥:(n,e)-->(3233, 17)
    私钥: (n,d)--> (3233, 2753)

RSA 不可破解原因

1 已经知道了 n和e,可以破解d么?
ed = 1 ( mod O(n))
那么 ed = k* O(n) + 1。
d = ( k*O(n) + 1 )/ e

2 上面式子需要求O(n),可解就能破解d
O(n) = (p-1)(q-1), n = p*q
所以只要知道了p和q,就能知道O(n)

3 但是:大整数的因数分解,是一件非常困难的事情。目前,除了暴力破解,还没有发现别的有效方法。所以认为n足够大,当前的计算机算力,n = p*q分解不出来。
因此目前被破解的最长RSA密钥就是768位。

RSA加密解密有效性证明

  • 加密 :c = m^e % n
  • 解密 :m = c^d % n

注意:
1 m必须是整数(字符串可以取ascii值或unicode值),且m必须小于n。
2 公钥(n,e) 只能加密小于n的整数m,那么如果要加密大于n的整数,该怎么办?有两种解决方法:一种是把长信息分割成若干段短消息,每段分别加密;另一种是先选择一种"对称性加密算法"(比如DES),用这种算法的密钥加密信息,再用RSA公钥加密DES密钥。

  • 证明
    c = m^e % n
    那么: c = m^e - kn
    两边取 d次方mod n
    c ^ d % n = (m^e - kn)^ d % n
    kn作为任意乘因子,%n都等于0
    (m^e - kn)^ d % n = m^ed % n
    ed = k* O(n) + 1
    所以
    c ^ d % n = m^(k*O(n)+1)%n

1 假设 m 和 n 互质,欧拉定理
m ^ O(n) = 1 (mod n)
所以
m^(kO(n)+1)%n = (m^(kO(n)) * m) % n(取模的乘法结合律)
=( ([mO(n)%n*....*mO(n)%n] %n%n...%n ) * (m %n ) ) %n
= (m % n ) %n
= m % n
= m
解密完成
2 假设m与n不互质
n = p * q,那么 m = h * p 或者 h * q
假设m = h * p,且 m和 q 一定 互质
所以:
m ^ (O(q)) = 1 (mod n)
m ^ (q-1) = 1 (mod n)
所以:
m ^ (q-1) = k * n + 1

前面得到了式子:
c ^ d % n = m^(k*O(n)+1)%n
= { m * [m ^ ((p-1)(q-1))] ^ k }%n (带入:m ^ (q-1) = k * n + 1)
= m * [kn + 1]^(k(q-1)) %n
= m%n (m小于n)
= n

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,843评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,538评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,187评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,264评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,289评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,231评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,116评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,945评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,367评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,581评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,754评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,458评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,068评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,692评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,842评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,797评论 2 369
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,654评论 2 354

推荐阅读更多精彩内容