Giáo trình Mật mã học (Phần 1)

Với sự phát triển của khoa học kỹ

thuật và công nghệ, cùng với các nhu cầu đặc biệt có liên quan tới an

toàn thông tin, ngày nay các kỹ thuật chính trong an toàn thông tin bao

gồm: Kỹ thuật mật mã (Cryptography), Kỹ thuật nguỵ trang

(Steganography), Kỹ thuật tạo bóng mờ (Watermarking - hay xăm điện

tử). Kỹ thuật mật mã nhằm đảm bảo ba dịch vụ an toàn cơ bản:Bí mật

(Confidential), Xác thực (Authentication), Đảm bảo tính toàn vẹn

(Integrity). Có thể thấy rằng mật mã học là một lĩnh vực khoa học rộng

lớn có liên quan rất nhiều đến toán học nh−: Đại số tuyến tính, Lý

thuyết thông tin, Lý thuyết độ phức tạp tính toán .

 

pdf157 trang | Chia sẻ: phuongt97 | Lượt xem: 325 | Lượt tải: 0download
Bạn đang xem trước 20 trang nội dung tài liệu Giáo trình Mật mã học (Phần 1), để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
dùng chế độ CBC để tạo các khối bản mã n1 y,,y K theo khóa K. Cuối cùng ta xác định MAC lμ yn. Alice sẽ phát đi dãy các khối bản rõ n1 x,,x K cùng với MAC. Khi Bob thu đ−ợc x1. . .xn anh ta sẽ khôi phục lại n1 y,,y K bằng khóa K bí mật vμ xác minh xem liệu ny có giống với MAC mμ mình đã thu đ−ợc hay không? Nhận thấy Oscar không thể tạo ra một MAC hợp lệ do anh ta không biết khóa K mμ Alice vμ Bob đang dùng. Hơn nữa Oscar thu chặn đ−ợc dãy khối bản rõ n1 x,,x K vμ thay đổi ít nhiều nội dung thì thì chắc chắn lμ Oscar không thể thay đổi MAC để đ−ợc Bob chấp nhận. Thông th−ờng ta muốn kết hợp cả tính xác thực lẫn độ bảo mật. Điều đó có thể thực hiện nh− sau: Tr−ớc tiên Alice dùng khóa K1 để tạo MAC cho n1 x,,x K . Sau đó Alice xác định 1nx + lμ MAC rồi mã hoá dãy 1n1 x,,x +K bằng khóa thứ hai K2 để tạo ra bản Giáo trình Mật mã học 120 mã 1n1 y,,y +K . Khi Bob thu đ−ợc 1n1 y,,y +K , tr−ớc tiên Bob sẽ giải mã (bằng 2K ) vμ kiểm tra xem 1nx + có phải lμ MAC đối với dãy n1 x,,x K dùng K1 hay không. Ng−ợc lại, Alice có thể dùng K1 để mã hoá n1 x,,x K vμ tạo ra đ−ợc n1 y,,y K , sau đó dùng 2K để tạo MAC 1ny + đối với dãy n1 y,,y K . Bob sẽ dùng 2K để xác minh MAC vμ dùng K1 để giải mã n1 y,,y K . 3.9.4.2. Mã nguồn DES (Xem phụ lục 3) Bμi tập 1. Thám mã thu đ−ợc bản mã sau: PSZI QIERW RIZIV LEZMRK XS WEC CSY EVI WSVVC Biết rằng đây lμ bản mã của mật Xeda với khóa k ch−a biết. Hãy dùng ph−ơng pháp tìm khóa vét cạn để tìm đ−ợc bản rõ tiếng Anh t−ơng ứng. Ghi chú: Ph−ơng pháp tìm khóa vét cạn lμ ph−ơng pháp thử giải mã bằng mọi khóa có thể có. 2. D−ới đây lμ 4 bản mã thu đ−ợc từ mã thay thế. Một bản thu đ−ợc từ mã Vigenère, một từ mật mã Affine vμ một bản ch−a xác định. Nhiệm vụ ở đây lμ xác định bản rõ trong mỗi tr−ờng hợp. Hãy mô tả các b−ớc cần thực hiện để giải mã mỗi bản mã (bao gồm tất cả các phân tích thống kê vμ các tính toán cần thực hiện). Hai bản rõ đầu lấy từ cuốn "The Diary of Samuel Marchbanks" của Robertson Davies, Clack Iriwin,1947; bản rõ thứ Ch−ơng 3: Mật mã cổ điển 121 t− lấy từ "Lake Wobegon Days" của Garrison Keillor, Viking Penguin, 1985. a. Mã thay thế EMGLOSUDCGDNCUSWYSFHNSFCYKDPUMLWGYICO| XYSIPJCK QPKUGKMGOUCGINCGACKSNISACYKZSCKXEOCKSH YSXCG OIDPKZCNKSHICGIWYGKKGKGOLDSILKGOIUSIGLED SPWZU GFZCCNDGYYSFUSZCNXEOJNCGYEOWEUPXEZGACG NFGLKNS ACIGOIYCKXOUOUZCFZCCNDGYYSFEUEKUZCSOCFZ CCNC IACZEJNCSHFZEJZEGMXCYHCIUMGKUSY Chỉ dẫn: F sẽ giải mã thμnh w. b. Hệ mã Vigenère KCCPKBGUFDPHQTYAVINRRTMVGRKDNBVFĐETDGIL TXRGUD DKOTFMBPVGEGLTGCKQRACQCWDNAWCRXLZAKFTL EWRPTVC QKYVXCHKFTPONCQQRHJVAJUWETMCMSPKQDYHJV DAHCTRL SVSKCGCZQọDZXGSFRLSWCWSJTBHAFSLASPRJAHKJ RJUMV Giáo trình Mật mã học 122 GKMITZHFPDLSPZLVLGWTFPLKKEBDPGCEBSHCTJR WXBAFS PEZQNRWXCVYCGAONWDDKACKAWBBIKFTLOVKCG GHJVLNHI FFSQESVYCLACNVRWBBIREPBBVFEXOSCDYGZWPFD TKFQLY CWHJVTNHIQ/BTKH/VNPIST c. Hệ mã Affine KQEREJEBCPPCJCRKIEACUZBKRVPKRBCIBQCARBJC VFCUP KRLOFKPACUZQEPBKRXPEIIEABDKPBCPFCDCCAFIE ABĐKP BCPFEQPKAZBKRHALBKAPCCIBURCCDKDCCJC/DFUI XPAFF ERBICZDFKABICBBENEFCUPLCVKABPCYDCCDPKBC OCPERK IVKSCPICBRKLJPKABL d. Hệ mã ch−a xác định đ−ợc BNVSNSIHQCEELSSKKYERIFJKXUMBGVKAMQLJTYA VFBKVT DVBPVVRJYYLAOKYMPQSCGDLFSRLLPROYGESEBUU ALRWXM MASAZLGLEĐFJBZAVVPXWI CGJXASCBYEHOSNMULKCEAHTQ Ch−ơng 3: Mật mã cổ điển 123 OKMFLEBKFXLRRFDTZXCIWBJSICBGAWDVYDHAVFJ XZIBKC GJIWEAHTTOEWTUHKRQVVRGZBXYIREMMASCSPBN LHJMBLR FFJELHWEYLWISTFVVYFJCMHYUYRUFSFMGESIGRL WALSVVM NUHSIMYYITCCQPZSICEHBCCMZFEGVJYOCDEMMPG HVAAUM ELCMOEHVLTIPSUYILVGFLMVWDVYDBTHFRAYISYS GKVSUU HYHGGCKTMBLRX 3. a. Có bao nhiêu ma trận khả nghịch cấp 2 ì 2 trên Z26. b. Giả sử p lμ số nguyên tố. Hãy chứng tỏ số các ma trận khả nghịch cấp 2 ì 2 trên Zp lμ (p2 – 1)(p2 – p). Chỉ dẫn Vì p lμ số nguyên tố nên pZ lμ một tr−ờng. Hãy sử dụng khẳng định sau: Một ma trận trên một tr−ờng lμ khả nghịch khi vμ chỉ khi các hμng của nó lμ các véc tơ độc lập tuyến tính (tức không tồn tại một tổ hợp tuyến tính các hμng khác 0 mμ tổng của chúng lμ một véc tơ toμn số 0). c. Với p lμ số nguyên tố vμ m lμ một số nguyên m ≥ 2. Hãy tìm công thức tính số các ma trận khả nghịch cấp mìm trên Zp. 4. Giả sử ta đã biết rằng bản rõ "conversation" sẽ tạo nên bản mã "HIARRTNUYTUS" (đ−ợc mã theo hệ mã Hill nh−ng ch−a xác định đ−ợc m). Hãy xác định ma trận mã hoá. Giáo trình Mật mã học 124 5. Hệ mã Affine - Hill lμ hệ mã Hill đ−ợc sửa đổi nh− sau: Giả sử m lμ một số nguyên d−ơng vμ ( )m26=C = ZP . Trong hệ mật nμy, khóa K gồm các cặp (L,b), trong đó L lμ một ma trận khả nghịch cấp mxm trên Z26 vμ ( )m26b Z∈ theo công thức y xL b= + . Bởi vậy, nếu ( )ijL l= vμ ( )1 mb b , ,b= K thì: ( ) ( ) ( ) 1,1 1,2 1,m 2,1 2,2 2,m 1 m 1 m 1 m m,1 m,2 m,m l l l l l l y , ,y x , ,x b , ,b . . . l l l ⎡ ⎤⎢ ⎥⎢ ⎥= +⎢ ⎥⎢ ⎥⎢ ⎥⎣ ⎦ K KK K KK K Giả sử Oscar đã biết bản rõ 1μ "adisplayedequation" vμ bản mã t−ơng ứng lμ "DSRMSIOPLXLJBZULLM". Oscar cũng biết m = 3. Hãy tính khóa vμ chỉ ra tất cả các tính toán cần thiết. 6. Sau đây lμ cách thám mã hệ mã Hill sử dụng ph−ơng pháp tấn công chỉ với bản mã. Giả sử ta biết m = 2. Chia các bản mã thμnh các khối có độ dμi 2 kí tự (các bộ đôi). Mỗi bộ đôi nμy lμ bản mã của một bộ đôi của bản rõ nhờ dùng một ma trận mã hoá ch−a biết. Hãy nhặt ra các bộ đôi th−ờng gặp nhất trong bản mã vμ coi rằng đó lμ mã của một bộ đôi th−ờng gặp trong danh sách ở bảng 1.1 (ví dụ TH vμ ST). Với mỗi giả định, hãy thực hiện phép tấn công với bản rõ đã biết cho tới khi tìm đ−ợc ma trận giải mã đúng. Sau đây lμ một ví dụ về bản mã để bạn giải mã theo ph−ơng pháp đã nêu: LMQETXYEAGTXCTUIEWNCTXLZEWUAISPZYVAPEWL MGQWVA XFTGMSQCADAGTXLMDXNXSNPJQSYVAPRIQSMHNO CVAXFV. Ch−ơng 3: Mật mã cổ điển 125 7. Ta sẽ mô tả một tr−ờng hợp đặc biệt của mã hoán vị. Giả sử m, n lμ các số nguyên d−ơng. Hãy viết bản rõ theo thμnh từng hμng thμnh một hình chữ nhật m x n. Sau đó tạo ra bản mã bằng cách lấy các cột của hình chữ nhật nμy Ví dụ, nếu m = 4, n = 3 thì ta sẽ mã hoá bản rõ "cryptography" bằng cách xây dựng hình chữ nhật : cryp togr aphy Bản mã sẽ lμ: "CTAROPYGHPRY" a. Hãy mô tả cách Bob giải mã một bản mã (với m, n đã biết). b. Hãy giải mã bản mã sau: (nhận đ−ợc theo ph−ơng pháp đã nêu): MYAMRARUYIQTENCTORAHROYWĐSOYEOUARRGĐE RNOGW 8. Hãy chứng minh rằng phép giải mã DES có thể thực hiện bằng cách áp dụng thuật toán mã hoá DES cho bản rõ với bảng khóa đảo ng−ợc. 9. Cho DES(x,K) lμ phép mã hoá DES của bản rõ x với khóa K. Giả sử ( )y DES x,K= vμ ( ) ( )( )y ' DES c x ,c K= trong đó c(.) kí hiệu lμ phần bù theo các bit của biến. Hãy chứng minh rằng ( )y ' c y= (tức lμ nếu lấy phần bù của bản rõ vμ khóa thì bản mã kết quả cũng lμ phần bù của bản mã ban đầu). Chú ý rằng kết quả trên có thể chứng minh đ−ợc chỉ bằng cách sử dụng mô tả "mức cao" của DES - cấu trúc thực tế của các hộp S vμ các thμnh phần khác của hệ thống không ảnh h−ởng tới kết quả nμy. Giáo trình Mật mã học 126 10. Mã kép lμ một cách để lμm mạnh thêm cho DES: với hai khóa 1K vμ 2K cho tr−ớc, ta xác định y = eK2(eK1(x)) (dĩ nhiên đây chính lμ tích của DES với chính nó). Nếu hμm mã hoá K2e giống nh− hμm giải mã K1d thì 1K vμ 2K đ−ợc gọi lμ các khóa đối ngẫu (đây lμ tr−ờng hợp không mong muốn đối với phép mã kép vì bản mã kết quả lại trùng với bản rõ). Một khóa đ−ợc gọi lμ tự đối ngẫu nếu nó đối ngẫu với chính nó. a. Hãy chứng minh rằng nếu 0C gồm toμn các số 0 hoặc gồm toμn các số 1 vμ 0D cũng vậy thì K lμ tự đối ngẫu. b. Hãy tự chứng minh rằng các khóa sau ( cho ở dạng hexa) lμ tự đối ngẫu; 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 F E E F E F E F E F E F E F E F 1 F 1 F 1 F 1 F 0 F 0 F 0 F 0 F E 0 E 0 E 0 E 0 F 1 F 1 F 1 F 1 c. Hãy chứng tỏ rằng nếu 0C 0101 01= K hoặc 1010 10K (ở dạng nhị phân) thì XOR các xâu bit Ci vμ C17-i lμ 111 11K , với 1 ≤ i ≤ 16 (khẳng định t−ơng tự cũng đúng đối với Di). d. Hãy chứng tỏ các cặp khóa sau lμ đối ngẫu: E0 01E0 01F1 0 1 F1 01 FE1FFE1FF0EFE0E E01FE01FFF1 0 FF1 0 01E001E001 F1 01 F1 1FFE1FFE0EFE0EFE 1FE01FE00EF1 0EF1 mật mã khóa công khai 4.1. gIớI THIệU Về MậT Mã KHóa CÔNG KHAI Trong mô hình mật mã cổ điển tr−ớc đây mμ hiện nay đang đ−ợc nghiên cứu Alice (ng−ời gửi) vμ Bob (ng−ời nhận) chọn một cách bí mật khóa K. Sau đó dùng K để tạo luật mã hóa ek vμ luật giải mã dk. Trong hệ mật nμy dk hoặc giống ek hoặc dễ dμng nhận đ−ợc từ nó (ví dụ trong hệ DES quá trình giải mã hoμn toμn t−ơng tự nh− quá trình mã nh−ng thủ tục khóa ng−ợc lại). Các hệ mật thuộc loại nμy đ−ợc gọi lμ hệ khóa bí mật, nếu để lộ ek thì lμm cho hệ thống mất an toμn. Nh−ợc điểm của hệ mật nμy lμ nó yêu cầu phải có thông tin tr−ớc về khóa K giữa Alice vμ Bob qua một kênh an toμn tr−ớc khi gửi một bản mã bất kỳ. Trên thực tế điều nμy rất khó đảm bảo. Chẳng hạn khi Alice vμ Bob ở cách xa nhau vμ họ chỉ có thể liên lạc với nhau bằng th− tín điện tử (Email). Trong tình huống đó Alice vμ Bob không thể tạo một kênh bảo mật với giá phải chăng. ý t−ởng xây dựng một hệ mật khóa công khai (hay dùng chung) lμ tìm một hệ mật không có khả năng tính toán để xác định kd khi biết ek. Nếu thực hiện đ−ợc nh− vậy thì quy tắc mã ek có thể đ−ợc công khai bằng cách công bố nó trong một danh bạ Giáo trình Mật mã học 128 (bởi vậy nên có thuật ngữ hệ mật khóa công khai). Ưu điểm của hệ mật khóa công khai lμ ở chỗ Alice (hoặc bất kỳ ai) có thể gửi một bản tin đã mã cho Bob (mμ không cần thông tin tr−ớc về khóa mật) bằng cách dùng mật mã công khai ek. Ng−ời nhận A sẽ lμ ng−ời duy nhất có thể giải đ−ợc bản mã nμy bằng sử dụng luật giải bí mật dk của mình. Có thể hình dung hệ mật nμy t−ơng tự nh− sau. Alice đặt một vật vμo một hộp kim loại vμ rồi khóa nó lại bằng một khóa số do Bob để lại. Chỉ có Bob lμ ng−ời duy nhất có thể mở đ−ợc hộp vì chỉ có anh ta mới biết tổ hợp mã của khóa số của mình. ý t−ởng về một hệ mật khóa công khai đ−ợc Diffie vμ Hellman đ−a ra vμo năm 1976. Còn việc hiện thực hoá nó thì do Rivesrt, Shamir vμ Adleman đ−a ra lần đầu tiên vμo năm 1977, họ đã tạo nên hệ mật nổi tiếng RSA (sẽ đ−ợc nghiên cứu trong ch−ơng nμy). Kể từ đó đã công bố một số hệ, độ mật của chúng dựa trên các bμi tính toán khác nhau. Trong đó, quan trọng nhất lμ các hệ mật khóa công khai sau: - Hệ mật RSA: Độ bảo mật của hệ RSA dựa trên độ khó của việc phân tích ra thừa số nguyên lớn. Hệ nμy sẽ đ−ợc mô tả trong phần 4.2. - Hệ mật xếp ba lô Merkle - Hellman: Hệ nμy vμ các hệ liên quan dựa trên tính khó giải của bμi toán tổng các tập con (bμi toán nμy lμ bμi toán NP đầy đủ - lμ một lớp khá lớn các bμi toán không có giải thuật đ−ợc biết trong thời gian đa thức). Tuy nhiên tất cả các hệ mật xếp ba lô khác nhau đều đã bị chứng tỏ lμ không mật (ngoại trừ hệ mật Chor-Rivest). Ch−ơng 4: Mật mã khóa công khai 129 - Hệ mật McEliece: Hệ nμy dựa trên lý thuyết mã đại số vμ vẫn còn đ−ợc coi lμ an toμn. Hệ mật McEliece dựa trên bμi toán giải mã cho các mã tuyến tính (cũng lμ một bμi toán NP đầy đủ). Hệ mật McEliece đ−ợc trình bμy ở phần 4.6. - Hệ mật ElGamal: Hệ mật ElGamal dựa trên tính khó giải của bμi toán logarithm rời rạc trên các tr−ờng hữu hạn. - Hệ mật Chor-Rivest: Hệ mật Chor-Rivest cũng đ−ợc xem nh− một hệ mật xếp ba lô. Tuy nhiên nó vẫn đ−ợc coi lμ an toμn. - Hệ mật trên các đ−ờng cong Elliptic: Các hệ mật nμy lμ biến t−ớng của các hệ mật khác (chẳng hạn nh− hệ mật ElGamal), chúng lμm việc trên các đ−ờng cong Elliptic chứ không phải lμ trên các tr−ờng hữu hạn. Hệ mật nμy đảm bảo độ mật với số khóa nhỏ hơn các hệ mật khóa công khai khác. Một chú ý quan trọng lμ một hệ mật khóa công khai không bao giờ có thể đảm bảo đ−ợc độ mật tuyệt đối (an toμn vô điều kiện). Sở dĩ nh− vậy vì đối ph−ơng khi nghiên cứu một bản mã, y có thể mã lần l−ợt các bản tin rõ bằng luật mã hoá công khai ke cho tới khi anh ta tìm đ−ợc bản rõ duy nhất x đảm bảo ( )xey k= . Bản rõ nμy chính lμ kết quả giải mã của y. Bởi vậy, ta chỉ nghiên cứu độ mật về mặt tính toán của các hệ mật nμy. Một khái niệm có ích khi nghiên cứu hệ mật khóa công khai lμ khái niệm về hμm cửa sập một chiều. Ta sẽ định nghĩa khái niệm nμy một cách không hình thức. Giáo trình Mật mã học 130 Hμm mã khóa công khai ke của Bob phải lμ một hμm dễ tính toán. Song việc tìm hμm ng−ợc (hμm giải mã) rất khó khăn (đối với bất kỳ ai không phải lμ Bob). Đặc tính dễ tính toán hμm ng−ợc th−ờng đ−ợc gọi lμ đặc tính một chiều. Bởi vậy điều kiện cần thiết lμ ke phải lμ hμm một chiều. Các hμm một chiều đóng vai trò quan trọng trong mật mã học, chúng rất quan trọng trong các hệ mật khóa công khai vμ trong nhiều lĩnh vực khác. Đáng tiếc lμ mặc dù có rất nhiều hμm đ−ợc coi lμ hμm một chiều nh−ng cho đến nay vẫn không tồn tại một hμm nμo có thể chứng minh đ−ợc lμ hμm một chiều. Sau đây lμ một ví dụ về một hμm đ−ợc coi lμ hμm một chiều. Giả sử n lμ tích của hai số nguyên tố lớn p vμ q, giả sử b lμ một số nguyên d−ơng. Khi đó ta xác định ánh xạ nn ZZ:f → lμ ( ) nmodxxf b= (với b vμ n đã đ−ợc chọn thích hợp thì đây chính lμ hμm mã RSA, sau nμy ta sẽ nói nhiều hơn về nó). Để xây dựng một hệ mật khóa công khai thì việc tìm đ−ợc một hμm một chiều vẫn ch−a đủ. Ta không muốn ke lμ hμm một chiều đối với Bob vì anh ta phải có khả năng giải mã các bản tin nhận đ−ợc một cách hiệu quả. Điều cần thiết lμ Bob phải có một cửa sập chứa thông tin bí mật cho phép dễ dμng tìm hμm của ke . Nh− vậy Bob có thể giải mã một cách hữu hiệu vì anh ta có một hiểu biết tuyệt mật nμo đó về K. Bởi vậy một hμm đ−ợc gọi lμ cửa sập một chiều nếu nó lμ một hμm một chiều vμ nó trở nên dễ tính ng−ợc nếu biết một cửa sập nhất định. 4.2. hệ mật rsa 4.2.1. Thuật toán 1: Tạo khóa Tóm l−ợc: Mỗi đầu cần tạo một khóa công khai vμ một khóa riêng t−ơng ứng theo các b−ớc sau: Ch−ơng 4: Mật mã khóa công khai 131 (1) Tạo 2 số nguyên tố lớn ngẫu nhiên vμ khác nhau p vμ q, p vμ q có độ lớn xấp xỉ nhau. (2) Tính q.pn = vμ ( ) ( )( )1q1pn −−=Φ . (3) Chọn một số nguyên ngẫu nhiên e, Φ<< e1 , sao cho ( ) 1,e =Φ . (4) Sử dụng thuật toán Euclide mở rộng để tính một số nguyên d duy nhất, Φ<< d1 thỏa mãn ( )Φ≡ mod1ed . (5) Khóa công khai lμ cặp số ( )e,n . Khóa riêng bí mật lμ d. 4.2.2. Định nghĩa Các số nguyên d vμ e trong thuật toán tạo khóa RSA đ−ợc gọi lμ số mũ mã hoá vμ số mũ giải mã. Số n đ−ợc gọi lμ modulus. 4.2.3. Thuật toán 2: Mã hóa công khai RSA Tóm l−ợc: B mã hóa một thông báo m để gửi cho A bản mã cần giải. 4.2.3.1. Mã hóa B phải thực hiện: (1) Thu nhận khóa công khai ( )e,n của A. (2) Biểu diễn bản tin d−ới dạng một số nguyên m trong khoảng [ ]1n,0 − (3) Tính nmodmc e= . (4) Gửi bản mã c cho A. 4.2.3.3. Giải mã Khôi phục bản rõ m từ c. A phải thực hiện phép tính sau bằng cách dùng khóa riêng nmodcm d= Giáo trình Mật mã học 132 Chứng minh hoạt động giải mã: Vì ( )Φ≡ mod1ed nên luôn tồn tại một số nguyên k sao cho Φ+= k1ed . Bây giờ nếu ( ) 1p,m = theo định lý Ferma ta có: ( )pmod1m 1p ≡− . Lũy thừa cả hai vế của đồng d− thức trên với số mũ ( )1qk − vμ rồi nhân cả hai vế với m ta có: ( )( ) ( )pmodmm 1p1qk1 ≡−−+ Mặt khác nếu ƯCLN(m, p) = p thì đồng d− thức cuối cùng ở trên vẫn đúng vì mỗi vế đều đồng d− với 0 mod p. Bởi vậy, trong mọi tr−ờng hợp ta đều có: ( )pmodmmed ≡ Bằng lập luận t−ơng tự ta lại có: ( )qmodmmed ≡ Cuối cùng vì p vμ q lμ các số nguyên tố khác nhau nên ( )nmodmmed ≡ vμ bởi vậy ( ) ( )nmodmmc ded ≡≡ . 4.2.4. Ví dụ 4.2.4.1. Tạo khóa A chọn các số nguyên tố 2551q,2357p == vμ tính 6012707q.pn == vμ ( )( ) 60078001q1p =−−=Φ . A chọn e = 3674911 vμ dùng thuật toán Euclide mở rộng để tìm đ−ợc d = 422191 thỏa mãn ( )Φ≡ mod1ed . Khóa công khai của A lμ cặp số (n = 6012707, e = 3674911), khóa bí mật của A lμ d = 422191. 4.2.4.2. Mã hóa Để mã hóa thông báo m = 5234673, B sử dụng thuật toán lấy lũy thừa theo modulo để tính. 36505026012707mod5234673nmodmc 3674911e === rồi gửi c cho A. Ch−ơng 4: Mật mã khóa công khai 133 4.2.4.3. Giải mã Để giải mã bản mã c, A tính: 52346736012707mod3650502nmodc 422191d == 4.2.4.4. Chú ý (Số mũ vạn năng) Số ( )1q,1pBCNN −−=λ đôi khi đ−ợc gọi lμ số mũ vạn năng của n, λ có thể đ−ợc dùng thay cho ( )( )1q1p −−=Φ khi tạo khóa RSA. Cần chú ý rằng λ lμ −ớc thực sự của Φ . Sử dụng λ có thể thu đ−ợc số mũ giải mã d nhỏ hơn (lμm cho giải mã nhanh hơn). Tuy nhiên, nếu p vμ q đ−ợc chọn ngẫu nhiên thì ƯCLN(p - 1, q - 1) sẽ khá nhỏ vμ bởi vậy Φ vμ λ sẽ lμ các số có kích th−ớc xấp xỉ. 4.3. hệ mật rabin 4.3.1. Thuật toán 1: Tạo khóa Tóm l−ợc: Mỗi đầu tạo một khóa công khai vμ một khóa bí mật t−ơng ứng theo các b−ớc sau: (1) Tạo 2 số nguyên tố lớn, ngẫu nhiên vμ phân biệt p vμ q có kích th−ớc xấp xỉ nhau. (2) Tính n = p.q. (3) Khóa công khai lμ n, khóa bí mật lμ các cặp số (p, q). 4.3.2. Thuật toán 2: Mã hóa công khai Rabin 4.3.2.1. Mã hóa B phải thực hiện các b−ớc sau: (1) Nhận khóa công khai của A: n. (2) Biểu thị bản tin d−ới dạng một số nguyên m nằm trong dải [ ]1n,0 − . Giáo trình Mật mã học 134 (3) Tính c = m2 mod n. (4) Gửi bản mã c cho A. 4.3.2.2. Giải mã: Để khôi phục bản rõ m từ c, A phải thực hiện các b−ớc sau: Tìm 4 căn bậc hai của nmodc lμ m1, m2, m3 hoặc m4. (1) Thông báo cho ng−ời gửi lμ một trong 4 giá trị m1, m2, m3 hoặc m4. Bằng một cách nμo đó A sẽ quyết định m lμ giá trị nμo. 4.3.3. Chú ý Tìm các căn bậc 2 của q.pn,nmodc = khi ( )4mod3qp ≡≡ . Trong tr−ờng hợp nμy, việc tìm 4 căn bậc 2 của nmodc đ−ợc thực hiện khá đơn giản nh− sau: (1) Sử dụng thuật toán Euclide mở rộng để tìm các số nguyên a vμ b thoả mãn 1bqap =+ . Chú ý rằng a vμ b có thể đ−ợc tính trong giai đoạn tạo khóa. (2) Tính ( ) pmodcr 4/1p+= . (3) Tính ( ) qmodcs 4/1q+= . (4) Tính ( ) nmodbqrapsx += . (5) Tính ( ) nmodbqrapsy −= . (6) Bốn giá trị căn bậc 2 của nmodc lμ x, nmodx− , y vμ nmody− . 4.3.4. Ví dụ 4.3.4.1. Tạo khóa A chọn các số nguyên tố p = 277 vμ q = 331. A tính n = p.q = 91687. Khóa công khai của A lμ 91687. Khóa bí mật của A lμ cặp số (p = 277, q = 331). Ch−ơng 4: Mật mã khóa công khai 135 4.3.4.2. Mã hóa Giả sử rằng 6 bit cuối cùng của bản tin gốc đ−ợc lặp lại tr−ớc khi thực hiện mã hóa. Việc thêm vμo độ thừa nμy nhằm giúp cho bên giải mã nhận biết đ−ợc bản mã đúng. Để mã hoá bản tin 10 bit 1001111001m = , B sẽ lặp lại 6 bit cuối cùng của m để có đ−ợc bản tin 16 bit sau: m = 1001111001111001, biểu diễn thập phân t−ơng ứng lμ m = 40596. Sau đó B tính 6211191687mod40596nmodmc 22 === rồi gửi c cho A. 4.3.4.3. Giải mã Để giải mã bản mã c, A tính bốn giá trị căn bậc 2 của nmodc : 51118m,40596m,22033m,69654m 4321 ==== Biểu diễn nhị phân t−ơng ứng của các số trên lμ: 1011101100011110m,1110011001111001m 100011010110000m,00101101000100000m 43 21 == == Vì chỉ có m3 mới có độ thừa cần thiết nên A sẽ giải mã c bằng m3 vμ khôi phục lại bản tin gốc lμ .1001111001m = 4.3.4.4. Đánh giá hiệu quả Thuật toán mã hóa Rabin lμ một thuật toán cực nhanh vì nó chỉ cần thực hiện một phép bình ph−ơng modulo đơn giản. Trong khi đó, chẳng hạn với thuật toán RSA có e = 3 phải cần tới một phép nhân modulo vμ một phép bình ph−ơng modulo. Thuật toán giải mã Rabin có chậm hơn thuật toán mã hoá, tuy nhiên về mặt tốc độ nó cũng t−ơng đ−ơng với thuật toán giải mã RSA. Giáo trình Mật mã học 136 4.4. hệ mật elgamal 4.4.1. Thuật toán tạo khóa Tóm l−ợc: Mỗi đầu liên lạc tạo một khóa công khai vμ một khóa bí mật t−ơng ứng: (1) Tạo 1 số nguyên tố p lớn vμ một phần tử sinh α của nhóm nhân *pZ của các số nguyên pmod . (2) Chọn một số nguyên ngẫu nhiên a, 2pa1 −≤≤ vμ tính pmodaα . (3) Khóa công khai lμ bộ 3 số ( )a,,p αα , khóa bí mật lμ a. 4.4.2. Thuật toán mã hóa công khai ElGamal Tóm l−ợc: B mã hóa một thông tin báo m để gửi cho A bản mã cần gửi. 4.4.2.1. Mã hóa B phải thực hiện các b−ớc sau: (1) Nhận khóa công khai ( )a,,p αα của A. (2) Biểu thị bản tin d−ới dạng một số nguyên m trong dải { }1p,,1,0 −K . (3) Chọn số nguyên ngẫu nhiên k, 2pk1 −≤≤ . (4) Tính pmodkα=γ vμ ( ) pmodm kaα=δ . (5) Gửi bản mã ( )δα= ,c cho A. 4.4.2.2. Giải mã Để khôi phục bản rõ m từ c, A phải thực hiện các b−ớc sau: (1) Sử dụng khóa riêng a để tính pmoda1p −−γ (Chú ý akaa1p −−−− γ=γ=γ ) Ch−ơng 4: Mật mã khóa công khai 137 (2) Khôi phục bản rõ bằng cách tính ( ) pmoda δγ− . Chứng minh hoạt động giải mã: Thuật toán trên cho phép A thu đ−ợc bản rõ vì: pmodmm. kakaa ≡αα≡δγ −− . 4.4.3. Ví dụ 4.4.3.1. Tạo khóa A chọn p = 2357 vμ một phần tử sinh 2=α của *2357Z . A chọn khóa bí mật a = 1751 vμ tính 11852357mod2pmod 1751a ==α . Khoá công khai của A lμ ( )1185,2,2357p a =α=α= . 4.4.3.2. Mã hóa Để mã hóa bản tin m = 2035, B sẽ chọn một số nguyên ngẫu nhiên k = 1520 vμ tính: 14302357mod21520 ==γ vμ 6972357mod1185.2035 1520 ==δ Sau đó B gửi ( )697,1430c = cho A. 4.4.3.3. Giải mã Để giải mã A phải tính: 8722357mod1430605a1p ==γ −− Sau đó khôi phục bản rõ m bằng cách tính: .20352357mod697.872m == Giáo trình Mật mã học 138 4.5. hệ mật merkle - hellman 4.5.1. Định nghĩa dãy siêu tăng Định nghĩa: Dãy các số nguyên d−ơng ( )n21 a,,a,a K đ−ợc gọi lμ dãy siêu tăng nếu ∑− = > 1i 1j ji aa với ni2,i ≤≤∀ . 4.5.2. Bμi toán xếp balô Cho một đống các gói có các trọng l−ợng khác nhau, liệu có thể xếp một số gói nμy vμo ba lô để ba lô có một trọng l−ợng cho tr−ớc hay không. Về mặt hình thức ta có thể phát biểu bμi toán trên nh− sau: Cho tập các giá trị n21 M,,M,M K vμ một tổng S. Hãy tính các giá trị bi để: nn2211 MbMbMbS +++= K với { }1,0bi ∈ bi = 1: Có nghĩa lμ gói Mi đ−ợc xếp vμo ba lô. bi = 0: Có nghĩa lμ gói Mi không đ−ợc xếp vμo ba lô. 4.5.3. Giải bμi toán xếp ba lô trong tr−ờng hợp dãy siêu tăng Trong tr−ờng hợp { }n21 M,,M,MM K= lμ một dãy siêu tăng thì việc tìm ( )n21 b,,b,bb K= t−ơng đ−ơng nh− bμi toán tìm biểu diễn nhị phân của một số S. Biểu diễn nμy sẽ tìm đ−ợc sau tối đa lμ n b−ớc. Thuật toán giải: Vμo: dãy siêu tăng { }n21 M,,M,MM K= vμ một số nguyên S lμ tổng của một tập con trong M. Ch−ơng 4: Mật mã khóa công khai 139 Ra : ( )n21 b,,b,b K trong đó { }1,0bi ∈ sao cho: SMb n 1i ii =∑ = (1) ni ← (2) Chừng nμo 1i ≥ hãy thực hiện a. Nếu iMS ≥ thì : 1xi ← vμ iMSS −← ng−ợc lại: 0xi ← b. 1ii −← (3) Return (b) Nếu M không phải lμ dãy siêu tăng thì lời giải của bμi toán lμ một trong 2n ph−ơng án có thể. Đây lμ một bμi toán khó giải nếu n lớn. 4.5.4. Thuật toán tạo khóa Tóm l−ợc: Mỗi đầu liên lạc tạo cho mình một khóa công khai vμ một khóa bí mật t−ơng ứng. Chọn một số nguyên xác định n đ−ợc xem lμ một tham số chung của hệ thống. Mỗi đầu liên lạc phải thực hiện các b−ớc sau: (1) Chọn một dãy siêu tăng ( )n21 M,,M,M K vμ một modulo M sao cho n21 M,,M,MM K> . (2) Chọn một số nguyên ngẫu nhiên W, 1MW1 −≤≤ sao cho ( ) 1M,W = . (3) Chọn một phép hoán vị ngẫu nhiên π của các số nguyên { }n,,2,1 K . (4) Tính ( ) MmodWMa ii π= với n,,2,1i K= . (5) Khóa công khai lμ tập các số ( )n21 a,,a,a K Khóa bí mật lμ ( )( )n21 M,,M,MW,M, Kπ . 4.5.5. Thuật toán mã công khai Merkle-Hellman Tóm l−ợc: B mã hóa bản tin m để gửi cho A bản mã cần giải mã. Giáo trình Mật mã học 140 4.5.5.1. Mã hóa B phải thực hiện các b−ớc sau: (1) Nhận khóa công khai của A: ( )n21 a,,a,a K (2) Biểu thị bản tin m nh− một chuỗi nhị phân có độ dμi n n21 m,,m,mm K= . (3) Tính số nguyên nn2211 amamamc +++= K (4) Gửi bản mã c cho A. 4.5.5.2. Giải mã Để khôi phục bản rõ m từ c, A phải thực hiện các b−ớc sau: (1) Tính MmodcWd 1−= (2) Sử dụng thuật giải xếp ba lô trong tr−ờng hợp dãy siêu tăng để tìm các số nguyên { }1,0r,r,,r,r in21 ∈K sao cho: nn2211 MrMrMrd +++= K (3) Các bit của bản rõ lμ ( ) n,,2,1i,rm ii K== π Chứng minh: Thuật toán trên cho phép A thu đ−ợc bản rõ vì: ( )∑∑ = π = ≡≡≡ n 1i ii n 1i ii 1-1- MmodMmamWcWd Vì ( )∑ = π=<≤ n 1i ii MmodMmd,Md0 , bởi vậy nghiệm của bμi toán xếp ba lô ở b−ớc (b) sẽ cho ta các bit của bản rõ sau khi sử dụng phép hoán vị π . 4.5.6. Ví dụ 4.5.6.1. Tạo khóa Cho n = 6. A chọn dãy siêu tăng sau: (12, 17, 33, 74, 157, 316), M = 737, W = 635 thỏa mãn (W, M) = 1. Ch−ơng 4: Mật mã khóa công khai 141 Phép hoán vị π của {1, 2, 3, 4, 5, 6} đ−ợc xác định nh− sau: ( ) ( ) ( ) ( ) ( ) ( ) 46,55,24,13,62,31 =π=π=π=π=π=π . Khóa công khai của A lμ tập (319, 196, 250, 477, 200, 559). Khóa bí mật của A lμ ( )( )316,157,74,33,17,12W,M,π . 4.5.6.2. Mã hóa Để mã hóa bản tin m = 101101, B tính: c = 319 + 250 + 477 + 559 = 1605 vμ gửi c cho A. 4.5.6.3. Giải mã Để giải mã A phải tính: ( )513224W 1 =−=− 136MmodcWd 1 == − vμ giải bμi toán xếp ba lô trong tr−ờng hợp dãy siêu tăng sau: 654321 r316r157r74r33r17r12136 +++++= vμ nhận đ−ợ

Các file đính kèm theo tài liệu này:

  • pdfgiao_trinh_mat_ma_hoc_phan_1.pdf
Tài liệu liên quan