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à imbedding và mask.
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ụ
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
b. Mask
Để 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 m1và 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ở GE. 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 GE 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 kZ|H| và gửi: (y0, y1, y2) = (kG, c1x1 mod p, c2x2 mod p)
Để giải mã, Bob tính: (y1c1-1mod p, y2c2-1 mod p) = (x1, x2) với aBy0 = (c1, c2)
Việc giải mã là đúng đắn vì: y0 = kG, Bob có thể tính:
aBy0 = aB(kG) = k(aBG) = (c1, c2) vì vậy: p x c x c c y1 11 ( 1 1) 11 1mod p x c x c c y2 22 ( 2 2) 22 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.2 So sánh mức độ bảo mật giữa ECC với RSA / DSA
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 gG , 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 δivớ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-1vớ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-1với a Є Bn nào đó; m < n. Tìm b1, b2 Є Bnsao 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 Habxb a H byb m
H 1 1 1 1
Habxb1a1 H baxa1b1m
Habxb1a1 H abxb1a1m
= 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
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