MỞ ĐẦU.1 Tiểu mục cấp 1.1 Tiểu mục cấp 2.1 Tiểu mục cấp 3.2 Tiểu mục cấp 3 tiếp theo.2 Tiểu mục cấp 2 tiếp theo.2 Nội dung của chương này.1 CHƯƠNG 2 – TỔNG QUAN.1 Trình bày công thức toán học.2 Trình bày một hình vẽ, sơ đồ.1 CHƯƠNG 3 – CƠ SỞ LÝ THUYẾT / NGHIÊN CỨU THỰC NGHIỆM.3 Trích dẫn.1 Tài liệu tham khảo và cách trích dẫn.2 Qui định của Khoa Công nghệ thông tin.1 2 DANH MỤC KÍ HIỆU VÀ CHỮ VIẾT TẮT CÁ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ụng MF Máy phát điện BER Tỷ lệ bít lỗi 3 DANH 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. 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ớn thà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ìm ra 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ật thô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ạn như RSA, dựa vào khả năng tính toán ngược của thuật toán Integer Factorization.
Đ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ện thừ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ủa thô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 quan trọng và thú vị, và nó đòi hỏi sự phát triển của các thuật toán và phương pháp tính toán mới. 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ột số nguyên x sao cho a^x khi chia cho m cho kết quả b. - Ví dụ: o Nếu a = 2, b = 4 và m = 7, thì discrete logarithm là x = 2, vì 2^2 ≡ 4 (mod 7). o Nếu a = 3, b = 9 và m = 11, thì discrete logarithm là x = 3, vì 3^3 ≡ 9 (mod 11). - 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ư Diffie- Hellman và ElGamal.
Một trong những ứng dụng quan trọng của discrete logarithm 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. - 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. Trong mật mã học, việc tìm discrete logarithm khi m đủ lớn trở nên rất khó bởi không có thuật toán hiệu quả đã được phát triển để giải quyết vấn đề này. Việc này đảm bả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).
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ánh củ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ằng các cặp số thực (x, y) thỏa mãn phương trình đường cong elliptic cụ thể.
Hình dạ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. 6 - 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. 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ệu như 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 1980 và 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 7 năm 1998, Electronic Erontier Foundation (EEF) đã phá vỡ DES bằng cách sử dụng mộ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 bit bằ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ấn cô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ệu suất chậm và kích thước khối 64-bit không mong muốn. 7 - 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ình mã hóa. Để đảm bảo tính bảo mật, khóa ban đầu được mở rộng từ 56 bit thành 64 bit bằng cách thêm vào mỗi byte theo một thứ tự cụ thể. 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ải sử dụng phần padding để điền vào dữ liệu.
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. 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ủa bướ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 ra cá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 16 vòng. 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. 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.
AES ( Advanced Encryption Standard) 8 Năm 2001, sau một cuộc thi mở, một thuật toán mã hóa có tên Rijndael được phát minh bởi các nhà mật mã Joan Daenten và Vincen! Rijmen đã được tiêu chuẩn hóa thà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ộc tấ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ác nhau 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ối chí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ặp mã 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 128- bit key, 12 vòng cho 192-bit key, và 14 vòng cho 256-bit key.
Mỗi vòng lặp bao gồm các bước sau: 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).