Đồ án tốt nghiệp: Xây dựng chương trình mã hóa và giải mã RSA - Lê Thế Trị

Đồ án tốt nghiệp thuật toán RSA, trình bày chi tiết cơ sở lý thuyết và code chương trình mã hóa, giải mã. Tài liệu tham khảo hữu ích cho sinh viên.

Người đăng

Ẩn danh

Thể loại

Đồ án tốt nghiệp

2018

63
20
2

Phí lưu trữ

30 Point

Tóm tắt

I. Tổng Quan Về Đồ Án Thuật Toán RSA Và Mật Mã Hóa Công Khai

Đồ án thuật toán RSA là một chủ đề nghiên cứu trọng tâm trong lĩnh vực an toàn thông tin, tập trung vào việc xây dựng và triển khai chương trình mã hóa và giải mã dựa trên hệ mật khóa công khai. Trong bối cảnh công nghệ số phát triển, nhu cầu bảo vệ dữ liệu trở nên cấp thiết hơn bao giờ hết. Thuật toán RSA, do Rivest, Shamir và Adleman đề xuất năm 1977, đã trở thành một trong những nền tảng cốt lõi của mật mã hóa bất đối xứng. Hệ thống này sử dụng một cặp khóa: khóa công khai (public key) để mã hóa và khóa bí mật (private key) để giải mã. Điểm đặc biệt của cơ chế này là khóa công khai có thể được chia sẻ rộng rãi mà không làm ảnh hưởng đến tính bảo mật của khóa bí mật. Điều này giải quyết được bài toán phân phối khóa vốn là một thách thức lớn trong các hệ mật mã đối xứng. Một đồ án thuật toán RSA điển hình không chỉ đòi hỏi sự hiểu biết sâu sắc về lý thuyết số học như số nguyên tố lớn, hàm phi Euler, và thuật toán Euclid mở rộng, mà còn yêu cầu kỹ năng lập trình để hiện thực hóa các thuật toán này. Mục tiêu chính của đồ án là xây dựng một chương trình hoàn chỉnh có khả năng sinh cặp khóa RSA, thực hiện mã hóa văn bản hoặc file, và sau đó giải mã file hoặc văn bản đó trở lại dạng ban đầu. Việc triển khai thành công một chương trình như vậy không chỉ là minh chứng cho việc nắm vững kiến thức lý thuyết mà còn thể hiện khả năng ứng dụng vào thực tiễn, góp phần nâng cao an toàn thông tin trong các giao dịch điện tử và lưu trữ dữ liệu.

1.1. Khám phá nguyên lý cơ bản của mật mã hóa RSA

Nguyên lý hoạt động của mật mã hóa RSA dựa trên độ khó của bài toán phân tích một số nguyên lớn thành tích của các thừa số nguyên tố. Đây là một bài toán được cho là không khả thi về mặt tính toán với các công nghệ hiện tại khi số nguyên đó đủ lớn. Cụ thể, hệ thống này bắt đầu bằng việc người nhận tạo ra một cặp khóa. Quá trình này bao gồm việc chọn hai số nguyên tố lớn và phân biệt, ký hiệu là pq. Từ đó, tính toán mô-đun chung n = p * q. Giá trị n này sẽ được công khai cùng với khóa công khai e. Độ an toàn của hệ thống phụ thuộc trực tiếp vào kích thước của n; một n lớn (ví dụ 2048-bit) sẽ khiến việc tìm ra pq trở nên cực kỳ khó khăn. Sau khi có n, hệ thống tiếp tục tính hàm phi Euler φ(n) = (p-1)(q-1). Khóa công khai e được chọn sao cho e là số nguyên tố cùng nhau với φ(n). Cuối cùng, khóa bí mật d được tính toán là nghịch đảo của e theo mô-đun φ(n). Toàn bộ quá trình này đảm bảo rằng chỉ người sở hữu khóa bí mật d mới có thể giải mã thông điệp đã được mã hóa bằng khóa công khai e.

1.2. Vai trò của mã hóa bất đối xứng trong an toàn thông tin

Mã hóa bất đối xứng, hay còn gọi là mật mã hóa khóa công khai, đóng một vai trò không thể thiếu trong hệ thống an toàn thông tin hiện đại. Khác với mã hóa đối xứng (sử dụng cùng một khóa cho cả mã hóa và giải mã), hệ thống này giải quyết triệt để vấn đề phân phối khóa an toàn. Trong một mạng lưới rộng lớn như Internet, việc chia sẻ một khóa bí mật chung cho nhiều bên là rất rủi ro. Mã hóa bất đối xứng loại bỏ rủi ro này bằng cách cho phép mỗi người dùng công khai khóa mã hóa của mình. Bất kỳ ai cũng có thể sử dụng khóa công khai đó để gửi thông tin bảo mật, nhưng chỉ có người sở hữu khóa bí mật tương ứng mới có thể đọc được. Ngoài việc bảo mật dữ liệu, RSA còn là nền tảng cho chữ ký số RSA, một cơ chế quan trọng để xác thực nguồn gốc và đảm bảo tính toàn vẹn của thông tin. Bằng cách ký một thông điệp bằng khóa bí mật, người gửi tạo ra một bằng chứng không thể chối cãi rằng chính họ đã tạo ra thông điệp đó. Điều này có ý nghĩa sống còn trong các giao dịch tài chính, hợp đồng điện tử và các hoạt động yêu cầu tính xác thực cao.

II. Nền Tảng Toán Học Cốt Lõi Của Thuật Toán Mã Hóa RSA

Để xây dựng thành công một đồ án thuật toán RSA, việc nắm vững các khái niệm toán học nền tảng là yêu cầu bắt buộc. Sức mạnh của RSA không đến từ sự phức tạp của các bước thực hiện, mà từ độ khó của các bài toán lý thuyết số cơ bản. Trọng tâm của thuật toán là bài toán phân tích một số nguyên lớn ra thừa số nguyên tố. Tài liệu gốc của đồ án nhấn mạnh: “để hệ RSA được coi là mật thì nhất thiết n = pq phải là một số đủ lớn để việc phân tích nó sẽ không có khả năng về mặt tính toán”. Yếu tố đầu tiên và quan trọng nhất là việc sử dụng các số nguyên tố lớn. Hai số nguyên tố pq được chọn phải đủ lớn và giữ bí mật tuyệt đối. Yếu tố thứ hai là hàm phi Euler, ký hiệu là φ(n), được định nghĩa là số lượng các số nguyên dương nhỏ hơn n và nguyên tố cùng nhau với n. Trong RSA, với n = p * q, giá trị này được tính đơn giản là φ(n) = (p-1)(q-1). Giá trị này đóng vai trò then chốt trong việc xác định mối quan hệ giữa khóa công khai và khóa bí mật. Yếu tố thứ ba là thuật toán Euclid mở rộng, công cụ dùng để tìm nghịch đảo modular. Thuật toán này cho phép tính toán khóa bí mật d từ khóa công khai eφ(n) một cách hiệu quả. Cuối cùng, quá trình mã hóa và giải mã thực chất là các phép toán lũy thừa theo mô-đun (modular exponentiation), một kỹ thuật tính toán hiệu quả để xử lý các số mũ rất lớn mà không làm tràn bộ nhớ.

2.1. Tầm quan trọng của việc chọn cặp số nguyên tố lớn

Nền tảng bảo mật của toàn bộ hệ thống RSA nằm ở việc lựa chọn hai số nguyên tố lớn pq. Độ khó của việc phá mã RSA tương đương với độ khó của việc phân tích số n (mô-đun công khai) thành hai thừa số nguyên tố pq. Nếu một kẻ tấn công có thể tìm ra pq từ n, họ có thể dễ dàng tính toán φ(n) và từ đó suy ra khóa bí mật d. Do đó, pq phải được chọn sao cho tích của chúng, n, đủ lớn để chống lại các thuật toán phân tích thừa số hiện đại nhất. Trong thực tế, các hệ thống RSA an toàn thường sử dụng các khóa có độ dài từ 2048 bit trở lên, tương đương với n có khoảng 617 chữ số thập phân. Ngoài ra, pq không nên quá gần nhau, và p-1 cùng q-1 nên có các thừa số nguyên tố lớn để tăng cường khả năng chống lại một số loại tấn công cụ thể. Việc kiểm tra một số có phải là số nguyên tố hay không (primality testing), đặc biệt với các số lớn, thường sử dụng các thuật toán xác suất như Miller-Rabin để đảm bảo hiệu quả.

2.2. Tìm hiểu hàm phi Euler và vai trò trong việc tạo khóa

Hàm phi Euler, hay hàm totient của Euler, φ(n), là một khái niệm trung tâm trong lý thuyết số và là trái tim của cơ chế sinh cặp khóa RSA. Định lý Euler phát biểu rằng với mọi số nguyên an nguyên tố cùng nhau, ta có a^φ(n) ≡ 1 (mod n). Đây chính là cơ sở toán học cho phép quá trình giải mã trong RSA hoạt động chính xác. Cụ thể, khi sinh cặp khóa RSA, sau khi đã chọn pq và tính n = p*q, bước tiếp theo là tính φ(n) = (p-1)(q-1). Không gian khóa của RSA được xác định trong vành Z_φ(n). Khóa công khai e và khóa bí mật d được chọn sao cho e*d ≡ 1 (mod φ(n)). Điều này có nghĩa là d là nghịch đảo nhân của e trong mô-đun φ(n). Nhờ mối quan hệ này, khi giải mã, ta có (M^e)^d = M^(e*d) = M^(k*φ(n) + 1) ≡ M (mod n), khôi phục lại bản rõ M ban đầu. Rõ ràng, việc tính toán φ(n) đòi hỏi phải biết pq, điều này một lần nữa khẳng định tầm quan trọng của việc giữ bí mật hai số nguyên tố này.

III. Hướng Dẫn Chi Tiết Quy Trình Sinh Cặp Khóa RSA Tối Ưu

Quy trình sinh cặp khóa RSA là bước khởi đầu và quan trọng nhất trong việc triển khai thuật toán. Một cặp khóa được tạo ra một cách an toàn sẽ đảm bảo tính bảo mật cho toàn bộ quá trình truyền tin sau này. Quá trình này có thể được chia thành các bước rõ ràng, dựa trên nền tảng toán học đã được phân tích. Đầu tiên, cần lựa chọn hai số nguyên tố lớn và khác nhau, pq. Việc này thường được thực hiện bằng cách tạo ra các số lẻ ngẫu nhiên có độ dài bit mong muốn và sau đó sử dụng thuật toán kiểm tra nguyên tố (ví dụ: Miller-Rabin) để xác nhận. Sau khi có pq, bước tiếp theo là tính toán mô-đun công khai n = p * q. Kích thước của n (tính bằng bit) chính là độ dài của khóa. Tiếp theo, giá trị của hàm phi Euler φ(n) được tính bằng công thức (p-1)(q-1). Bước thứ tư là chọn khóa công khai e, một số nguyên sao cho 1 < e < φ(n)e phải nguyên tố cùng nhau với φ(n) (tức là gcd(e, φ(n)) = 1). Các giá trị e phổ biến thường được chọn là các số nhỏ có ít bit 1 trong biểu diễn nhị phân, như 3, 17, hoặc 65537 (2^16 + 1), để tăng tốc độ mã hóa. Cuối cùng, khóa bí mật d được tính toán. Đây là nghịch đảo của e theo mô-đun φ(n), tức là d ≡ e^-1 (mod φ(n)). Việc tính toán này được thực hiện hiệu quả bằng thuật toán Euclid mở rộng. Kết quả cuối cùng là cặp khóa: khóa công khai và khóa bí mật {e, n}{d, n}.

3.1. Lựa chọn số nguyên tố p và q trong lập trình C Java Python

Trong môi trường lập trình C++/Java/Python, việc lựa chọn các số nguyên tố pq đòi hỏi phải sử dụng các thư viện hỗ trợ xử lý số lớn (BigInteger hoặc tương đương), vì các kiểu dữ liệu số nguyên cơ bản không thể chứa được các số có độ dài hàng nghìn bit. Quy trình điển hình bao gồm: (1) Sinh một số ngẫu nhiên lớn có độ dài bit xác định. Để đảm bảo số này là số lẻ, bit cuối cùng có thể được đặt thành 1. (2) Sử dụng một thuật toán kiểm tra nguyên tố xác suất, phổ biến nhất là Miller-Rabin, để kiểm tra xem số vừa sinh có phải là số nguyên tố hay không với độ chắc chắn cao. Thuật toán này được lặp lại nhiều lần (ví dụ 15-20 lần) để giảm xác suất sai sót xuống mức không đáng kể. Nếu số đó không phải là nguyên tố, quay lại bước 1 và sinh số mới. Quá trình này được lặp lại cho đến khi tìm được cả pq thỏa mãn điều kiện. Các ngôn ngữ như Python và Java có các thư viện tích hợp sẵn giúp việc này trở nên dễ dàng hơn.

3.2. Tính toán mô đun n và giá trị hàm phi Euler φ n

Sau khi đã có hai số nguyên tố pq, việc tính toán mô-đun n và giá trị hàm phi Euler φ(n) là tương đối đơn giản. Mô-đun n được tính bằng phép nhân trực tiếp: n = p * q. Đây là một phần của cả khóa công khai và khóa bí mật. Giá trị φ(n) được tính bằng công thức: φ(n) = (p-1) * (q-1). Trong quá trình triển khai code, cần đảm bảo rằng các biến lưu trữ nφ(n) có khả năng chứa các giá trị rất lớn. Ví dụ, nếu pq là các số 1024-bit, thì n sẽ là một số 2048-bit. Việc tính toán này là bước đệm quan trọng để xác định các số mũ ed cho quá trình mã hóa và giải mã. Sau khi đã tính xong nφ(n), các giá trị p, q, và φ(n) phải được giữ bí mật tuyệt đối. Chỉ có ne được công khai.

IV. Phương Pháp Mã Hóa Văn Bản Và Giải Mã File Với Code RSA

Sau khi cặp khóa đã được tạo, đồ án thuật toán RSA đi vào giai đoạn cốt lõi: xây dựng chức năng mã hóa và giải mã. Quá trình này biến đổi dữ liệu gốc (plaintext) thành dạng không thể đọc được (ciphertext) và ngược lại. Về bản chất, cả mã hóa và giải mã trong RSA đều là các phép toán lũy thừa theo mô-đun. Để mã hóa văn bản hoặc một khối dữ liệu M (đã được chuyển đổi thành dạng số và phải nhỏ hơn n), công thức được áp dụng là: C = M^e mod n. Ở đây, C là bản mã, M là bản rõ, và {e, n} là khóa công khai của người nhận. Bất kỳ ai có khóa công khai của người nhận đều có thể thực hiện phép tính này. Ngược lại, để giải mã file hoặc văn bản, người nhận sử dụng khóa bí mật của mình. Công thức giải mã là: M = C^d mod n. Ở đây, d là khóa bí mật tương ứng. Chỉ người sở hữu d mới có thể thực hiện phép tính này để khôi phục lại bản rõ M ban đầu. Một thách thức kỹ thuật quan trọng trong việc triển khai là xử lý các phép toán với số mũ rất lớn. Việc tính M^e trực tiếp rồi mới lấy mô-đun n là không khả thi. Thay vào đó, phải sử dụng thuật toán modular exponentiation (lũy thừa theo mô-đun), ví dụ như thuật toán bình phương và nhân, để tính toán hiệu quả và tránh tràn số.

4.1. Quy trình mã hóa thông điệp bằng khóa công khai

Quá trình mã hóa văn bản bằng khóa công khai bao gồm các bước sau. Đầu tiên, bản rõ M cần được chuyển đổi thành một hoặc nhiều số nguyên. Nếu bản rõ là một chuỗi ký tự, mỗi ký tự có thể được chuyển đổi thành giá trị ASCII hoặc Unicode tương ứng. Sau đó, các giá trị số này được ghép lại để tạo thành các khối số nguyên m_i, sao cho mỗi khối m_i nhỏ hơn mô-đun n. Kỹ thuật này được gọi là padding (đệm), giúp tăng cường an toàn và đảm bảo dữ liệu đầu vào phù hợp với yêu cầu của thuật toán. Với mỗi khối số nguyên m_i, phép mã hóa được thực hiện bằng cách tính c_i = m_i^e mod n, trong đó {e, n} là khóa công khai của người nhận. Kết quả là một chuỗi các khối bản mã c_i, tạo thành thông điệp đã được mã hóa. Quá trình này có thể được triển khai trong các ngôn ngữ lập trình C++/Java/Python sử dụng các hàm tính lũy thừa theo mô-đun có sẵn trong thư viện xử lý số lớn.

4.2. Kỹ thuật giải mã bản mã trở lại văn bản gốc

Để giải mã, người nhận thực hiện quy trình ngược lại. Người nhận lấy chuỗi các khối bản mã c_i và sử dụng khóa bí mật {d, n} của mình. Với mỗi khối bản mã c_i, phép giải mã được thực hiện bằng công thức m_i = c_i^d mod n. Nhờ vào mối quan hệ toán học giữa ed qua hàm phi Euler, kết quả m_i sẽ chính là khối số nguyên của bản rõ ban đầu. Sau khi tất cả các khối đã được giải mã, chúng được chuyển đổi ngược lại từ dạng số thành chuỗi ký tự ban đầu, khôi phục hoàn toàn thông điệp. Trong một chương trình thực tế, chức năng giải mã file sẽ đọc nội dung file đã mã hóa, thực hiện các bước giải mã trên từng khối dữ liệu, và sau đó ghi kết quả đã giải mã vào một file mới. Tốc độ giải mã (và mã hóa) phụ thuộc nhiều vào hiệu quả của việc thực thi thuật toán modular exponentiation.

V. Báo Cáo Đồ Án RSA Ứng Dụng Thực Tế Và Chữ Ký Số

Một báo cáo đồ án RSA hoàn chỉnh không chỉ trình bày code chương trình mà còn phải phân tích các ứng dụng thực tiễn và những khía cạnh mở rộng của thuật toán. RSA không chỉ dùng để mã hóa dữ liệu. Một trong những ứng dụng quan trọng và phổ biến nhất của nó là tạo và xác minh chữ ký số RSA. Thay vì mã hóa bằng khóa công khai, quá trình ký số lại mã hóa một giá trị đại diện cho thông điệp (thường là giá trị băm - hash) bằng khóa bí mật của người gửi. Công thức là S = H(M)^d mod n, trong đó S là chữ ký, H(M) là giá trị băm của thông điệp M, và {d, n} là khóa bí mật của người gửi. Bất kỳ ai cũng có thể xác minh chữ ký này bằng cách sử dụng khóa công khai của người gửi: H(M) = S^e mod n. Nếu giá trị băm tính toán lại từ thông điệp gốc khớp với giá trị băm được giải mã từ chữ ký, thì chữ ký đó là hợp lệ. Điều này đảm bảo cả tính xác thực (chắc chắn người gửi là ai) và tính toàn vẹn (thông điệp không bị thay đổi). Ngoài ra, RSA còn được sử dụng rộng rãi trong các giao thức bảo mật như SSL/TLS để trao đổi khóa đối xứng một cách an toàn, thiết lập một kênh truyền thông được mã hóa. Việc kết hợp RSA với các thuật toán mã hóa đối xứng (như AES) tạo ra các hệ thống lai, tận dụng tốc độ của mã hóa đối xứng và sự tiện lợi trong quản lý khóa của mật mã hóa bất đối xứng.

5.1. Triển khai chữ ký số RSA để xác thực thông tin

Chữ ký số RSA là một ứng dụng mạnh mẽ để đảm bảo tính không thể chối bỏ (non-repudiation) và tính toàn vẹn dữ liệu. Quy trình triển khai trong một chương trình bao gồm hai phần: ký và xác minh. Để ký một tài liệu, chương trình đầu tiên sẽ sử dụng một hàm băm an toàn (ví dụ SHA-256) để tạo ra một chuỗi băm có độ dài cố định từ nội dung tài liệu. Chuỗi băm này sau đó được mã hóa bằng khóa bí mật của người ký. Chữ ký số chính là kết quả của phép mã hóa này. Chữ ký này sau đó được đính kèm cùng với tài liệu gốc. Để xác minh, người nhận sẽ tách chữ ký và tài liệu. Họ dùng khóa công khai của người ký để giải mã chữ ký, thu được chuỗi băm ban đầu. Đồng thời, họ cũng tính lại chuỗi băm của tài liệu nhận được. Nếu hai chuỗi băm này khớp nhau, chữ ký được xác thực, đồng nghĩa với việc tài liệu là thật và không bị sửa đổi.

5.2. Hạn chế của RSA và các hướng phát triển trong tương lai

Mặc dù là một thuật toán nền tảng, RSA cũng có những hạn chế. Tốc độ mã hóa và giải mã của RSA chậm hơn đáng kể so với các thuật toán đối xứng như AES. Do đó, nó thường không được dùng để mã hóa lượng lớn dữ liệu mà chủ yếu dùng để trao đổi khóa hoặc ký số. Hơn nữa, sự an toàn của RSA phụ thuộc vào độ khó của bài toán phân tích thừa số nguyên tố. Sự ra đời của máy tính lượng tử trong tương lai có thể đe dọa đến RSA, vì thuật toán Shor trên máy tính lượng tử có thể giải bài toán này một cách hiệu quả. Do đó, cộng đồng mật mã học đang tích cực nghiên cứu và phát triển các hệ mật mã hậu lượng tử (post-quantum cryptography), chẳng hạn như mật mã dựa trên lưới (lattice-based cryptography) hay dựa trên hàm băm (hash-based cryptography), để thay thế RSA và các hệ mật khóa công khai truyền thống khác, đảm bảo an toàn thông tin cho tương lai.

03/10/2025

Trích đoạn nội dung tài liệu

Chương 1. Tổng quan về mật mã học 1. Giới thiệu về mật mã học. An toàn thông tin là bảo vệ các đặc tính riêng tư (confidentialy), toàn vẹn (intergrity) và khả dụng (availabity) của thông tin.

- C: (Confidentialy) bảo vệ tính riêng tư của dữ liệu thông qua các cơ chế chứng thực và mã hóa, ngăn ngừa những người không hợp lệ sẽ không được đọc những thông tin. Giống như các bì thư khi phát lương thưởng được dán chữ Confidentialy, chúng ta có thể hình dung trong môi trường công nghệ thông tin là một người chưa đăng nhập vào Domain sẽ không được truy cập những dữ liệu chỉ chia sẻ cho các Domain User. - I: (Intergrity) bảo vệ tính toàn vẹn của dữ liệu thông qua các thuật toán RSA, SHA, MD5. ngăn ngừa attacker thay đổi các thông tin nhạy cảm trong quá trình truyền.

- A: (Available) bảo đảm dữ liệu luôn ở trong trạng thái sẵn sằng đáp ứng nhu cầu của người dùng. - Non-Repudiation: Tính không thể chối bỏ, nghĩa là dữ liệu người nào gửi đi thì họ phải có trách nhiệm với các thông tin của mình thông qua các xác nhận nguồn gốc như chữ kí điện tử. Để thực hiện điều này chúng ta áp dụng các biện pháp xác thực và mã hóa. Và mật mã học là nghiên cứu về vấn đề mã hóa.

Mã hóa là một tiến trình biến đổi dữ liệu từ dạng plaintext (văn bản thuần túy dễ dàng nhận biết) thành kết quả ciphertext, dạng dữ liệu không thể đọc được nếu không được giải mã bằng các khóa thích hợp. Mục tiêu của mã hóa là ngăn ngừa việc tấn công đánh cắp dữ liệu trái phép hoặc phòng ngừa việc mất mát dữ liệu khi bị tấn công vật lý như trộm đĩa cứng, máy tính xách tay hay thậm chí đột nhập vào hệ thống vẫn không thể xem được dữ liệu riêng tư, bí mật đã được bảo vệ bằng các thuật toán mã hóa mạnh mẽ. Khái niệm cơ bản về mật mã học Kỹ thuật mật mã thông qua việc biến đổi hoặc mã hoá thông tin, biến đổi những thông tin nhạy cảm, vấn đề cơ mật thành những văn tự mã hoá có dạng hỗn loạn, làm cho tin tặc khó lòng mà đọc hiểu được, từ đó sẽ đạt được hai mục đích: một là, làm cho tin tặc không biết làm thế nào để giải mã nên cũng không thể thu được những thông tin có bất kỳ ý nghĩa nào trong chuỗi mật mã hỗn loạn đó; hai là làm cho tin tặc không có khả năng làm giả thông tin với chuỗi mật mã hỗn loạn như thế. Khoa học nghiên cứu kỹ thuật mật mã gọi là mật mã học.

Mật mã học bao gồm hai nhánh, là mật mã học lập mã và mật mã học phân tích. Mật mã học lập mã với ý là tiến hành mã hoá thông tin để thực hiện việc che giấu thông tin, còn mật mã học phân tích là ngành học nghiên cứu phân tích giải dịch mật mã. Hai cái đối lập với nhau, nhưng lại thúc đẩy lẫn nhau. Dùng phương pháp mật mã có thể che dấu và bảo hộ những thông tin cơ mật, làm cho người chưa được uỷ quyền không thể lấy được thông tin, những thông tin được giấu kín kia được gọi là văn bản rõ, mật mã có thể đem văn bản rõ biến đổi thành một loại hình khác, gọi là văn bản mật.

Sự biến đổi văn bản rõ thành văn bản mật gọi là mã hoá bảo mật, quá trình người thu nhận hợp pháp khôi phục từ văn bản mật trở thành văn bản rõ được gọi là quá trình giải mã (hoặc giải mật). Người thu nhận phi pháp có ý đồ phân tích từ văn bản mật ra thành văn bản rõ, gọi là giải dịch. Các thành phần của một hệ mật mã Một hệ mật là một bộ 5 (P, C, K, E, D) thoả mãn các điều kiện sau: + P là một tập hữu hạn các bản rõ có thể + C là tập hữu hạn các bản mã có thể + K (không gian khoá) là tập hữu hạn các khoá có thể + Đối với mỗi kK có một quy tắc mã ek: P -> C và một quy tắc giải mã tương ứng dkD. Mỗi ek: P -> C và dk: C -> P là những hàm mà: dk(ek(x)) = x với mọi bản rõ xP.

Điều kiện thứ 4 là tính chất chủ yếu. Nội dung của nó là nếu một bản rõ x được mã hoá bằng ek và bản mã nhận được sau đó được giải mã bằng dk thì ta phải thu được bản rõ ban đầu x. Trong trường hợp này hàm mã hoá ek phải là hàm đơn ánh, nếu không việc giải mã sẽ không thể thực hiện được một cách tường minh. Phân loại các hệ mật mã Hiện nay người ta đã thiết kế ra nhiều loại hệ thống mật mã, nếu như lấy khoá mật mã làm tiêu chuẩn có thể phân các hệ mật mã thành hai loại: + Hệ mật mã đối xứng (còn gọi là mật mã khoá đơn hoặc là mật mã khoá riêng): Trong các hệ mật mã này, khoá mật mã mã hoá bảo mật giống với khoá giải mã hoặc trên thực tế là cùng đẳng cấp.

Lúc này khoá mật mã cần phải có một đường truyền an toàn để truyền đưa khoá mật mã từ phía người truyền cho phía người nhận. Đặc điểm của mật mã đối xứng là bất luận khi gia công bảo mật hay là khi giải mã đều sử dụng cùng một khoá mật mã. Do đó tính an toàn của mật mã này là sự an toàn của khoá mật mã. nếu như khoá mật mã bị tiết lộ, thì hệ thống mật mã này sẽ bị phá vỡ.

Mật mã đối xứng có ảnh hưởng nhất là phép tính DES do cục tiêu chuẩn quốc gia Mỹ công bố vào năm 1977. - Ưu điểm: Tính an toàn cao, tốc độ giải mã nhanh. - Nhược điểm:  Theo sự mở rộng của quy mô mạng lưới, việc quản lý khoá mật mã trở thành một việc khó khăn.  Không có cách nào giải quyết vấn đề xác nhận thông tin.

 Thiếu năng lực kiểm tra tự động sự tiết lộ khoá mật mã. + Hệ mật mã bất đối xứng (còn gọi là mật mã khoá công khai hoặc mật mã khoá đôi): Trong các hệ mật mã này quá trình mã hoá và giải mã có chìa khoá khác nhau, lúc này không cần có đường truyền an toàn để truyền đưa khoá mật mã mà chỉ cần bộ phát sinh khoá mã tại chỗ để tạo ra khoá giải mã đồng thời lấy đó để khống chế các thao tác giải mã. Mật mã bất đối xứng là một thể chế mật mã loại mới do W. Do quá trình mã hoá và giải mã của thể chế mật mã bất đối xứng không như nhau và khoá mã bảo mật là công khai, hơn nữa, chỉ yêu cầu bảo mật khoá giải mã, cho nên mật mã bất đối xứng không tồn tại vấn đề quản lý khoá mật mã.

Mật mã bất đối xứng còn một ưu điểm nữa là có thể có khả năng ký tên chữ số và một số chức năng mới. Mật mã bất đối xứng nổi tiếng nhất là thể chế mật mã RSA do ba người là Rivest, Shamir và Adleman đề xuất năm 1977. Khuyết điểm của mật mã bất đối xứng là: phép tính mật mã là tương đối phức tạp, tốc độ giải mã chậm. Do đó, việc bảo mật dữ liệu trên mạng nên dùng cơ chế bảo mật hỗn hợp kết hợp giữa mật mã đối xứng và mật mã bất đối xứng, tức là khi giải mã thì dùng mật mã đối xứng, khi truyền đưa khoá mật mã thì dùng mật mã bất đỗi xứng.

Như thế tức là đã giải quyết được khó khăn trong việc quản lý khoá mật mã, lại vừa giải quyết được vấn đề tốc độ giải mã. Không còn hoài nghi gì nữa, nó là một phương pháp tương đối tốt để giải quyết vấn đề an toàn thông tin khi truyền đưa trên mạng hiện nay. Một số phương pháp mã hóa 1. Mã hóa cổ điển Mã hoá cổ điển là phương pháp mã hoá đơn giản nhất xuất hiện đầu tiên trong lịch sử ngành mã hoá.

Thuật toán đơn giản và dễ hiểu. Những phương pháp mã hoá này là cở sở cho việc nghiên cứu và phát triển thuật toán mã hoá đối xứng được sử dụng ngày nay. Trước khi mã hoá một bản rõ thành bản mã bằng các phương pháp mã hoá, ta xét một sự thiết lập tương ứng giữa các ký tự và các thặng dư theo modulo 26 như sau: A0, B1, …, Z25 hoặc theo bảng A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 1 1 1 1 1 1 1 1 1 2 2 2 2 2 0 1 2 3 4 5 6 7 8 9 12 22 0 1 3 4 5 6 7 8 9 0 1 3 4 5 + Mật mã CAESAR Một trong số những người sử dụng mật mã được biết sớm nhất, đó là Julias Caesar (Xê-Da). Ông đã làm cho các bức thư trở nên bí mật bằng cách dịch mỗi chữ cái đi ba chữ cái về phía trước trong bảng chữ cái (và ba chữ cái cuối cùng thành ba chữ cái đầu tiên).

Đây là 1 ví dụ về sự mã hoá, tức là quá trình làm cho bức thư trở nên bí mật. Phương pháp mã hoá của CAESAR có thể được biểu diễn bởi hàm f, hàm này gán cho số nguyên không âm p, p  25, số nguyên f(p) trong tập 0, 1, 2, … , 25 sao cho: f(p) = (p+3) mod 26. Như vậy, trong phiên bản mã hoá của bức thư, chữ cái được biểu diễn bởi p sẽ được thay bằng chữ cái được biểu diễn bởi: (p+3) mod 26 Để phục hồi lại bức thư gốc đã được mã hoá theo mật mã của CAESAR, ta cần phải dùng hàm ngược f-1 của f: f-1(p) = (p-3) mod 26. Nói cách khác, để tìm lại bức thư gốc, mỗi một chữ cái lùi lại ba chữ trong bảng chữ cái, với ba chữ cái đầu tiên chuyển thành ba chữ cái cuối cùng tương ứng của bảng chữ cái.

Nhận xét: phương pháp mã hoá của CAESAR không có độ an toàn cao. Phương pháp mã hoá này dễ bị khám phá bằng cách dựa vào tần xuất xuất hiện của các chữ cái trong bức thư. + Mã thay thế Mã thay thế có thể được mô tả như sau: Cho P = C = Z26. K chứa mọi hoán vị có thể của 26 kí hiệu 0, 1, …, 25.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ