Việc sử dụng chữ ký số là một giải pháp hữu hiệu, ngày càng được ứng dụng nhiều trong thực tế, không chỉ giới hạn trong ngành công nghệ thông tin, mật mã học mà còn được áp dụng nhiều tr
Trang 1TIỂU LUẬN KẾT THÚC MÔN HỌC
AN NINH MẠNG THÔNG TIN
Đề tài : Mật mã hóa khóa công khai sử dụng EEC và
Hà Nội – 06/2021
B17DCVT074 B17DCVT169 B17DCVT217
Trang 2MỤC LỤC
DANH MỤC HÌNH VẼ 3
MỞ ĐẦU 4
CHƯƠNG 1: LÝ THUYẾT VỀ ĐƯỜNG CONG E(Fp) 5
1.1 Định nghĩa, tính chất của đường cong 5
1.1.1 Định nghĩa 5
1.1.2 Tính chất 5
CHƯƠNG 2: HỆ MẬT MÃ ECC 7
2.1 Các tham số của hệ mật mã hóa ECC 8
2.1.1 Đương cong eliptic trên trường nguyên tố hữu hạn Fp 8
2.1.2 Tham số hệ mật mã ECC trên trường nhị phân hữu hạn 8
CHƯƠNG 3: ƯU ĐIỂM & ỨNG DỤNG CỦA ECC 9
3.1 Ưu điểm của EEC 9
3.2 So sánh ECDSA và RSA 11
3.3 Ưu điểm của ECDSA 12
3.4 Mặt hạn chế RSA và ECDSA 12
CHƯƠNG 4: CHỮ KÝ SỐ SỬ DỤNG HỆ MẬT MÃ ĐƯỜNG CONG ELLIPTIC 13
4.1 Tạo và xác thực chữ ký số 13
4.2 Sơ đồ chữ ký số trên đường cong eliptic (ECDSA) 14
4.3 Tính bảo mật của ECDSA 15
4.4 Ứng dụng của ECC 16
KẾT LUẬN 25
TÀI LIỆU THAM KHẢO 26
Trang 3DANH MỤC HÌNH VẼ
Trang 4MỞ ĐẦU
Mật mã học là một trong những vấn đề quan trọng trong lĩnh vực bảo mật và an toàn thông tin Trên thế giới, mật mã học đã được ra đời từ thời La Mã cổ đại và ngàycàng được nghiên cứu, phát triển đạt được những thành tựu to lớn Trong mật mã học,vấn đề bảo mật luôn đi đôi với vấn đề xác thực thông tin, đặc biệt trong hệ thống mã hóa khóa công khai vấn đề xác thực là vô cùng quan trọng Để giải quyết vấn đề trên người ta đưa ra một cách giải quyết hiệu quả, đó là chữ ký số
Với sự bùng nổ của mạng Internet hiện nay, mạng máy tính đang đóng vai trò
thiết yếu trong mọi lĩnh vực hoạt động của xã hội, và khi nó trở thành phương tiện
điều hành các hệ thống thì nhu cầu bảo mật thông tin đặt lên hàng đầu Việc sử dụng chữ ký số là một giải pháp hữu hiệu, ngày càng được ứng dụng nhiều trong thực tế, không chỉ giới hạn trong ngành công nghệ thông tin, mật mã học mà còn được áp
dụng nhiều trong lĩnh vực khác như ngân hàng, viễn thông…
Mật mã học khóa công khai tạo ra chữ ký số và ứng dụng vào các tài liệu Hệ mật
mã hóa RSA – hệ mã hóa điển hình của mật mã hóa công khai cùng với hàm băm mật
mã học một chiều chính là những công cụ chính trong việc tạo ra chữ ký số điện tử
Trong bài tiểu luận này, nhóm tập trung vào chữ ký số trên ECC và ứng dụng của
nó Nội dung nghiên cứu được chia làm 4 phần:
Lý thuyết đường cong elliptic
Hệt mật mã ECC
Ưu điểm và ứng dụng của ECC
Chữ ký số và hệ mật mã của đường cong
Trang 5CHƯƠNG 1: LÝ THUYẾT VỀ ĐƯỜNG CONG E(F p)
1.1 Định nghĩa, tính chất của đường cong
Tiếp tuyến của đường cong tại điểm bất kỳ P(x, y) trên đường cong E cũng cắt đườngcong elliptic E tại một điểm duy nhất nằm trên đường E, điểm này cũng có thể xácđịnh được thông qua P
1.1.2.1 Phép cộng trong đường cong elliptic
Trang 6Giả sử, ta có A(x1, y1) và B(x2, y2) là hai điểm thuộc một đường cong E
Trang 7Chú ý rằng các điểm (x3, y3), (x3,-y3) cũng nằm trên đường cong E và xét về mặthình học, thì các điểm (x1, y1), (x2, y2), (x3,-y3) cũng nằm trên cùng một đường thẳng.
1.1.2.2 Phép nhân trong đường cong elliptic
Phép nhân một số nguyên k với một điểm P thuộc đường cong Elliptic E là điểm
Trang 82.1 Các tham số của hệ mật mã hóa ECC
2.1.1 Đương cong eliptic trên trường nguyên tố hữu hạn F p
2.1.1.1 Trường hữu hạn
Đường cong elliptic được xây dựng trên các trường hữu hạn Có hai trường hữuhạn đó là:
Trường hữu hạn Fq với q là số nguyên tố
Trường hữu hạn Fq với q = 2m (m là một số nguyên)
Tùy thuộc vào trường hữu hạn Fq, với mỗi bậc của q, tồn tại nhiều đường congelliptic Do đó, với một trường hữu hạn cố định có q phần tử và q lớn, có nhiều sự lựachọn nhóm đường cong elliptic
2.1.1.2 Đường cong Elliptic trên trường F p có dạng như sau:
Định nghĩa các tham số của hệ mật mã ECC trên trường nguyên tố hữu hạn F p
bao gồm:
T = (p, a, b, G, n, h)
Trong đó:
p: là số nguyên tố và lớn hơn 3
a, b: là 2 hệ số a, b ∈ F p, sao cho thỏa mãn điều kiện 4 a2+27 b2≢0
G: là điểm cơ sở thuộc E (F p)
n: là một số nguyên và là thứ tự của điểm cơ sở G
h: là phần phụ đại số thỏa mãn h = #E(F p¿/n với Số lượng điểm của E(
F p) là #E(F p) thỏa định lý Hasse:
p+1−2√p ≤¿E(F p)≤ p+1+2√p
2.1.2 Tham số hệ mật mã ECC trên trường nhị phân hữu hạn
SECG định nghĩa các tham số của hệ mật mã ECC trên trường nhị phân hữu hạn
F2m
bao gồm các tham số sau:
Y = (m,f(x),a,b,G,n,h)Trong đó:
Trang 9 m: là số nguyên dương xác định trường nhị phân hữu hạnF2
m
và [log2 m] ∈ {163,233,239,283,409,571}
f(x): là một đa thức bất khả quy, có bậc m và là đa thức cơ sở biểu diễn trường F2m
G: là điểm cơ sở thuộc E(Fp)
n: là một số nguyên tố và là thứ tự của điểm cơ sở G
h: là phần phụ đại số (cofactor) thỏa mãn h = #E(F2m
)/n với #E(F2m
) là các
số điểm thuộc đường cong E(F2m)
Cùng với điểm O là điểm vô cực Số lượng điểm của E(F2m
) là #E(F2m
)thỏa định lý Hasse:
q+1−2√q ≤¿E(F2m)≤ q+1+2√q
Trong đó q = 2m Ngoài ra, #E(F2m
) là số chẵn
CHƯƠNG 3: ƯU ĐIỂM & ỨNG DỤNG CỦA ECC
Mật mã đường cong Elliptic (ECC) đã tồn tại từ giữa những năm 1980, nhưng nó vẫn được coi là mã mới trong thế giới SSL và chỉ mới bắt đầu được chấp nhận trong vài năm qua ECC là một cách tiếp cận toán học khác về cơ bản để mã hóa so với thuậttoán RSA đáng kính Đường cong elliptic là một hàm đại số (y2 = x3 + ax + b) trông giống như một đường cong đối xứng song song với trục x khi được vẽ đồ thị (Xem hình bên dưới.) Cũng như các dạng mật mã khóa công khai khác, ECC dựa trên đặc tính một chiều, trong đó dễ dàng thực hiện phép tính nhưng không thể đảo ngược hoặc đảo ngược kết quả của phép tính để tìm ra các số ban đầu ECC sử dụng các phép toán khác với RSA để đạt được thuộc tính này Cách dễ nhất để giải thích toán học này là - đối với một đường cong elliptic, một đường sẽ chỉ đi qua ba điểm dọc theo đường
cong (P, Q và R) và điều đó bằng cách biết hai trong số các điểm (P và Q), điểm còn
Trang 10lại (R) có thể được tính toán một cách dễ dàng, nhưng chỉ với R, hai cái còn lại, P và
Q, không thể suy ra được
Hình 4: Đường cong eliptic 1
Hình 5: Đường cong eliptic 2
ECC được sử dụng trong cả chữ ký số thông qua Elliptic Curve DSA (ECDSA)
và trong trao đổi khóa qua Elliptic Curve Diffie-Hellman (ECDH) Các thuật toán này được áp dụng trong các phần khác nhau của tiêu chuẩn SSL Đầu tiên, chứng chỉ SSL
có thể được ký bằng ECDSA thay vì RSA Việc thứ hai là quá trình máy chủ và máy khách đang trao đổi các khóa phiên được sử dụng để mã hóa tất cả dữ liệu được gửi Trong trường hợp này, máy chủ và trình duyệt đều phải được định cấu hình để hỗ trợ
bộ mật mã ECDH
Trang 11Lợi ích quan trọng nhất của ECC đơn giản là mạnh hơn RSA đối với các kích
thước đang được sử dụng ngày nay Kích thước khóa ECC thông thường là 256 bit tương đương với khóa RSA 3072 bit và mạnh hơn 10.000 lần so với khóa RSA 2048 bit Để đi trước sự tính toán của kẻ tấn công, các khóa RSA phải dài hơn CA/.Diễn đàn Trình duyệt và các nhà cung cấp trình duyệt hàng đầu đã chính thức kết thúc hỗ trợ khóa RSA 1024 bit sau năm 2013, vì vậy tất cả các chứng chỉ SSL mới phải sử
dụng khóa dài gấp đôi Hơn nữa, như thể hiện trong bảng dưới đây, kích thước khóa RSA trong tương lai nhanh chóng mở rộng trong khi độ dài khóa ECC tăng tuyến tính theo độ mạnh
Một lợi ích bảo mật khác của ECC chỉ đơn giản là nó cung cấp một giải pháp thay thế cho RSA và DSA Nếu một điểm yếu chính trong RSA được phát hiện, ECC có thể là giải pháp thay thế tốt nhất, đặc biệt nếu điểm yếu của RSA đột ngột yêu cầu tăngmạnh kích thước khóa để bù đắp
ECC cũng nhanh hơn vì một số lý do Trước hết, các khóa nhỏ hơn có nghĩa là ít
dữ liệu phải được truyền từ máy chủ đến máy khách trong quá trình bắt tay SSL
Ngoài ra, ECC yêu cầu ít năng lượng xử lý (CPU) và bộ nhớ hơn, dẫn đến thời gian phản hồi và thông lượng trên các máy chủ Web nhanh hơn đáng kể khi nó được sử
dụng
Lợi ích quan trọng thứ ba của việc sử dụng ECC là Perfect Forward Secrecy
(PFS) Mặc dù PFS không phải là thuộc tính của ECC, các bộ mật mã được hỗ trợ bởi các máy chủ Web hiện đại và các trình duyệt triển khai PFS cũng triển khai ECC Các máy chủ web thích Ephemeral ECDH (ECDHE) sử dụng bộ mật mã như:
“TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA” nhận được lợi ích của cả ECC vàPFS
3.2 So sánh ECDSA và RSA
Dưới đây là một số khác biệt giữa RSA và ECDSA:
• Kích thước dữ liệu cho RSA nhỏ hơn ECDSA
• Kích cỡ khóa ECDSA nhỏ hơn kích cỡ khóa RSA, do đó, thông điệp được mã hóa trong ECDSA nhỏ hơn
Trang 12• Việc tính toán trong ECDSA dễ dàng so với RSA:
ECDSA cung cấp khả năng tính toán nhanh hơn và ít dung lượng lưu trữ hơn
• Độ dài của khóa công khai và khóa bí mật ngắn hơn nhiều trong ECDSA Kết quả là thời gian xử lý nhanh hơn và yêu cầu về bộ nhớ và băng thông thấp hơn
Lưu ý: Một số nhà nghiên cứu đã phát hiện ra rằng ECC có tốc độ mã hóa nhanh hơn RSA tuy nhiên, ECC lại chậm hơn trong việc xác minh và mã hóa chữ ký
Từ những khác biệt trên, ta có thể rút ra kết luận về ECC cung cấp những ưu điểm vượt trội so với RSA như sau:
• Nó cung cấp khả năng bảo mật cao hơn với kích thước khóa nhỏ hơn
• Nó cung cấp các triển khai hiệu quả và nhỏ gọn cho các hoạt động mật mã yêu cầu
chip nhỏ hơn
• Do chip nhỏ hơn sinh nhiệt ít hơn và tiêu thụ ít điện năng hơn
• Nó hầu như phù hợp với các máy có băng thông thấp, khả năng tính toán thấp, ít bộ nhớ
• Nó có triển khai phần cứng dễ dàng hơn
Tuy vậy, hai hệ mật mã hóa khóa công khai này không phải là không có những nhược điểm Một số nhược điểm của cả ECC và RSA có thể được kể đến như:
• Quá trình tạo khóa diễn ra rất chậm (so với mã hóa khóa đối xứng)
• Tốc độ mã hóa dữ liệu chậm
• Độ dài bản tin phải nhỏ hơn độ dài bit nếu không thuật toán sẽ không được thực hiện
• RSA là thuật toán dựa trên bài toán logarit rời rạc, vì vậy mỗi lần khởi tạo RSA cần phải tính toán hai số nguyên tố lớn p và q
Trang 13CHƯƠNG 4: CHỮ KÝ SỐ SỬ DỤNG ĐƯỜNG CONG ELIPTIC
Trang 144.1.2 Xác thực chữ ký số.
Hình 7: Quy trình thực hiện để xác thực chữ ký sốViệc xác thực chữ ký số được thực hiện qua các bước:
Bản tin đã được ký số sẽ được tách thành hai phần: Dữ liệu và chữ ký số
Chữ ký số sẽ được giải mã bằng khóa công khai của người gửi
Nếu chữ ký giải mà thành công thì tạo thành giá trị băm
Nếu không thể giải mã được chữ ký chứng tỏ bản tin không đúng ngườigửi
Phần dữ liệu sẽ được đi qua hàm băm tương tự như ở phía người gửi tạo thànhgiá trị băm
Giá trị băm của dữ liệu sẽ được so sánh với giá trị băm thu được ở quá trìnhgiải mã chữ ký số
Hai giá trị này trùng nhau chứng tỏ bản tin gửi đi vẫn toàn vẹn
Hai giá trị này khác nhau chứng tỏ bản tin đã bị thay đổi
4.1.3 Sơ đồ chữ ký số trên đường cong eliptic (ECDSA).
Để thiết lập sơ đồ chữ ký số trên ECDSA (Elliptic Curve Digital SigntureAlgorithm), các tham số cần phải xác định là: đường cong E trên trường hữu hạn Fqvới tham số p phù hợp và điểm cơ sở G E(F q) (Generator point)
Trang 15Sinh khóa:
Chọn số ngẫu nhiên d trong khoảng [2, n - 1] làm khóa bí mật
Tính Q = dG làm khóa công khai
5 Tính s = k−1 (m + dr) mod n Nếu s = 0, quay lại bước 1
6 Chữ ký trên thông điệp m là (r, s)
4.1.4 Tính bảo mật của ECDSA
ECDSA cần có tính bảo mật cao để có thể khẳng định sự tồn tại không thể làm giả được, chống lại sự tấn công vào một bản tin đã được ký Mục đích của kẻ tấn
công là có thể giả mạo A tạo các chữ ký hợp lệ trên bản tin M, sau khi đã có được các
Trang 16bản tin có chữ ký của A và phân tích.
Khi thay thuật toán RSA bằng ECDSA, thì tốc độ thực hiện thuật toán được cảithiện đáng kể Việc thay thế này đạt được hiệu quả với việc cần dung lượng bộ nhớ íthơn khi sử dụng thuật toán RSA
Các điều kiện an toàn cần thiết của thuật toán ECDSA là:
Bài toán logarit rời rạc trên đường cong eliptic E(Fq) là khó: nếu như điềukiện này không được thỏa mãn, ta có thể chỉ cần tính logarit rời rạc với khóa côngkhai là có thể lấy được khóa bí mật
Hàm băn được sử dụng phải là là hàm băm một chiều, tức là không thể tínhđược bản rõ m từ giá trị băm H m
Hàm băm được sử dụng phải chống xung đột, tức là không thể tồn tại hai giátrị băm H m 1=H m 2 (nếu m1 và m2 khác nhau)
Việc tạo k là một quá trình ngẫu nhiên không thể dự đoán được
Các cách tấn công có thể có trên ECDSA có thể được phân loại như sau:
Cách tấn công các bài toán logarit rời rạc đường cong elliptic
Cách tấn công trên hàm băm
Cách tấn công khác
4.5 Một số ứng dụng của ECC
Trong thực tế, ECC đang được ứng dụng rất nhiều cho các ứng dụng bảo mật như:bảo mật tài liệu, thông tin liên lạc nội bộ, cung cấp chữ ký số trong các dịch vụ nhắntin bảo mật như iMessage của Apple hay Blackberry Message của Blackberry Ngoài
ra, ECC còn được ứng dụng trong việc trao đổi khóa bằng thuật toán Elliptic-curveDiffie–Hellman Thuật toán mã hóa khóa công khai thế hệ đầu như RSA vẫn đangđược sử dụng trong rất nhiều lĩnh vực, tuy vậy, trong những năm gần đây ECC đangphát triển rất nhanh và được đánh giá là thuật toán sẽ thay thế cho RSA trong tương laigần
Hiệu suất tính toán của ECC nhanh hơn vượt trội so với RSA, đây là một điều rõràng, đã được chứng minh rất nhiều trong thực tế Ngay cả với một phiên bản cũ của
Trang 17OpenSSL không có tối ưu cho ECC, thời gian tính toán để tạo tạo một chữ ký ECDSAvới khóa 256-bit là nhanh hơn 20 lần so với một chữ ký RSA với khóa 2048-bit Chính
vì thế, ECC là thuật toán thích hợp để tích hợp vào các thiết bị có tài nguyên hạn chế.ECC có rất nhiều ứng dụng trong thực tế hiện nay, nhưng ứng dụng phổ biến nhất,đưa ECC phát triển chính là ứng dụng trong các đồng tiền ảo
4.5.1 Ứng dụng của hệ mật mã hóa khóa công khai sử dụng đường cong eliptic và ECDSA trong đồng tiền ảo Ethereum.
Trong Ethereum (Bitcoin cũng tương tự) thì đường cong Elliptic được ứng dụngtrong 2 việc:
Tạo ra địa chỉ ví
Tạo chữ ký cho giao dịch
Tiền ảo Ethereum sử dụng đường cong tiêu chuẩn secp256k1 do Viện Tiêu chuẩn
và Kỹ thuật Quốc gia Mỹ (NIST) đặt ra Đường cong này có công thức như sau:
y2 (mod p) = x3 + 7 (mod p)
Với p = 2256 – 232 – 29 – 28 – 27 – 26 – 25 – 24 – 1 = 2256 – 232 – 997 Đây là một số nguyên tố rất lớn
4.4.1.1 Tạo khóa công khai:
Đầu tiên, ta chọn một số ngẫu nhiên dA làm khóa bí mật Số này phải thỏa mãnnằm trong khoảng [2, 2256 – 1]
Trên đường cong Elliptic ta chọn một điểm cơ sở G (generator point) VớiEthereum thì điểm G này có giá trị:
G = 04 79BE667E F9DCBBAC 55A06295 CE870B07 029BFCDB 2DCE28D959F2815B 16F81798 483ADA77 26A3C465 5DA4FBFC 0E1108A8 FD17B448A6855419 9C47D08F FB10D4B8
Theo tiêu chuẩn secp256k1
Lúc này, khóa công khai PU sẽ là kết quả của phép nhân:
Trang 18Để tính được giá trị s, đầu tiên, hệ thống cần phải đưa bản tin cần ký qua hàm băm,hàm băn được sử dụng trong Ethereum là hàm Keccak256 Giá trị sau khi băm của bảntin ta có thể đặt là z Lúc này, s sẽ được tính như sau:
Từ một private key, một địa chỉ ví Ethereum được tạo ra như sau
Tạo public key từ private key giống như bên trên ta đã trình bày
Tính giá trị băm của public key, giá trị của 20 byte cuối cùng trong public key
sẽ được sử dụng làm địa chỉ của ví Hàm băm được sử dụng là Keccak-256
Ví dụ, khóa bí mật của một người dùng có giá trị (dạng hexa):
PR=5 bff 7 b2 a 9 bc 0049382 ece299 b 1 fe1 fef 82 d 5 b 517 d 1 d 05 be 3 d 6 dc 4 ae 3e1 aa 0047
Trang 19Bằng phép nhân đường cong Elliptic, ta tính được public key là một điểm PU có
các giá trị tọa độ (dạng hexa) là:
x :1E866 A 709 A 022 B 7 A 56 C 5 F 372E5869094 EF 4300E1 EAB8 A 7 B2892734499305447 E
y : FDBF 17E1C 96E5C 0 CF 28 D 4 ECE 1958 D 7 FA 16130 D 5 BF 93E9975 ABC 4 AE 6450 DBA 492
ghép vào ta sẽ có một public key:
PU =
0x1E866A709A022B7A56C5F372E5869094EF4300E1EAB8A7B2892734499305447
EFDBF17E1C96E5C0CF28D4ECE1958D7FA16130D5BF93E9975ABC4AE6450DB
A492
Áp dụng hàm băm vào public key, ta được giá trị:
H (PU )=97 f 104 de 7 ced 45e912 ccf 1 b1 c 11eea 10 ced 5 ea 3270 d 46 ceec 4 ce1e53 d 6689 cd 0
Từ giá trị Hash này, lấy 20 bytes cuối cùng, ta có được địa chỉ ví là:
0 xc 11 eea 10 ced 5 ea 3270 d 46 ceec 4 ce 1e53 d 6689 cd 0