Các hệ mật dựa trên đường cong Elliptic [4]

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 33 - 97)

2.2.2.1 Nhúng bản rõ vào các đường cong Elliptic

Nhúng một bản rõ lên E là biểu diễn lại bản rõ đó như là các điểm trên E mà nhờ đó chúng ta có thể thực hiện được các tính toán trên E. Có 2 phương pháp

chính là imbeddingmask.

a. Embedding

Cách 1 : Nhúng m lên E(Zp) với p là số nguyên tố. Giả sử E(Zp) được cho bởi phương trình (2.1) và giả sử m là số nguyên thỏa mãn 0 ≤ m ≤ p/1000-1. Thêm 3 chữ số vào m được x thỏa mãn 1000m ≤x≤1000(m+1)<p. Chúng ta sẽ bổ sung các chữ số khác nhau cho đến khi tìm được x sao cho f(x) = x3 + ax + b là một số

chính phương trong Zp và y (với f(x) = y2 mod p ) thỏa mãn y ≠ -1 mod p. Điểm Pm

được tạo thành khi nhúng m lên E là: pm = (x, f(x))

Có thể dễ dàng khôi phục lại m từ Pm Є E(Zp) bằng cách loại bỏ 3 chữ số cuối của tọa độ x của điểm Pm.

Cách 2

Bước 1 Sử dụng bảng chữ cái gồm N ký tự. Chia bản rõ thành các khối có

độ dài cố định l. Các ký tự được đánh số là 0,…, N-1. Một khối văn bản w cùng với các số 0 ≤ xw≤Nl tạo thành một ánh xạ: 1 2 2 1 1 0 1 1 0 ... ) ( − − − − − = + + + + = l l l l w l x a N a N a N a a a a w   ,

Bước 2 Chọn một giá trị k thích hợp sao cho kNl < q. Với mỗi j là phần tử

của Fq tính kxw + j. Lấy điểm Pw đầu tiên mà tọa độ x ≥kxw , j ≥0, ví dụ

Pw = (kxw + j, *) E(Fq)

Bước 3 Khôi phục lại khối bản rõ từ Pw bằng cách tính =k

x xw

Để biểu diễn lại bản rõ dạng (m1, m2) thành các điểm Pm trên E có thể áp dụng phương pháp masking bằng cách nhân m1 và m2 với các tọa độ x, y của các điểm trên E. Giả sử có điểm G ∈ E có tọa độ (xG, yG) thì Pm = (m1xG, m2yG).

2.2.2.2 Hệ mã hóa trên đường cong elliptic [9]

a. Hệ mã hóa “tựa” Elgamal

Hệ Elgamal làm việc với nhóm cyclic hữu hạn. Năm 1987, Koblitz đã đưa ra một hệ trên ECC dựa trên hệ Elgamal. Ta có trường số Zp và một đường cong elliptic E trên Zp là E(Zp) cùng một điểm cơ sở G∈E. Mỗi người dùng sẽ chọn một

số aX làm khóa bí mật, và aXG là khóa công khai.

Giả sử Alice cần gửi một thông điệp m cho Bob. Đầu tiên cô ấy nhúng văn bản m lên E, chẳng hạn m được thể hiện bằng một điểm PmE. Khi đó cô ta phải mã hóa Pm. Ký hiệu aB là khóa bí mật của Bob, vì vậy khóa công khai của Bob là

aBG. Alice chọn một số ngẫu nhiên k và gửi cho Bob cặp điểm trên E:

(C1, C2) = (kG, Pm + k(aBG))

Để giải mã, Bob tính:

C2 – aB(C1) = Pm + k(aBG) – aB(kG) = Pm

Tính bảo mật : Nếu kẻ tấn công giữa đường, Oscar, có thể giải bài toán EDLP thì anh ta có thể biết được khóa bí mật aB của Bob từ các thông tin công khai G và

aBG, và có thể giải mã được thông điệp mà Alice gửi. Như vậy, độ an toàn của

thuật toán trên dựa vào độ khó của bài toán EDLP.

b. Hệ mã hóa Menezes-Vanstone

Sự khác biệt của hệ này với hệ tựa Elgamal là Alice áp dụng kỹ thuật Masking thay vì Imbeding khi biểu diễn bản rõ thành điểm trên E.

E là đường cong elliptic trên trường nguyên tố Zp (p > 3) sao cho E chứa một nhóm con cyclic H, mà trong đó bài toán EDLP là khó. Zp, E(Zp) và điểm G∈E là

công khai. Mỗi người dùng chọn một số nguyên ngẫu nhiên aX làm khóa bí mật và khóa công khai là aXG.

Giả sử rằng Alice cần gửi thông điệp M = (x1, x2) * *

p pxZ Z

∈ cho Bob. Giả sử aB là khóa bí mật của Bob. Alice chọn số ngẫu nhiên k∈Z|H| và gửi:

(y0, y1, y2) = (kG, c1x1 mod p, c2x2 mod p)

với (c1, c2) = k(aBG)

Để giải mã, Bob tính: (y1c1-1 mod p, y2c2-1 mod p) = (x1, x2) với aBy0 = (c1, c2)

aBy0 = aB(kG) = k(aBG) = (c1, c2) vì vậy: p x c x c c y1 1−1 ≡ ( 1 1) 1−1 ≡ 1mod p x c x c c y2 2−2 ≡ ( 2 2) 2−2 ≡ 2 mod 2.2.3 Đánh giá hệ mật ECC

Ưu điểm của ECC là khả năng bảo mật cao với kích thước khóa nhỏ dựa vào bài toán ECDLP. Đây là một tính chất rất hữu ích đối với xu hướng ngày nay là tìm ra phương pháp tăng độ bảo mật của hệ mã khóa công khai với kích thước khóa được rút gọn. Do kích thước khóa nhỏ, khả năng phát sinh khóa nhanh nên ECC được quan tâm để áp dụng cho các ứng dụng trên môi trường giới hạn về thông lượng truyền dữ liệu, giới hạn về khả năng tính toán, khả năng lưu trữ. ECC thích hợp với các thiết bị di động kỹ thuật số như handheld, PDA, điện thoại di động và thẻ thông minh (smart card).

Hình 2.1 So sánh kích thước khóa RSA và ECC với cùng mức độ an toàn

Tuy nhiên, ECC vẫn có một số hạn chế nhất định. Hạn chế lớn nhất hiện nay là việc chọn sử dụng các tham số đường cong và điểm quy ước chung như thế nào để thật sự đạt được độ bảo mật cần thiết. Hầu hết các đường cong được đưa ra đều thất bại khi áp dụng vào thực tiễn nên hiện nay số lượng đường cong được sử dụng không được phong phú. Ngoài ra, đối với các tham số mang giá trị nhỏ, mức độ bảo mật của ECC không bằng RSA (khi e = 3). Đối với một số trường hợp RSA vẫn là lựa chọn tốt do RSA đã chứng minh được tính ổn định trong một khoảng thời gian khá dài. ECC vẫn còn non trẻ và cần được kiểm định trong tương lai tuy nhiên ECC cung cấp khả năng ứng dụng rất lớn trong lĩnh vực mã hóa khóa công cộng trên các thiết bị di động và smart card.

2.3 HỆ MẬT TRÊN KHÔNG GIAN KHÔNG GIAO HOÁN

2.3.1 Giới thiệu chung

Nhiều hệ mã công khai phổ biến hiện nay dựa trên các bài toán số học như bài toán phân tích số nguyên hay bài toán logarit rời rạc. Cấu trúc đại số nền tảng của các bài toán này thường là nhóm giao hoán (abelian group). Tuy nhiên, do khả năng tính toán của các thiết bị phần cứng giờ đây ngày càng mạnh, độ dài khóa (key length) cần thiết để đảm bảo an ninh phải tăng theo. Vì thế, xu hướng mới là phải tìm ra các kỹ thuật trong các cấu trúc đại số phức tạp hơn.

Đã có nhiều nghiên cứu dựa trên nhóm không giao hoán (non-abelian) cho các hệ mã công khai. Ứng dụng của nhóm bện (braid group) được nghiên cứu bởi Anshel (1999) và Ko (2000). Nhóm bện cho phép cài đặt hiệu quả và có nhiều bài toán khó trên cấu trúc này, chẳng hạn bài toán liên hợp (conjugacy) quen thuộc. Hiện tại, một số cách tấn trên hệ mã dựa vào nhóm bện đã được công bố.

Một hướng tiếp cận khác của Paeng và cộng sự (2001) dựa trên bài toán logarit rời rạc trong nhóm tự đẳng cấu trong (inner automorphism group)

( ) { ( ) | }

Inn G = Inn g g G∈ , trong đó G là một nhóm không giao hoán và Inn(g)(x) =

gxg-1. Họ đề ra thuật toán trao đổi khóa mật cùng với sơ đồ chữ ký số. Ưu điểm của phương pháp này là việc mã hóa có thể áp dụng thậm chí trên các bài toán logarit rời rạc và liên hợp không khó trong nhóm G. Tuy nhiên việc cài đặt dường như phức tạp hơn và khó hơn các phương pháp trước.

Hệ mã công khai dựa trên các vành (ring) được nghiên cứu bởi Hoffstein và cộng sự (1998). Ở đây, sự mã hóa bao gồm một yếu tố ngẫu nhiên, dựa trên đại số đa thức (polynomial algebra) và sự rút gọn modulo hai số p và q. Hướng tiếp cận

này không dựa trên bài toán logarit rời rạc. Có nhiều cách tấn công khác nhau trên hệ mã này đã được công bố (năm 2001, 2002).

Các vành ma trận (matrix ring) được nghiên cứu bởi Varadharajan và Odoni

(1984). Cách tiếp cận này là một cài đặt cụ thể của mô hình Diffie-Hellman trên các vành ma trận, sử dụng nhóm con cyclic sinh bởi các lũy thừa của một ma trận trong các vành này. Phương pháp này dễ bị tấn công bằng trị riêng và vector riêng.

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

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ở

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 33 - 97)