Luôn là một lá chắn âm thầm bảo vệ những bí mật chúng ta mỗi ngày trên máy tính và điện thoại, nhưng ít người biết nó có một tuổi đời dài đến như thế nào.
[Magazine] Mã hóa - Chặng đường 2.500 năm từ thời Caesar Đại Đế cho đến tận ngày nay - Ảnh 1.

[Magazine] Mã hóa - Chặng đường 2.500 năm từ thời Caesar Đại Đế cho đến tận ngày nay - Ảnh 2.

Nghệ thuật của viết mật mã, hay như cách chúng ta gọi, mã hóa, đã bắt đầu từ ít nhất 2500 năm trước. Bằng chứng nổi tiếng nhất từ các thư tịch cổ là một đoạn mật mã thay thế được Julius Caesar sử dụng để gửi thư cho Cicero. Cách thức của nó khá đơn giản, bạn bắt đầu với bảng chữ cái ở một dòng và sau đó thêm dòng thứ hai với bảng chữ cái đã được thay đổi vị trí đi một chút.

[Magazine] Mã hóa - Chặng đường 2.500 năm từ thời Caesar Đại Đế cho đến tận ngày nay - Ảnh 3.

Nếu bạn muốn mã hóa chữ "HELLO" vậy bạn lấy chữ cái đầu tiên, H, và tìm chữ cái tương ứng với nó ở dòng thứ hai, chữ E. Tương tự như vậy với các chữ cái còn lại, ta sẽ có dạng mã hóa của chữ "HELLO" là "EBIIL". Đảo ngược lại quá trình trên, ta sẽ giải mã được nó, để có được chữ HELLO. 

Trong trường hợp này, "mã khóa" là 3. Bởi vì bảng chữ cái ở dưới đã được dịch sang phải 3 chữ cái. Nếu bạn đổi mã khóa sang 5, bạn sẽ được bảng chữ cái như dưới đây.

[Magazine] Mã hóa - Chặng đường 2.500 năm từ thời Caesar Đại Đế cho đến tận ngày nay - Ảnh 4.

Lúc này, chữ "HELLO" sẽ được mã hóa thành CZGGJ, khác hoàn toàn với EBIIL. 

Tuy nhiên, có một số vấn đề lớn với dạng mã hóa này. Trước hết, nó sẽ chỉ có 26 mã khóa. Có thể bạn đã nghe thấy thuật ngữ mã khóa 128-bit hay 256-bit, vậy ở đây 26 mã khóa sẽ tương đương với mã khóa 5 bit (26 viết theo hệ nhị phân là 11010). Vì vậy, sẽ không mất quá nhiều thời gian để thử tất 26 biến thể này cho đến khi tìm được biến thể nào phù hợp. 

Vấn đề lớn thứ hai, đó là từ ngữ tiếng Anh (hay các ngôn ngữ khác) có một số đặc điểm nhất định. Ví dụ, chữ E là chữ cái phổ biến nhất trong tiếng Anh, vì vậy nếu bạn là người thạo về văn bản, bạn có thể tìm chữ cái xuất hiện thường xuyên nhất và đoán rằng nó là chữ E. Đổi chữ cái xuất hiện nhiều nhất đó thành chữ E, bạn có thể sẽ đoán được mật mã. 

Ngoài ra còn có một số chữ cái lặp lại trong tiếng Anh như OO, LL, SS, EE hay tương tự như vậy. Vì vậy bạn cũng có thể dựa vào đặc điểm này để đoán khi nhìn thấy những chữ lặp như LL hay GG (với ví dụ trên).

[Magazine] Mã hóa - Chặng đường 2.500 năm từ thời Caesar Đại Đế cho đến tận ngày nay - Ảnh 5.

Chiếc đĩa Mật mã Caesar.

Các yếu tố mã khóa ngắn và sự tương tự giữa chữ cái gốc và chữ cái tương ứng trên mật mã cho thấy cách mã hóa này rất yếu. Đặc biệt với sự giúp đỡ của máy tính ngày nay, việc mã hóa theo cách này còn hơn cả yếu. Do vậy không khó hiểu tại sao, cho đến nay cách mã hóa này chỉ còn thấy xuất hiện trong một số món đồ chơi của trẻ con như chiếc đĩa dưới đây. 

Vào thời điểm hầu hết kẻ thù của mình đều là những người mù chữ, có lẽ cách mã hóa của Caesar cũng có những tác dụng nhất định. Nhưng với phương pháp mã hóa với nhiều điểm yếu và dễ đoán như mật mã thay thế, rõ ràng người ta cần một phương pháp mới chắc chắn hơn cho dữ liệu của mình.

[Magazine] Mã hóa - Chặng đường 2.500 năm từ thời Caesar Đại Đế cho đến tận ngày nay - Ảnh 6.

Các điểm yếu trong mật mã thay thế của Caesar có thể giảm nhẹ đi một chút bằng cách sử dụng nhiều hơn một bảng chữ cái chuyển đổi. Ví dụ dưới đây có thể được mở rộng đến 26 bảng chữ cái chuyển đổi, trong đó một số có thể được sử dụng cùng lúc.

[Magazine] Mã hóa - Chặng đường 2.500 năm từ thời Caesar Đại Đế cho đến tận ngày nay - Ảnh 7.

Vì vậy, nếu chúng ta đặt mã khóa là WVY, điều đó có nghĩa là chúng ta sẽ sử dụng bảng chữ cái bắt đầu với chữ W trước, sau đó là bảng chữ cái bắt đầu với chữ V và cuối cùng là bảng chữ cái bắt đầu với chữ Y. Điều này sẽ được lặp lại cho đến hết đoạn tin mã hóa. Vì vậy, HELLO sẽ trở thành DZIHJ. Như vậy, những chữ lặp như LL trong HELLO sẽ không còn được mã hóa thành cùng một chữ cái nữa, giờ nó đã thành J và H. 

Ý tưởng này, với 26 bảng chữ cái thay thế nhau, là nền tảng cơ bản cho bảng mật mã Vigenere, được xuất bản vào thế kỷ 16 bởi Blaise de Vigenere. Một ý tưởng tương tự cũng đã được mô tả bởi Giovan Battista Bellaso vào năm 1553. Mật mã Vigenere đã đứng vững trong gần 300 năm sau đó, cho đến khi cách phá giải mật mã này được công bố bởi Friedrich Kasiski vào năm 1863. 

Mặc dù vậy, mật mã này bị phá giải lần đầu tiên bởi nhà toán học người Anh, Charles Babbage vào năm 1854. Trước đó, sau khi "bóc mẽ" John Hall Brock Thwaites rằng, mật mã mà ông này gửi lên Tạp chí Society of the Arts chỉ là một phiên bản khác của mật mã Vigenere, Thwaites đã thách thức Babbage giải mã được đoạn mật mã của ông. Không may cho Thwaites, Charles Babbage đã thành công trong việc phá giải nó, nhưng ông không bao giờ giải thích tại sao. Sau này, các nghiên cứu bản ghi chép của Babbage cho thấy, ông đã sử dụng phương pháp tương tự như công bố của Kasiski. 

Bí mật để giải được mật mã Vigenere là việc một số từ sẽ bị lặp lại với cùng các chữ cái đó. Vì dụ, từ "AND" có thể được mã hóa khác nhau trong vài lần đầu tiên nó xuất hiện, nhưng cuối cùng nó sẽ được mã hóa bằng cách sử dụng lại các chữ cái đó. Bạn có thể thấy điều đó qua ví dụ dưới đây, với từ "CRYPTO".

[Magazine] Mã hóa - Chặng đường 2.500 năm từ thời Caesar Đại Đế cho đến tận ngày nay - Ảnh 8.

Tính lặp lại là điểm yếu chung của cả mật mã Caesar, Vigenere và các biến thể khác, đặc biệt với các đoạn thông điệp dài, việc lặp lại cả văn bản gốc và văn bản mã hóa là điều khó có thể tránh khỏi. Việc lặp lại cách mã hóa cuối cùng sẽ dẫn đến sự sụp đổ của cả bộ mật mã. Một lần nữa, ngôi nhà dữ liệu của bạn lại cần một lớp tường thành vững chắc hơn để bảo vệ nó khỏi con mắt của người ngoài.

[Magazine] Mã hóa - Chặng đường 2.500 năm từ thời Caesar Đại Đế cho đến tận ngày nay - Ảnh 9.

Bằng cách tạo ra một bảng mật mã bí mật không bị lặp lại, nó có thể xem như không thể phá. Phương pháp đó được gọi là bảng mã một lần (One Time Pad hay OTP). Ý tưởng ở đây là thay vì sử dụng một bảng chữ cái chuyển đổi tuần tự bằng một chuỗi ngẫu nhiên các chữ cái. Chuỗi này phải thực sự ngẫu nhiên và phải có cùng độ dài với đoạn thông điệp.

[Magazine] Mã hóa - Chặng đường 2.500 năm từ thời Caesar Đại Đế cho đến tận ngày nay - Ảnh 10.

Thay vì chỉ dựa vào việc thay thế từ, lần này chúng ta kết hợp thêm một sự bổ sung nữa. Mỗi chữ cái của bảng chữ cái được gán với một con số. Ví dụ A là 0, B là 1, C là 2, … I là chữ cái thứ 9 trong bảng chữ cái, nghĩa là nó sẽ có giá trị là 8. P (Chữ cái tương ứng với chữ I ở hàng dưới trong bảng mã một lần) có giá trị là 15. 8 15 = 23 nghĩa là chữ X. Chữ cái thứ hai trong thông điệp của bạn là S, có giá trị là 18, giống với chữ cái S ở bảng mã một lần bên dưới, vậy sẽ là 18 18 =36.

[Magazine] Mã hóa - Chặng đường 2.500 năm từ thời Caesar Đại Đế cho đến tận ngày nay - Ảnh 11.

Nhưng do không có chữ cái thứ 36 trong bảng chữ cái, ở đây ta cần đến một sự kết hợp khác. Ta biểu diễn số đó bằng một phép tính tuyệt đối. Về cơ bản nghĩa là ta lấy kết quả chia cho 26 (tổng số chữ cái trong bảng chữ cái) và sử dụng phần còn lại. 36/26 = 1 và còn lại 10. Chữ cái với giá trị tương tự là K. nếu bạn tiếp tục làm như vậy, ta sẽ có đoạn thông điệp được mã hóa là.

[Magazine] Mã hóa - Chặng đường 2.500 năm từ thời Caesar Đại Đế cho đến tận ngày nay - Ảnh 12.

Nguyên nhân làm cho đoạn mã này không thể bị phá vì bạn chỉ sử dụng mã khóa (chuỗi ngẫu nhiên) một lần. Điều này có nghĩa là bất kỳ ai cố gắng giải mã thông điệp đều không có điểm tham chiếu nào và cũng không có sự lặp lại ở đây. Thông điệp tiếp theo sẽ sử dụng một mã khóa ngẫu nhiên khác và tương tự như vậy. 

Tuy nhiên, vấn đề lớn nhất với các bảng mã một lần là đưa mã khóa cho bên khác để họ có thể giải mã được thông điệp. Trước đây, bảng mã này sẽ nằm trong một quyển sách dưới dạng một sổ ghi chép, với các bảng mã khác nhau trên từng trang. Các trang này sẽ được thay đổi hàng ngày và bảng mã nào sau khi sử dụng đều bị xé bỏ và đem tiêu hủy.

[Magazine] Mã hóa - Chặng đường 2.500 năm từ thời Caesar Đại Đế cho đến tận ngày nay - Ảnh 13.

Cuốn sách mật mã (Codebook) được sử dụng trong Nội chiến Mỹ.

Tuy nhiên, các bảng mã này cần được vận chuyển bằng một phương pháp bí mật, nếu không khi ai đó có được bảng mã này, lớp mã hóa sẽ bị bẻ khóa. Về cơ bản, điều này có nghĩa là bạn cần gặp bên còn lại để thỏa thuận trước mật mã nào sẽ được sử dụng và khi nào. Nó là phương pháp bảo mật nhất nhưng cũng bất tiện nhất, do cách vận chuyển và sử dụng các bảng mã này. 

Tuy nhiên, các vấn đề về việc chuyển giao và sử dụng bảng mã nào, cũng như việc mã hóa và giải mã chúng, lại có thể được giải quyết nhờ vào sự tiến bộ của các công nghệ về truyền tin và liên lạc, đặc biệt trong thời đại kỹ thuật số. Từ đây, việc viết mã không còn là vấn đề nữa, mà vấn đề nằm ở việc phân phối mã khóa như thế nào.

[Magazine] Mã hóa - Chặng đường 2.500 năm từ thời Caesar Đại Đế cho đến tận ngày nay - Ảnh 14.

Khởi đầu cho thời đại kỹ thuật số của mã hóa là việc cơ khí hóa quá trình mã hóa và giải mã, với ví dụ nổi tiếng nhất của thời kỳ này là cỗ máy Enigma, được sử dụng rộng rãi trong quân đội Đức Quốc xã cũng như Italia và Nhật Bản trong Thế chiến thứ Hai. Tuy nhiên sau chiến tranh, với sự phát triển của các máy tính, việc mã hóa đã được điện toán hóa. Có ba lợi ích lớn từ việc chuyển đổi này: 

1. Máy tính linh hoạt hơn. Không như những chiếc hộp cơ khí, các máy tính có thể được lập trình để biểu diễn nhiều phép tính khác nhau trên một thông điệp, và số lượng cũng như độ phức tạp của các phép tính này có thể thay đổi một cách nhanh chóng.
2. Tốc độ.
3. Máy tính có thể xử lý cả những chữ số nhị phân chứ không chỉ chữ cái.

[Magazine] Mã hóa - Chặng đường 2.500 năm từ thời Caesar Đại Đế cho đến tận ngày nay - Ảnh 15.

Điểm 1 và 2 rất quan trọng, đặc biệt khi so sánh các máy tính với các phương pháp mã hóa cơ khí. Không những vậy, các máy tính còn xử lý được cả các chữ số và chữ cái. Điều này có nghĩa là việc mã hóa có thể được áp dụng cho bất kỳ loại dữ liệu nào. Một thông điệp bằng văn bản, một bức ảnh, một file âm thanh, một bộ phim, một cơ sở dữ liệu, … 

Với bước chuyển từ chữ cái sang số nhị phân sẽ làm thay đổi cách biểu diễn việc mã hóa. Toàn bộ các chữ cái không còn cần được mã hóa nữa, mà thay vào đó là các số 0 và 1 có thể được tạo thành các chuỗi mới. Từ HELLO trong mã hóa 8-bit ASCII là 0100100001000101010011000100110001001111. Từ đây các số nhị phân có thể được thao tác thành vô số các cách khác nhau như phân chia, chuyển đổi, thêm vào, nhân lên.

[Magazine] Mã hóa - Chặng đường 2.500 năm từ thời Caesar Đại Đế cho đến tận ngày nay - Ảnh 16.

Các phương pháp sử dụng để xử lý các số 1 và 0 này còn được gọi là thuật toán mã hóa, và có nhiều loại thuật toán khác nhau. Các đặc điểm chính của một thuật toán mã hóa là tính bảo mật (nó có thể bẻ khóa hay không) và hiệu năng của nó (mất bao lâu để mã hóa hoặc giải mã dữ liệu). 

Chính từ các yêu cầu để đảm bảo tính bảo mật cũng như hiệu năng mã hóa/giải mã, đã làm nên hai loại mật mã chính: mật mã luồng (stream cipher) và mật mã khối (block cipher). Khi bạn chỉ cần một loại mật mã tốc độ cao cho các dữ liệu có kích thước không biết trước, mật mã luồng sẽ trở thành sự lựa chọn thích hợp. Tuy nhiên, để xử lý những dữ liệu có kích thước đã biết trước như mã hóa file, mã hóa tin nhắn, mật mã khối sẽ làm việc tốt hơn, dù thường chậm hơn. Sự khác biệt nằm ở cách thức mã hóa của mỗi loại mật mã.

[Magazine] Mã hóa - Chặng đường 2.500 năm từ thời Caesar Đại Đế cho đến tận ngày nay - Ảnh 17.

Với mật mã luồng, dữ liệu sẽ được mã hóa đến từng byte tại một thời điểm. Dữ liệu được xử lý từ đầu đến cuối, và được truyền thông qua thuật toán mã hóa. RC4 là ví dụ nổi tiếng nhất của mật mã dòng. Nó được sử dụng trong WEP và là một phương pháp mã hóa không bắt buộc cho hàng loạt các giao thức và sản phẩm khác.

[Magazine] Mã hóa - Chặng đường 2.500 năm từ thời Caesar Đại Đế cho đến tận ngày nay - Ảnh 18.

Mã hóa luồng.

Các mật mã luồng tương tự như bảng mã hóa một lần ở chỗ, dữ liệu không chỉ được mã hóa bởi một mã khóa duy nhất, thay vào đó là một chuỗi các số giả ngẫu nhiên (pseudo-random), dựa trên mã khóa. Sự khác biệt với bảng mã hóa một lần là ở chỗ, mã khóa của bảng mã hóa một lần thực sự ngẫu nhiên. Với các mật mã dòng sử dụng cùng một mã khóa, nghĩa là bạn sẽ có cùng một chuỗi số tương tự nhau, điều đó làm cho bức thông điệp có thể bị giải mã. 

Tuy nhiên, nếu không có mã khóa, chuỗi số vẫn sẽ trông ngẫu nhiên và khó bị phá mã. Điểm yếu của RC4 là trong một số tình huống và điều kiện (chủ yếu khi cùng một dữ liệu được mã hóa lặp đi lặp lại), nó có thể bị đoán được những số nào sẽ xuất hiện tiếp trong chuỗi. (Hay nói cách khác, mật mã luồng không có tính linh hoạt, dù có ưu điểm về tốc độ và mật độ thông tin). 

Phép đoán này sẽ làm giảm số khả năng kết hợp và cho phép thực hiện một cuộc tấn công brute force. Để cuộc tấn công này có thể thành công sẽ cần đến rất nhiều dữ liệu. Cuộc tấn công RC4 NO MORE cần thu thập một lượng dữ liệu mã hóa tương đương 75 giờ đồng hồ với 4450 yêu cầu mỗi giây.

[Magazine] Mã hóa - Chặng đường 2.500 năm từ thời Caesar Đại Đế cho đến tận ngày nay - Ảnh 19.

Khắc phục được nhược điểm về tính linh hoạt là mật mã khối. Hệ mã này hoạt động bằng cách phân chia dữ liệu thành các khối có kích thước cố định, ví dụ 64-bit hay 128-bit. Mỗi khối lađược xử lý nhiều lần, còn được gọi là vòng (như trong môn đấm bốc). Với mỗi vòng, khối này lại được chia thành 2 phần bằng nhau, bên phải và trái. Phần bên phải sẽ được giữ nguyên, trong khi phần bên trái được mã hóa bằng một hàm số đặc biệt, còn gọi là hàm số vòng.

[Magazine] Mã hóa - Chặng đường 2.500 năm từ thời Caesar Đại Đế cho đến tận ngày nay - Ảnh 20.

Một ví dụ về việc phân chia khối 64 bit thành các khối 8 bit.

Hàm số vòng có hai dữ liệu vào, mã khóa và phần bên phải (phần vẫn được giữ nguyên). Kết quả từ hàm số vòng sau đó được thêm vào phần bên trái, sử dụng XOR (phép toán XOR lấy hai dãy bit có cùng độ dài và thực hiện phép toán logic bao hàm OR trên mỗi cặp bit tương ứng). 

Mô hình này còn được gọi là mật mã Feistel, đặt tên theo nhà sáng chế ra nó Horst Feistel, người đã nghiên cứu về mật mã tại IBM. Công trình của ông cuối cùng đã dẫn đến sự phát triển của Chuẩn Mã hóa Dữ liệu DES (Data Encryption Standard). Năm 1977, DES trở thành chuẩn mã hóa chính thức cho nước Mỹ và dần được thế giới đón nhận. DES sử dụng 16 vòng xử lý trên các khối 64-bit. 

Vấn đề với DES là NSA giới hạn kích cỡ mã khóa chỉ đến 56-bit. Dù đây là tiêu chuẩn vừa đủ đối với năm 1977, nhưng đến những năm 1990 các tổ chức phi chính phủ đã có khả năng phá giải được các thông điệp mã hóa bằng DES này.

[Magazine] Mã hóa - Chặng đường 2.500 năm từ thời Caesar Đại Đế cho đến tận ngày nay - Ảnh 21.

Để đối phó với những điểm yếu của DES, một chuẩn mới đã được đề xuất gọi là Triple DES (3DES). Về cơ bản, nó mã hóa dữ liệu gấp 3 lần so với DES, nhưng với 3 mã khóa khác nhau. 3DES đưa ra một cách để tăng kích thước mã khóa từ 56-bit lên 168-bit mà không cần thiết kế một thuật toán mật mã khối hoàn toàn mới. Do một số chi tiết kỹ thuật, mã khóa hiệu quả chỉ là 112 bit, nhưng nếu bạn có một cỗ máy có thể bẻ khóa DES trong một phút, thì cỗ máy đó sẽ mất 260.658 năm để hóa giải được mã khóa Triple DES. 

Trong khi DES đã làm tốt mục đích của nó trong gần 25 năm, giới hạn về độ dài mã khóa cũng có nghĩa là đã đến lúc cho một chuẩn mã hóa khác. Trong năm 2001, Viện Tiêu chuẩn và Công nghệ Mỹ (NIST) đã công bố Chuẩn Mã hóa Tiên tiến (AES: Advanced Encryption Standard). Nó không phải là mật mã Feistel, mà là một mạng lưới hoán vị thay thế. Nó vẫn sử dụng các khối và các vòng giống như DES, tuy nhiên ở mỗi vòng thứ tự của các bit trong khối lại được thay đổi xung quanh và kết quả là sự kết hợp với mã khóa sử dụng XOR.

[Magazine] Mã hóa - Chặng đường 2.500 năm từ thời Caesar Đại Đế cho đến tận ngày nay - Ảnh 22.

SubBytes: Phép thế phi tuyến - mỗi byte được thay thế bằng một byte theo bảng tra.

AES sử dụng các mã khóa 128, 192 hoặc 256 bit và làm việc trên các khối 128 bit. Số lượng các vòng xử lý phụ thuộc vào kích thước của mã khóa. Tối thiểu là 10 khi sử dụng cho các mã khóa 128 bit, và tối đa là 14 khi sử dụng cho các mã khóa 256 bit.

[Magazine] Mã hóa - Chặng đường 2.500 năm từ thời Caesar Đại Đế cho đến tận ngày nay - Ảnh 23.

AES là trái tim của các hệ thống phụ mã hóa trong Android. Với Android 5.0 và 6.0, Google bắt buộc sử dụng AES với ít nhất là một mã khóa 128 bit cho các thiết bị hỗ trợ mã hóa toàn bộ ổ đĩa. Với Android 7, Google đã chuyển sang mã hóa tập tin (FBE File Base Encryption) để cho phép mã hóa các file khác nhau với các mã khóa khác nhau, trong khi vẫn cho phép các file được giải mã một cách độc lập. Dường như FBE trong Android 7 sử dụng AES 256 bit.

[Magazine] Mã hóa - Chặng đường 2.500 năm từ thời Caesar Đại Đế cho đến tận ngày nay - Ảnh 24.

Khi ARM làm nên bước chuyển từ 32 bit sang 64 bit, họ đã định nghĩa nên một kiến trúc tập lệnh mới cho mình, được gọi là ARMv8. Không chỉ xác định tập lệnh mới cho các chip 64 bit, họ cũng bổ sung các tập lệnh mới để cài đặt các phần của thuật toán AES trong phần cứng. Với mỗi vòng xử lý, các bit khác nhau được thay đổi và thay thế xung quanh. Cách các bit được điều khiển như thế nào sẽ được định nghĩa rõ, vì vậy các phần mở rộng AES trong ARMv8 sẽ cho phép các phần của mã hóa được thực thi ở phần cứng thay vì phần mềm. 

Kết quả làm cho việc mã hóa diễn ra với tốc độ rất nhanh, và sẽ có tác động đáng kể đến hiệu năng tổng thể. Việc cài đặt AOSP của mã hóa tập tin sẽ phải sử dụng AES-256 và đòi hỏi một hiệu năng ít nhất là 50 MB/giây.


[Magazine] Mã hóa - Chặng đường 2.500 năm từ thời Caesar Đại Đế cho đến tận ngày nay - Ảnh 25.

Phần lớn những gì ta đã thảo luận cho đến nay còn được gọi là mã hóa đối xứng. Để mã hóa và giải mã một thông điệp, cả người gửi và người nhận đều cần được biết mã khóa bí mật. Còn một hình thức mã hóa khác, được gọi là mã hóa bất đối xứng, khi có 2 mã khóa, một để mã hóa thông điệp và một mã khóa khác để giải mã chúng. 

Mã khóa mã hóa có thể được công khai cho bất kỳ ai muốn gửi cho người nhận một thông điệp, tuy nhiên việc giải mã còn cần một mã khóa bí mật nữa, nhưng chỉ người nhận biết. Điều đó có nghĩa là một mã khóa riêng tư và một mã khóa. Hệ thống này là cơ sở cho cách bảo mật hoạt động trên Internet, cho cách hoạt động của giao thức https. Tuy nhiên, đó sẽ là câu chyện cho một ngày khác.


Nguyễn Hải
Quỳnh.
Theo Trí Thức Trẻ11/02/2017