Hệ Mật Mã Khóa Công Khai
Mở đầu
Các thuật toán mã hóa đối xứng gặp phải vấn đề về việc sử dụng chung một khóa cho cả lập mã và giải mã, dẫn đến nguy cơ khóa bị đánh cắp khi chuyển từ người gửi sang người nhận Để khắc phục tình trạng này, vào đầu thập niên 70, khái niệm “Hệ mật mã khóa công khai” đã ra đời Các hệ mật mã này được xây dựng dựa trên nền tảng toán học vững chắc và đã được chứng minh về tính đúng đắn của các thuật toán trong sơ đồ hệ mã, giúp giải quyết vấn đề khóa chung trong mã hóa đối xứng.
Trong các hệ thống mã hóa công khai, để A và B có thể trao đổi thông tin, B sẽ chọn một khóa k gồm k' và k" B sẽ gửi khóa lập mã k' (khóa công khai) cho A qua bất kỳ kênh nào, trong khi giữ lại khóa giải mã k" (khóa bí mật) để bảo vệ thông tin.
A có thể gửi văn bản M cho B bằng cách mã hóa nó bằng hàm e k' với khóa công khai k' của B Bản mã M' sẽ được gửi đến B, và khi B nhận được M', họ sẽ sử dụng hàm giải mã d k" với khóa bí mật k" để khôi phục lại bản gốc M.
Mật mã khóa công khai được giới thiệu lần đầu vào năm 1976 bởi hai nhà khoa học Diffie và Hellman Năm 1977, ba nhà toán học Revest, Shamir và Adleman đã phát triển hệ mã RSA, dựa trên độ khó của việc phân tích một số tự nhiên lớn thành tích của các số nguyên tố.
Hệ mật và ví dụ
Mật mã học là sự nghiên cứu các phương pháp toán học liên quan đến khía cạnh bảo mật và an toàn thông tin
Hệ mật mã: là bộ gồm 5 thành phần (P, C, K, E, D) trong đó:
P (Plaintext): tập hữu hạn các bản rõ có thể
C (Ciphertext): tập hữu hạn các bản mã có thể
K (Key): tập hữu hạn các khóa có thể
E (Encrytion): tập các hàm lập mã có thể
D (Decrytion): tập các hàm giải mã có thể
Với mỗi k K, có hàm lập mã e k E, e k : P C và hàm giải mã dk D, dk: C P sao cho dk(ek(x)) = x , x P
Một số hệ mã hóa thường dùng
Hệ mã khóa đối xứng là loại mã trong đó việc biết khóa lập mã giúp dễ dàng tính toán khóa giải mã Thường thì, khóa lập mã và khóa giải mã là giống nhau trong nhiều trường hợp.
Một số hệ mã hóa đối xứng nhƣ : DES, RC2, IDEA v.v
- Hệ mã hóa phi đối xứng: là hệ mã mà khi biết khóa lập mã, “khó” tính đƣợc khoá giải mã
Hệ thống này, được biết đến như là hệ mã hóa khóa công khai, cho phép mỗi người sử dụng một khóa công khai được công bố trên danh bạ, trong khi vẫn giữ bí mật khóa riêng của mình.
Một số hệ mã phi đối xứng: RSA, Elgamal …
Hệ mã RSA (Rivest, Shamir, Adleman ) mà về sau chúng sẽ đƣợc giới thiệu.
Mật mã DES(Data Encryption Standard)
Mã khối (block cipher) hoạt động dựa trên nguyên tắc chia bản tin thành các khối có độ dài bằng nhau, mã hóa từng khối một cách độc lập Trong môi trường máy tính, độ dài của các khối được tính bằng bit.
Mô hình mã khoá bí mật (mã hoá đối xứng) phổ biến nhất hiện nay là DES (Data Encryption Standard), được IBM đề xuất và phê duyệt bởi uỷ ban Chuẩn.
Quốc gia Mỹ, hiện gọi là Viện Quốc gia về chuẩn và công nghệ (NIST), chấp nhận nhƣ một chuẩn chính thức
DES sử dụng một phép toán hoán vị, thay thế, và một số toán tử phi tuyến
Các phép toán tử phi tuyến được áp dụng 16 lần cho mỗi khối thông điệp có độ dài 64 bit Đầu tiên, bản rõ được chia thành các khối thông điệp 64 bit.
Khoá sử dụng 56 bit nhận đƣợc từ khoá bí mật 64 bit, trừ ra 8 bit ở các vị trí 8,
Các số 16, 24, 32, 40, 48, 56 và 64 được sử dụng để kiểm tra tính chẵn lẻ Thuật toán giải mã được thực hiện ngược lại với cùng một khóa bí mật đã sử dụng trong quá trình mã hóa.
Một số hệ mật khóa công khai
Hệ mật này sử dụng tính toán trong Zn, trong đó n là tích của 2 số nguyên tố phân biệt p và q Ta đặt (n) = (p – 1).(q – 1) Ta có định nghĩa sau: Định nghĩa
Cho n = p*q trong đó p và q là các số nguyên tố phân biệt Đặt P = C = Zn
K = {(n, p, q, a, b:a.b 1 mod n) }, trong đó cặp (n,b) đƣợc công khai, còn cặp (n,a) được giữ bí mật mà chỉ có người giải mã mới sở hữu nó
Giả sử Alice có một thông báo mật x muốn gửi cho Bob Alice làm nhƣ sau:
Cô ta dùng khóa công khai của Bob giả sử là cặp (n,b) và tính: y=e k (x) = x b mod n rồi gửi bản mã y cho Bob
Sau khi nhận bản mã y từ Alice, anh ta tính dk(y) = y^a mod n = x, đây là thông báo mật mà Alice gửi Độ bảo mật của hệ mật RSA dựa trên giả thuyết rằng hàm mã e^k = x^b mod n là hàm một chiều, khiến việc giải mã trở nên khó khăn cho nhà thám mã Cửa sập cho phép N, chính là thông tin về phép phân tích thừa số n (n = p.q) Vì N biết phép phân tích này, anh ta có thể tính (n) = (p).
– 1).(q – 1) và rồi tính số mũ giải mã a bằng cách sử dụng thuật toán Euclide mở rộng
Bài toán logarithm rời rạc trong Zp Đặc trưng của bài toán: cho trước cặp bộ ba (p, , ) trong đó p là số nguyên tố, Z p là phần tử sinh và Z p *
Mục tiêu: Hãy tìm một số nguyên duy nhất a, 0 a p – 2 sao cho: a (mod p)
Chúng ta sẽ xác định số nguyên a thông qua logarit, nhưng đây được xem là một bài toán khó khi số nguyên tố p có kích thước lớn Định nghĩa mã khóa công khai Elgamal trong Zp*.
Cho p là số nguyên tố sao cho bài toán logarithm rời rạc trong Z p là khó giải
Cho Z p * là phần tử nguyên thuỷ Giả sử P = Z p , C = Z p * x Z p * Ta định nghĩa: K = {(p, , a, ): a (mod p)}
Các giá trị p, , được công khai, còn a giữ bí mật mà chỉ có người sở hữu nó mới biết
Giả sử Alice có một bản thông báo bí mật x P muốn đƣợc chia sẽ với Bob
Alice dùng khóa công khai của Bob là (p, , ) và lấy một số ngẫu nhiên ( bí mật) k Zp – 1 rồi tính eK(x, k) = (y1, y2) Trong đó: y 1 = k mod p y2 = x k mod p và gửi y1, y2 cho Bob
Sau khi nhận đƣợc bản mã y1, y2 cùng với khóa riêng của mình Bob tính: d k (y 1 ,y 2 ) = y 2 (y 1 a ) – 1 mod p = x là bản thông báo mà Alice muốn chia sẽ với mình
1.4.3 Hệ mật đường cong Elliptic a Đường cong Elliptic Định nghĩa 1a Cho p>3 là số nguyên tố Đường cong elliptic y 2 =x 3 +ax+b trên Zp là tập các nghiệm (x,y) Zp x Zp của đồng dƣ thức y 2 =x 3 +ax+b(mod p) (1)
Trong bài viết này, chúng ta xem xét các hằng số a, b thuộc Z p, thỏa mãn điều kiện 4a^3 + 27b^2 ≠ 0 (mod p) để đảm bảo rằng đa thức x^3 + ax + b không có nghiệm bội Điểm đặc biệt 0 được gọi là điểm vô hạn Đường cong Elliptic trên GF(2^n) được định nghĩa là tập hợp các điểm trên đường cong này.
(x,y) GF(2 n )x GF(2 n ) thỏa mãn phương trình y 2 +y=x 3 +ax+b (2) cùng với điểm vô hạn 0 Định nghĩa 1c Đường cong Elliptic trên GF(3 n ) là tập các điểm
(x,y) GF(3 n )x GF(3 n ) thỏa mãn phương trình y 2 =x 3 +ax 2 +bx+c (3) cùng với điểm vô hạn 0 Định lý hasse
Việc xây dựng hệ mật mã dựa trên đường cong Elliptic bao gồm việc lựa chọn một đường cong E phù hợp và một điểm G trên E, được gọi là điểm cơ sở Trong quá trình này, trường K được xét là Fq.
N là số điểm của E trên trường F q (trường hữu hạn q phần tử) Khi đó: |N – (q
+1)| ≤ 2 q Từ định lý Hasse suy ra #E(Fq) = q +1 – t trong đó |t| ≤ 2 q b Hệ mật trên đường cong Elliptic
Hệ Elgamal hoạt động dựa trên nhóm Cyclic hữu hạn Năm 1978, Koblitz đã giới thiệu một hệ thống mã hóa trên ECC dựa trên nguyên lý của hệ Elgamal Để phát triển hệ thống mã hóa sử dụng đường cong Elliptic, ta cần lựa chọn đường cong E.
(a, b) và một điểm G trên đường cong làm điểm cơ sở Mỗi người dùng A một khoá bí mật nA là một số nguyên, và sinh khoá công khai PA = nA * G
Khi đó hệ mã hoá đường cong Elliptic được xây dựng tương tự hệ mã hoá
ElGamal, trong đó thuật toán mã hoá và giải mã đƣợc xác định nhƣ sau:
Khi người dùng A muốn gửi thông điệp mã hóa Pm tới người dùng B, họ sẽ chọn một số ngẫu nhiên k và sau đó gửi thông điệp mã hóa C m được tính toán từ Pm và k.
(PB là khoá công khai của B)
Thuật toán giải mã Để giải mã thông điệp Cm = { k * G, Pm + k * PB }, người dùng B thực hiện tính nhƣ sau:
Pm + k * PB - nB * k * G = Pm + k * PB – k * nB * G = Pm + k * PB - k * PB = Pm
Chỉ có B mới có thể giải mã vì B có nB (là khoá bí mật)
Trong quá trình mã hóa và giải mã, Pm là một điểm trên đường cong Elliptic E Để thực hiện mã hóa, cần phải ánh xạ một số, hay bản thông báo, với một điểm thuộc đường cong này Mỗi thông điệp cần mã hóa sẽ được chuyển đổi thành một dãy số, với mỗi số tương ứng với một điểm trên đường cong Elliptic.
Nếu kẻ tấn công có thể giải bài toán EDLP, họ sẽ biết được khoá bí mật từ nB của B thông qua các thông tin công khai G và nBG, từ đó giải mã được thông điệp mà A gửi Do đó, độ an toàn của thuật toán này phụ thuộc vào mức độ khó khăn của bài toán EDLP.
Lược đồ trao đổi khóa Diffie-Hellman dùng đường cong Elliptic
Alice và Bob chọn điểm B E làm điểm cơ sở cho lược đồ Diffie-Hellman trên trường hữu hạn Để tạo khóa, Alice ngẫu nhiên chọn số a có bậc q rất lớn và giữ bí mật, sau đó tính toán aB E và công bố kết quả trên một danh bạ.
Bob thực hiện việc chọn ngẫu nhiên b và công khai bB E Việc giải bài toán logarit rời rạc là cần thiết, vì nếu chỉ biết aB và bB, sẽ không thể tính được abB Logarit rời rạc trên đường cong Elliptic được định nghĩa như sau:
Nếu E là đường cong Elliptic trên trường F_q và B là một điểm trên E, bài toán logarit rời rạc trên E với cơ số B được định nghĩa là bài toán cho trước một điểm.
P E, tìm số nguyên x Z sao cho xB = P nếu số x nhƣ vậy tồn tại
Dường như bài toán logarit rời rạc trên đường cong Elliptic khó hơn bài toàn tìm logarit rời rạc trên trường hữu hạn d Chọn đường cong và điểm
Việc chọn đường cong là quyết định về điểm cơ sở và các hệ số a, b, điều này có ảnh hưởng lớn đến tốc độ, độ dài khóa và mức độ an toàn của hệ mật trên đường cong đó.
Chọn ngẫu nhiên (E,B) Giả sử p>3 xét Zp
Đầu tiên, chọn ngẫu nhiên ba phần tử x, y, a từ Zp Tính b = y² - (x³ + ax) và kiểm tra điều kiện 4a³ + 27b² ≠ 0 Nếu điều kiện này được thỏa mãn, thì B(x, y) sẽ là điểm trên đường cong Elliptic y² = x³ + ax + b Ngược lại, nếu không thỏa mãn, hãy loại bỏ các số đã chọn và tiếp tục chọn các số khác cho đến khi tìm được các giá trị mong muốn.
Chữ Ký Số
Khái niệm chung
Chữ ký điện tử là thông tin đi kèm với tài liệu như văn bản hoặc hình ảnh, giúp xác định chủ sở hữu dữ liệu và đảm bảo tính toàn vẹn của nó Ngoài ra, chữ ký điện tử còn cung cấp chức năng chống chối bỏ cho người gửi thông tin.
So sánh chữ ký thông thường và chữ ký diện tử
Chữ ký thông thường Chữ ký điện tử
Vấn đề ký một tài liệu
Chữ ký là một phần vật lý của tài liệu
Vấn đề ký một tài liệu
Chữ ký điện tử không liên kết với kiểu vật lý trên thông điệp, do đó thuật toán sử dụng cần phải "không nhìn thấy" trên nội dung thông điệp Điều này đặt ra thách thức trong việc kiểm tra tính xác thực của chữ ký điện tử.
Chữ ký kiểm tra được thực hiện bằng cách so sánh với chữ ký xác thực khác, nhưng phương pháp này không đảm bảo an toàn do dễ bị giả mạo.
Vấn đề về kiểm tra
Chữ ký điện tử có thể được xác thực thông qua thuật toán "kiểm tra công khai", cho phép bất kỳ ai cũng có khả năng kiểm tra tính hợp lệ của nó Việc sử dụng chữ ký điện tử an toàn giúp ngăn chặn hành vi giả mạo hiệu quả.
Bản copy thông điệp đƣợc ký bằng chữ ký thông thường lại có thể khác với bản gốc
Bản sao của thông điệp được ký bằng chữ ký điện tử hoàn toàn tương đương với bản gốc, vì vậy cần thiết phải ngăn chặn việc tái sử dụng một thông điệp đã được ký số.
Sơ đồ kí điện tử gồm 5 thành phần (P, A, K, S, V) trong đó:
P là tập hữu hạn các văn bản có thể
A là tập hữu hạn các chữ ký có thể
K là tập hữu hạn các khóa có thể
Với k K, k = (k‟, k‟‟), k‟ là khoá bí mật để kí và k‟‟ là khoá công khai để kiểm thử chữ kí
S là tập các thuật toán kí có thể
V là tập các thuật toán kiểm thử
Đối với mỗi k K, thuật toán ký hiệu sig k’ S và thuật toán kiểm tra ver k’’ V được thiết lập để đảm bảo rằng với mọi x P và y A, ver k’’ (x,y) sẽ trả về đúng nếu y bằng sig k’ (x) và sai nếu y không bằng sig k’ (x).
Một số chữ kí điện tử: RSA, Elgamal, DSS,
2.2 Một vài lược đồ chữ ký số tiêu biểu
2.2.1 Lược đồ chữ ký RSA
Lƣợc đồ chữ ký RSA đƣợc định nghĩa nhƣ sau:
Sơ đồ chữ ký cho bởi bộ năm (P, A, K, S, V)
Cho n=pq, với mỗi p, q là các số nguyên tố lớn khác nhau
Cho P = A = Zn và xác định:
Các giá trị n, b là công khai các giá trị p, q, a là các giá trị bí mật
Với mỗi K=(np, q, a, b) xác định:
Giả sử A muốn gửi thông báo x, A sẽ tính chữ ký y bằng cách : y=sig K‟ (x)= x a mod n (a là tham số bí mật của A)
A gửi cặp (x,y) cho B Nhận đƣợc thông báo x, chữ ký số y B bắt đầu tiến hành kiểm tra đẳng thức x= y b mod(n) (b là khóa công khai A)
Nếu B xác nhận rằng chữ ký trên x là của A, thì B sẽ công nhận tính xác thực của nó Ngược lại, B sẽ xem xét x hoặc là đã bị sửa đổi, hoặc là chữ ký đã bị giả mạo Việc giả mạo chữ ký là điều có thể xảy ra.
Để giải quyết vấn đề này, ta chọn y và tính x = ver K''(y), với y = sig K'(x) Một giải pháp nhằm khắc phục khó khăn là yêu cầu x phải có nghĩa, từ đó giảm xác suất thành công của việc giả mạo chữ ký xuống mức rất nhỏ.
Hơn nữa, việc sử dụng hàm hash liên kết với lược đồ chữ ký loại bỏ phương pháp giả mạo
2.2.2 Lược đồ chữ ký Elgamal
Lƣợc đồ chữ ký ElGamal, được giới thiệu vào năm 1985, gần như đồng thời với hệ mật mã ElGamal, dựa trên độ khó của bài toán lôgarit rời rạc Hệ thống này được thiết kế đặc biệt để ký các văn bản điện tử và được mô tả dưới dạng một hệ gồm các thành phần: S = (P, A, K, S, V).
Trong bài toán này, P được xác định bởi công thức P = Z * p, trong khi A được tính bằng A = Z * p x Z p-1, với p là một số nguyên tố khiến việc tính lôgarit rời rạc trong Z * p trở nên khó khăn Tập hợp K bao gồm các cặp khóa K = (K‟, K''), trong đó K‟ = a là một số bí mật thuộc Z * p, và K'' = (p, α, β) với α là phần tử nguyên thuỷ của Z * p, còn β = α^a mod p K‟ là khóa bí mật dùng để ký, trong khi K'' là khóa công khai dùng để kiểm thử chữ ký.
Lƣợc đồ chữ ký ElGamal đƣợc định nghĩa nhƣ sau:
Cho p là số nguyên tố sao cho bài toán logarit rời rạc trong Zp là khó và giả sử
Z * p là phần tử nguyên thủy
Cho P = Z * p , A = Z * p Zp-1 và định nghĩa
Các giá trị p, , là công khai, a là bí mật
Giả sử x là một thông báo cần ký Khi đó, với K = (p, a, , ) và với số ngẫu nhiên k Z * p 1 , ta định nghĩa chữ ký số ElGamal là cặp ( , ), trong đó:
*Kiểm tra chữ ký số
Với x, Z * p , và Zp-1 ta định nghĩa :
2.2.3 Lược đồ chuẩn chữ ký số DSS ( Digital Signature Standard
Sơ đồ chữ ký DSS đƣợc cho bởi bộ năm
Trong bài toán này, P được xác định bởi công thức P = Z * p, trong đó p là một số nguyên tố lớn với độ dài từ 512 đến 1024 bit, đảm bảo rằng việc tính logarit rời rạc trong Z p * là khó khăn Hơn nữa, A được tính bằng A = Z * q x Z * q, với q là một ước số nguyên tố của p - 1, có độ dài biểu diễn khoảng 160 bit.
(p-1)/q mod p ≠ 1 với 1