MỤC LỤC MỤC LỤC 2 CHƯƠNG 1: GIỚI THIỆU VỀ MẬT MÃ KHÓA CÔNG KHAI 3 1.1 Lịch sử phát triển của hệ mật mã khóa công khai 3 1.2 Mật mã khóa công khai 4 CHƯƠNG 2: CÁC HỆ MẬT 6 2.1 Hệ mật RSA 6 a, Lịch sử hình thành 6 b, Quá trình tạo khóa cho hệ mật RSA. 8 c, Quá trình mã hóa: 8 d, Quá trình giải mã: 8 e, Một số chú ý quan trọng về RSA 9 f, Một số phương pháp tấn công hệ mã RSA 10 g, Ứng dụng của hệ mật mã RSA 11 2.2 Hệ mật Elgama 11 a, Hình thành khóa: 11 b, Quá trình mã hóa bản tin T: 11 c, Quá trình giải mã: 11 2.3 Hệ mật Rabin 12 a, Quá trình tạo khóa: 12 b, Quá trình mã hóa: 12 c, Qúa trình giải mã: 12 2.4 Hệ mật HerkleHellman 14 a, Quá trình mã hóa: 14 b, Quá trình giải mã. 15 2.5 Hệ mật McEliece 15 a, Quá trình hình thành khóa: 15 b, Quá trình mã hóa: 15 c, Quá trình giải mã: 16 2.6 Hệ mật bất đối xứng trên cơ sở đường cong Elliptic 17 a, Khái niệm về đường cong Elliptic 17 b, Quá trình mã hóa: 18 c, Quá trình giải mã: 19 d, Ứng dụng của mật mã đường cong Elliptic 19 CHƯƠNG 3: CHỮ KÍ SỐ 19 3.1 Giới thiệu 19 3.2 Ứng dụng của chữ kí số 21 a, Chứng thực xác nhận một Identity 21 b, Chữ ký và mã hóa Email 24 CHƯƠNG 4: KẾT LUẬN 25 CHƯƠNG 1: GIỚI THIỆU VỀ MẬT MÃ KHÓA CÔNG KHAI 1.1 Lịch sử phát triển của hệ mật mã khóa công khai Trong hầu hết lịch sử mật mã học, khóa dùng trong các quá trình mã hóa và giải mã phải được giữ bí mật và cần được trao đổi bằng một phương pháp an toàn khác (không dùng mật mã) như gặp nhau trực tiếp hay thông qua một người đưa thư tin cậy. Vì vậy quá trình phân phối khóa trong thực tế gặp rất nhiều khó khăn, đặc biệt là khi số lượng người sử dụng rất lớn. Mật mã hóa công khai đã giải quyết được vấn đề này vì nó cho phép người dùng gửi thong tin mật trên đường truyền không an toàn mà không cần thỏa thuận khóa từ trước. Năm 1974, William Stanley Jevons xuấn bản cuốn sách mô tả mối quan hệ giữa các hàm một chiều với mật mã học đồng thời đi sâu vào bài toán phân tích ra thừa số nguyên tố ( sử dụng trong thuật toán RSA ). Whillam S. Jevons đã phát hiện nhiều phép toán rất dễ thực hiện theo một chiều nhưng rất khó theo chiều ngược lại. Một ví dụ đã chứng tỏ mã hóa rất dễ dàng trong khi giải mã thì không. Đây chính là nguyên tắc cơ bản trong thuật toán mã hóa khóa công khai RSA. Thuật toán mã hóa khóa công khai được thiết kế đầu tiên bởi James H. Ellis, Clifford Cocks, và Malcolm Williamson tại Anh vào đầu thập kỷ 1970. Thuật toán sau này được phất triển và biết đến dưới tên Diffie – Hellman, và là một trường hợp đặc biệt của RSA. Tuy nhiên những thong tin này chỉ được tiết lộ vào năm 1977. Năm 1976, Whitfeld Diffie và Martin Hellman công bố một hệ thống mật mã hóa khóa bất đối xứng trong đó nêu ra phương pháp trao đổi khóa công khai. Trao đổi khóa Diffie Hellman là phương pháp có thể áp dụng trên thực tế đầu tiên để phân phối khóa bí mật thông qua một kênh truyền thông tin không an toàn. Kể từ thập kỷ 1970, đã có rất nhiều thuật toán mã hóa, tạo chữ ký số, thảo thuận khóa..được phát triển. Các thuật toán như ElGamal ( mật mã) do Netscape phất triển hay DSA do NSA và NIST cũng dựa trên các bài toán logarit rời rạc tương tự như RSA. Vào giữa thập kỷ 1980, Neal Koblitz bắt đầu cho một dòng thuật toán mới: Mật mã đường cong elliptic và cũng tạo ra nhiều thuật toán tương tự. Mặc dù cơ sở toán học của dòng thuật toán này phức tạp hơn nhưng lại giúp lầm giảm khối lượng tính toán đặc biệt khi khóa có độ dài lớn. 1.2 Mật mã khóa công khai Mật mã khóa công khai tạo điều kiện cho các nhiệm vụ sau: Mã hóa và giải mã cho phép hai bên giao tiếp để che giấu thông tin mà họ gửi cho nhau. Người gửi mã hóa, hoặc những cuộc đua xe, thông tin trước khi gửi đi. Người nhận giải mã, hoặc unscrambles, các thông tin sau khi nhận được. Trong khi quá cảnh, các thông tin được mã hóa là khó hiểu cho một kẻ xâm nhập. Phát hiện giả mạo cho phép người nhận thông tin để xác minh rằng nó đã không được sửa đổi trong quá cảnh. Bất kỳ cố gắng sửa đổi dữ liệu hoặc thay thế một tin nhắn giả cho một hợp pháp sẽ được phát hiện. Xác thực cho phép người nhận thông tin để xác định nguồn gốc của nóđó là, để xác nhận danh tính của người gửi. Chống chối bỏ ngăn chặn người gửi thông tin từ tuyên bố một ngày sau đó rằng thông tin không bao giờ được gửi. Phần này giới thiệu các khái niệm về mật mã khóa công khai làm cơ sở cho khả năng này. Chúng ta rõ rằng các bên tham gia cần có một khóa mật để mã hóa và giải mã. Điều này đồng nghĩa với việc trao đổi khóa mật qua kênh. Việc giữ bí mật khóa mật đồng nghĩa với việc giữ mật thông tin. Nên việc trao đổi khóa chỉ diễn ra trên kênh mật thì mới đảm bảo được, thế nhưng việc trao đổi này cung không phải dễ để đảm bảo độ an toàn cao. Từ đây hình thành nên ý tưởng của mật mã công khai. Tức là không cần phải trao đổi khóa mật qua kênh nữa. Có hai mục đích sử dụng chính của mật mã khóa công khai: Mã hóa khóa công khai , trong đó tin nhắn được mã hóa với khóa công khai của người nhận. Thông điệp này không thể được giải mã bởi bất cứ ai không có khóa riêng phù hợp, do đó những người được cho là chủ sở hữu của chủ chốt và người có liên quan với khóa công khai. Này được sử dụng trong một nỗ lực để đảm bảo tính bảo mật . Chữ ký kỹ thuật số , trong đó tin nhắn được ký kết với khóa riêng của người gửi và có thể được xác nhận bởi bất cứ ai có quyền truy cập vào khóa công khai của người gửi.Xác minh điều này chứng tỏ rằng người gửi đã truy cập vào khóa riêng, và do đó có thể sẽ là người kết hợp với khóa công khai. Điều này cũng đảm bảo rằng thông điệp đã không bị giả mạo, như bất kỳ thao tác của tin nhắn sẽ dẫn đến những thay đổi trong mã hóa thông điệp tiêu hóa , mà nếu không thay đổi giữa người gửi và người nhận. Ý tưởng của hệ mật công khai được Diffie và Hellman đưa ra năm 1976. Còn việc thực hiện hệ mật công khai thì do Rivest, Shamir và Adleman đưa ra đầu tiên năm 1977, họ đề xuất một hệ mật RSA nổi tiếng. Và kể từ đó có một số hệ mật khác được công bố, độ mật của chúng dựa trên bài tính toán khác nhau, như dựa trên độ khó của bài toán phân tích thành nhân tử như hệ mật RSA, dựa vào độ khó logarithm rời rạc như hệ mật ElGamal, hay dựa trên đường cong Elliptíc. Chúng ta đi tìm hiểu cụ thể các hệ mật này trong các phần sau. Nhưng trước tiên chúng ta đi tìm hiểu sơ đồ và nguyên tắc mã và giải mã của hệ mật công khai.
Trang 1HỌC VIỆN KỸ THUẬT MẬT MÃ
BÁO CÁO BÀI TẬP LỚN
ĐỀ TÀI SỐ 2: TÌM HIỂU MẬT MÃ CÔNG KHAI VÀ ỨNG
Trang 2MỤC LỤC
CHƯƠNG 1: GIỚI THIỆU VỀ MẬT MÃ KHÓA CÔNG KHAI 3
1.1 Lịch sử phát triển của hệ mật mã khóa công khai 3
1.2 Mật mã khóa công khai 4
CHƯƠNG 2: CÁC HỆ MẬT 6
2.1 Hệ mật RSA 6
a, Lịch sử hình thành 6
b, Quá trình tạo khóa cho hệ mật RSA 8
c, Quá trình mã hóa: 8
d, Quá trình giải mã: 8
e, Một số chú ý quan trọng về RSA 9
f, Một số phương pháp tấn công hệ mã RSA 10
g, Ứng dụng của hệ mật mã RSA 11
2.2 Hệ mật Elgama 11
a, Hình thành khóa: 11
b, Quá trình mã hóa bản tin T: 11
c, Quá trình giải mã: 11
2.3Hệ mật Rabin 12
a, Quá trình tạo khóa: 12
b, Quá trình mã hóa: 12
c, Qúa trình giải mã: 12
2.4 Hệ mật Herkle-Hellman 14
a, Quá trình mã hóa: 14
b, Quá trình giải mã 15
2.5 Hệ mật McEliece 15
a, Quá trình hình thành khóa: 15
b, Quá trình mã hóa: 16
c, Quá trình giải mã: 16
2.6 Hệ mật bất đối xứng trên cơ sở đường cong Elliptic 17
a, Khái niệm về đường cong Elliptic 17
b, Quá trình mã hóa: 18
c, Quá trình giải mã: 19
d, Ứng dụng của mật mã đường cong Elliptic 19
CHƯƠNG 3: CHỮ KÍ SỐ 19
3.1 Giới thiệu 19
3.2 Ứng dụng của chữ kí số 21
a, Chứng thực xác nhận một Identity 21
b, Chữ ký và mã hóa Email 24
CHƯƠNG 4: KẾT LUẬN 25
Trang 3CHƯƠNG 1: GIỚI THIỆU VỀ MẬT MÃ KHÓA CÔNG KHAI 1.1 Lịch sử phát triển của hệ mật mã khóa công khai
Trang 4Trong hầu hết lịch sử mật mã học, khóa dùng trong các quá trình mã hóa
và giải mã phải được giữ bí mật và cần được trao đổi bằng một phương pháp antoàn khác (không dùng mật mã) như gặp nhau trực tiếp hay thông qua một ngườiđưa thư tin cậy Vì vậy quá trình phân phối khóa trong thực tế gặp rất nhiều khókhăn, đặc biệt là khi số lượng người sử dụng rất lớn Mật mã hóa công khai đãgiải quyết được vấn đề này vì nó cho phép người dùng gửi thong tin mật trênđường truyền không an toàn mà không cần thỏa thuận khóa từ trước
Năm 1974, William Stanley Jevons xuấn bản cuốn sách mô tả mối quan
hệ giữa các hàm một chiều với mật mã học đồng thời đi sâu vào bài toán phântích ra thừa số nguyên tố ( sử dụng trong thuật toán RSA ) Whillam S Jevons
đã phát hiện nhiều phép toán rất dễ thực hiện theo một chiều nhưng rất khó theochiều ngược lại Một ví dụ đã chứng tỏ mã hóa rất dễ dàng trong khi giải mã thìkhông Đây chính là nguyên tắc cơ bản trong thuật toán mã hóa khóa công khaiRSA
Thuật toán mã hóa khóa công khai được thiết kế đầu tiên bởi James H.Ellis, Clifford Cocks, và Malcolm Williamson tại Anh vào đầu thập kỷ 1970.Thuật toán sau này được phất triển và biết đến dưới tên Diffie – Hellman, và làmột trường hợp đặc biệt của RSA Tuy nhiên những thong tin này chỉ được tiết
lộ vào năm 1977
Năm 1976, Whitfeld Diffie và Martin Hellman công bố một hệ thống mật
mã hóa khóa bất đối xứng trong đó nêu ra phương pháp trao đổi khóa công khai.Trao đổi khóa Diffie- Hellman là phương pháp có thể áp dụng trên thực tế đầutiên để phân phối khóa bí mật thông qua một kênh truyền thông tin không antoàn
Kể từ thập kỷ 1970, đã có rất nhiều thuật toán mã hóa, tạo chữ ký số, thảothuận khóa được phát triển Các thuật toán như ElGamal ( mật mã) do Netscapephất triển hay DSA do NSA và NIST cũng dựa trên các bài toán logarit rời rạctương tự như RSA Vào giữa thập kỷ 1980, Neal Koblitz bắt đầu cho một dòngthuật toán mới: Mật mã đường cong elliptic và cũng tạo ra nhiều thuật toántương tự Mặc dù cơ sở toán học của dòng thuật toán này phức tạp hơn nhưng lạigiúp lầm giảm khối lượng tính toán đặc biệt khi khóa có độ dài lớn
1.2 Mật mã khóa công khai
Mật mã khóa công khai tạo điều kiện cho các nhiệm vụ sau:
Mã hóa và giải mã cho phép hai bên giao tiếp để che giấu thông tin mà họ gửicho nhau Người gửi mã hóa, hoặc những cuộc đua xe, thông tin trước khi gửi
đi Người nhận giải mã, hoặc unscrambles, các thông tin sau khi nhậnđược Trong khi quá cảnh, các thông tin được mã hóa là khó hiểu cho một kẻxâm nhập
Phát hiện giả mạo cho phép người nhận thông tin để xác minh rằng nó đãkhông được sửa đổi trong quá cảnh Bất kỳ cố gắng sửa đổi dữ liệu hoặc thaythế một tin nhắn giả cho một hợp pháp sẽ được phát hiện
Xác thực cho phép người nhận thông tin để xác định nguồn gốc của nó-đó là, đểxác nhận danh tính của người gửi
Trang 5Chống chối bỏ ngăn chặn người gửi thông tin từ tuyên bố một ngày sau đórằng thông tin không bao giờ được gửi.
Phần này giới thiệu các khái niệm về mật mã khóa công khai làm cơ sởcho khả năng này Chúng ta rõ rằng các bên tham gia cần có một khóa mật để
mã hóa và giải mã Điều này đồng nghĩa với việc trao đổi khóa mật qua kênh.Việc giữ bí mật khóa mật đồng nghĩa với việc giữ mật thông tin Nên việc traođổi khóa chỉ diễn ra trên kênh mật thì mới đảm bảo được, thế nhưng việc traođổi này cung không phải dễ để đảm bảo độ an toàn cao Từ đây hình thành nên ýtưởng của mật mã công khai Tức là không cần phải trao đổi khóa mật qua kênhnữa
Có hai mục đích sử dụng chính của mật mã khóa công khai:
Mã hóa khóa công khai , trong đó tin nhắn được mã hóa với khóa côngkhai của người nhận Thông điệp này không thể được giải mã bởi bất cứ aikhông có khóa riêng phù hợp, do đó những người được cho là chủ sở hữu củachủ chốt và người có liên quan với khóa công khai Này được sử dụng trong một
nỗ lực để đảm bảo tính bảo mật
Chữ ký kỹ thuật số , trong đó tin nhắn được ký kết với khóa riêng củangười gửi và có thể được xác nhận bởi bất cứ ai có quyền truy cập vào khóacông khai của người gửi.Xác minh điều này chứng tỏ rằng người gửi đã truy cậpvào khóa riêng, và do đó có thể sẽ là người kết hợp với khóa công khai Điềunày cũng đảm bảo rằng thông điệp đã không bị giả mạo, như bất kỳ thao tác củatin nhắn sẽ dẫn đến những thay đổi trong mã hóa thông điệp tiêu hóa , mà nếukhông thay đổi giữa người gửi và người nhận
Ý tưởng của hệ mật công khai được Diffie và Hellman đưa ra năm 1976.Còn việc thực hiện hệ mật công khai thì do Rivest, Shamir và Adleman đưa rađầu tiên năm 1977, họ đề xuất một hệ mật RSA nổi tiếng Và kể từ đó có một số
hệ mật khác được công bố, độ mật của chúng dựa trên bài tính toán khác nhau,như dựa trên độ khó của bài toán phân tích thành nhân tử như hệ mật RSA, dựavào độ khó logarithm rời rạc như hệ mật ElGamal, hay dựa trên đường congElliptíc Chúng ta đi tìm hiểu cụ thể các hệ mật này trong các phần sau Nhưngtrước tiên chúng ta đi tìm hiểu sơ đồ và nguyên tắc mã và giải mã của hệ mậtcông khai
Trang 6Hệ mã công khai sử dụng hai khóa có quan hệ toán học với nhau, tức làmột khóa này được hình thành từ khóa kia: Người muốn nhận bản mã (Alice)tạo ra một khóa mật (private key) và từ khóa mật tính ra khóa công khai (publickey) với một thủ tục không phức tạp, còn việc tìm khóa mật khi biết khóa côngkhai là bài toán khó giải được Khóa công khai sẽ đưa đến cho người gởi bản tin(Bob) qua kênh công cộng Và bản tin được Bob mã hóa bằng khóa công cộng.Bản mã truyền đến Alice, và nó được giải mã bằng khóa mật.
CHƯƠNG 2: CÁC HỆ MẬT 2.1 Hệ mật RSA
a, Lịch sử hình thành
Thuật toán được Ron Rivest, Adi Shamir và Len Adleman mô tả lần đầutiên vào năm 1977 tại Học viện Công nghệ Massachusetts (MIT) Tên của thuậttoán lấy từ 3 chữ cái đầu của tên 3 tác giả Đây là thuật toán đầu tiên phù hợpvới việc tạo ra chữ ký điện tử đồng thời với việc mã hóa Nó đánh dấu một sựtiến bộ vượt bậc của lĩnh vực mật mã học trong việc sử dụng khóa công cộng
Trang 7RSA đang được sử dụng phổ biến trong thương mại điện tử và được cho là đảmbảo an toàn với điều kiện độ dài khóa đủ lớn.
Cơ sở thuật toán RSA dựa trên tính khó của bài toán phân tích các số lớn
ra thừa số nguyên tố: không không tồn tại thuật toán thời gian đa thức (theo độdài của biểu diễn nhị phân của số đó) cho bài toán này Chẳng hạn, việc phântích một hợp số là tích của 2 số nguyên tố lớn hàng trăm chữ số sẽ mất hàngngàn năm tính toán với một máy PC trung bình có CPU khoảng trên 2Ghz
Ý tưởng (Motivation)
Các nhà phát minh có lựa chọn khá giản dị là xây dựng thuật toánsinh/giải mã trên cơ sở phép toán lấy luỹ thừa đồng dư trên trường Zn ={0,1,2, n-1} Chẳng hạn, việc sinh mã cho tin X sẽ được thực hiện qua:
Y = X e ± n
Ở đây ta dùng ký hiệu a = b + n nghĩa là a = b + k* n với a ϵ Zn còn k =1,2,3, , ví dụ 7 = 33 + 10) còn việc giải mã:
X = Y d ± n (e – khóa sinh mã, d – khóa giải mã)
Như vậy để hai hàm sinh mã và giải mã này là hàm ngược của nhau, e và dphải được chọn sao cho: Xed = X + n
Người ta đã tìm được cách xây dựng cặp số (e,d) này trên cơ sở côngthức như sau: X Φ(n) = 1+ n (định lý Ơ - le)
Trong đó Φ(n) hàm số cho biết số lượng các số thuộc Zn mà nguyên tố cùngnhau với n Người ta cần chọn e*d sao cho chia Φ(n) dư 1,hay d= e-1 + Φ(n),khi đó ta sẽ có điều cần thiết:
Xed = Xk.Φ(n)+1 = (X Φ(n))d * X = 1*X = X
Φ(n) có thể tính được khi đã biết công thức phân tích thừa số nguyên
tố của n, cụ thể là nếu đã biết n = p*q (p.q là số nguyên tố) thì:
Φ(n) = (p-1) (q-1)Nói cách khác nếu như cho trước một số e thì nếu đã biết công thứcphân tích thừa số nguyên tố của n ta có thể dễ dàng tìm được d sao cho d = e-1+ Φ(n) hay là Xed = X + n, còn nếu không biết thì rất khó
Vừa rồi là phần trình bày dẫn dắt về cội nguồn của thuật toán, sau đây là thuậttoán cụ thể
Trang 8b, Quá trình tạo khóa cho hệ mật RSA.
Giả sử Alice và Bob cần trao đổi thông tin bí mật thông qua một kênhkhông an toàn (ví dụ như Internet) Với thuật toán RSA, Alice đầu tiên cần tạo
ra cho mình cặp khóa gồm khóa công khai và khóa bí mật theo 6 bước sau:Chọn 2 số nguyên tố lớn khác nhau p, q thỏa mãn điều kiện p ≈ q
Tính tích của nó n = p ⋅ q.
Tính giá trị hàm Phi Euler của n: ϕ( ) (n = p − 1)(q − 1).
Chọn số nguyên d, sao chod < ϕ( )n và gcd(d,ϕ(n))=1
Tính giá trị e thỏa mãn điều kiện:e ⋅ d = 1 mod(ϕ( )n ).
Khóa công khai bao gồm: n và e Khóa mật:d còn p,q và ϕ(n)thường là xóa saukhi tính toán khóa
Trang 9Điểm yếu của giải thuật:
Trong hệ RSA, không phải tất cả các thông tin đều được che giấu tốt,tức là mọi khoá đều tốt và đều làm bản rõ thay đổi hoàn toàn Đối với bất kỳkhoá nào tồn tại ít nhất 9 bản rõ bị ‘phơi mặt’, tuy nhiên đối với n 200điều đó không còn quan trọng Mặc dù vậy phải chú ý là nếu e không đượcchọn cẩn thận thì có thể gần đến 50% bản rõ bị lộ
An ninh:
Độ an toàn của hệ thống RSA dựa trên 2 vấn đề của toán học: bài toánphân tích ra thừa số nguyên tố các số nguyên lớn và bài toán RSA Nếu 2 bàitoán trên là khó (không tìm được thuật toán hiệu quả để giải chúng) thì khôngthể thực hiện được việc phá mã toàn bộ đối với RSA Phá mã một phần phảiđược ngăn chặn bằng các phương pháp chuyển đổi bản rõ an toàn Bài toán RSA
là bài toán tính căn bậc e môđun n (với n là hợp số): tìm số m sao cho me=c mod
n, trong đó (e, n) chính là khóa công khai và c là bản mã Hiện nay phương pháptriển vọng nhất giải bài toán này là phân tích n ra thừa số nguyên tố Khi thựchiện được điều này, kẻ tấn công sẽ tìm ra số mũ bí mật d từ khóa công khai và
có thể giải mã theo đúng quy trình của thuật toán Nếu kẻ tấn công tìm được 2 sốnguyên tố p và q sao cho: n = pq thì có thể dễ dàng tìm được giá trị (p-1)(q-1) vàqua đó xác định d từ e Trong chương số học chúng ta đã biết chưa có mộtphương pháp nào được tìm ra trên máy tính để giải bài toán này trong thời gian
đa thức (polynomial-time) Tuy nhiên người ta cũng chưa chứng minh được điềungược lại (sự không tồn tại của thuật toán)
Chiều dài khóa:
Trang 10Số n cần phải có kích thước không nhỏ hơn 512 bít Năm 2006 hệ mậtRSA được cho là hiệu quả với kích thước n phải từ 1024 Và họ khuyến cáo làtương lai thì chiều dài n phải từ 2024 bít
Chọn tham số công khai:
Để nâng cao tốc độ mã hóa, thì chúng ta nên chọn e với giá trị không lớn,thường là 3, 7 hay 65537 Các số này khi biểu diễn ở dạng nhị phân chỉ có 2 chữ
số 1, nên khi thực hiện lệnh lũy thừa sẽ giảm đi lệnh nhân
Chọn tham số mật
p và q còn cần được chọn không quá gần nhau để phòng trường hợp phân tích nbằng phương pháp phân tích Fermat Ngoài ra, nếu p-1 hoặc q-1 có thừa sốnguyên tố nhỏ thì n cũng có thể dễ dàng bị phân tích theo phương pháp p-1Pollaid và vì thế p và q cũng cần được thử để tránh khả năng này Chúng ta cóthể chọn như sau Trước tiên tìm số nguyên tố p1 sao cho p=2p1+1 cũng là số
Simons và Norris [9][13] đã chỉ ra rằng hệ thống RSA có thể bị
tấn công khi sử dụng tấn công lặp liên tiếp Đó là khi kẻ tấn công biết khóa côngkhai (e, n) và bản mã C thì anh ta có thể tính chuỗi các bản mã sau:
C1 = Ce (mod n)
C2 = C1e (mod n)
………
Ci = Ci-1e (mod n)
Nếu có một phần tử Cj trong chuỗi C1, C2, …, Ci, … sao cho Cj
= C thì khi đó anh ta sẽ tìm được M = Cj-1 bởi vì:
Cj = Ce
j1 (mod n)
C = Me (mod n)
Kiểu tấn công module n dùng chung
Simons và Norris cũng chỉ ra rằng hệ thống RSA có thể bị tấn công khi sửdụng module n dùng chung, thực vậy nếu một thông điệp M được mã hoá bằnghai khoá công khai e1 và e2 từ hai thành viên trong hệ thống thì được:
C1 = Me1 (mod n) C2 = Me2 (mod n)Sau đó người tấn công dùng thuật toán Euclide mở rộng:
e1*a + e2*b = 1 sao cho gcd(e1,e2) = 1
M được khôi phục lại như sau:
Trang 11Tạo vỏ bọc an toàn cho văn bản
Tạo chữ ký số cho văn bản
α là phần tử nguyên thủy Chọn x là số ngẫu nhiên sao cho 1<x<p.
Tính giá trị y thỏa mãn công thức: y = α x mod( )p
Khóa mật là x, còn khóa mở là 3 số (α ,p,y).
b, Quá trình mã hóa bản tin T:
Chọn số ngẫu nhiên R (chọn k)
Tính:C ′ = α R mod( )p (r = αkmod( )p )
Sử dụng khóa mở tính:
( )p mod T y
C ′′ = R , (C = y k Tmod( )p )Bob gởi bản mã gồm (C ′ , C ′′) đến Alice (C,r)
C
T ′ = ′ ⋅′ − 1 (T′ =C⋅Z− 1 mod( )p =T.y k.a− xmodp=T.a kx.a− xmodp
Chúng ta kiểm chứng lại quá trình giải mã là đúng như sau:
T T
T y Z C
T′ = ⋅′ − 1 = R .( αRx) − 1 = αxR .( αRx) − 1 =
Ví dụ:
=
p 707933; α=203
Trang 12a, Quá trình tạo khóa:
Để tạo ra khóa Alice cần phải thực hiện các thao tác sau:
Chọn 2 số nguyên tố ngẫu nhiên p và q, thỏa mãn điều kiện sau: p ≈ q.
Với M<n
Trang 13Chúng ta chứng minh thuật toán xxx này là một hệ mật, có nghĩa là quátrình giải mã được thực hiện bởi Alice sẽ khôi phục lại bản rõ được mã hóa bớiBob.
Giải phương trình bậc 2, chúng ta có nghiệm chung dạng:
) (mod
Chúng ta thấy rằng có 4 nghiệm được lấy ra khi giải mã Điều này cần có thôngtin phụ để Alice có thể nhận ra được bản nào là bản tin mà Bob gởi
Khi n là số nguyên Blum, có nghĩa là n=pq, với p≡q≡ 3 (mod 4 ) Chúng ta có thểtính toán dể dàng hơn như sau:
Đặt m=M+b/2, thế vào phương trình bậc hai chúng ta có:
) (mod
2
mod mod
1
) (mod
p C
) (mod
C
p C
Trang 14) (mod
) (mod
C
p C
q m
q
m
q mod
C
m
4 1 q q
a, Quá trình mã hóa:
Bob muốn trao bản tin x= (x1,x2, ,x n) cho Alice, thì Bob tính bản mã ynhư sau:
Trang 15Tìm giải pháp x với dãy siêu tăng (s1,s2, ,s n)và tổng là z.
Chúng ta đi tìm hiểu ví dụ nhỏ sau về hệ mật Merkle-Hellman:
Giả sử Alice chọn dãy siêu tăng s=(2,5,9,21,45,103,215,450,946) có 9 phần tử,dùng để mã hóa một số 9 bít và chọn p=2003, a=1289 Alice tính ra khóa côngkhai t=(575,436,1586,1030,1921,569,721,1183,1570)
Gởi t cho Bob qua kênh công cộng
Bob muốn gởi cho Alice bản tin x=(1,0,1,1,0,0,1,1,1) Thì Bob tính bản mã:
y=575+1586+1030+721+1183+1570=6665Bob gởi y cho Alice
Alice nhận được y, và tính z=a−1y(modp)=317.6665 mod 2003=1643 Tiếp theoAlice dùng thuật giải trên để tìm ra x
2.5 Hệ mật McEliece
Hệ mật McEliece được đề xuất năm 1978, tác giả của nó là RobertMcEliece Ý tưởng của bài toán này giống với ý tưởng của hệ mật Merkle-Hellman: Phép giải mã là trường hợp đặc biệt của bài toán NP đầy đủ
Để hiểu được hệ mật này các bạn phải nắm được kiến thức cơ bản về lý thuyết
cơ bản về truyền tin, thông tin
Gọi C[n,k] là mã tuyến tính, t là số bít bị sai khi truyền bản mã qua kênh nhiểu,các tham số này có liên quan với nhau bằng các hệ thức:n 2= m,k=n−mt Để ápdụng trong thực tế hệ mật công khai McEliece đề nghị chọn 1024, t = 50
Hệ mật McEliece hình thành như sau:
Alice và Bob muốn truyền tin mật cho nhau bằng hệ mật McEliece Trước tiênAlice phải hình thành khóa như sau: