HMAC Hash-based Message Authentication Code: HMAC là một thuật toán mã hóa dựa trên hàm băm, được sử dụng để xác thực tính toàn vẹn của thông điệp, một phần quan trọng của bảo mật thông
Trang 1BÀI TẬP LỚN/ĐỒ ÁN CUỐI KÌ MÔN ……….
…tên đề tài…
Người hướng dẫn: TS NGUYỄN VĂN A Người thực hiện: PHẠM HOÀNG DÂN – 52000544
TRẦN QUANG MINH – MSSV NGUYỄN THÀNH TUYẾN – MSSV NGUYỄN THÀNH LỘC – MSSV
Lớp : 20050401 Khoá : 24
THÀNH PHỐ HỒ CHÍ MINH, NĂM 2023
Trang 2BÀI TẬP LỚN/ĐỒ ÁN CUỐI KÌ MÔN ………
…tên đề tài…
Người hướng dẫn: TS NGUYỄN VĂN A Người thực hiện: PHẠM HOÀNG DÂN – 52000544
TRẦN QUANG MINH – MSSV NGUYỄN THÀNH TUYẾN – MSSV NGUYỄN THÀNH LỘC – MSSV
Lớp : 20050401 Khoá : 24
THÀNH PHỐ HỒ CHÍ MINH, NĂM 2023
Trang 3LỜI CẢM ƠN
Đây là phần tác giả tự viết ngắn gọn, thể hiện sự biết ơn của mình đối vớinhững người đã giúp mình hoàn thành Luận văn/Luận án Tuyệt đối không sao chéptheo mẫu những “lời cảm ơn” đã có
Trang 4ĐỒ ÁN ĐƯỢC HOÀN THÀNH TẠI TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG
Tôi xin cam đoan đây là sản phẩm đồ án của riêng tôi / chúng tôi và được sựhướng dẫn của TS Nguyễn Văn A; Các nội dung nghiên cứu, kết quả trong đề tài nàylà trung thực và chưa công bố dưới bất kỳ hình thức nào trước đây Những số liệu trongcác bảng biểu phục vụ cho việc phân tích, nhận xét, đánh giá được chính tác giả thuthập từ các nguồn khác nhau có ghi rõ trong phần tài liệu tham khảo
Ngoài ra, trong đồ án còn sử dụng một số nhận xét, đánh giá cũng như số liệucủa các tác giả khác, cơ quan tổ chức khác đều có trích dẫn và chú thích nguồn gốc
Nếu phát hiện có bất kỳ sự gian lận nào tôi xin hoàn toàn chịu trách nhiệm về nội dung đồ án của mình Trường đại học Tôn Đức Thắng không liên quan đến
những vi phạm tác quyền, bản quyền do tôi gây ra trong quá trình thực hiện (nếu có)
TP Hồ Chí Minh, ngày tháng năm
Tác giả (ký tên và ghi rõ họ tên)
Nguyễn Văn B
Trần Văn C
Trang 5PHẦN XÁC NHẬN VÀ ĐÁNH GIÁ CỦA GIẢNG VIÊN
Phần xác nhận của GV hướng dẫn
_ _ _ _ _ _ _
Tp Hồ Chí Minh, ngày tháng năm (kí và ghi họ tên)
Phần đánh giá của GV chấm bài
_ _ _ _ _ _ _
Tp Hồ Chí Minh, ngày tháng năm (kí và ghi họ tên)
Trang 6TÓM TẮT
Trong thế giới số hóa ngày nay, việc bảo vệ thông tin và dữ liệu quan trọng là một vấn đề tối quan trọng Đó là lý do tại sao hiểu về các thuật toán mã hóa và các phương phápbảo mật thông tin là điều vô cùng quan trọng Bài viết này sẽ đưa bạn vào thế giới của mã hóa và bảo mật thông tin, giúp bạn hiểu rõ về các yếu tố quan trọng trong lĩnh vực này
Cryptography and Technical Foundations (Cryptography và Nền tảng Kỹ thuật)1 AES (Advanced Encryption Standard): AES là một trong những thuật toán mã
hóa đối xứng phổ biến nhất Nó trở thành "ngôn ngữ" của bảo mật dữ liệu, được sử dụng để mã hóa và giải mã thông tin quý báu trong nhiều lĩnh vực, bao gồm bảo vệ thông tin cá nhân và bảo mật dữ liệu truyền qua mạng
Các bước thực hiện của AES Tính năng mã hóa đối xử Ưu điểm của việc sử dụng AES2 RSA (Rivest-Shamir-Adleman): RSA là một thuật toán mã hóa bất đối xứng bao
gồm khóa công khai và khóa riêng tư Thường được sử dụng để tạo chữ ký số vàthực hiện quá trình trao đổi khóa mật để bảo vệ thông tin quan trọng trên mạng
Cặp khóa công khai và khóa riêng tư Quá trình mã hóa và giải mã Sơ đồ tạo khóa công khai và bí mật3 SHA (Secure Hash Algorithm): SHA là một họ thuật toán băm bảo mật được sử
dụng để biến đổi dữ liệu thành giá trị băm có độ dài cố định Các biến thể như SHA-256 và SHA-3 đóng vai trò quan trọng trong các ứng dụng bảo mật và blockchain
Sự đa dạng trong họ SHA và đặc điểm riêng của từng loại Ứng dụng của SHA trong thế giới kỹ thuật
4 ECC (Elliptic Curve Cryptography): ECC là một họ thuật toán mã hóa sử dụng đường cong elip, cung cấp mức độ bảo mật mạnh với kích thước khóa nhỏ hơn so với RSA Điều này làm cho nó trở nên phù hợp cho các thiết bị có tài nguyên hạn chế
Cách tính toán và sử dụng đường cong elip Phép cộng điểm và phép nhân điểm5 HMAC (Hash-based Message Authentication Code): HMAC là một thuật toán
mã hóa dựa trên hàm băm, được sử dụng để xác thực tính toàn vẹn của thông điệp, một phần quan trọng của bảo mật thông tin
Trang 76 DES (Data Encryption Standard): DES, một trong những thuật toán mã hóa đối xử đầu tiên, đã từng được sử dụng rộng rãi Tuy nhiên, hiện nay nó đã được thaythế bởi AES do yếu điểm bảo mật.
7. ECDSA (Elliptic Curve Digital Signature Algorithm): ECDSA là một thuật toán mã hóa dựa trên đường cong elip được sử dụng để tạo chữ ký số cho thông điệp và xác minh tính toàn vẹn của chúng
Trang 81.1.1.2 Tiểu mục cấp 3 tiếp theo 1
1.1.2 Tiểu mục cấp 2 tiếp theo 1
1.2 Nội dung của chương này 1
3.3.1 Tài liệu tham khảo và cách trích dẫn 1
3.3.2 Qui định của Khoa Công nghệ thông tin 1
Trang 9DANH MỤC KÍ HIỆU VÀ CHỮ VIẾT TẮTCÁC KÝ HIỆU
f Tần số của dòng điện và điện áp (Hz) p Mật độ điện tích khối (C/m3)
CÁC CHỮ VIẾT TẮT
CSTD Công suất tác dụngMF Máy phát điệnBER Tỷ lệ bít lỗi
Trang 10DANH MỤC CÁC BẢNG BIỂU, HÌNH VẼ, ĐỒ THỊDANH MỤC HÌNH
Hình 2.1: Kiến trúc FTP 1
DANH MỤC BẢNG
Bảng 3.1 Ví dụ cho chèn bảng 1
Trang 11A Mã hóa đối xứngI Các thuật toán đối xứng:
1 Integer factorization
- Thuật toán Integer Factorization là quá trình phân tích một số nguyên dương lớnthành các thừa số nguyên tố riêng biệt Mục tiêu chính của thuật toán này là tìmra các thừa số nguyên tố mà khi nhân lại với nhau sẽ cho ra kết quả bằng sốnguyên ban đầu Phân tích số nguyên dương lớn thành các thừa số nguyên tố cóứng dụng quan trọng trong nhiều lĩnh vực, đặc biệt là trong mật mã và bảo mậtthông tin
- Một số ví dụ về việc phân tích số nguyên dương thành các thừa số nguyên tố:o Số 28 có thể được phân tích thành 2 x 2 x 7, trong đó 2 và 7 là các
thừa số nguyên tố.o Số 60 có thể được phân tích thành 2 x 2 x 3 x 5, trong đó 2, 3 và 5 là
các thừa số nguyên tố.- Thuật toán Integer Factorization quan trọng trong các lĩnh vực sau:
o Mật mã và bảo mật: Một số thuật toán mã hóa khóa công khai, chẳng hạnnhư RSA, dựa vào khả năng tính toán ngược của thuật toán IntegerFactorization Điều này đồng nghĩa rằng việc phân tích số thành các thừa sốnguyên tố là khó khăn và tốn thời gian
o Bảo mật thông tin: Trong các ứng dụng bảo mật thông tin, việc phát hiệnthừa số nguyên tố của một số có thể được sử dụng để bảo vệ tính bí mật củathông tin và ngăn chặn các cuộc tấn công mạng
o Nghiên cứu toán học: Integer Factorization là một vấn đề toán học quantrọng và thú vị, và nó đòi hỏi sự phát triển của các thuật toán và phươngpháp tính toán mới
Trang 122 Discrete logarithm
- Discrete logarithm là một vấn đề trong lĩnh vực toán học và mật mã học, và nó
liên quan đến việc tìm giá trị x của biểu thức a^x ≡ b (mod m), trong đó a, b, vàm là các số nguyên dương cố định Cụ thể, discrete logarithm yêu cầu tìm mộtsố nguyên x sao cho a^x khi chia cho m cho kết quả b
- Thuật toán Discrete logarithm quan trọng trong mật mã học, đặc biệt là trong
mật mã hóa khóa công khai dựa trên các hệ thống mật mã hóa như Hellman và ElGamal Một trong những ứng dụng quan trọng của discretelogarithm là trong việc tạo ra khóa công khai và khóa bí mật cho mạng vàtruyền thông an toàn
Diffie Tuy nhiên, việc giải quyết discrete logarithm có thể trở nên rất khó khi m được
chọn đủ lớn, và đó là lý do tại sao nó được sử dụng trong mật mã hóa Trongmật mã học, việc tìm discrete logarithm khi m đủ lớn trở nên rất khó bởi khôngcó thuật toán hiệu quả đã được phát triển để giải quyết vấn đề này Việc này đảmbảo tính bảo mật của các hệ thống mật mã hóa dựa trên discrete logarithm,chẳng hạn như RSA và ECC (Elliptic Curve Cryptography)
3 Elliptic curves
- Thuật toán Elliptic Curves (EC) là một phần quan trọng của mật mã học và
được sử dụng rộng rãi trong các ứng dụng bảo mật Nó dựa trên một phân nhánhcủa toán học gọi là hình học đường cong elliptic
- Hình học đường cong elliptic thường được biểu diễn bởi một biểu đồ có dạng
đường cong trên một bảng hai chiều Các điểm trên đường cong được định bằngcác cặp số thực (x, y) thỏa mãn phương trình đường cong elliptic cụ thể Hìnhdạng của đường cong elliptic có cấu trúc đặc biệt, và nó có tính chất về tính toánđối xử, trong đó phép cộng và phép nhân được thực hiện
Trang 13- Giả sử chúng ta có một đường cong elliptic đơn giản được biểu diễn bởi
phương trình sau:
y2 = x3 + 7
- Trong trường hợp này, đường cong elliptic là một đường cong trong
không gian hai chiều, và các điểm trên đường cong là các cặp số thực (x, y) thỏa mãn phương trình trên Để tạo ra một ví dụ cụ thể, hãy chọn một điểm trên đường cong, ví dụ:
P = (2,3)
- Bây giờ, chúng ta có thể sử dụng toán học trên đường cong elliptic để
thực hiện các phép tính, chẳng hạn như phép cộng điểm, nhân điểm với một số nguyên, và các phép tính liên quan đến tính toán trên đường cong này
- Trong mật mã học, ví dụ trên có thể được sử dụng trong các ứng dụng
như ECC (Elliptic Curve Cryptography) Chẳng hạn, để tạo ra một cặp khóa (khóa công khai và khóa bí mật) trong mật mã hóa ECC, bạn có thể chọn một điểm trên đường cong như P và sau đó nhân nó với một số nguyên ngẫu nhiên để tạo ra khóa công khai Việc giải quyết discrete logarithm (tìm số nguyên x trong phương trình xP = Q với Q là một điểm trên đường cong) trở nên khó khăn khi đường cong elliptic được chọn đủ phức tạp và có kích thước lớn
II DES (Data Encryption Standard)
DES được Viện Tiêu chuẩn và Công nghệ Quốc gia Hoa Kỳ (NIST) giới thiệunhư một thuật toán tiêu chuẩn để mã hóa và được sử dụng chính trong những năm 1980và 1990, nhưng nó chưa được chứng minh là có khả năng chống lại các cuộc tấn công,dẫn đến những tiến bộ trong nghiên cứu công nghệ và mật mã Đặc biệt vào tháng 7năm 1998, Electronic Erontier Foundation (EEF) đã phá vỡ DES bằng cách sử dụngmột máy chuyên dụng
DES sử dụng khóa chỉ 56 bit, điều này đã gây ra một số lo ngại Vấn đề này đãđược giải quyết bằng việc giới thiệu Triple DES (3DES), đề xuất sử dụng khóa 168 bitbằng ba khóa 56 bit và cùng số lần thực thi thuật toán DES, do đó khiến các cuộc tấncông vũ phu gần như không thể xảy ra, nhưng những hạn chế khác, chẳng hạn như hiệusuất chậm và kích thước khối 64-bit không mong muốn
Trang 14- Cách thực thi của DES: 1 Chuẩn bị khóa: Trước khi bắt đầu quá trình mã hóa, khóa được chuẩn bị Khóa
DES có độ dài 56 bit, nhưng thực tế chỉ có 48 bit được sử dụng trong quá trìnhmã hóa Để đảm bảo tính bảo mật, khóa ban đầu được mở rộng từ 56 bit thành64 bit bằng cách thêm vào mỗi byte theo một thứ tự cụ thể
2 Chia dữ liệu thành các khối 64 bit: Dữ liệu cần mã hóa được chia thành các
khối có kích thước 64 bit Nếu dữ liệu cuối cùng không chia hết cho 64 bit, phảisử dụng phần padding để điền vào dữ liệu
3 Quá trình Initial Permutation (IP): Mỗi khối 64 bit đầu tiên trải qua một hoán
đổi ban đầu (Initial Permutation) để thay đổi vị trí các bit theo một cách cụ thể.Đây là bước bắt đầu của quá trình mã hóa
4 Vòng lặp mã hóa (16 vòng): DES sử dụng 16 vòng lặp để thực hiện mã hóa.
Mỗi vòng lặp bao gồm các bước sau:
Expansion (E): Khối 32 bit của dữ liệu được mở rộng thành 48 bit bằng
cách sao chép và hoán đổi bit theo một cách cụ thể
Subkey XOR (XOR với con khóa): Một con khóa 48 bit (tạo từ khóa chính
trong quá trình khóa mở rộng và hoán đổi bit) được XOR với kết quả củabước Expansion
Substitution (S-boxes): Kết quả của bước XOR được chia thành 8 phần, mỗi
phần có 6 bit, và sau đó được đưa vào các hộp thay thế (S-boxes) để tạo racác giá trị thay thế theo cặp
Permutation (P): Kết quả từ S-boxes sau đó được hoán đổi bit theo một cách
cụ thể bởi hoán đổi hoán đổi bit P
XOR với khối trước đó: Kết quả của bước Permutation sau đó được XOR
với khối dữ liệu trước đó
Hoán đổi 2 khối: Sau khi kết quả từ bước XOR với khối trước đó, khối dữ
liệu và khối trước đó được hoán đổi cho nhau Quá trình này lặp lại trong 16vòng
5 Hoán đổi kết quả (Final Permutation): Sau khi 16 vòng lặp đã hoàn thành, kết
quả là một khối dữ liệu 64 bit được thực hiện hoán đổi cuối cùng
6 Kết quả: Khối dữ liệu sau bước hoán đổi cuối cùng được coi là kết quả mã hóa
DES
III AES ( Advanced Encryption Standard)
Trang 15Năm 2001, sau một cuộc thi mở, một thuật toán mã hóa có tên Rijndael đượcphát minh bởi các nhà mật mã Joan Daenten và Vincen! Rijmen đã được tiêu chuẩn hóathành AES với những sửa đổi nhỏ bởi NIST vào năm 2001 Cho đến nay, chưa có cuộctấn công nào chống lại AES Rijndael gốc cho phép các kích thước khóa và khối khácnhau là 128 bit, 192 bit và 256 bit.
- Cách thực hiện AES
1) Chọn kích thước khối và khóa: Trước tiên, bạn phải chọn kích thước khối
(block size) và độ dài của khóa (key length) AES hỗ trợ ba kích thước khốichính: 128 bit, 192 bit, và 256 bit Tùy thuộc vào mức độ bảo mật mà bạn cần,bạn sẽ chọn kích thước khóa tương ứng (128-bit, 192-bit, hoặc 256-bit)
2) Mở rộng khóa (Key Expansion): Quá trình này tạo ra các khóa con từ khóa
chính theo từng vòng lặp Các khóa con này sẽ được sử dụng trong các vòng lặpmã hóa
3) Quá trình Initial Round: Đây là vòng đầu tiên của quá trình mã hóa Dữ liệu
đầu vào được XOR với khóa con đầu tiên
4) Vòng lặp mã hóa (Rounds): AES sử dụng một loạt các vòng lặp để thực hiện
mã hóa Số vòng lặp (rounds) phụ thuộc vào kích thước khóa: 10 vòng cho bit key, 12 vòng cho 192-bit key, và 14 vòng cho 256-bit key Mỗi vòng lặp baogồm các bước sau:
128- SubBytes: Mỗi byte trong khối dữ liệu được thay thế bằng một giá trịmới từ một hộp thay thế (S-box) Điều này làm cho mối quan hệ giữa dữliệu đầu vào và đầu ra trở nên phi tuyến tính, đóng góp vào tính bảo mậtcủa AES
ShiftRows: Các hàng trong khối dữ liệu được dịch chuyển theo một cáchcụ thể
MixColumns: Các cột trong khối dữ liệu được kết hợp theo một cách cụthể
AddRoundKey: Khóa con tương ứng với vòng lặp được XOR với khốidữ liệu sau các bước trước đó
5) Vòng lặp cuối cùng (Final Round): Vòng lặp cuối cùng không bao gồm bước
MixColumns, và sau đó nó chuyển đến bước kết quả
6) Kết quả (Ciphertext): Kết quả sau khi hoàn thành các vòng lặp được coi là văn
bản mã hóa (ciphertext)
Trang 16Hình A.1 Các bước tạo khóa để mã hóa
B Mã hóa bất đối xứngI PUBLIC KEY AND PRIVATE KEY
- Các khóa công khai (public key) và khóa bí mật (private key) là cặp khóa được sử dụng trong mật mã hóa khóa công khai để bảo vệ thông tin và xác thực danh tính Đây là một phần quan trọng của nhiều hệ thống mật mã hóa và giao thức bảo mật
- Khóa công khai (Public Key):o Khóa công khai là một phần của cặp khóa và thường được chia sẻ công
khai với tất cả mọi người.o Nó được sử dụng để mã hóa thông tin Bất kỳ ai cũng có thể sử dụng
khóa công khai để mã hóa dữ liệu trước khi gửi nó đến người nhận.o Dữ liệu đã được mã hóa bằng khóa công khai chỉ có thể được giải mã
bằng khóa bí mật tương ứng
Trang 17- Khóa bí mật (Private Key):o Khóa bí mật là một phần khác của cặp khóa, được bảo mật và chỉ có
người nhận hoặc chủ sở hữu khóa mới biết.o Nó được sử dụng để giải mã thông tin đã được mã hóa bằng khóa công
khai Khóa bí mật này là duy nhất và không thể bị chia sẻ công khai.o Nó cũng được sử dụng để tạo chữ ký số để xác thực danh tính của người
dùng.- Hệ thống mật mã hóa khóa công khai thường dựa vào cặp khóa công khai và
bí mật Khóa công khai cho phép người khác mã hóa thông tin để gửi cho bạn, và sau đó bạn sử dụng khóa bí mật để giải mã nó Ngược lại, bạn cũng có thể sử dụng khóa bí mật của mình để tạo chữ ký số để xác thực thông tin của mình.- Một ví dụ phổ biến về hệ thống mật mã hóa khóa công khai là RSA (Rivest-
Shamir-Adleman), trong đó khóa công khai và khóa bí mật được sử dụng để mã hóa và giải mã thông tin cũng như tạo chữ ký số
1 RSA là gì và cách để tạo khóa trong RSA
- RSA được phát minh vào năm 1977 bởi Ron Ripest, Adi Shamir và Leonard Adelinan, do đó có tên là RSA Điều này dựa trên bài toán nhân tử hóa số nguyên, trong đó phép nhân hai số nguyên tố lớn thì dễ nhưng lại khó phân tích thành nhân tử nó trở lại hai số ban đầu
- RSA được sử dụng rộng rãi trong các ứng dụng bảo mật, chẳng hạn nhưmật mã hóa dữ liệu truyền qua mạng, xác thực danh tính, và tạo chữ ký số Nó được coi là một trong những thuật toán mật mã hóa khóa công khai mạnh mẽ và an toàn, bất kể thông tin về khóa công khai được chia sẻ công khai, việc tính toán ngược của nó (tìm khóa bí mật từ khóa công khai) vẫn rất khó khăn Tuy nhiên, để đảm bảo tính bảo mật, RSA yêu cầu sử dụng khóa có độ dài đủ lớn, đặc biệt trong môi trường tính toán hiện đại
- Để tạo một cặp khóa RSA, bao gồm khóa công khai và khóa bí mật, bạn cần thực hiện các bước sau:
o Chọn hai số nguyên nguyên tố (prime numbers): Chọn hai số nguyên tố lớn và khác nhau, thường được gọi là p và q Đây là
Trang 18bước quan trọng, vì tính bảo mật của hệ thống RSA phụ thuộc vào khả năng bảo vệ tính nguyên tố của p và q.
o Tính n = p * q: Nhân hai số nguyên tố p và q để tạo ra một số nguyên dương n Số n này sẽ được sử dụng trong cả khóa công khai và khóa bí mật
o Tính toán hàm số Euler phi(n): Hàm số Euler, thường ký hiệu là φ (phi), là số các số nguyên dương nhỏ hơn n mà không có ước chung lớn hơn 1 với n Công thức tính φ(n) là: φ(n) = (p - 1) * (q -1)
o Chọn một số nguyên e (khóa công khai): Chọn một số nguyên e (1< e < φ(n)) sao cho e là số nguyên tố cùng nhau (coprime) với φ(n) Thông thường, số e được chọn là một số nguyên tố nhỏ như 65537
o Tính khóa bí mật d dựa trên e: Tìm số nguyên d (1 < d < φ(n)) sao cho (e * d - 1) chia hết cho φ(n) Tức là, d là phần dư của phép chia (e * d - 1) cho φ(n)
- Xác định khóa công khai và khóa bí mật:o Khóa công khai (n, e): Khóa công khai bao gồm số nguyên n và e Số
n được chia sẻ công khai với mọi người và được sử dụng để mã hóa dữ liệu
o Khóa bí mật (n, d): Khóa bí mật bao gồm số nguyên n và d Số d đượcgiữ kín và chỉ người sở hữu nó mới có thể sử dụng để giải mã dữ liệu.- Cặp khóa RSA (khóa công khai và khóa bí mật) đã được tạo và có thể
được sử dụng để mã hóa và giải mã dữ liệu hoặc để tạo chữ ký số Việc chọn p và q có thể được thực hiện một lần và sau đó sử dụng nó để tạo ra nhiều cặp khóa RSA
2 Cách encryption và decryption sử dụng RSA
- Mã hóa (Encryption) trong RSA:o Chọn khóa công khai của người nhận: Bạn cần biết khóa công
khai của người nhận, bao gồm số nguyên n và e.o Chuẩn bị thông tin cần mã hóa: Chuyển thông tin cần mã hóa
thành một số nguyên M, thường thông qua một hàm hash Đảm bảo rằng 0 < M < n để đảm bảo tính bảo mật của mã hóa
Trang 19o Mã hóa thông tin: Sử dụng khóa công khai (n, e) của người nhận, tính giá trị của C (ciphertext) bằng cách sử dụng phép tính modulon: C = M^e mod n.
o Gửi C (ciphertext) đến người nhận: Bạn có thể gửi giá trị C cho người nhận
- Giải mã (Decryption) trong RSA:o Chọn khóa bí mật của người nhận: Người nhận sử dụng khóa bí
mật của mình, bao gồm số nguyên n và d.o Nhận C (ciphertext): Người nhận nhận được giá trị C (ciphertext)
từ bạn.o Giải mã thông tin: Sử dụng khóa bí mật (n, d) của mình, người
nhận tính giá trị của M (plaintext) bằng cách sử dụng phép tính modulo n: M = C^d mod n
o Chuyển đổi M thành thông tin ban đầu: M là một số nguyên, và bạn có thể chuyển đổi nó thành thông tin ban đầu (ví dụ: văn bản) thông qua các phép tính phù hợp
III ECC
1 ECC là gì?
- ECC là viết tắt của "Elliptic Curve Cryptography" (Mật mã hóa hình học đường cong elliptic) Đây là một hệ thống mật mã hóa dựa trên hình học đường cong elliptic (elliptic curves), và nó đã trở thành một phần quan trọng của lĩnh vực mật mã hóa và bảo mật thông tin
- ECC sử dụng đường cong elliptic và tính toán trên các điểm trên đường cong này để thực hiện các phép mã hóa và giải mã thông tin, cũng như tạo chữ ký số Một số lợi ích của ECC bao gồm:
o Kích thước khóa nhỏ hơn: So với các hệ thống mật mã hóa truyền thống như RSA, ECC yêu cầu kích thước khóa nhỏ hơn để đạt được cùng mức độ bảo mật Điều này làm cho ECC phù hợp cho các thiết bị có tài nguyên hạn chế
o Hiệu suất tốt: ECC cung cấp hiệu suất cao trong việc mã hóa và giải mã dữ liệu, điều này quan trọng trong các ứng dụng yêu cầu tốc độ cao như giao dịch tài chính trực tuyến và mạng di động
Trang 20o Độ an toàn cao: Các thuật toán ECC đã được thiết kế để cung cấp tính bảo mật cao, và việc giải quyết các vấn đề bảo mật liên quan đến ECC thường rất khó khăn.
- ECC được sử dụng rộng rãi trong các ứng dụng bảo mật như mật mã hóa dữ liệu trên Internet, xác thực danh tính, tạo chữ ký số, và nhiều ứng dụng khác liên quan đến bảo mật thông tin
2 Các phép toán của ECC
- Phương trình đường cong elliptic trên một trường hữu hạn thường có dạng phương trình Weierstrass Một phương trình Weierstrass chuẩn trên một trường hữu hạn F_p (trường hữu hạn với số nguyên tố p) có dạng như sau:
y3 = x + ax + b (mod p)3- Ở đây:
o y và x là các biến số trên trường hữu hạn F_p.o a và b là các hệ số trong phương trình, cũng thuộc trường F_p, và
chúng định nghĩa hình dạng cụ thể của đường cong elliptic.o p là số nguyên tố đại diện cho trường hữu hạn F_p.- Ta phải đảm bảo rằng đường cong elliptic không có điểm trùng lặp
(repeated points), một số điều kiện phải được thỏa mãn Cụ thể, điều kiệnđó là:
o Độ cong (Cofactor) bằng 1: Độ cong (đôi khi được gọi là cofactor)của đường cong elliptic là số lượng điểm trên đường cong chia cho số điểm trên một nhóm con của đường cong Để đảm bảo đường cong không có điểm trùng lặp, độ cong nên bằng 1.o Đường cong không phải là đường cong đơn lẻ (singular curve):
Điều này đảm bảo rằng đường cong không có điểm uốn (cusp) hoặc điểm singularity Điểm singular có thể dẫn đến sự hiện diện của điểm trùng lặp
o Thủ tục chọn a và b: Các hệ số a và b trong phương trình Weierstrass cần được chọn sao cho phương trình x^3 + ax + b không có nghiệm trên trường hữu hạn F_p Điều này cũng đóng góp vào đảm bảo đường cong không có điểm trùng lặp
Trang 21Hình B.1
3 Point addition
- Trong ECC (Elliptic Curve Cryptography), "point addition" (phép cộng điểm) là một phép toán quan trọng để thực hiện phép cộng giữa hai điểm trên đường cong elliptic Phép toán này cho phép tính toán điểm mới trên đường cong bằng cách cộng hai điểm đã cho, và nó là một phần quan trọng của các phép toán mã hóa và xác thực trong ECC
- Việc cộng điểm được thể hiện trong sơ đồ sau Đây là biểu diễn hình học của phép cộng điểm trên các đường cong elip Trong phương pháp này, một đường thẳng đi qua đường cong cắt đường cong tại hai điểm bên dưới P và Q, tạo ra điểm thứ ba nằm giữa đường cong và đường thẳng Điểm này được phản chiếu là P+Q, biểu thị kết quả của phép cộng dưới dạng R Giá trị này được biểu thị dưới dạng P+Q trong sơ đồ sau: