1 / 43

第三章

第三章. 編碼原理. 安全性 錯誤偵測 修正錯誤 身份辨識. 3.1 同餘. 定義 n 為給定的正整數 a 與 b 為整數 若 a-b 被 n 整除,則稱 a 與 b 具有 對 n 模同餘 ( congruent modulo n ) 的關係,並記為 a  b (mod n ) a  b (mod n )  n| ( a-b ). Theorem. Let n >1 be fixed and a, b ,c, d be arbitrary integers, then the following properties hold.

Download Presentation

第三章

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第三章 編碼原理

  2. 安全性 • 錯誤偵測 • 修正錯誤 • 身份辨識

  3. 3.1 同餘 • 定義 • n為給定的正整數 • a與b為整數 • 若a-b被n整除,則稱a與b具有對n模同餘(congruent modulon)的關係,並記為 a  b(mod n) • a  b(mod n)n|(a-b).

  4. Theorem • Let n>1 be fixed and a, b ,c, d be arbitrary integers, then the following properties hold. (a) a  a(mod n) (b) If a  b(mod n) ,then b  a(mod n) (c) If a  b(mod n) and b  c(mod n), then a  c(mod n) (d) If a  b(mod n) and c  d(mod n) ,then a+c  b+d(mod n) and ac  bd(mod n). (e) If a  b(mod n), then a+c  b+c(mod n) and ac  bc(mod n) . (f) If a  b(mod n), then ak bk(mod n)for any positive integer k.

  5. 3.2 歐幾里得演算法 若a,b,q,r為整數、b>0且a= qb + r,則 gcd(a,b) =gcd(b,r).

  6. Problem 如何找出x與y使得ax +by = gcd(a,b)?

  7. Example 找出x與y使得 gcd(12378,3054) = 12378x + 3054y 解: gcd(12378,3054)=6

  8. 3.3 RSA方法 • RSA加密演算法是一種非對稱加密演算法,在1977年由Ron Rivest、Adi Shamir與Leonard Adleman一起提出的。當時他們三人都在麻省理工學院工作。RSA就是他們三人姓氏開頭字母拼在一起組成的。 • 如果你想和別人祕密通訊,那麼你可以先選定兩個非常巨大的質數p,q作為私鑰(private key,解密用的),然後將p,q的乘積作為加密用的公鑰 (public key),你可以把公開鑰匙公佈出去。別人要傳一封密函給你,他必需要先得到你的公鑰,按照一個約定的方法將信件加密後送出。你在收到密函後,再用你的私鑰就可以解出密函原文。 • RSA演算法的可靠性基於分解極大的整數是很困難的。假如有人找到一種很快的分解因子的演算法的話,那麼用RSA加密的資訊的可靠性就肯定會極度下降。但找到這樣的演算法的可能性是非常小的。 • 今天只有短的RSA鑰匙才可能被強力方式解破。到2008年為止,世界上還沒有任何可靠的攻擊RSA演算法的方式。只要其鑰匙的長度足夠長,用RSA加密的資訊實際上是不能被解破的。

  9. 公鑰和私鑰的產生 • Alice隨意選擇兩個大的相異質數p和q,並計算出n=pq。 • 任選擇一個小於(p-1)(q-1)且與(p-1)(q-1)互質的整數E,並計算出d使得Ed ≡ 1 (mod (p-1)(q-1))。 • n和E是公鑰,公開給大眾的。d是私鑰,只有Alice知道。 • 假設Bob想給Alice送一個隱密的消息M,他先將M轉換為一個小於n的整數P,比如他可以將每一個字轉換為這個字的unicode碼,然後將這些數字連在一起組成一個數字。假如他的資訊非常長的話,他可以將這個資訊分為幾段,然後將每一段轉換為P。利用公鑰N和E及PE  C(mod n)這個式子將P加密為C。 • Bob算出C後就可以將它傳遞給Alice。 • Alice得到Bob的訊息C後就可以利用她的私鑰d及式子Cd  P (mod n)來解碼還原成P。

  10. Example for 加密 假設Bob想給Alice送一個隱密的消息M,他先將M轉換為一個小於n的整數P,比如他可以將每一個字轉換為這個字的unicode碼,然後將這些數字連在一起組成一個數字。假如他的資訊非常長的話,他可以將這個資訊分為幾段,然後將每一段轉換為P。利用公鑰N和E及PE  C(mod n)這個式子將P加密為C。

  11. 如何產生公鑰E和私鑰d • Alice隨意選擇兩個大的相異質數p和q,並計算出n=pq。 • 任選擇一個小於(p-1)(q-1)且與(p-1)(q-1)互質的整數E,並計算出d使得Ed ≡ 1 (mod (p-1)(q-1))。 • n和E是公鑰,公開給大眾的。d是私鑰,只有Alice知道。 • 依需求找出兩相異質數 。 假設是p=47,q=59 • 則n=pq=47 * 59=2773 且 b=(p-1)(q-1)=2668 • 從與與b互質的整數中依需求找出E,假設找出的E= 157 • 求出Ex1(mod b)的解。最小正整數解即為私鑰d= 17。

  12. 加密 假設Bob想給Alice送一個隱密的消息M,他先將M轉換為一個小於n的整數P,比如他可以將每一個字轉換為這個字的unicode碼,然後將這些數字連在一起組成一個數字。假如他的資訊非常長的話,他可以將這個資訊分為幾段,然後將每一段轉換為P。利用公鑰N和E及PE  C(mod n)這個式子將P加密為C。 • 假設Bob想給Alice送一個隱密的消息M=3。此時P=M=3 PE  3157 (9)78·3(mod 2773)  (81)39·3(mod 2773)  (6561)19·81·3(mod 2773)  (1015)19·81·3(mod 2773)  (1030225)9·1015·81·3(mod 2773)  (1442)9·1015·81·3(mod 2773)  441(mod 2773)

  13. 解密 • Bob利用公鑰N和E及PE  C(mod n)這個式子將P加密為C。 • Alice如何還原出P。 • n為兩個相異質數p和q的乘積,E為小於且互質於b=(p-1)(q-1)的整數。 • 找出Ex1(mod b)的解。最小正整數解即為私鑰d。 • 尤拉定理(Euler Theorem)告訴我們對所有與n互質的正整數a皆有ab 1 (mod n). • 所以Cd  (PE)d  PEd  Pb+1 P (mod n)

  14. RSA方法 • Alice隨意選擇兩個大的相異質數p和q,並計算出n=pq。 • 任選擇一個小於(p-1)(q-1)且與(p-1)(q-1)互質的整數E,並計算出d使得Ed ≡ 1 (mod (p-1)(q-1))。 • n和E是公鑰,Alice將它們公開給大眾。d是私鑰,只有Alice知道。 • Bob將隱密的消息M分為幾段使得每段皆為小於n的整數P。然後他利用PE  C(mod n)這個式子將P加密為C。 • Bob算出C後就可以將它傳遞給Alice。 • Alice得到Bob的訊息C後就可以利用她的私鑰d及式子Cd  P (mod n)解碼。

  15. Example • Alice找出兩相異質數 p=29,q=41 • 則n=pq=29 * 41=1189 且 b=(p-1)(q-1)=1120 • 從與與b互質的整數中依需求找出E= 101 • 求出Ex1(mod b)的解。最小正整數解即為私鑰d= 621。

  16. Example • Alice找出兩相異質數 p=29,q=41 • 則n=pq=29 * 41=1189 且 b=(p-1)(q-1)=1120 • 從與與b互質的整數中依需求找出E= 101 • 求出Ex1(mod b)的解。最小正整數解即為私鑰d= 621。 • 假設Bob想給Alice送一個隱密的消息M=90。此時P=M=90 • 他利用PE  C(mod n)這個式子將P加密為C。

  17. Example • 他利用PE  C(mod n)這個式子將P加密為C=582。 90101 (902)50·90(mod 1189)  (966)50·90(mod 1189)  (9662)25·90(mod 1189)  (980)25·90(mod 1189)  (9802)12·980·90(mod 1189)   582 (mod 1189)

  18. Example • Alice找出兩相異質數 p=29,q=41 • 則n=pq=29 * 41=1189 且 b=(p-1)(q-1)=1120 • 從與與b互質的整數中依需求找出E= 101 • 求出Ex1(mod b)的解。最小正整數解即為私鑰d= 621。 • 假設Bob想給Alice送一個隱密的消息M=90。此時P=M=90 • 他利用PE  C(mod n)這個式子將P加密為C=582 。 • Alice得到Bob的訊息C=582後就可以利用她的私鑰d = 621及式子Cd  P (mod n)解碼。

  19. Example • Alice得到Bob的訊息C=582後就可以利用她的私鑰d = 621及式子Cd  P (mod n)解碼。 582621 (5822)310·582(mod 1189)  (1048)310·582(mod 1189)  (10482)155·582(mod 1189)  (857)155·582(mod 1189)  (8572)77·857·582(mod 1189)   90 (mod 1189)

  20. 3.4 錯誤偵測及錯誤碼修正 • 電腦在傳送資料時,是以二進位法傳送資訊。 • 例如其中一種表示系統為ASCII碼將一些字母、符號及數字以8個二進位數字表示。 • 如B,A,T,C分別以 01000010, 01100010, 00110111,及01000011表示。 • 若在傳送B這字元時,有一錯誤發生在第八個數字,收到的訊息為01000011在 • 此時將被解讀成C。 • 我們如何偵測、甚而修正這種錯誤呢?

  21. 前述例子描述了一個錯誤偵測(error-detecting)系統,可以偵測到某些錯誤發生,但卻無法修正錯誤。我們先對傳輸錯誤的發生做以下的假設:前述例子描述了一個錯誤偵測(error-detecting)系統,可以偵測到某些錯誤發生,但卻無法修正錯誤。我們先對傳輸錯誤的發生做以下的假設:

  22. (k,n)-區塊碼 • 若一個字元編碼成k個二進位數字的區塊,每個這樣的區塊稱為一個信息字元(message word)。 • 實際傳送時為了偵錯與修正,我們傳送的不止k個字元,而是更長的n個數字的字串稱為字碼(code words)。 • 這樣的編碼方式稱為(k,n)-區塊碼((k,n)-block code)。 • (k,n)-區塊碼的傳送效率為k/n。

  23. 漢明距離 • 兩個相同長度的字碼a=x1x2…xn與b=y1y2…yn,其漢明距離(Hamming distance) d(a,b)為這兩個字碼相對應位元數字不同的數目。即 d(a,b)=|{ i | xiyi}| • d(1100011,1001011,)=2 • d(1110011,0000000)=5 • 若a,b,c三字碼等長則d(a,c) d(a,b)+d(b,c)。

  24. 3.5 矩陣碼

  25. E([w1w2w3])=[w1w2w3]A = [w1w2w3 w1w2w3 w1+w2+w3] E([0 0 0]) = [0 0 0 0 0 0 0] E([0 0 1]) = [0 0 1 0 0 1 1] E([0 1 0]) = [0 1 0 0 1 0 1] E([1 0 0]) = [1 0 0 1 0 0 1] E([0 1 1]) = [0 1 1 0 1 1 0] E([1 0 1]) = [1 0 1 1 0 1 0] E([1 1 0]) = [1 1 0 1 1 0 0] E([1 1 1]) = [1 1 1 1 1 1 1] • 任兩字碼的漢明距離皆大於或等於3,所以這編碼可以檢查出兩個錯誤,修正一個錯誤的發生。

  26. 3.6 修正所有單一錯誤的矩陣碼

  27. E([0 0 0]) = [0 0 0 0 0 0 0] E([0 0 1]) = [0 0 1 0 0 1 1] E([0 1 0]) = [0 1 0 0 1 0 1] E([1 0 0]) = [1 0 0 1 0 0 1] E([0 1 1]) = [0 1 1 0 1 1 0] E([1 0 1]) = [1 0 1 1 0 1 0] E([1 1 0]) = [1 1 0 1 1 0 0] E([1 1 1]) = [1 1 1 1 1 1 1] • E(x)的前3(k)碼即為x。

  28. 如何由收到的字碼,判斷並修正回正確的字碼?如何由收到的字碼,判斷並修正回正確的字碼?

  29. [0 1 0]經生成矩陣A編碼後為[0 1 0 1 1 0 1]

More Related