1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Tài liệu Lý thuyết mật mã - Chương 6&7 pdf

54 518 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 54
Dung lượng 424,5 KB

Nội dung

CHƯƠNG CÁC SƠ ĐỒ CHỮ KÍ SỐ 6.1 GIỚI THIỆU Trong chương này, xem xét sơ đồ chữ kí số (cịn gọi chữ kí số ) Chữ kí viết tay thơng thường tàI liệu thường dùng để xác người kí Chữ kí dùng hàng ngày chẳng hạn thư nhận tiền từ nhà băng, kí hợp đồng Sơ đồ chữ kí phương pháp kí điện lưu dang điện từ Chẳng hạn điện có ký hiệu truyền mạng máy tinh Chương trình nghiên cứu vài sơ đồ chữ kí Ta thảo luận vàI khác biệt giửa chữ kí thơng thường chữ kí số Đầu tiên vấn đề kí tài liệu Với chữ kí thơng thường, phần vật lý tài liệu Tuy nhiên, chữ kí số khơng gắn theo kiểu vật lý vào điện nên thuật tốn dùng phải ”khơng nhìn thấy” theo cách điện Thứ hai vấn đề kiểm tra Chữ kí thơng thường kiểm tra cách so sánh với chữ kí xác thực khác ví dụ, kí séc để mua hàng, người bán phải so sánh chữ kí mảnh giấy với chữ kí nằm mặt sau thẻ tín dụng để kiểm tra Dĩ nhiên, khơng phải phươg pháp an tồn dể dàng giả mạo Mắt khác, chữ kí số kiểm tra nhờ dùng thuật tốn kiểm tra cơng khai Như vậy, kiểm tra dược chữ kí số Việc dùng sơ đồ chữ kí an tồn ngăn chặn dược khả giả mạo Sự khác biệt khác chữ kí số chữ kí thơng thường copy tài liệu kí băng chữ kí số đồng với gốc, cịn copy tài liệu có chữ kí giấy thường khác với gốc Điều có nghĩa phải cẩn thận ngăn chăn kí số khỏi bị dung lạI Ví dụ, Bob kí điện xác nhận Alice có khả làm điều lần Vì thế, thân điện cần chứa thơng tin (chẳng hạn ngày tháng) để ngăn khỏi bị dung lại Một sơ đồ chữ kí số thường chứa hai thành phần: thuật tốn kí thuật tốn xác minh Bob kí điện x dùng thuật tốn kí an tồn Chữ kí sig(x) nhận kiểm tra thuật tốn xác minh cơng khai ver Khi cho trước cặp (x,y), thuật tốn xác minh có giá trị TRUE hay FALSE tuỳ thuộc vào chữ kí thực Dưới định nghĩa hình thức chữ kí: Định nghĩa 6.1 Một sơ đồ chữ kí số 5( P,A, K,S,V) thoả mãn điều kiện đây: P tập hữu hạn điện A tập hữu hạn chữ kí K khơng gian khố tập hữu hạn khố Với K thuộc K tồn tạI thuật tốn kí sigk ∈ S thuật toán xác minh verk∈ V Mỗi sigk : P → A verk: P×A →{true,false} hàm cho điện x∈ P mối chữ kí y∈ A thoả mãn phương trình True y=sig(x) verk False y# sig(x) Với k thuộc K hàm sigk verk hàm thơì than đa thức Verk hàm công khai sigk mật Khơng thể dể dàng tính tốn để giả mạo chữ kí Bob điện x Nghĩa x cho trước, có Bob tính y để verk = True Một sơ đồ chữ kí khơng thể an tồn vơ điều kiện Oscar kiểm tra tất chữ số y có điện x nhờ dùng tht tốn ver cơng khai tìm thấy chữ kí Vi thế, có đủ thời gian Oscar ln ln giả mạo chữ kí Bob Như vậy, giống trường hợp hệ thống mã khố cơng khai, mục đích tìm sơ đồ chữ kí số an toan mặt tính tốn Xem thấy rằng, hệ thống mã khố cơng khai RSA dùng làm sơ đồ chữ kí số, Xem hình 6.1 Như vậy, Bob kí điện x dùng qui tắc giải mã RSA dk, Bob người tạo chữ kí dk = sigk mật Thuật toán xác minh dùng qui tắc mã RSA ek Bất kì củng có xác minh chữ kí vi ek cơng khai Chú ý rằng, giả mạo chữ kí Bob điện “ ngẩu nhiên” x cách tìm x=ek(y) với y đó; y= sigk(x) Một pháp xung quanh vấn đề khó khăn yêu cầu điện chưa đủ phần dư để chữ kí giả mạo kiểu khơng tương ứng với điện nghĩa x trừ xác suất bé Có thể dùng hàm hash việc kết nối với sơ đồ chữ kí số loại trừ phương pháp giả mạo (các hàm hash xét chương 7) Hình 6.1 sơ đồ chữ kí RSA Cho n= pq, p q số nguyên tố Cho P =A= Zn định nghĩa P= {(n,p,q,a,b):=n=pq,p q nguyên tố, ab ≡ 1(mod( φ (n))) } Các giá trị n b công khai, ta địng nghĩa : sigk(x)= xa mod n verk (x,y)= true ⇔ x ≡ yb (mod n) (x,y ∈ Zn) Cuối cùng, ta xét tóm tắt kết hợp chữ kí mã khố cơng khai Giả sử rằng, Alice tính tốn chư kí ta y= sigAlice(x) sau mã x y hàm mã khố cơng khai eBob Bob, cô ta nhận z= eBob(x,y) Bản mã z truyền tới Bob Khi Bob nhận z, trước hết giải mã hàm dBob để nhận (x,y) Sau dung hàm xác minh công khai Alice để kiểm tra xem verAlice(x,y) có True hay khơng Song Alice mã x sau kí tên mã nhận sao? Khi tính : y= sigAlice(eBob(x)) Alice truyền cặp (z,y) tới Bob Bob giải mã z, nhận x sau xác minh chữ kí y x nhờ dùng verAlice Một vấn đề tiểm ẩn biện pháp Oscar nhận cặp (x,y) kiểu này, ta có thay chữ kí y Alice chữ kí y, = sigOscar(eBob(x)) (chú ý rằng,Oscar kí mã eBob(x) rõ x) Khi Oscar truyền(x, Y’ ) đến Bob chữ kí Oscar Bob xác minh verOscar Bob suy rằng, rõ x xuất phát từ Oscar Do khó khăn này, hầu hết người sử dụng khuyến nghị kí trước mã 6.2 SƠ ĐỒ CHỮ KÍ ELGAMAL Sau ta mơ tả sơ đồ chữ kí Elgamal thiệu báo năm 1985 Bản tiến sơ đồ Viện Tiêu chuẩn Công Nghệ Quốc Gia Mỹ (NIST) chấp nhận làm chữ kí số Sơ đồ Elgamal (E.) thiết kế với mục đích dành riêng cho chữ kí số, khác sơ đồ RSA dùng cho hệ thống mã khoá cơng khai lẫn chữ kí số Sơ đồ E, khơng tất định giống hệ thống mã khố cơng khai Elgamal Điều có nghĩa có nhiều chữ kí hợp lệ điện cho trươc Thuật toán xác minh phải cố khải chấp nhận chữ kí hợp lệ xác thực Sơ đồ E mơt tả hình 6.2 Nếu chữ kí thiết lập xác minh thành cơng : βγ γδ ≡ αa γ αkγ(mod p) ≡ αx(mod p) ta dùng hệ thức : a γ+ k δ ≡ x (mod p-1) Hình 6.2 sơ đồ chữ kí số Elgamal Cho p số nguyên tố cho toán log rời rạc Zp khó giả sử α ∈ Zn phần tử nguyên thuỷ P = Zp* , A = Zp* × Zp-1 định nghĩa : K ={(p,α ,a,β ):β ≡ αa(mod p)} Giá trị p,α ,β cơng khai, cịn a mật Với K = (p,α ,a,β ) số ngẫu nhiên (mật) k∈ Zp-1 định nghĩa : Sigk(x,y) =(γ ,δ), γ = αk mod p δ =(x-a) k-1 mod (p-1) Với x,γ ∈ Zp δ ∈ Zp-1 , ta định nghĩa : γ δ Ver(x,γ ,δ ) = true ⇔ β γ ≡ αx(mod p) Bob tính chữ kí cách dùng gía trị mật a (là phần khoá) lẫn số ngẫu nhiên mật k (dùng để kí lên điện x ) Việc xác minh có thực thông báo tin công khai Chúng ta xét ví dụ nhỏ minh hoạ Ví dụ 6.1 Giả sử cho p = 467, α =2,a = 127; đó: β = αa mod p = 2127 mod 467 = 132 Nếu Bob muốn kí lên điện x = 100 chọn số ngẫu nhiên k =213 (chú ý UCLN(213,466) =1 213-1 mod 466 = 431 Khi γ =2213 mod 467 = 29 δ =(100-127 × 29) 431 mod 466 = 51 Bất kỳ củng xác minh chữ kí kiểm tra : 13229 2951 ≡ 189 (mod 467) 2100 ≡ 189 (mod 467) Vì chữ kí hợp lệ Xét độ mật sơ đồ chữ kí E Giả sử, Oscar thử giả mạo chữ kí điện x cho trước khơng biết a Nếu Oscar chọn γ sau thử tìm giá trị δ tương ứng, phải tính logarithm rời rạc logγ αxβ-γ Mặt khác, ta chọn δ sau thử tim γ thử giải phương trình: βγ γδ ≡ αx(mod p) để tìm γ Đây tốn chưa có lời giải nào: Tuy nhiên, dường chưa gắn với đến toán nghiên cứu kĩ nên có khả có cách để tính δ γ đồng thời để (δ, γ)là chữ kí Hiện thời khơng tìm cách giải song củng khơng khẳng định khơng thể giải Nếu Oscar chọn δ γ sau tự giải tìm x, phảI đối mặt với toán logarithm rời rạc, tức toán tính logα ??? Vì Oscar khơng thể kí điện ngẫu nhiên biện pháp Tuy nhiên, có cách để Oscar kí lên điện ngẫu nhiên việc chọn γ, δ x đồng thời: giả thiết i j số nguyên ≤ i ≤ p-2, ≤ j ≤ p-2 UCLN(j,p-2) = Khi thực tính tốn sau: γ = αi βj mod p δ = -γ j-1 mod (p-1) x = -γ i j-1 mod (p-1) j-1 tính theo modulo (p-1) (ở đòi hỏi j nguyên tố với p-1) Ta nói (γ, δ )là chữ kí hợp lệ x Điều chứng minh qua việc kiểm tra xác minh : ???? Ta minh hoạ ví dụ : Ví dụ 6.2 Giống ví dụ trước cho p = 467, α = 2, β =132 Giả sữ Oscar chọn i = 99,j = 179; j-1 mod (p-1) = 151 Anh ta tính tốn sau: γ = 299132197 mod 467 = 117 δ =-117 ×151 mod 466 = 51 x = 99 × 41 mod 466 = 331 Khi (117, 41) chữ kí hợp lệ điện 331 hư xác minh qua phép kiểm tra sau: 132117 11741 ≡ 303 (mod 467) 2331 ≡ 303 (mod 467) Vì chữ kí hợp lệ Sau kiểu giả mạo thứ hai Oscar bắt đầu điện Bob kí trước Giả sử (γ, δ ) chữ kí hợp lệ x Khi Oscar có khả kí lên nhiều điện khác Giả sử i, j, h số nguyên, ≤ h, i, j ≤ p-2 UCLN (h γ - j δ, p-1) = Ta thực tính tốn sau: λ = γh αi βj mod p µ = δλ(hγ -jδ)-1 mod (p-1) x, = λ(hx+iδ ) -1 mod (p-1), (hγ -jδ)-1 tính theo modulo (p-1) Khi dễ dàng kiểm tra điệu kiện xác minh : µ β λ λ ≡ αx’ (mod p) (λ, µ)là chữ kí hợp lệ x’ Cả hai phương pháp tạo chữ kí giả mạo hợp lệ song không xuất khả đối phương giả mạo chữ kí điện có lựu chọn họ mà khơng phải giải tốn logarithm rời rạc, khơng có nguy hiểm độ an tồn sơ đồ chữ kí Elgamal Cuối cùng, ta nêu vài cách phái sơ đồ khơng áp dụng cách cẩn thận (có số ví dụ khiếm khuyết giao thức, số xét chương 4) Trước hết, giá trị k ngẫu nhiên dùng để tính chữ kí phải giữ kín khơng để lộ k bị lộ, đơn giản để tính : A = (x-k γ )δ-1 mod (p-1) Dĩ nhiên, a bị lộ hệ thống bị phá Oscar dễ dang giả mạo chữ kí Một kiểu dung sai sơ đồ dùng giá trị k để kí hai điện khác điều tạo thuận lợi cho Oscar tinh a phá hệ thống Sau cách thực Giả sử (γ, δ1) chữ kí x1 (γ, δ2) chữ kí x2 Khi ta có: γ β γδ1 ≡ αx1 (mod p) Như γ δ β γ ≡ αx2(modp) αx1-x2 ≡ αδ1-δ2 (mod p) Nếu viết γ = αk, ta nhận phương trình tìm k chưa biết sau αx1-x2 ≡ αk(δ tương đương với phương trình -δ2) (mod p) x1- x2 ≡ k( δ1- δ2) (mod p-1) Bây giả sử d =UCLN(δ1- δ2, p-1) Vì d | (p-1) d | (δ1-δ2) nên suy d | (x1-x2) Ta định nghĩa: x’ = (x1- x2)/d δ’ = (δ1- δ2)/d p’ = ( p -1 )/d Khi đồngdư thức trở thành: x’ ≡ k δ’ (mod p’ ) UCLN(δ’, p’ ) = 1,nên tính: ε = (δ’)-1 mod p’ Khi giá trị k xác định theo modulo p’ là: k = x’ ε mod p’ Phương trình cho d giá trị k k = x’ ε +i p’ mod p với i đó, ≤ i ≤ d-1 Trong số d giá trị có này, xác định giá trị qua việc kiểm tra điều kiện γ ≡ αk (mod p) 6.3 CHUẨN CHỮ KÍ SỐ Chuẩn chữ kí số(DSS) phiên cải tiến sơ đồ chữ kí Elgamal Nó cơng bố Hồ Sơ liên bang vào ngày 19/5/94 làm chuẩn vào 1/12/94 đề xuất từ 8/91 Trước hết ta nêu thay đổi so với sơ đồ Elgamal sau mơ tả cách thực Trong nhiều tinh huống, thơng báo mã giải mã lần nên phù hợp cho việc dùng với hệ mật Bất kì (an toàn thời điểm mã) Song thực tế, nhiều điện dùng làm tài liệu đối chứng, chẳng hạn hợp đồng hay chúc thư cần xác minh chữ kí sau nhiều năm kể từ lúc điện kí Bởi vậy, điều quan trọng có phương án dự phịng liên quan đến an tồn sơ đồ chữ kí đối mặt với hệ thống mã Vì sơ đồ Elgamal khơng an tồn toán logarithm rời rạc nên cần dung modulo p lớn Chắc chắn p cần 512 bít nhiều người trí p nên lấy p=1024 bít để có độ an tồn tốt Tuy nhiên, lấy modulo p =512 chữ kí có 1024 bít Đối với nhiều ứng dụng dùng thẻ thơng minh cần lại có chữ kí ngắn DSS cải tiến sơ đồ Elgamal theo hướng cho điện 160 bít kí chữ kí 302 bít song lại p = 512 bít Khi hệ thống làm việc nhóm Zn* kích thước 2160 Độ mật hệ thống dựa an toàn việc tìm logarithm rời rạc nhóm Zn* Sự thay đổi thay dấu “ - “ “+” định nghĩa δ, thế: δ = (x +α γ )k-1 mod (p-1) thay đổi kéo theo thay đổi điều kiện xác minh sau: αx βγ ≡ γδ (mod p) (6.1) Nếu UCLN (x + αγ, p-1) =1thì δ-1 mod (p-1) tồn ta thay đổi điều kiện (6.1) sau: αxδ βγδ ≡ γ (mod )p (6.2) -1 -1 Đây thay đổi chủ yếu DSS Giả sử q số nguyên tố 160 bít cho q | (q-1) α bậc q modulo p (Dễ dàng xây dựng α vậy: cho α0 phần tử nguyên thuỷ Zp định nghĩa α = α0(p-1)/q mod p) Khi β γ bậc q số mũ Bất kỳ α, β γ rút gọn theo modulo q mà khơng ảnh hưởng đến điều kiện xác minh (6.2) Điều rắc rối γ xuất dạng số mũ vế trái (6.2) song không vế phải Vì thế, γ rút gọn theo modulo q phải rút gọn tồn vế trái (6.2) theo modulo q để thực phép kiểm tra Nhận xét rằng, sơ đồ (6.1) không làm việc thực rút gọn theo modulo q (6.1) DSS mô tả đầy đủ hinh 6.3 Chú ý cần có δ ≡ (mod q) giá trị δ-1 mod q cần thiết để xác minh chữ kí (điều tương với yêu cầu UCLN(δ, p-1 ) =1 biến đổi (6.1) thành (6.2) Nếu Bob tính δ ≡ (mod q) theo thuật tốn chữ kí, loại xây dựng chữ kí với số ngẫu nhiên k Cần rằng, điều khơng gần vấn đề thực tế: xác xuất để δ ≡ (mod q) xảy cở 2-160 nên không xảy Dưới ví dụ minh hoạ nhỏ Hình 6.3 Chuẩn chữ kí số Giả sử p số nguyên tố 512 bít cho tốn logarithm rời rạc Zp khong Giải được, cho p số nguyên tố 160 bít ước (p-1) Giả thiết α ∈ Zp bậc q 1modulo p: Cho P =Zp A = Zq× Zp định nghĩa : A = {(p,q,α ,a,β ) : β ≡ αa (mod p)} số p, q, α β công khai, có a mật Với K = (p,q,α ,a,β )và với số ngẫu nhiên (mật) k ,1 ≤ k ≤ q-1, ta định nghĩa: sigk (x,k) = (γ ,δ) γ =(αk mod p) mod q δ = (x +a γ )k-1 mod q Với x ∈ Zp γ ,δ ∈ Zq , qua trình xác minh hồn tồn sau tính tốn : e1= xδ-1 mod q e2= γδ-1 mod q verk(x, γ, δ) = true ⇔( αe1βe2 mod p) mod q = γ Ví dụ 6.3: Giả sử q =101, p = 78 q+1 =7879.3 phần tử nguyên thuỷ Z7879 nên ta lấy: α = 378 mod 7879 =170 Giả sử a =75, : β = αa mod 7879 = 4576 Bây giả sữ Bob muốn kí điện x = 1234 chọn số ngẫu nhiên k =50, : k-1 mod 101 = 99 γ =(17030 mod 7879) mod 101 y = (x1- x3) mod (p-1) = (5692 - 212) 4312 mod 12346 = 11862 Xét thấy trường hợp mà logαβ ∈ {y’,y’+q mod (p-1)} Vì αy mod p =212346 = 9998 nên ta kết luận rằng: logαβ = y’ + q mod (p-1) = 11862 + 6173 mod 12346 = 5689 phép kiểm tra, ta xác minh thấy 25689 = 8461 (mod 12347) Vì , ta định logαβ 7.5.các hàm hash mở rộng Cho đến lúc này, ta xét hàm Hash vùng hữu hạn Bây ta nghiên xéu cách mở rộng hàm Hash không va chạm mạnh từ vùng hữu hạn sang vùng vô hạn Điều cho phép ký điện có độ dài tuỳ ý Gỉa sử h: (Z2)m → (Z2)t hàm hash không va chạm mạnh ,trong m ≥t1 Ta dùng h đêu xây dựng hàm hash không va chạm mạnh h: X →(Z2)t X= ∞  i =m (Z2)t Trước tiên xét trường hợp m ≥ t+2 Ta xem phần tử X xây bit |x| độ dàI x (tức số bit x) x||y ký hiệu kết hợp xây x y Giả sử |x| = n > m Có thể biểu thị x chuỗi kết hợp X = x1||x2|| ||xk Trong |x1| =|x2| = = |xk-1| = m- t-1 |xk| = m- t- 1- d Hình 7.4 Mở rộng hàm hash h thành h* (m ≥t+2) For i= to k-1 yi = xi yk = xk ||0d cho yk+1 biểu diễn nhị phân d gi = h(0I+1||y1) for i=1 to k gi+1 = h(gi||1||yi+1) h*(x) = gk +1 Trong m- t- ≥ d ≥0 Vì ta có  n  k=   m − t − 1  Ta định nghĩa h*(x) theo thuật tốn biểu kiễn hình 7.4 Kí hiệu y(x) = y1||y2|| ||yk-1 Nhận xét yk lập từ xk cách chèn thêm d số vào bên phảI để tất khối yi (k ≥ i ≥ 1)đều có chiều dàI m-t-1 Cũng bước yk+1 đệm thêm bên tráI số cho |yk+1| = m-t-1 Để băm nhỏ x ,trước hết ta xây dựng hàm y(x) sau “chế biến” khối y1 yk+1 theo khuôn mẫu cụ thể Điều quan trọng y(x) ≠y(x’) x≠x Thực tế yk+1 định nghĩa theo cách phép ánh xạ x → y(x)là đơn ánh Định lý sau chứng minh h* an toàn h an toàn Định lý 7.3 Giả sử h: (Z2)n→(Z2) hàm hash không va chạm mạnhm≥ t+2 Khi ∞ hàm h*:  i =m (Z2)t→(Z2)t xây dựng hình 7.4 hàm hash không chạm mạnh Chứng minh: Giả sử ,ta tìm x ≠x’ cho h*(x) = h*(x’) Nếu cho trước cặp vậy, ta cách tìm va chạm h thời gian đa thức Vì h giả thiết không va chạm mạnh nên dẫn đến mâu thuẫn h chứng minh khơng va chạm mạnh Kí hiệu Và y(x)= y1|| ||yk+1 y(x’) = y1’|| ||yk+1’ x x’ đệm thêm d d’ số tương ứng bước Kí hiệu tiếp giá trị tính bước g1,g2 ,gk+1 g1’, ,gk+1’ tương ứng Chúng ta đồng hai trường hợp tuỳ thuộc vào việc có hay không |x| ≡|x’| (mod m-t-1) Trường hợp1: |x| ≠|x’| (mod m-t-1) Tại d ≠d’ yk+1 ≠y’k+1 Ta có: H(gk||1||yk+1) = gk+1 =h*(x) = h*(x’) =g’l+1 = h(g’l+1||1||y’l+1) va chạm h yk+1 ≠ y’k+1 Trường hợp2: |x| ≡|x’| (mod m-t-1) Ta chia trường hợp thành hai trường hợp con: Trường hợp 2a: |x| = |x’| Tạ ta có k= l yk+1 = y’k+1 Ta vắt đầu trường hợp 1: h(gk||1||yk+1) = gk+1 = h*(x) = h*(x’) = h(g’k||1||y’k+1) Nếu gk = g’k ta tìm thấy va chạm h, giả sử gk = g’k ta có: h(gk-1||1||yk) = gk =g’k =h(0i+1||y1) Hoặc tìm thấy va chạm h gk-1 =g’k-1 yk = y’k Giả sử khơng tìm thấy va chạm ,ta tiếp tục thực ngược bước cuối nhận : h(0i+1||y1) = g1 =g’i-k+1 =g(g’i-k||1||y’i-k+1) Nhưng bit thứ (t+1) 0i+1||y1 bit thứ (t+1) g’i-k+1||1||y’i-k+1 Vì ta tịm thấy va chạm h Vì xét hết trường hợp nên ta có kết luận mong muốn Cấu trúc hình 7.4 dùng m>= t+2 Bây ta xem xét tình m = t+1 Cần dùng cấu trúc khác cho h Như trước đây, giả sử |x|=n>m Trước hết ta mã x theo cách đặc biệt Cách dùng hàm f có định nghĩa sau: f(0) = f(1) = 01 Thuật toán để xây dựng h*(x)được miêu tả hình 7.5 Phép mã x→y = y(x) định nghĩa vước thoả mãn hai tính chất quan trọng sau: x ≠x’ y(x)≠ y(x’) (tức x→ y(x) đơn ánh) Không tồn tạI hai chuỗi x≠ x’ chuỗi z cho y(x)= z||y(x’) Nói cách khác khơng cho phép mã hoá fpsstix phép mã khác ĐIều dễ dàng thấy chuỗi y(x) bắt đầu 11 không tồn tạI hai số liên tiếp phần cịn lạI chuỗi) Hình 7.5 Mở rộng hàm hash h thành h* (m = t+1) Giả sử y = y1y2 yk = 11||f(x1)|| ||f(xn) g1 = h(01||y1) for i=1 to k-1 gi+1 = h(gi||yi+1) h*(x) = gk Định lý 7.4 Giả sử h: (Z2)n→(Z2) hàm hash không va chạm mạnh Khi hàm ∞ h*:  i =m (Z2)t→(Z2)t xây dựng hình 7.5 hàm hash khơng va chạm mạnh Chứng minh: Giả sử ta tìm x ≠x’ cho h*(x)=h*(x’) Kí hiệu: y(x) = y1y2 yk y(x’) = y’1y’2 y’l Ta xét hai trường hợp: Trường hợp 1: k=l Như định lý 7.3 ta tìm thấy va chạm đỗi với h ta nhận y = y’ song đIều lạI bao hàm x = x’, dẫn đến mâu thuẫn Trường hợp2: k≠ l Khơng tính tổng quát ,giả sử l>k trường hợp xử lý theo kiểu tương tự Nếu giả thiết ta khơng tìm thấy va chạm h ,ta có dãy phương trình sau: yk = y’l yk-1 = y’l-1 y1 = y’l-k+1 Song đIều mâu thuẫn với tính chất “khơng posfixx” nêu Từ ta kết luận h* hạm không va chạm Ta tổng kết hoá hai xây dựng phần số ứng dụng h cần thiết để tính h* theo định lý sau: Định lý 7.5 Giả sử h: (Z2)n→(Z2) hàm hash không va chạm mạnh,ở m>=t+1 Khi tồn tạI hàm khơng va chạm mạnh ∞ h*:  i =m (Z2)t→(Z2)t Số lần h tính ước lượng h* nhiều :  n  m>=t+2  m − t − 1  l + 2n +2 m= t+2 |x|=n 7.6 hàm hash dựa hệ mật Cho đến nay, phương pháp mô tả để đưa đến nhứng hàm hash chậm ứng dụng thực tiễn Một biện pháp khác dùng hệ thống mã hố bí mật có để xây dừng hàm hash Giả sử (P,C,K,E,D) hệ thống mật mã an tồn mặt tính tốn Để thuận tiện ta giả thiết P = C = K = (Z2)n.ở đâychọn n>=128 để xây ngăn chặn kiểu công ngày sinh nhật ĐIều loạI trừ việc dùng DES (vì độ dài khố DES khác với độ dài rõ) Giả sử cho trước xâu bit: x= x1||x2|| ||xk xi ∈ (Z2)n, 1≤ i ≤ (nếu số bit x bội n cần chèn thêm vào x theo cách Chẳng hạn cách làm nục 7.5 Để đơn giản ta bỏ qua đIểm này) Ý tưởng bắt đầu “giá trị ban đầu” cố định g0 =IV sau ta xây dựng g1, ,gk theo quy tắc thiết lập : gi = f(xi,gi-1) f hàm kết hợp tồn phép mã hố hệ mật dùng Cuối ta định nghĩa tóm lược thông báo h(x) =gk Vài hàm hash kiểu đề xuất nhiều loại chúng tỏ khơng an tồn (khơng phụ thuộc vào việc liệu hệ mật có an tồn hay khơng ) Tuy nhiên , có phương án khác an toàn sơ đồ : gi = e gi-1 (xi) ⊕ xi gi = e gi-1 (xi) ⊕ xI ⊕ gi-1 gi = e gi-1 (xi ⊕ gi-1) ⊕ xI gi = e gi-1 (xi ⊕ gi-1) ⊕ xI ⊕ gi-1 7.7 Hàm hash MD4 Hàm hash MD4 Riverst đề xuất năm 1990 hiên mạnh MD5 đưa năm 1991 Chuẩn hàm hash an toàn (hay SHS) phức tạp song dưa tên phương pháp tương tự Nó công bố hồ sơ liên bang năm 1992 chấp nhận làm tiêu chuẩn vào ngày 11/5/1993 Tất hàm hash nhanh nên thực tế chúng dùng để kí điện dài Trong phần mô tả chi tiết MD4 thảo luận số cảI tiến dùng MD5 SHS Cho trước xâu bit trước hết ta tạo mạng: M = M[0] M[1] M[N-1] M[i] xâu bit có độ dàI 32 N ≡ mod 16 Ta gọi M[i] từ M xây dựng từ x thuật tốn hình 7.6 Hình 7.6 Xây dựng M MD4 d = 447-(|x| mod 512) giả sử l kí hiệu biểu diễn nhị phân |x| mod 264.|l| = 64 M = x||1||0d||l Trong việc xây dựng M, ta gắn số ssơn lẻ vào x, sau gài thêm số đủ để độ dài trở nên đồng dư với 448 modulo 512.,cuối nối thêm 64 bit chưa biểu diễn nhị phân độ dàI (ban đầu) x(được rút gọn theo móulo 264 cần) Xâu kết M có độ dàI chia hết cho 512 Vì chặt M thành từ 32 bit , số từ nhận N-sẽ chia hết cho 16 Bây giờ, tiếp tục xây dựng tóm lược thơng báo 128 bit Hình 7.7 đưa mơ tả thuật tốn mức cao Bản tóm lược thơng báo xây dựng kết nối từ A,B,C D mà ta gọi ghi Bốn ghi khởi động bước Tiếp theo ta xử lí bảng M 16 bit từ lúc Trong vòng lặp bước 2, lấy 16 từ “tiếp theo” M lưu chúng bảng X (bước 3) Các giá trị bốn ghi dịch sau lưu lại (bước 4) Sau ta thực ba vòng “băm” (hash) Mỗi vaòng gồm phép toán thực 16 từ X Các phép toán thực ba vòng tạo giá trị bốn ghi Cuối ,bốn ghi update (cập nhật) bước cách cộng ngược giá trị lưu trước bước Phép cộng xác định cộng số nguyên dương ,được rút gọn theo modelo 232 Ba vòng MD4 khác (khơng giơng DES 16 vịng nhau) Trước hết ta mơ tả vàI phép tốn khác ba vịng Trong phần sau,ta kí hiệu X Y từ đầu vào phép toán tạo từ đầu Dưới phép toán dùng: X∧Y phép “AND” theo bit X Y X∨Y phép “OR” theo bit X Y X⊕Y phép “XOR” theo bit X Y ¬X phần bù X X+Y phép cộng theo modulo 232 X= s >=0) Chú ý rằng, tất phép tốn tất nhanh có phép số học dùng phép cộng modulo 232 Nếu MD4 ứng dụng cần tính đến kiến trúc máy tính mà chạy để thực xác phép cộng Giả sử a1a2a3a4 byte từ xem ai,như số nguyên dảI 0-255 biểu diễn dạng nhị phân Trong kiến trúc kiểu endian lớn (chẳng hạn trạm Sunsparc) từ biểu diễn số nguyên a1224 + a2216 + a328 + a4 Trong kiến trúc kiểu endian nhỏ (chẳng hạn họ intel 80xxx) Từ biểu diễn số nguyên: a4224+ + a3 216 + a2 28+a1 MD4 giả thiết dùng kiến trúc kiểu endian nhỏ ĐIều quan trọng tóm lược thơng báo độc lập với kiến trúc Vì thể muốn chạy MD4 máy tính endian lớn cần thực phép cộng X+Y sau: Trao đổi x1 x4; x2 x3; y1 y4; y2 y3 32 Tính Z = X+Y mod Trao đổi z1 z4 ; z2 z3 Hình 7.7 hàm hash MD4 A= 67452301 (hệ hexa) B = efcdab89 (hệ hexa) C = 98badcfe (hệ hexa) D = 10325476 (hệ hexa) for i = to N/16-1 for i = to 15 X[i] = M[16i+j] AA = A BB = B CC = C DD = D round1 round2 round3 A = A+AA B = B+ BB C = C + CC D = D + DD Các vòng 1, MD4 dùng tương ứng ba hàm f, g, h Mỗi hàm hàm boolean tính theo bit dùng từ làm đầu vào tạo từ đẩu Chúng xác định sau: f(X,Y,Z) = (X∧Y) ∨((-X)∧Z) g(X,Y,Z) = (X∧Y) ∨(X∧Z) ∨(Y∧Z) h(X,Y,Z) = X⊕ Y⊕ Z Các hình 7.8-7.10 mơ tả đầy đủ vòng 1,2 MD4 MD4 thiết kế chạy nhanh thực phần mềm chạy máy Sun SPARC có tốc độ 1.4 Mbyte/s Mặt khác, khó nói đIều cụ thể độ mật hàm hash, chẳng hạn MD4 khơng dựa vàI tốn khó nghiên cứu kĩ (ví dụ phân tích nhân tử bàI tốn logarithm rời rạc) Vì trường hợp Dé tin cậy vào độ an toàn hệ thống đạt thời gian hi vọng hệ thống vừa nghiên cứu khơng tìm thấy khơng an tồn Hình 7.8 : Vịng MD4 (round 1) 10 11 12 13 14 15 16 A = (A+ f(B,C,D) + X[0])

Ngày đăng: 21/01/2014, 10:20

TỪ KHÓA LIÊN QUAN

w