Để đảm bảo tính an toàn đa số mã công khai sử dụng số học số nguyên lớn hoặc đa thức với các số nguyên rất lớn hoặc đa thức bậc cao. Do đó buộc phải tải phần quan trọng vào kho nhớ để xử lý khoá và mẩu tin. Làm như vậy vừa tốn bộ nhớ vừa dễ mất an toàn. Để khắc phục điều đó mà vẫn đảm bảo độ an toàn của mã công khai, người ta đã đề xuất cách khác là dùng đường cong Elip. Ở đây các phép toán được thực hiện trên các xâu bit có kích thước nhỏ hơn.
V.5.1 Mã đường cong Elip thực
• Đường cong Elip được định nghĩa bởi phương trình với 2 biến x, y và hệ số thực • Xét đường cong Elip bậc 3 dạng:
y2 = x3 + ax + b
trong đó x, y, a, b là các số thực và định nghĩa thêm điểm O. • Có phép cộng đối với đường cong Elip
o Về hình học tổng của P và Q là điểm đối xứng của giao điểm R
V.5.2 Đường cong Elip hữu hạn
• Mã đường cong Elip sử dụng đường cong Elip mà các biến và hệ số là hữu hạn. • Có hai họ được sử dụng nói chung:
o Đường cong nguyên tố Ep(a,b) được xác định trên Zp o
Sử dụng các số nguyên modulo số nguyên tố Tốt nhất trong phần mềm
o Đường cong nhị phân E2n(a,b)xác định trên GF(2n) Sử dụng đa thức với hệ số nhị phân
Tốt nhất trong phần cứng
V.5.3 Đường cong Elip (ECC – Elliptic Curve Cryptography)
Trong ECC phép cộng giống phép nhân của modulo và phép cộng lặp trong ECC (tức là phép nhân một điểm với một hệ số) giống như phép lũy thừa của modulo.
Bài toán sau đây trong ECC là bài toán khó tương đương với bài toán logarit rời rạc: o Giả sử cho Q = k.P, trong đó P, Q là 2 điểm của đường cong Elip o Dễ dàng tính Q, nếu cho trước P, k
o Rất khó tìm k, nếu cho trước P, Q. Bài toán tìm hệ số k chính là bài toán khó bài toán logarit đường cong Elip. Mã đường cong Elip dựa trên bài toán khó một chiều này để dấu khoá riêng.
Ví dụ: Xét E11(1,6).
V.5.4 ECC Diffie Hellman
Chẳng hạn dựa trên cơ sở độ khó của bài toán tìm hệ số liên hệ giữa hai điểm như trên, người ta đưa ra sơ đồ trao đổi khoá ECC Diffie Hellman giồng như trao đổi khoá Diffie Helman thông thường. Ở đây phép lũy thừa trong Modulo thông thường được thay bằng phép nhân một điểm với hệ số trong ECC và phép logarit rời rạc được thay bằng phép toán cho 2 điểm tìm hệ số liên hệ giữa chúng. Bài toán sau là bài toán khó xác định độ an toàn của sơ đồ trao đổi công khai khoá chung.
• Nhóm người dùng chọn chung một đường cong Elip phù hợp Ep(a,b) • Chọn điểm cơ sở G=(x1,y1) với bậc lớn, tức là n lớn sao cho nG = O • Hai người sử dụng A và B chọn khoá riêng của mình: nA< n, nB< n
• Sau đó họ tính các khoá công khai của A và B: PA=nA×G,PB=nB×G. Và cho công bố công khai PA
và PB.
• Hai người sử dụng dùng chung khoá mật: K=nA×nB×G.
• Mỗi người đều có cách tính khoá chung đó bằng cách lấy khoá riêng của mình nhân với khoá công khai của đối tác: K=nA×PB, K=nB×PA
V.5.5 ECC mã và giải mã
Có một số cách dùng đường cong Elip để tạo mã công khai, ta xét cách đơn giản nhất sau:
Trước hết nhóm người sử dụng cần phải thống nhất chọn một đường cong Elip phù hợp và một điểm G giống như trong trao đổi khoá ECC Diffie – Hellman. Mỗi bản tin M được coi như một điểm PM trên đường cong Elip đó.
• Mỗi người sử dụng chọn một khoá riêng cho mình nA < n • Và tính khoá công khai để công bố PA=nA×G
• ECC mã bản tin M tương ứng với điểm PM trên đường cong Elip bằng cách tạo bản mã CM là cặp điểm trên đường cong Elip đó như sau:
CM={kG, PM+k Pb}, k là số ngẫu nhiên
• Ta thực hiện phép toán trên hai điểm của CM để giải mã tìm PM PM+kPb–nB(kG) = PM+k(nBG)–nB(kG) = PM
An toàn ECC
Dựa trên bài toán tìm hệ số liên hệ giữa hai điểm trên đường cong Elip gọi là bài toán logarit trên đường cong Elip. Phương pháp nhanh nhất giải bài toán trên đã biết là “Pollard rho method”. Bài toán này tương đương với bài toán
phân tích ra thừa số, nhưng có thể sử dụng kích thước khoá nhỏ hơn nhiều, chảng hạn so với RSA. Người ta chứng minh được rằng với độ dài khoá bằng nhau các tính toán nói chung là tuơng đương. Vậy với độ an toàn như nhau ECC có nhiều ưu điểm về không gian lưu trữ và tính an toàn đi kèm.
Bài tập
1. Tính mã hoá RSA của bản ghi sau:
• p=7, q=11, e = 3, NSD A chọn khoá riêng xA = 7, tính khoá công khai của A • NSD B gửi bản tin M = 5 và mã bằng khoá công khai của A
• NSD A giải mã sử dụng định lý phần dư Trung Hoa 2. Tính mã hoá RSA của bản ghi sau:
• p=11, q=13, e = 7, NSD A chọn khoá riêng xA = 9, tính khoá công khai của A • NSD B gửi bản tin M = 7 và mã bằng khoá công khai của A
• NSD A giải mã sử dụng định lý phần dư Trung Hoa 3. Tính mã hoá RSA của bản ghi sau:
• p=23, q=31, NSD A chọn khoá riêng xA = 13, tính khoá công khai của A • NSD B gửi bản tin M = 20 và mã bằng khoá công khai của A
• NSD A giải mã sử dụng định lý phần dư Trung Hoa 4. Trao đổi khoá Difie Hellman:
• Chọn số nguyên tố dung chung q = 131 và α = 7, • NSD A chọn khoá riêng xA = 11
• NSD B chọn khoá riêng xB = 19 • Tính khoá công khai của A và B
• Nêu cách A va B tính khoá mật dùng chung giữa A và B 5. Trao đổi khoá Difie Hellman:
• Chọn số nguyên tố dung chung q = 131 và α = 7, • NSD A chọn khoá riêng xA = 11
• NSD B chọn khoá riêng xB = 19 • Tính khoá công khai của A và B
• Nêu cách A va B tính khoá mật dùng chung giữa A và B 6. Mã đường cong Elip
• Cho hệ đường cong Elip y2 = (x3 + x + 1) mod 13 • Vẽ đồ thị đường cong trên. • Cho G = (4, 2)
• NSD A chọn khoá riêng xA = 2 • NSD B chọn khoá riêng xB = 3 • Tính khoá công khai của A và B
• Nêu cách A va B tính khoá mật dùng chung giữa A và B 7. Mã đường cong Elip
y2 = (x3 + x + 1) mod 23 • Cho G = (3, 10)
• NSD A chọn khoá riêng xA = 2 • NSD B chọn khoá riêng xB = 3 • Tính khoá công khai của A và B
• Nêu cách A va B tính khoá mật dùng chung giữa A và B 8. Mã Elgamal:
• Cho hệ (G, α, β) trong đó G là một nhóm với phép nhân và α, β là hai phần tử của G. • Công khai G, α, β
• Giữ bí mật luỹ thừa nguyên a thoả mãn: αa = β (để tìm được a phải giải bài toán logarit rời rạc là bài toán khó)
• Mã hoá mẫu tin M bằng cách chọn ngẫu nhiên số k và tính: C=E(M) = (y1, y2) = (αk, M.βk )
• Giải mã: C = y2 . (y1a)-1
a) Áp dụng ví dụ trên cho p = 79, α = 5, a = 3, M = 19 và k = 4. Ở đây nhóm với phép nhân là Zp, tính β. Tìm bản mã C của bản rõ M và giải mã
b) Áp dụng ví dụ trên cho p = 191, α = 7, a = 5, M = 29 và k = 9. Ở đây nhóm với phép nhân là Zp, tính β. Tìm bản mã C của bản rõ M và giải mã.
c) Áp dụng ví dụ trên cho p = 191, α = 7, a = 5, M = 29 và k = 9. Ở đây nhóm với phép nhân là Zp, tính β. Tìm bản mã C của bản rõ M và giải mã.
9. Nêu thuật toán tính lũy thừa của một cơ số cho trước. Đánh giá độ phức tạp của thuật toán đó. 10. Tại sao có thể nói nếu dùng Định lý Trung Hoa để giải mã thì tốc độ giải mã nhanh gấp 4 lần không dùng nó.
CHƯƠNG VI
XÁC THỰC MẪU TIN VÀ CÁC HÀM HASH VI.1 Xác thực mẩu tin
VI.1.1 Các khái niệm
Xác thực mẩu tin liên quan đến các khía cạnh sau khi truyền tin trên mạng
o Bảo vệ tính toàn vẹn của mẩu tin: bảo vệ mẩu tin không bị thay đổi hoặc có các biện pháp phát hiện nếu mẩu tin bị thay đổi trên đường truyền.
o Kiểm chứng danh tính và nguồn gốc: xem xét mẩu tin có đúng do người xưng tên gửi không hay một kẻ mạo danh nào khác gửi.
o Không chối từ bản gốc: trong trường hợp cần thiết, bản thân mẩu tin chứa các thông tin chứng tỏ chỉ có người xưng danh gửi, không một ai khác có thể làm điều đó. Như vậy người gửi không thể từ chối hành động gửi, thời gian gửi và nội dung của mẩu tin.
Ngoài ra có thể xem xét bổ sung thêm các yêu cầu bảo mật như mã hoá. Với mong muốn đáp ứng các yêu cầu trên, có 3 hàm lựa chọn sau đây được sử dụng:
o Mã mẩu tin bằng mã đối xứng hoặc mã công khai.
o Mã xác thực mẩu tin (MAC): dùng khoá và một hàm nén mẩu tin cần gửi để nhận được một đặc trưng đính kèm với mẩu tin và người gửi đó.
o Hàm hash (hàm băm) là hàm nén mẩu tin tạo thành “dấu vân tay” cho mẩu tin.
Các yêu cầu bảo mật khi truyền mẩu tin trên mạng.
Tìm các biện pháp cần thiết để chống đối lại các hành động phá hoại như sau: o Để lộ bí mật: giữ bí mật nội dung mẩu tin, chỉ cho người có quyền biết. o Thám mã đường truyền: không cho theo dõi hoặc làm trì hoãn việc truyền tin. o Giả mạo: lấy danh nghĩa người khác để gửi tin.
o Sửa đổi nội dung: thay đổi, cắt xén, thêm bớt thông tin. o Thay đổi trình tự các gói tin nhỏ của mẩu tin truyền. o Sửa đổi thời gian: làm trì hoãn mẩu tin.
o Từ chối gốc: không cho phép người gửi từ chối trách nhiệm của tác giả mẩu tin.
o Từ chối đích: không cho phép người nhận phủ định sự tồn tại và đến đích của mẩu tin đã gửi.
VI.1.2 Mã mẩu tin
• Mã mẩu tin bản thân đã cung cấp một phần tính xác thực, vì khoá được chia sẻ giữa người gửi và người nhận cũng như việc thay đổi nội dung cũng không dễ dàng thực hiện nếu không có khoá.
• Cụ thể nếu mã đối xứng được sử dụng thì người nhận biết người gửi phải tạo ra mẩu tin, vì chỉ có người gửi và người nhận biết được khoá sử dụng.
Người nhận có thể biết nội dung không bị sửa đổi, nếu mẩu tin có cấu trúc phù hợp, tính dư thừa và tổng kiểm tra để phát hiện bất cứ thay đổi nào.
• Nếu khoá công khai được sử dụng thì mã cung cấp không đủ độ tin cậy về người gửi, vì mọi người đều có thể biết khoá công khai của người nhận. Tuy nhiên nếu người gửi ký mẩu tin sử dụng khoá riêng của họ và sau đó mã với khoá công khai của người nhận, thì khi đó đảm bảo cả tính bảo mật và xác thực của mẩu tin. Cần phải bổ sung các biện pháp để phát hiện các mẩu tin đã bị làm hỏng. Việc sử dụng khoá riêng của người gửi kết hợp với khoá công khai của người nhận có nhiều ưu việt, nhưng với giá phải trả là chậm do dùng 2 mã khoá công khai trên mẩu tin.
VI.1.3 Mã xác thực mẩu tin (MAC – Message Authentication Code)
• Sinh ra bởi một thuật toán mà tạo ra một khối thông tin nhỏ có kích thước cố định
o Phụ thuộc vào cả mẩu tin và khoá nào đó.
o Giống như mã nhưng không cần phải giải mã.
• Người nhận thực hiện tính toán nào đó trên mẩu tin và kiểm tra xem nó có phù hợp với MAC đính kèm không.
• Tạo niềm tin rằng mẩu tin không bị thay đổi và đến từ người gửi.
Các mã xác thực mẩu tin MAC cung cấp sự tin cậy cho người nhận là mẩu tin không bị thay đổi và từ đích danh người gửi. Cũng có thể sử dụng mã xác thực MAC kèm theo với việc mã hoá để bảo mật. Nói chung người ta sử dụng các khoá riêng biệt cho mỗi MAC và có thể tính MAC trước hoặc sau mã hoá, tốt hơn là thực hiện MAC trước và mã hoá sau.
Sử dụng MAC có nhược điểm là MAC phụ thuộc vào cả mẩu tin và cả người gửi, nhưng đôi khi chỉ cần xác thực mẩu tin và thông tin xác thực đó chỉ phụ thuộc mẩu tin để lưu trữ làm bằng chứng cho tính toàn vẹn của nó. Khi đó người ta sử dụng hàm Hash thay vì MAC. Cần lưu ý rằng MAC không phải là chữ ký điện tử, vì cả người gửi và người nhận đều biết thông tin về khoá.
Các tính chất của MAC
MAC là thông tin nén của mẩu tin kết hợp với khoá MAC = CK(M) o Nén bản tin M có độ dài tùy ý
o Sử dụng khoá mật K
o Tạo nên dấu xác thực có độ dài cố định
o Là hàm nhiều - một, nghĩa là có nhiều bản tin khác nhau nhưng có cùng MAC. Tuy nhiên ta phải lựa chọn hàm MAC sao cho xác suất để các mẩu tin có ý nghĩa có MAC trùng nhau là rất nhỏ. Việc tìm được các mẩu tin như vậy là rất khó khăn
Yêu cầu đối với MAC
Tuỳ thuộc vào kiểu tấn công mà MAC phải có các tính chất khác nhau để chống đối lại. Nhưng nói chung MAC phải thỏa mãn các điều sau
o Biết mẫu tin và MAC, không thể tìm được mẩu tin khác có cùng MAC. o Các MAC cần phải phân bố đều
o MAC phải phụ thuộc như nhau vào tất cả các bit trong mẩu tin. Tức là khi thay đổi một bit thông tin nào đó, MAC sẽ có những thay đổi kéo theo.
VI.1.4 Sử dụng mã đối xứng cho MAC
• Có thể dùng mã khối với chế độ chuỗi móc nối bất kỳ và sử dụng khối cuối cùng của mã khối làm MAC của mẩu tin.
• Thuật toán xác thực dữ liệu (DAA – Data Authentication Algorithm) là MAC được sử dụng rộng
rãi dựa trên chế độ DES-CBC, trong đó
o Sử dụng véc tơ ban đầu IV = 0 và bộ đệm 0 của block cuối cùng o Và mã mẩu tin sử dụng chuẩn mã dữ liệu DES trong chế độ CBC o Gửi lấy block cuối cùng như là MAC của cả mẩu tin
• Nhưng bây giờ MAC cuối cùng với kích thước 64 bit cũng là quá nhỏ để đảm bảo an toàn. Do đó người ta tìm cách tạo nên các MAC có kích thước lớn hơn.
VI.2 Các hàm Hash (hay còn gọi là hàm băm). VI.2.1 Các yêu cầu
• Nén mẩu tin bất kỳ về kích thước cố định. Và giả thiết là hàm hash là công khai và không dùng khoá. Hash chỉ phụ thuộc mẩu tin, còn MAC phụ thuộc thêm cả vào khoá.
• Hash được sử dụng để phát hiện thay đổi của mẩu tin. Hash có thể sử dụng nhiều cách khác nhau với mẩu tin, Hash thường được kết hợp dùng để tạo chữ ký trên mẩu tin.
Các tính chất của hàm Hash
• Hàm Hash tạo nên dấu vân tay (tức là thông tin đặc trưng) của một tệp, mẩu tin hay dữ liệu h = H(M)
• Nén mẩu tin có kích thước tùy ý về dấu vân tay có kích thước cố định. Hàm Hash được giả thiết là công khai, mọi người đều biết cách sử dụng
Các yêu cầu của hàm Hash
• Có thể áp dụng cho mọi mẩu tin có kích thước tuỳ ý. Tuy nhiên phải tạo đầu ra h có kích thước cố định, thường là 128 bit đến 1024 bit.
• Dễ tính h = H(M)cho mọi mẫu tin M, hàm H tính toán nhanh, hiệu quả phụ thuộc chặt vào mẩu tin