1. Trang chủ
  2. » Tất cả

GTATTT_Chuong3

16 0 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 16
Dung lượng 383,42 KB

Nội dung

Nguyễn Khanh Văn & Trần Đức Khánh ĐHBKHN-2012 Mật mã An tồn Thơng tin CHƯƠNG Hê thơng mât mã khóa cơng khai Giới thiệu Như nêu, hệ thống mật mã giới thiệu gọi hệ mật mã khóa đối xứng (Symmtric Key Cryptosystems) vai trò hai bên gửi nhận tin sở hữu chung khố bí mật Cũng có nhiều cách gọi khác hệ mật mã này, sử dụng tùy vào ngữ cảnh phù hợp:  Hệ mã với khóa sở hữu riêng (Private Key Cryptosystems)  Hệ mã với khóa bí mật (Secret Key Cryptosystems)  Hệ mã truyền thống (Conventional Cryptosystems) Chúng ta sử dụng ký hiệu viết tắt cho hệ mật mã đối xứng SKC B KAB A KCD KAD D KCD KAC KBC C Tuy nhiên hệ mã đối xứng có nhược điểm sau:  Vấn đề quản lý khoá (tạo, lưu mật, trao chuyển ) phức tạp sử dụng môi trường trao đổi tin nhiều người dùng Với số lượng NSD n số lượng khố cần tạo lập n(n-1)/2 Mỗi người dùng phải tạo lưu n-1 khố bí mật để làm việc với n-1 người khác mạng Như khó khăn khơng an toàn n tăng lớn  Thứ hai là, sở mã đối xứng, ta thiết lập khái niệm chữ ký điện tử (mà thể chức chữ ký tay thực tế) khơng có dịch vụ non-repudiation1 (không thể phủ nhận được) cho giao dịch thương mại mạng Vấn đề chỗ hệ SKC, thông tin mật chia sẻ chung hai bên Alice Bob, Alice làm mà Bob làm ngược lại Giải pháp cho vấn đề phải có thêm thành phần thứ ba giao dịch Alice Bob, tức người có thẩm quyền (trusted authority) mà Alice Bob Non-repudiation đảm bảo cho trình giao dịch Alice (A) Bob (B) trường hợp bên có chứng để chứng gian trường hợp phía bên chối bỏ giao dịch đó, ví dụ A chối khơng thực giao dịch X với B việc lấy cớ có kẻ mạo nhận A để làm bậy Chương III - - Nguyễn Khanh Văn & Trần Đức Khánh ĐHBKHN-2012 Mật mã An tồn Thơng tin tin tưởng trung thực Người làm chứng trọng tài trường hợp xảy tranh cãi hai bên trung thực Người làm chứng trọng tài trường hợp xảy tranh cãi hai bên Alice Bob Tuy nhiên công việc người trọng tài nặng phải tham gia vào tất giao dịch bên, sớm muộn trở thành điểm tải giao thông truyền tin tốc độ xử lý điểm tắc ngẽn cổ chai (bottleneck) Sớm nhận thức vấn đề đó, Diffie & Hellman cơng trình tiếng (1976) đề xuất tư tưởng loại hệ mã với nguyên tắc mới, xây dựng xoay quanh NSD – chủ nhân hệ thống – xoay quanh cặp NSD toán kênh truyền tin mật truyền thống Trong hệ thống này, NSD có hai khố, gọi khố bí mật (secret key hay private key) gọi khố cơng khai (public key) Khố thứ user biết giữ bí mật, cịn khố thứ hai tự phổ biến cơng khai Khố thứ thường liền với thuật tốn giải mã, cịn khố thứ hai thường liền với thuật tốn sinh mã, nhiên điều bắt buộc Ta ký hiệu chúng z (khóa riêng) Z (khóa cơng khai) Hoạt động chúng đối xứng X = D(z, E(Z, X)) X = E(Z, D(z, X)) (1) (2) Trong hệ thức (1) biểu tượng cho tốn truyền tin mật: NSD khác B,C,D muốn gửi tin cho A việc mã hố thơng tin với khố cơng khai (ZA) A gửi Chỉ có A khố riêng để giải mã (zA) đọc tin; kẻ nghe trộm Eve khơng thể giải mã để lấy tin khơng có khố zA Cịn hệ thức (2) sử dụng để xây dựng hệ chữ ký điện tử sau ta nghiên cứu, thao tác Ký thực E(ZA) cịn kiểm định chữ ký thông qua gọi D(zA) Hệ mật mã theo nguyên tắc nói gọi hệ mã với khố cơng khai (public key cryptosystems) hay cịn gọi mã khóa phi đối xứng (asymmetric key cryptosystems) Ta viết tắt hệ thống kiểu PKC Nguyên tắc cấu tạo hệ PKC sử dụng cửa bẫy (trapdoor) Một hệ mã PKC tạo dựng sở sử dụng hàm chiều (one-way) Một hàm f gọi chiều nếu: Đối với X tính Y = f(X) dễ dàng Khi biết Y khó để tính ngược X Chương III - - Nguyễn Khanh Văn & Trần Đức Khánh Mật mã An tồn Thơng tin ĐHBKHN-2012 Ví dụ 3.1 Cho n số nguyên tố p1, p2, pn ta dễ dàng tính N = p1 * p2 * * pn, nhiên biết N, việc tìm thừa số nguyên tố khó khăn nhiều, đặc biệt N lớn thừa số nguyên tố lớn Tuy nhiên, cần hàm chiều đặc biệt có trạng bị cửa bẫy (trap door) cho biết sử dụng việc tìm nghịch đào f dễ dàng, cịn khơng (khơng biết bí mật cửa bẫy) khó thường Một hàm chiều có cửa bẫy dùng để tạo hệ mã PKC sau Lấy EZ (hàm sinh mã) hàm chiều có cửa bẫy Như bí mật cửa bẫy khóa bí mật z, mà biết dễ dàng tính nghịch đảo EZ tức biết Dz, cịn khơng biết khó (chỉ cịn cách thử vét cạn, thực tế bất khả thi khối lượng tính tốn q lớn) Sau khảo sát hai ví dụ việc xây dựng hàm chiều có cửa bẫy Ví dụ cố gắng thất bại, hệ Trapdoor Knapsack Ví dụ thứ hai hệ thành cơng tiếng, hệ RSA Merkle-Hellman Trapdoor Knapsack (Cửa bẫy dựa tốn đóng thùng) Vào năm 1978, hai ơng Merkle Hellman đề xuất thuật toán mã hố theo mơ hình PKC dựa tốn ĐĨNG THÙNG (hay cịn gói tốn “cái túi”, hay “ba lô”) sau: Cho tập hợp số dương ai, 1in số T dương Hãy tìm tập hợp số S  1,2, ,n  cho:  iS = T Bài toán tốn khó (NP-khó), theo nghĩa chưa tìm thuật tốn tốt thuật tốn thử-vét cạn thời gian xử lý hàm mũ (trong toán quan niệm dễ theo nghĩa tin học có thuật tốn thời gian đa thức) Ví dụ 3.2 (a1, a2, a3, a4) = (2, 3, 5, 7) T = Như ta có đáp số S = (1, 3) S = (4) Từ tốn Đóng thùng khảo sát khả vận dụng để tạo thuật toán mã khối PKC Sơ đồ sau: Chọn vector a = (a1, a2, , an) - gọi vector mang (cargo vector) Với khối tin X = (X1,X2,X3 , Xn), ta thực phép mã hoá sau: T=  aiXi (*) i=1,n Việc giải mã là: Cho mã T, vector mang a, tìm Xi cho thoả mãn (*) Chương III - - Nguyễn Khanh Văn & Trần Đức Khánh Mật mã An tồn Thơng tin ĐHBKHN-2012 Sơ đồ thể hàm chiều mà dùng làm sinh mã tính tốn dễ dàng việc giải mã, tức tính hàm ngược nó, khó Bây ta tiếp tục tìm cách đưa vào cửa bẫy (trapdoor) để việc giải mã làm dễ dàng (nếu biết cửa bẫy bí mật) Merkle áp dụng mẹo dựa sử dụng vector mang đặc biệt vector siêu tăng (superincreasing) sau Một vectơ siêu tăng thành phần i+1 lớn tổng giá trị thành phần đứng trước (1i) Khi sử dụng vector siêu tăng làm vector mang thấy việc tính ngược, tức giải tốn đóng thùng dễ dàng nhờ giải thuật thăm ăn đơn giản Điều minh họa qua ví dụ số sau Ví dụ 3.3 Vector mang siêu tăng: a=(1,2,4,8) Cho T=14, ta thấy việc tìm X=(X1,X2,X3,X4) cho T=  aiXi dễ dàng: Đặt T=T0 X4=1 T1=T0-X4=6  (X1 X2 X3 1) X3=1 T2=T1-X3=2  (X1 X2 1)  (X1 1 1) X2=1 T3=T2-2=0 X1=  (0 1 1) Ở bước i, tổng đích Ti (tức phải tìm aj để tổng Ti) Ta đem so sánh Ti với thành phần lớn phần lại vector, lớn thành phần chọn tức Xi tương ứng 1, cịn ngược lại Xi tương ứng Sau tiếp tục chuyển sang bước sau với Ti+1 = Ti-Xi Mặc dù ta thấy sử dụng vector siêu tăng vector mang cho phép giải mã dễ dàng nhưng, tất nhiên, ta cịn phải làm có người chủ biết sử dụng cịn kẻ thù khơng Tóm lại, cần tạo bí mật cửa bẫy thông qua việc người chủ phải chủ động “nguỵ trang” vector siêu tăng để có biết cịn người ngồi khơng thể lần Sơ đồ sau trình bày chế nguỵ trang Vector a’ vector siêu tăng bí mật, “ngụy trang”, tức biến đối thông qua hàm g chọn sẵn để tạo thành vector a khơng có tính siêu tăng (thậm chí giảm); vector a sử dụng làm vector mang Trong trình giải mã, người chủ (Alice) thực biến đổi vào liệu, sở áp dụng hàm ngược g-1, chuyển việc giải mã thành giải tốn đóng thùng với vector siêu tăng vector mang Phép biến đổi g chọn phép nhân đồng dư với giá trị khóa bí mật Chương III - - Nguyễn Khanh Văn & Trần Đức Khánh Mật mã An tồn Thơng tin ĐHBKHN-2012 Tạo khoá: Alice chọn vector siêu tăng: a’ = (a1’,a2’, ,an’) a’ giữ bí mật tức thành phần khố bí mật Sau chọn số nguyên m >  ai’, gọi mo-dul đồng dư số nguyên ngẫu nhiên , gọi nhân tử, cho nguyên tố với m Khố cơng khai Alice vector a tích a’ với nhân tử : a = (a1,a2, ,an) ai=ai’ (mod m); i=1,2,3 n Cịn khố bí mật ba (a’, m, ) Sinh mã: Khi Bob muốn gửi thông báo X cho Alice, tính mã theo cơng thức: T= aiXi Giải mã: Alice nhận T, giải mã sau: Để bỏ lớp nguỵ trang ta trước hết tính -1 (là giá trị nghịch đảo , tức -1 =1 mod m, giới thiệu thuật tốn tính sau), tính T’=T-1 (mod m) Alice biết T’ = a’ X nên ta dễ dàng giải X theo siêu tăng a’ Chú thích: ta có T’ = T-1 =  aiXi-1 =  ai’Xi-1 =  (ai’-1)Xi-1 =  ai’Xi = a’.X Như xem xét xong sơ đồ cụ thể Merkle-Hellman hệ PKC dựa tốn đóng thùng Tấn cơng vũ lực (Brute Force Attack) Ban đầu công vũ lực xem cách để phá hệ thống mật mã Với kẻ trapdoor (a’, m, ), phá giải mã địi hỏi phải tìm kiếm vét cạn qua 2n khả X Vì với n chọn đủ lớn công vũ lực bất khả thi khối lượng tính tốn Tuy nhiên công vũ lực cách Sự đổ vỡ giải pháp dùng Knapsack (1982-1984) Shamir-Adleman chỗ yếu giải pháp cách tìm cặp (’,m’) cho biến đổi ngược a a’ (tính khóa bí mật - Private key – từ khóa cơng khai) Năm 1984, Brickell tuyên bố đổ vỡ hệ thống Knapsack với dung lượng tính tốn khoảng máy Cray -1, với 40 vịng lặp cỡ 100 trọng số Thuật tốn tìm giá trị nghịch đảo theo modul đồng dư Việc xây dựng Knapsack với cửa bẫy địi hỏi phải tính giá trị nghịch đảo  theo modul m Thuật tốn tìm x = -1 mod m, cho x. = (mod m) gọi thuật toán GCD Chương III - - Nguyễn Khanh Văn & Trần Đức Khánh ĐHBKHN-2012 Mật mã An tồn Thơng tin mở rộng hay Euclide mở rộng (GCD - Greatest common divior - ước số chung lớn nhất) Sở dĩ tìm ước số chung lớn hai số ngun n1 n2, người ta tính ln giá trị a,b cho GCD(n1, n2) = a*n1 + b*n2 Từ suy ta biết (n1,n2)=1 thuật tốn cho ta tìm a, b thoả mãn a*n1 + b*n2=1, tức n1 nghịch đảo a theo modulo n2 (tức m) Sau sơ đồ thuật toán ví dụ áp dụng số Start n1, n2 n1>0 Initialization: a1=1, b1=0 a2 = 0, b2 = UPDATE: n1=n2 n2 = r Compute quotient q and remainder r when n1 is divided by n2 t=a2 a2 = a1 - q* a2 a1 = t No t=b2 r=0 b2=b1-q*b2 g = n2 a = a2 b = b2 Yes b1 = t g,a,b Ví dụ 3.4 Tìm ngịch đảo 39 theo modulo 11 Đặt n1=39, n2=11 ta có bảng tính minh họa bước sau: n1 n2 r q a1 b1 a2 b2 39 11 0 11 1 -3 1 -3 -1 -1 -7 Dễ thấy a=a2=2 nghịch đảo 39 theo modulo 11 Kể từ năm 1976, nhiều giải pháp cho PKC nêu nhiều số bị phá vỡ bị chê không thực dụng dung lượng tính tốn lớn thơng tin nở q lớn mã hoá Chương III - - Nguyễn Khanh Văn & Trần Đức Khánh Mật mã An tồn Thơng tin ĐHBKHN-2012 Một hệ thống PKC sử dụng vào mục đích bản: (1) Bảo mật thông tin truyền tin (2) Chứng thực chữ ký điện tử Hai thuật toán đáp ứng ứng dụng thành công RSA Elgamal Nói chung thuật tốn PKC chậm khơng thích hợp cho mật mã dòng (online) với truyền tin tốc độ cao, thường sử dụng cần đến tính an tồn cao chấp nhận tốc độ chậm Ngoài người ta thường sử dụng kết hợp PKC SKC (symmetric key cryptosystems) với PKC có tác dụng “khởi động mồi” cho SKC: dùng PKC để thiết lập thuật tốn tạo khố bí mật thống chung hai bên truyền tin sau sử dụng khố bí mật cho pha truyền tin SKC sau Hệ thống khóa cơng khai RSA RSA hệ mật mã khóa cơng khai phổ biến đa thực tế, phát minh Rivest, Shamir & Adleman (1977) Nó chuẩn mật mã bất thành văn PKC, cung cấp đảm bảo tính mật, xác thực chữ ký điện tử Cơ sở thuật tốn RSA dựa tính khó tốn phân tích số lớn thừa số ngun tố: khơng tồn thuật tốn thời gian đa thức (theo độ dài biểu diễn nhị phân số đó) cho tốn Chẳng hạn, việc phân tích hợp số tích số nguyên tố lớn hàng trăm chữ số hàng ngàn năm tính tốn với máy PC trung bình có CPU khoảng 2Ghz Ý tưởng (Motivation) Các nhà phát minh có lựa chọn giản dị xây dựng thuật toán sinh/giải mã sở phép toán lấy luỹ thừa đồng dư trường Zn = {0,1,2, n-1} Chẳng hạn, việc sinh mã cho tin X thực qua: Y= Xe n Ở ta dùng ký hiệu a = b + n nghĩa a = b + k* n với a  Zn cịn k = 1,2,3, , ví dụ = 33 + 10) việc giải mã: X= Yd n (e – khóa sinh mã, d – khóa giải mã) Như để hai hàm sinh mã giải mã hàm ngược nhau, e d phải chọn cho: Xed = X+ n Người ta tìm cách xây dựng cặp số (e,d) sở công thức sau: X  ( n )  + n (định lý Ơ - le) Trong (n) hàm số cho biết số lượng số thuộc Zn mà nguyên tố với n Người ta cần chọn e*d cho chia (n) dư 1, hay d= e-1 +  (n), ta có điều cần thiết: Xed = Xk.(n)+1 =(X(n))d * X = 1*X =X Chương III - - Nguyễn Khanh Văn & Trần Đức Khánh Mật mã An tồn Thơng tin ĐHBKHN-2012 (n) tính biết cơng thức phân tích thừa số ngun tố n, cụ thể biết n = p*q (p.q số nguyên tố) (n) = (p-1) (q-1) Nói cách khác cho trước số e biết cơng thức phân tích thừa số nguyên tố n ta dễ dàng tìm d cho d = e-1 + (n) Xed = X + n, khơng biết khó Vừa phần trình bày dẫn dắt cội nguồn thuật toán, sau thuật toán cụ thể Thuật toán RSA Xây dựng: Chọn tham số Chọn hai số nguyên tố lớn p q Tính n = p x q m = (n) = (p = 1) x (q-1) Chọn e, 1 e  m -1, cho gcd (e, m) = Tìm d cho e * d = (mod m), tức tính d = e-1 (mod m), giải theo thuật tốn gcd mở rộng trình bày phần trước Khóa cơng khai (Public key) (e, n) Khố dùng riêng (Private key) d, p, q) Giả sử X khối tin gốc (plaintext), Y khối mã tương ứng X, ( z A , Z A ) thành phần công khai riêng khoá Alice Mã hoá Nếu Bob muốn gửi thơng báo mã hố cho Alice việc dùng khố cơng khai Alice để thực hiện: Y  EZ A ( X )  X e  n Giải mã: Khi Alice muốn giải mã Y, ta việc dùng khố riêng zA = d để thực sau: D z A (Y )  Y d  n Ví dụ 3.5 Chọn p = 11 q = 13 n=11*13=143 m= (p-1)(q-1) =10 *12=120 e=37  gcd (37,120) =1 Sử dụng thuật tốn gcd để tìm cho e * d =1  120, ta tìm d= 13 (e*d =481) Để mã hoá xâu nhị phân, ta phải “bẻ” thành nhiều đoạn độ dài u bit, cho 2u ≤ 142 Do u = Mỗi đoạn số nằm khoản - 127 ta tính mã Y theo công thức: Y  X e  120 Chẳng hạn với X = (0000010) =2, ta có E Z ( X )  X 37  12  143  Y= (00001100) Giải mã sau: X  Dz (Y )  1213   143 Chương III - - Nguyễn Khanh Văn & Trần Đức Khánh ĐHBKHN-2012 Mật mã An tồn Thơng tin Để tiện cho việc giao dịch mạng có sử dụng truyền tin mật, người ta thành lập Public Directory (thư mục khố cơng khai), lưu trữ khố công khai user Thư mục đặt điểm công cộng mạng cho truy nhập tới để lấy khố công khai người cần liên lạc User Alice Bob Cathy (n,e) (85,23) (117,5) (4757,11) Một số ứng dụng (của hệ thống mật mã khóa cơng khai nói chung) a Bảo mật truyền tin (Confidentiality) EZB ( X ) A gửi cho B B dễ dàng giải mã khóa bí mật zB b Chứng thực + Alice ký lên tin cần gửi cách mã hoá với khoá bí mật ta D z A ( X ) gửi ( X , S )  ( X , D z A ( X )) cho Bob + Khi Bob muốn kiểm tra tính tin cậy tin nhận được, việc tính X '  E Z A ( X )  E Z A ( D z A ( X )) kiểm tra X = X’ xác thực tính tin cậy (authenticity) X Chú ý 1: Trong trình việc kiểm tra (i) tính tồn vẹn thơng báo việc (ii) xác thực danh tính người gửi thực lúc Ta có (i) cần bit tin mà bị thay đổi bị phát chữ ký khơng khớp Ngồi có (ii) khơng tạo thơng báo ngồi Alice, người biết zA Chú ý 2: Alice ký vào giá trị băm (hash) X thay ký thẳng lên X Khi tồn mã mà Alice chuyển cho Bob ( X , Dz A ( H ( X ))) H hàm băm công khai Phương pháp hiệu tiết kiệm (hàm băm cho xâu độ dài cố định thông thường ngắn nhiều so với xâu đầu vào) c Kết hợp tính mật tin cậy Chúng ta làm sau để kết hợp hai khả a b A gửi Y  E Z B ( D z A ( X )) cho B B phục hồi X sau: X  E Z A ( D z B (Y ))  E Z A ( D zB ( E Z B ( D z A ( X )))) Để có chứng nhằm đối phó với việc Alice sau phủ nhận gửi thơng báo (non-repudiation) Bob phải lưu giữ Dz A (X ) Một số vấn đề xung quanh thuật toán RSA Vấn đề chọn p q: + p q phải số nguyên tố lớn, cỡ 100 chữ số Chương III - - Nguyễn Khanh Văn & Trần Đức Khánh Mật mã An toàn Thông tin ĐHBKHN-2012 + p q phải lớn cỡ xấp xỉ ( độ dài 100 chữ số chẳng hạn) Bài tập: Tại lại có điều kiện thứ 2? Một vài số tốc độ thuật tốn cài đặt: So sánh với DES RSA: + Có tốc độ chậm nhiều Thường thì, RSA chậm 100 lần cài đặt phần mềm, chậm từ 1000 đến 10,000 lần cài đặt phần cứng (cịn tùy cách cài đặt) + Kích thước khố mật lớn nhiều Nếu p q cần biểu diễn cỡ 300 bits n cần 600 bits Phép nâng lên luỹ thừa chậm so với n lớn, đặc biệt sử dụng phần mềm (chương trình) Người ta thấy thực phép nhân cỡ m + nhịp Clock kích thước n m bit Về tốn phân tích thừa số nguyên tố Giải thuật tốt phương pháp sàng số Một ước lượng thời gian thực giải thuật là: 9.7  log n L(n)  10 50 Trong log2n cho số biết số bit cần để biểu diễn n, số cần phân tích thừa số nguyên tố Từ rút ra, tăng n lên thêm 50 bit (quãng 15 chữ số thập phân) thời gian làm phân tích thừa số nguyên tố tăng lên 10 lần Vào năm cuối kỷ 20, người ta ước lượng thấy, với n=200, L(n)  55 ngàn năm Đối với khả thực xử lý song song, kết tốt phân tích TSNT với số lớn cho biết phân tích số có 129 chữ số, phân bố tính tốn tồn mạng Internet trọn tháng Như nêu, số ngun khó phân tích thừa số hợp số tích số nguyên tố có độ lớn xấp xỉ (vì số nguyên tố p q thường chọn RSA) Từ điển Bách khoa mở, Wikipedia Internet, cho biết số nguyên có dạng lớn mà phân tích thừa số thành cơng, ký hiệu RSA768, có 768 bit hay 232 chữ số thập phân Nó phân tích thành cơng vào ngày 12/12/2009 nhờ cộng tác nhiều sở nghiên cứu đại vịng năm trời Lượng tính tốn thực nguyên lý xử lý song song so sánh tương đương với 2000 năm chạy liên tục cấu hình xử lý 2.2 GHz AMD Opteron RSA-768 = 12301866845301177551304949583849627207728535695953347921973224521517264005 07263657518745202199786469389956474942774063845925192557326303453731548268 50791702612214291346167042921431160222124047927473779408066535141959745985 6902143413 RSA-768 = 33478071698956898786044169848212690817704794983713768568912431388982883793 878002287614711652531743087737814467999489 Chương III - 10 - Nguyễn Khanh Văn & Trần Đức Khánh Mật mã An tồn Thơng tin ĐHBKHN-2012 × 36746043666799590428244633799627952632279158164343087642676032283815739666 511279233373417143396810270092798736308917 Vấn đề tìm số nguyên tố lớn: Một thuật toán để tạo tất số nguyên tố khơng tồn tại, nhiên có thuật tốn hiệu để kiểm tra xem số cho trước có phải ngun tố hay khơng (bài tốn kiểm tra tính ngun tố) Thực tế, việc tìm số nguyên tố lớn cho RSA vòng lặp sau: Chọn số ngẫu nhiên p nằm khoảng có độ lớn u cầu (tính theo bit) Kiểm tra tính nguyên tố p, ngun tố dừng lại, khơng quay lại bước Những thuật toán tất định để kiểm tra tính nguyên tố tốn thời gian địi hỏi thực máy tính có tốc độ cao Tuy nhiên người ta sử dụng thuật tốn xác suất, có khả ‘đốn’ nhanh xem số có phải ngun tố khơng Các thuật tốn xác suất khơng đưa định tuyệt đối, gần tuyệt đối; tức xác suất báo sai làm nhỏ tùy ý, phụ thuộc vào thời gian bỏ Xét ví dụ thuật tốn xác suất, dựa phương pháp sau Lehmann Phương pháp Lehmann: Giả sử n số lẻ, với số nguyên a ta ký hiệu: n 1 G(a,n) = a  n Ví dụ: Với n=7, ta có 23=1, 33=6, 43=1, 53=6, 63=1; tức G= 1,6 Theo Lehmann, n số lẻ G(a,n)=1,n-1 với a nguyên n số nguyên tố Tuy nhiên với n hợp số, khả G(a,n)=1,n-1 xảy với xác suất 50% cho số nguyên a nguyên tố với n lựa chọn Từ kết này, ta có phép thử sau cần xác định tính nguyên tố số nguyên n: Chọn ngẫu nhiên số a Zn* If (gcd(a,n) >1) return (“là hợp số”) else If ( If (a n 1  || a n 1  1) return (“ nguyên tố”) else return (“là hợp số”) Nếu thực phép thử 100 lần thu câu trả lời “có thể nguyên tố” xác suất n khơng phải số ngun tố (‘đoán nhầm’) 2-100 Chương III - 11 - Nguyễn Khanh Văn & Trần Đức Khánh Mật mã An tồn Thơng tin ĐHBKHN-2012 Để tìm số lớn với tính nguyên tố chắn tuyệt đối, người ta sử dụng phương pháp xác suất để loại bỏ nhanh chóng hợp số thực phép kiểm tra tất định cuối với số đáp ứng tốt phép thử Giải thuật tính luỹ thừa nhanh Luỹ thừa tính thơng thường phép nhân liên tục nhiên tốc độ chậm Luỹ thừa trường Zn (modulo n) tính nhanh nhiều giải thuật sau Giải thuật sử dụng hai phép tính tính bình phương nhân Để tính X (modul n): Xác định hệ số i khai triển  hệ nhị phân:  = 020 + 121 + 222 + + k2k i Dùng vịng lặp k bước để tính k giá trị X  n, với i=1,k : X2  XX X4  X2X2 k X2  X2 k 1 X2 k 1 Từ bước 1, ta tính X  n cách đem nhân với giá trị tính bước i tương ứng 1: i X  n 1,  i  i ( X )  i   2i  X , i  Ví dụ 3.6: Xét RSA với n =179, e =73 Với X= ta có Y= 273  179 73 = 64+8+1 = 26+23+20 Y=264+8+1 = 264  28  21 Điểm yếu giải thuật RSA Trong hệ RSA, tất thông tin che giấu tốt, tức khoá tốt làm rõ thay đổi hồn tồn Ví dụ 3.7: n = 35 = x 7, m=4x6 e=5 (GCD (5,24) = 1) X=8 Y = Xe  35 = = X! Đối với khố tồn rõ bị ‘phơi mặt’, nhiên n  200 điều khơng cịn quan trọng Mặc dù phải ý e không chọn cẩn thận gần đến 50% rõ bị lộ Chương III - 12 - Nguyễn Khanh Văn & Trần Đức Khánh ĐHBKHN-2012 Mật mã An tồn Thơng tin Ví dụ 3.8: Với n = 35, e = 17 1, 6, 7, 8, 13, 14, 15, 20, 21, 27, 28, 29, 34 không che Người ta cho tránh tình số nguyên tố chọn AN TOÀN Một số nguyên tố gọi AN TỒN p=2p’+1 p’ số nguyên tố Đánh giá an tồn thuật tốn RSA Sự an tồn thành phần khố mật (private key) phụ thuộc vào tính khó việc PTTSNT số lớn Ký hiệu Z= (e,n) khố cơng khai Nếu biết PTTSNT n n=pq tính m=(n) =(p-1)(q-1) Do tính d=e-1(mod m) theo thuật toán GCD mở rộng Tuy nhiên khơng biết trước p,q biết khơng có thuật tốn hiệu để PTTSNT n, tức tìm p,q, n lớn Nghĩa khơng thể tìm m khơng tính d Chú ý: Độ an tồn RSA chưa hồn tồn tương đương với tính khó tốn PTTSNT, tức tồn phép công phá vỡ RSA mà không cần phải biết PTTSNT n, chẳng hạn có kẻ thành cơng dạng cơng sau: Đi tìm thành phần khóa mật Kẻ thù biết X Y với Y=Dz(X) Để tìm d phải giải phương trình: X = Ydn Hay tính d = logYX Đi tìm rõ: Kẻ thù biết Y e, để tìm rõ X phải tìm cách tính thức bậc e theo đồng dư, để giải phương trình Y=Xe Một số dạng cơng có điều kiện quan trọng: số hệ cài đặt rơi vào số điều kiện đặc biệt trở nên an tồn với người sử dụng Common modulus attack: Khi nhóm user sử dụng khố cơng khai Z=(e,n) khác thành phần e giống modul đồng dư n Khi đó, kẻ thù tóm hai đoạn mã mà: + rõ mã hoá khoá PK khác (từ hai user khác nhau) + hai thành phần e tương ứng ngun tố có cách để giải mã Cụ thể kẻ thù biết e1,e2,n,Y1,Y2 ± = ± = Vì (e1,e2)=1 nên tìm a b cho: a*e1+b*e2 = Chương III - 13 - Nguyễn Khanh Văn & Trần Đức Khánh ĐHBKHN-2012 Mật mã An tồn Thơng tin Suy kẻ thù tìm X từ: ⋅ ⋅ ⋅ + ⋅ ∗ = = ∗ = Tóm lại nên tránh sử dụng chung modul đồng dư (common modulus) user nhóm làm việc Low exponent attack: Tấn công xảy với điều kiện giá trị e chọn nhỏ (e mà nhỏ thuật tốn mã hố truyền tin mật kiểm định chữ ký nhanh hơn) Nếu kẻ thù tìm e(e+1)/2 mã mà mã hoá từ rõ phụ thuộc tuyến tính hệ thống bị nguy hiểm Tuy nhiên rõ mà khơng có quan hệ với khơng Vì nên ghép thêm vào rõ xâu nhị phân ngẫu nhiên để đảm bảo cho chúng không bị phụ thuộc Low decryption attack: Nếu thành phần khóa mật d mà đủ nhỏ bị kẻ thù tìm thấy Một số hệ PKC khác Rabin Hệ Rabin xây dựng việc lấy n=pq làm bí mật N coi khố cơng khai (PK) cịn (p,q) khố bí mật (SK) Mã hố việc thực hiện: Y=X2 (mod n) cịn giải mã việc tính bậc hai: X= Y (mod n) (*) Có thể thấy, biết n=pq dễ dàng tìm nghiệm cho phương trình này, cịn khơng việc tìm nghiệm khó tương đương với tốn PTTSNT số n Khi biết N=pq (*) giải có bốn nghiệm2, để xác định đâu rõ gốc phải có mẹo để chọn giá trị cần thiết số nghiệm Hệ Rabin có số ưu điểm so với RSA: + Tính an tồn chứng minh hồn tồn tương đương với tốn PTTSNT, nói cách khác tính ATBM Rabin chứng minh (provable) + Ngoại trừ trường hợp RSA hoạt động với e nhỏ thuật toán sinh mã Rabin nhanh nhiều so với RSA hệ địi hỏi phải tính luỹ thừa Thời gian giải mã tương đương Nhược điểm: Vì phương trình giải mã cho nghiệm nên làm khó dễ việc giải mã Thơng thường, rõ trước mã hố cần nối thêm vào chuỗi số xác định để làm dấu vết nhận dạng (chẳng hạn nối thêm 20 số – số nghiệm giải ra, chuỗi tận 20 rõ cần nhận) Do phần có mục đích giới thiệu tóm tắt nên khơng sâu vào cơng thức tính nghiệm Chương III - 14 - Nguyễn Khanh Văn & Trần Đức Khánh Mật mã An tồn Thơng tin ĐHBKHN-2012 Vì lý nên Rabin thường dùng chủ yếu cho chứng thực (chữ ký điện tử) El-Gamal Tạo khoá: Alice chọn số nguyên tố p hai số nguyên ngẫu nhiên g u, hai nhỏ p Sau tính y =gu (mod p) Bây khóa cơng khai Alice lấy (p,g,y), khoá mật u Sinh mã: Nếu Bob muốn mã hoá tin X để truyền cho Alice trước hết chọn số ngẫu nhiên k cho (k,p-1) =1 Tính a=gk (mod p) b=ykX (mod p) Mã Y=(a,b) có độ dài gấp đơi rõ Giải mã: Alice nhận Y= (a,b) giải X theo công thức sau: b X  u (mod p) a Ví dụ 3.9: p=11, g=3, u=6 Thế y=3 =3 (mod 11) Khố cơng khai (p,g,y)=(11,3,3) cịn khố bí mật u=6 Để mã hố cho tin X=6, Bob chọn ngẫu nhiên k=7 tính a=37=9(mod 11), b=376 = 10 (mod 11) Mã (a,b) = (9,10) Bây Alice nhận (a,b) giải mã sau X = b/(au) = 10/(97) = 10  =6 (mod 11) BÀI TẬP CHƯƠNG Hãy hoàn thiện nốt chứng minh tính đắn thuật toán GCD với phần bắt đầu sau: Chú ý bước lặp thứ i ta biểu diễn giá trị thời sau (chỉ số i viết giá trị bước lặp thứ i) = +1 = × 1 × 2 = 2× 2× Lấy đẳng thức trừ q lần đẳng thức dưới, q thương số phép chia giá trị thời (vòng lặp i) n1 n2, ta được: +1 Chú ý rằng: Từ suy ra: … = +1 2 = − () × − () × Chương III - 15 - Nguyễn Khanh Văn & Trần Đức Khánh Mật mã An tồn Thơng tin ĐHBKHN-2012 Chọn số ngẫu nhiên M khoảng từ đến 20 Thực công việc sau: Bạn xây dựng vector siêu tăng có thành phần có thành phần có giá trị M bạn thành phần cuối 60 Hãy cho xem phép tính để kiểm tra tính siêu tăng Dựa vector bạn xây dựng hệ khố cơng khai theo phương pháp Merkle-Hellman (ngun tắc từ tốn đóng thùng) Hãy sử dụng thuật tốn GCD mở rộng để tính giá trị nghịch đảo đồng dư Viết M bạn dạng nhị phân gọi X giá trị bit cuối Bạn sử dụng hệ khóa cơng khai vừa xây dựng để tính mã Y từ X Với giá trị Y tìm câu trên, cho biết cách giải mã để thu tin X ban đầu a) b) c) d) a) b) c) d) Cho p=11, q=17 hệ RSA Chọn số ngẫu nhiên M khoảng từ đến 20 Hãy thực cơng việc sau: Xây dựng khố cơng khai bí mật hệ (chú ý áp dụng thuật tốn GCD mở rộng) Tính MÃ tin M Nếu sử dụng hệ để làm chữ ký, xác định chữ ký cho M nói (chú ý dùng giải thuật nhạnh để tính lũy thừa đồng dư) Nếu muốn gửi thơng báo M vừa có đảm bảo xác thực vừa có tính mật, cần thực cụ thể nào? Hãy lập luận chứng minh cụ thể tốn đóng thùng với vector mang siêu tăng ln dễ có nghiệm Biết hàm (n) có nhân tính, có nghĩa (m*n) = (m) * (n) với m n nguyên mà gcd(m,n)=1 Hãy chứng minh (n)= (p-1)* (q-1) n= p*q với p, q số nguyên tố Chương III - 16 -

Ngày đăng: 25/08/2016, 20:29

TÀI LIỆU CÙNG NGƯỜI DÙNG

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN