Hệ mã hoá khoá công khai trên nhóm Bện [6]

Một phần của tài liệu tìm hiểu chữ ký số và ứng dụng của nó (Trang 37 - 97)

2.3.2.1 Những vấn đề cơ bản về nhóm bện

Nhóm bện đầu tiên được Artin công bố năm 1947. Lúc đầu nó được dùng để xây dựng giao thức trao đổi khoá Diffie – Hellmann và một hệ mã hoá khoá công khai. Sau đó, nhiều giao thức mã hoá dựa trên nhóm bện được công bố.

Thông thường, để nói về nhóm bện người ta thường hình dung qua biểu diễn hình học. Hình sau biễu diễn một tập n dải treo song song trên một đường nằm ngang. Thứ tự các dải được đánh số từ 1, 2, .., n và từ trái sang phải. Một n-bện thu được bằng cách bện các dải vào nhau. Chú ý rằng một cặp hai dải có hai cách để bện, dải thứ nhất phía trên, dải thứ hai phía dưới và ngược lại.

Hình 2.4 Biểu diễn hình học của bện kết hợp, bện nghịch đảo, bện tương đương

Biểu diễn Artin: Emil Artin biểu diễn nhóm n-bện với n-1 bộ sinh (cộng với đồng nhất thức e). Định nghĩa δi với i = 1, 2, .., n -1, và các quan hệ sau: Cho n ≥ 2,

nhóm Bn của n-bện là nhóm được sinh bởi δ1,δ2…δn - 1 với các điều kiện: (i) δi δj = δj δi với | i - j | ≥ 2

(ii) δi δi+1δi = δi+1 δi δi+1

Mỗi thành phần của nhóm Bn được gọi là một n-bện và số nguyên n được gọi là chỉ số bện. Một n-bện là một tập n bện không kết nối mà tất cả chúng được gắn với hai thanh ngang phía trên và phía dưới theo cách mà mỗi bện hướng từ trên xuống dưới. Trong một tập bện, nếu một bện thay đổi hình thức sang một dạng tương tự thì khi đó hai bện được cho là tương đương. Bện kết hợp của hai bện ‘a’ và ‘b’ thu được bằng cách đặt ‘a’ phía trên ‘b’. Đồng nhất thức của nhóm Bn là ‘e’. Phần tử nghịch đảo δ-1 từ bện δ thu được từ việc chuyển bện trên thành bện dưới.

Một số vấn đề toán học khó trong các nhóm bện. Hai phần tử x và y là liên hợp, ký hiệu là x ~ y, nếu có một phần tử ‘a’sao cho y = axa-1. Với m < n, Bm được coi là nhóm con của Bn được sinh bởi δ1,δ2…δn - 1 . Với mỗi lược đồ H1: {0, 1}*

Bl+r và H2: Bl+r {0, 1}* là một hàm một chiều.

- Vấn đề phân xử liên hợp (Conjugacy Decision Problem - CDP): Cho (x,

y) Є Bn x Bn , xác định xem x và y có liên hợp hay không.

- Vấn đề tìm kiếm liên hợp (Conjugacy Search Problem - CSP): Cho (x, y) Є Bn x Bn và x, y là liên hợp. Tìm b Є Bn sao cho y = bxb-1.

- Vấn đề tìm kiếm liên hợp suy rộng (Generalized Conjugacy Search Problem - GCSP): Cho (x, y) Є Bn x Bn sao cho y = axa-1 với a Є Bm nào

đó; m < n. Tìm b Є Bn sao cho y = bxb-1.

- Vấn đề phân tích liên hợp Conjugacy Decomposition Problem - CDP): Cho (x, y) Є Bn x Bn sao cho y = axa-1 với a Є Bn nào đó; m < n. Tìm b1, b2 Є Bn sao cho y = b1 x b2.

2.3.2.2 Hệ mã hoá khoá công khai

Hệ mã hoá khoá công khai trên nhóm bện xuất hiện đầu tiên vào năm 1999- 2000 dựa trên vấn đề tìm kiếm liên hợp suy rộng (GCSP). Chúng ta chia bện Bn

thành hai bện con LBl (Bl) và LBr (Br), ở đây n = l + r. LBl (và LBr) là nhóm con

của Bl+r bao gồm các bện được tạo ra bằng việc bện l-bện bên trái (hoặc r-bện phải) trong số (l + r) bện. LBl được sinh bởi δ1,δ2…δl - 1 và LBr được sinh bởi δ1, δ2…δr – 1 . Cho bất kỳ a Є LBl và b Є LBr , ab = ba.

Hệ mã hoá khoá công khai như sau:

Thông tin công khai: l, r, Bl+r, liên hợp (x, y) Є Bl+r x Bl+r, hàm băm H Khoá bí mật: a Є LBl sao cho y = axa-1.

Mã hoá: Chọn b Є RBr. Gửi (c, d) ở đây c = bxb-1 và d = H(byb-1) ⊕ m. Giải mã: Tính m = H(aca-1) ⊕ d.

Để kiểm tra, có thể thấy như sau:

(aca ) d H(abxb a ) (H byb ) m

H −1 ⊕ = −1 −1 ⊕ −1 ⊕

= H(abxb−1a−1) (⊕ H baxa−1b−1)⊕m

= H(abxb−1a−1) (⊕ H abxb−1a−1)⊕m

= m

(Hàm băm H có đầu vào là một bện, đầu ra là một chuỗi nhị phân) 2.4 HÀM BĂM

2.4.1 Đặt vấn đề

Hàm băm mật mã là hàm toán học chuyển đổi một thông điệp có độ dài bất kỳ thành một dãy bit có độ dài cố định. Dãy bit này được gọi là thông điệp rút gọn (message digest) hay giá trị băm (hash value), đại diện cho thông điệp ban đầu.

Dễ dàng nhận thấy rằng hàm băm h không phải là một song ánh. Do đó, với thông điệp x bất kỳ, tồn tại thông điệp x’ ≠ x sao cho h(x)= h(x’). Lúc này, ta nói rằng “có sự đụng độ xảy ra”.

Một hàm băm h được gọi là an toàn (hay “ít bị đụng độ”) khi không thể xác định được (bằng cách tính toán) cặp thông điệp x và x’ thỏa mãn x≠x’ và h(x) = h(x’). Để ứng dụng trong thực tiễn, các thuật toán băm phải là hàm một chiều để khó có thể xây dựng lại thông điệp ban đầu từ thông điệp rút gọn.

Hàm băm giúp xác định được tính toàn vẹn dữ liệu của thông tin: mọi thay đổi, dù là rất nhỏ, trên thông điệp cho trước, ví dụ như đổi giá trị 1 bit, đều làm thay đổi thông điệp rút gọn tương ứng. Tính chất này hữu ích trong việc phát sinh, kiểm tra chữ ký số, các đoạn mã chứng nhận thông điệp, phát sinh số ngẫu nhiên, tạo ra khóa cho quá trình mã hóa…

2.4.2 Hàm băm MD5

2.4.2.1 Mô tả thuật toán

Thuật toán có đầu vào là một thông điệp có độ dài tuỳ ý và có đầu ra là một chuỗi có độ dài cố định là 128 bit. Thuật toán được thiết kế để chạy trên các máy tính 32 bit.

Thuật toán:

Thông điệp đầu vào có độ dài b bit bất kỳ. Biểu diễn các bit dưới dạng như sau: m[0] m[1] m[2] ... m[b-1]

Bước1: Các bit gắn thêm : Thông điệp được mở rộng, thêm bit vào phía sau sao cho độ dài của nó (bit) đồng dư với 448 theo modulo 512.

Bước 2: Gắn thêm độ dài: Dạng biểu diễn 64 bit độ dài b của chuỗi ban đầu được thêm vào phía sau kết quả của bước 1.

Bước 3: Khởi tạo bộ đệm MD: Một bộ đệm 4 từ (A,B,C,D) được dùng để tính mã số thông điệp. Ở đây mỗi A,B,C,D là một thanh ghi 32 bit.

Bước 4 :Xử lý thông điệp theo từng khối 16 từ. Định nghĩa các hàm phụ, các hàm này nhận giá trị đầu vào là 3 từ 32 bit và tạo tạo ra một word 32 bit.

F(X,Y,Z) = XY v not(X) Z G(X,Y,Z)= XZ v Y not(Z) H(X,Y,Z) = X xor Y xor Z I(X,Y,Z) = Y xor (X v not(Z))

Bước này sử dụng một bảng 64 giá trị T[1 .. 64] được tạo ra từ hàm sin. Gọi T là phần tử thứ i của bảng, thì T là phần nguyên của 4294967296*|sin(i)| , i được tính theo radian.

Bước 5: Thông điệp rút gọn = A||B||C||D. 2.4.2.2 Đánh giá thuật toán

Về tốc độ sinh ra chuỗi cốt yếu thì MD5 chậm hơn so với MD4 nhưng nó lại an toàn hơn rất nhiều so với MD4. Thuật toán số hóa thông điệp MD5 khá đơn giản để thực hiện, cung cấp một giá trị băm của thông điệp với độ dài tuỳ ý. Người ta cho rằng độ khó để tìm được 2 thông điệp có cùng giá trị băm là khoảng 264 bước tính, và độ khó để tìm được một thông điệp với giá trị băm cho trước là 2128 bước tính. Tuy nhiên lỗ hổng mới phát hiện trong thuật toán MD5 sẽ cho phép kẻ tấn công có thể tạo ra file giả mạo trong vòng vài giờ với loại máy tính đạt chuẩn.

2.4.3 Hàm băm SHA

Thuật toán là SHA dựa trên thiết kế MD4 với một số khác biệt tạo nên giá trị băm 160 bit. Các kết quả nghiên cứu 2005 về an toàn của SHA-1 đề xuất sử dụng nó trong tương lai.

2.4.3.1 Mô tả thuật toán

Đầu vào của thuật toán là một thông điệp có chiều dài bất kỳ nhỏ hơn 264 bit, SHA-1 cho ra kết quả là một thông điệp rút gọn có độ dài là 160 bit

Mở rộng thông điệp:

f(t;B,C,D) được định nghĩa như sau.

f(t;B,C,D) = (B AND C) OR ((NOT B) AND D) (0≤t≤19) f(t;B,C,D) = B XOR C XOR D (20≤t≤39) f(t;B,C,D) = (B AND C) OR (B AND D) OR (C AND D) (40≤t≤59) f(t;B,C,D) = B XOR C XOR D (60≤t≤79).

Thông điệp M được mở rộng trước khi thực hiện băm. Mục đích của việc mở rộng này là để đảm bảo cho thông điệp mở rộng có độ dài là bội số của 512.

Thông điệp mở rộng:

Sau khi thông điệp đã được mở rộng, thông điệp mở rộng được phân tích thành N khối 512 bit M(1),M(2),…,M(N). Trong đó 512 bit của khối dữ liệu đầu vào có thể được thể hiện bằng 16 từ 32 bit,

Khởi tạo giá trị băm:

Trước khi thực hiện giá trị băm, giá trị băm ban đầu H(0) phải được thiết lập. Kích thước và số lượng từ trong H(0) tuỳ thuộc vào kích thước thông điệp rút gọn. SHA-1 sử dụng dãy các hằng số K(0),…K(79) có giá trị như sau:

K(t) = 5A827999 ( 0 <= t <= 19) K(t) = 6ED9EBA1 (20 <= t <= 39) K(t) = 8F1BBCDC (40 <= t <= 59) K(t) = CA62C1D6 (60 <= t <= 79).

Thuật toán của bước tính giá trị băm SHA-1

SHA-1 được sử dụng để băm thông điệp M có độ dài l bit thoả mãn điều kiện 0≤l≤264 . Thuật toán sử dụng:

- Một bảng phân bố thông điệp gồm 80 từ 32 bit

- 5 biến 32 bit

- Một giá trị băm gồm 5 từ 32 bit

Kết quả của SHA-1 là một thông điệp rút gọn có độ dài 160 bit. Các từ của bảng phân bố thông điệp được ký hiệu W(0),W(1),…,W(79). 5 biến được ký hiệu là a,b,c,d,e. Các từ của giá trị băm ký hiệu H0(i),H1(i), H2(i), H3(i),H4(i). H(0) giữ giá trị băm ban đầu và được thay thế bằng các giá trị băm thành công.H(i) sau mỗi khối thông điệp được xử lý và kết thúc bằng giá trị băm cuối cùng H(N).

Tính toán thông điệp băm

X<<n có nghĩa là loại bỏ từ trái sang phải n bit và thêm vào kết quả n số 0 vào bên phải. X>> có nghĩa là loại bỏ từ phải qua trái n bit và thêm vào kết quả n số 0 vào bên trái. Khởi tạo H H0 = 67452301 ; H1 = EFCDAB89 H2 = 98BADCFE ; H3 = 10325476 H4 = C3D2E1F0. Chia M(i) thành 16 từ W(0), W(1),…,W(15) For t = 16 to 79

- W(t) = S^1(W(t-3) XOR W(t-8) XOR W(t-14) XOR W(t-16)).

- Đặt a=H0 , b=H1,c=H2,d=H3,e=H4 For t = 0 to 79 do

- TEMP = S^5(A) + f(t;B,C,D) + E + W(t) + K(t);

- e = d; d = c; c = S^30(b); b = a; a = TEMP;

- Đặt H0 = H0 + a,H1 = H1 + b,H2 = H2 + c,H3 = H3 + d,H4 = H4+ e.

Sau khi tính toán được hết M(n), thông điệp rút gọn là một chuỗi 160 bit là biểu diễn của 5 từ: H0 H1 H2 H3 H4

2.4.3.2 Đánh giá thuật toán

- SHA-1 được xem là an toàn đối với hiện tượng đụng độ vì rất khó tìm được hai thông điệp khác nhau có giá trị băm giống nhau

- SHA-1 được coi là chuẩn của việc bảo vệ các kênh liên lạc trực tuyến tồn tại trong 9 năm qua.

- SHA-1 được thiết kế cho bộ xử lý 32 bit, thế hệ sắp tới của máy tính dùng các bộ xử lý 64 bit mà SHA-1 không hiệu quả trên bộ xử lý này.

- Tháng 2 năm 2005 SHA-1 bị tấn công bời 3 chuyên gia người Trung Quốc. Thuật toán này đã bị giải mã thông qua phương pháp tính phân bổ.

2.4.4 Hàm băm Davies – Mayer và ứng dụng của TT Rijndael vào hàm băm

2.4.4.1 Hàm băm Davies-Mayer [2]

Hàm băm Davies-Mayer là một kiến trúc hàm băm dựa trên việc mã hóa theo khối trong đó độ dài của thông điệp rút gọn (tính theo bit) bằng với kích thước khối thông điệp ứng với thuật toán mã hóa được sử dụng.

Gọi n, k lần lượt là kích thước khối và kích thước khóa của thuật toán được sử dụng. Trong hàm băm Davies-Mayer không cần sử dụng khóa. Khóa ban đầu

được thiết lập mặc định, có giá trị là 2k -1 với k là kích thước khóa (theo bit) của thuật toán. Hàm mã hóa E sử dụng khóa K được ký hiệu là Ek.

Thông điệp ban đầu được chia thành m khối có kích thước n bit. Davies- Mayer hash chính là thực hiện lần lượt m lần thao tác sau:

Hi = EXi (Hi-1) Xi

Hm chính là thông điệp rút gọn của thông điệp ban đầu. 2.4.4.2 Hàm AES-Hash

AES-Hash được mô tả dựa trên kiến trúc hàm băm Davies-Mayer, sử dụng thuật toán Rijndael với kích thước khối và khóa đều là 256 bit. Quá trình thực hiện AES-Hash gồm các bước:

- Mở rộng thông điệp: Thông điệp được mở rộng để có kích thước bằng một bội số chẵn nhỏ nhất của kích thước khối. Việc này được thực hiện bằng cách thêm vào các bit zero vào cuối thông điệp sao cho kích thước đạt được là một bội số lẻ nhỏ nhất của 128 bit. Sau đó thêm 128 bit chứa giá trị chiều dài ban đầu của thông điệp. Thông điệp mở rộng sẽ có độ dài: 40 bit ban đầu + (128 – 40) bit 0 mở rộng + 128 bit thể hiện giá trị

- Chia thông điệp mở rộng thành n khối x1,...,xn, với kích thước 256 bit. - Áp dụng Davies-Mayer Hash bằng thuật toán Rijndael n lần cho n khối.

Hi = EXi (Hi-1) Xi

- Áp dụng thao tác bổ sung cuối để thu được giá trị băm.

Hn+1 = EHn (Hn) Xn

Hn+1 chính là giá trị băm của thông điệp ban đầu. 2.4.4.3 Hàm băm Davies-Mayer và AES-Hash

Hàm băm Davies-Mayer được chứng minh rằng để tìm thông điệp đầu vào thứ 2 có cùng kết quả giá trị băm (độ dài n bit) với thông điệp ban đầu cho trước (“tiền ảnh thứ hai”) cần phải thực hiện 2n thao tác, để tìm cặp thông điệp có cùng giá trị băm cần thực hiện 2n/2 thao tác. Do đó, để đạt được mức độ bảo mật có thể chấp nhận được thì kích thước khối đòi hỏi phải lớn. Vào thời điểm hiện tại, kích thước khối phải lớn hơn 80 bit để tránh tấn công “tiền ảnh thứ hai” và lớn hơn 160 bit để tránh tấn công đụng độ. Điều này có nghĩa không thể sử dụng các thuật toán mã hóa có kích thước khối 64 bit (ví dụ như DES) để thực hiện Davies-Mayer Hash. Một điều lưu ý khác là hàm băm Davies-Mayer được xem là không an toàn khi sử dụng các thuật toán DES-X (như 3DES).

AES-Hash áp dụng Davies-Mayer Hash, sử dụng thuật toán Rijndael 256 bit nên đảm bảo được độ an toàn đối với tấn công “tiền ảnh thứ hai” và tấn công “đụng độ”. Ngoài ra, AES-Hash còn thực hiện thao tác bổ sung cuối để tăng chi phí khi tấn công hàm băm. Do đó, mức độ an toàn bảo mật của hàm băm AES-Hash sẽ được tăng đáng kể.

2.4.5 Các hàm băm sử dụng thuật toán Rijndael

Đối với các thuật toán mở rộng dựa trên thuật toán Rijndael, bao gồm thuật toán mở rộng 256/384/512-bit và thuật toán mở rộng 512/768/1024-bit, chúng ta cần sử dụng mã khóa có kích thước là 256, 384, 512, 768 hoặc 1024 bit. Nếu sử dụng các hàm băm thông thường thì chưa đáp ứng được tất cả các trường hợp kích thước mã khóa của các thuật toán mở rộng này. Việc ghép nối hay biến đổi giá trị băm của các hàm băm thông thường để kéo dài chuỗi bit nhận được ra đủ độ dài đòi hỏi của khóa không phải là giải pháp tối ưu. Do đó, giải pháp được đề nghị là sử dụng chính các thuật toán mở rộng để xây dựng các hàm băm có không gian giá trị băm rộng hơn, đồng thời có khả năng phục vụ cho việc tạo khóa cho chính các thuật toán này từ chuỗi mật khẩu của người dùng.

Quá trình thực hiện nhóm hàm băm này hoàn toàn tương tự như AES-Hash, chỉ thay đổi độ dài của khối và thao tác mã hóa thông tin được sử dụng trong thuật toán.

CHƯƠNG 3: CÁC MÔ HÌNH CHỮ KÝ SỐ

3.1 TỔNG QUAN VỀ CHỮ KÝ SỐ

3.1.1 Giới thiệu về chữ ký số

Chữ ký truyền thống (chữ ký viết tay) gắn liền với tài liệu được ký và người ký chịu trách nhiệm với nội dung của tài liệu đó. Chữ ký truyền thống là một bộ phận vật lý của tài liệu được ký, nó là thông tin đại diện cho người ký cho nên nó là

duy nhất. Việc kiểm tra chữ ký được thực hiện bằng cách so sánh nó với chữ ký đã xác thực hoặc có thể gặp trực tiếp người ký để ký lại xem có giống với chữ ký trên tài liệu hay không. Nếu văn bản liên quan đến cơ quan nhà nước hoặc một cơ quan, công ty được nhà nước cho phép thì phải có con dấu xác thực cho chữ ký đó (con

Một phần của tài liệu tìm hiểu chữ ký số và ứng dụng của nó (Trang 37 - 97)

Tải bản đầy đủ (DOC)

(97 trang)
w