Mật mã có lịch sử lâu đời từ khi người Hy Lạp và La Mã cổ đại gửi các thông điệp bí mật bằng cách thay thế các chữ cái chỉ có thể giải mã bằng một khóa bí mật. Tham gia với chúng tôi để có bài học lịch sử nhanh và tìm hiểu thêm về cách hoạt động của mã hóa.

Trong ấn bản hôm nay của HTG Explains, chúng tôi sẽ cung cấp cho bạn một sơ lược về lịch sử mã hóa, cách thức hoạt động và một số ví dụ về các loại mã hóa khác nhau — hãy đảm bảo rằng bạn cũng xem ấn bản trước, nơi chúng tôi giải thích lý do tại sao rất nhiều chuyên gia lập trình ghét Internet Nhà thám hiểm.

Hình ảnh của xkcd, chắc chắn.

Những ngày đầu của mã hóa

Người Hy Lạp cổ đại đã sử dụng một công cụ gọi là Scytale để giúp mã hóa các thông điệp của họ nhanh hơn bằng cách sử dụng mật mã chuyển vị — họ chỉ cần quấn dải giấy da xung quanh hình trụ, viết ra thông điệp và sau đó khi không được buộc sẽ không có ý nghĩa gì.

Tất nhiên, phương pháp mã hóa này có thể khá dễ bị phá vỡ, nhưng nó là một trong những ví dụ đầu tiên về mã hóa thực sự được sử dụng trong thế giới thực.

Julius Caesar đã sử dụng một phương pháp tương tự trong thời của mình bằng cách chuyển từng chữ cái trong bảng chữ cái sang phải hoặc sang trái theo một số vị trí — một kỹ thuật mã hóa được gọi là mật mã Caesar. Ví dụ: bằng cách sử dụng mật mã mẫu bên dưới, bạn sẽ viết “GEEK” là “JHHN”.

Plain:  ABCDEFGHIJKLMNOPQRSTUVWXYZ
Cipher: DEFGHIJKLMNOPQRSTUVWXYZABC

Vì chỉ người nhận thông điệp dự định mới biết mật mã, nên người tiếp theo sẽ khó giải mã thông điệp, thông điệp này có vẻ như là vô nghĩa, nhưng người có mật mã có thể dễ dàng giải mã và đọc nó.

Các mật mã mã hóa đơn giản khác như hình vuông Polybius đã sử dụng mật mã đa pha liệt kê từng chữ cái với các vị trí số tương ứng trên đầu và bên cạnh để cho biết vị trí của chữ cái.

Sử dụng bảng như bảng trên, bạn sẽ viết chữ cái “G” là “23” hoặc “GEEK” là “23 31 31 43”.

Máy Enigma

Trong Chiến tranh thế giới thứ hai, người Đức đã sử dụng máy Enigma để chuyển các đường truyền được mã hóa qua lại, mất nhiều năm trước khi người Ba Lan có thể bẻ khóa các thông điệp và đưa ra giải pháp cho lực lượng Đồng minh, vốn là công cụ giúp họ chiến thắng.

Lịch sử của mã hóa hiện đại

Hãy đối mặt với nó: các kỹ thuật mã hóa hiện đại có thể là một chủ đề cực kỳ nhàm chán, vì vậy thay vì chỉ giải thích chúng bằng lời nói, chúng tôi đã tạo ra một bộ truyện tranh nói về lịch sử của mã hóa, lấy cảm hứng từ hướng dẫn về AES của Jeff Moser. Lưu ý: rõ ràng chúng tôi không thể truyền tải mọi thứ về lịch sử mã hóa trong một bộ truyện tranh.

Quay lại những ngày đó, mọi người không có một phương pháp mã hóa tốt để bảo mật thông tin liên lạc điện tử của họ.

Lucifer là tên được đặt cho một số mật mã khối dân sự đầu tiên, được phát triển bởi Horst Feistel và các đồng nghiệp của ông tại IBM.

Tiêu chuẩn mã hóa dữ liệu (DES) là một mật mã khối (một dạng mã hóa bí mật được chia sẻ) đã được Cục Tiêu chuẩn Quốc gia chọn làm Tiêu chuẩn xử lý thông tin liên bang chính thức (FIPS) cho Hoa Kỳ vào năm 1976 và sau đó đã được phổ biến rộng rãi. sử dụng quốc tế.

Mối quan tâm về bảo mật và hoạt động tương đối chậm của DES trong phần mềm đã thúc đẩy các nhà nghiên cứu đề xuất nhiều thiết kế mật mã khối thay thế, bắt đầu xuất hiện vào cuối những năm 1980 và đầu những năm 1990: các ví dụ bao gồm RC5, Blowfish, IDEA, NewDES, SAFER, CAST5 và FEAL

Thuật toán mã hóa Rijndael đã được Chính phủ Hoa Kỳ chấp nhận làm mã hóa khóa đối xứng tiêu chuẩn, hoặc Tiêu chuẩn mã hóa nâng cao (AES). AES được Viện Tiêu chuẩn và Công nghệ Quốc gia (NIST) công bố là US FIPS PUB 197 (FIPS 197) vào ngày 26 tháng 11 năm 2001 sau một quá trình tiêu chuẩn hóa kéo dài 5 năm, trong đó mười lăm thiết kế cạnh tranh đã được trình bày và đánh giá trước khi Rijndael được chọn là nhất thuật toán mã hóa phù hợp.

Hiệu suất thuật toán mã hóa

Nhiều thuật toán mã hóa tồn tại và tất cả chúng đều phù hợp với các mục đích khác nhau — hai đặc điểm chính xác định và phân biệt một thuật toán mã hóa này với một thuật toán mã hóa khác là khả năng bảo mật dữ liệu được bảo vệ trước các cuộc tấn công cũng như tốc độ và hiệu quả khi làm như vậy.

Là một ví dụ điển hình về sự khác biệt về tốc độ giữa các loại mã hóa khác nhau, bạn có thể sử dụng tiện ích đo điểm chuẩn được tích hợp trong trình hướng dẫn tạo khối lượng của TrueCrypt — như bạn có thể thấy, AES cho đến nay là loại mã hóa mạnh nhanh nhất.

Có cả hai phương pháp mã hóa chậm hơn và nhanh hơn, và chúng đều phù hợp cho các mục đích khác nhau. Nếu bạn chỉ đơn giản là cố gắng giải mã một phần nhỏ dữ liệu thường xuyên, bạn có thể đủ khả năng sử dụng mã hóa mạnh nhất có thể, hoặc thậm chí mã hóa nó hai lần với các loại mã hóa khác nhau. Nếu bạn yêu cầu tốc độ, bạn có thể muốn sử dụng AES.

Để biết thêm về việc đánh giá điểm chuẩn các loại mã hóa khác nhau, hãy xem một báo cáo từ Đại học Washington St. Louis, nơi họ đã thực hiện rất nhiều thử nghiệm trên các quy trình khác nhau và giải thích tất cả bằng một bản viết rất thú vị.

Các loại mã hóa hiện đại

Tất cả các thuật toán mã hóa ưa thích mà chúng ta đã nói trước đó hầu hết được sử dụng cho hai loại mã hóa khác nhau:

  • Các thuật toán khóa đối xứng sử dụng các khóa mã hóa có liên quan hoặc giống hệt nhau cho cả mã hóa và giải mã.
  • Các thuật toán khóa bất đối xứng sử dụng các khóa khác nhau để mã hóa và giải mã — điều này thường được gọi là Mật mã khóa công khai.

Mã hóa khóa đối xứng

Để giải thích khái niệm này, chúng tôi sẽ sử dụng phép ẩn dụ dịch vụ bưu chính được mô tả trong Wikipedia để hiểu cách hoạt động của các thuật toán khóa đối xứng.

Alice đặt thông điệp bí mật của mình vào một chiếc hộp và khóa hộp bằng một ổ khóa mà cô ấy có chìa khóa. Sau đó, cô ấy gửi hộp cho Bob qua thư thông thường. Khi Bob nhận được chiếc hộp, anh ta sử dụng một bản sao giống hệt chiếc chìa khóa của Alice (mà anh ta đã lấy được bằng cách nào đó trước đó, có thể bằng một cuộc gặp mặt trực tiếp) để mở hộp và đọc tin nhắn. Sau đó, Bob có thể sử dụng cùng một ổ khóa để gửi thư trả lời bí mật của mình.

Các thuật toán khóa đối xứng có thể được chia thành mật mã luồng và mật mã khối — mật mã luồng mã hóa từng bit của thông báo tại một thời điểm và mật mã khối lấy một số bit, thường là các khối 64 bit tại một thời điểm và mã hóa chúng như một đơn vị duy nhất. Có rất nhiều thuật toán khác nhau mà bạn có thể lựa chọn — các thuật toán đối xứng phổ biến và được tôn trọng nhiều hơn bao gồm Twofish, Serpent, AES (Rijndael), Blowfish, CAST5, RC4, TDES và IDEA.

Mã hóa không đối xứng

Trong hệ thống khóa bất đối xứng, Bob và Alice có các ổ khóa riêng biệt, thay vì ổ khóa đơn với nhiều khóa từ ví dụ đối xứng. Lưu ý: tất nhiên đây là một ví dụ đơn giản hóa quá mức về cách nó thực sự hoạt động, phức tạp hơn nhiều, nhưng bạn sẽ có được ý tưởng chung.

Đầu tiên, Alice yêu cầu Bob gửi ổ khóa đang mở của anh ấy cho cô ấy qua thư thông thường, giữ chìa khóa của anh ấy cho riêng mình. Khi Alice nhận được nó, cô ấy dùng nó để khóa một hộp chứa tin nhắn của mình và gửi chiếc hộp đã khóa cho Bob. Sau đó Bob có thể mở khóa hộp bằng chìa khóa của mình và đọc tin nhắn từ Alice. Để trả lời, Bob cũng phải lấy ổ khóa đang mở của Alice để khóa chiếc hộp trước khi gửi lại cho cô ấy.

Lợi thế quan trọng trong hệ thống khóa bất đối xứng là Bob và Alice không bao giờ cần gửi một bản sao khóa của họ cho nhau. Điều này ngăn bên thứ ba (ví dụ: một nhân viên bưu điện hư hỏng) sao chép khóa khi nó đang được chuyển đi, cho phép bên thứ ba theo dõi tất cả các tin nhắn trong tương lai được gửi giữa Alice và Bob. Ngoài ra, nếu Bob bất cẩn và cho phép người khác sao chép của anh ấy chìa khóa, các tin nhắn của Alice gửi cho Bob sẽ bị xâm phạm, nhưng các tin nhắn của Alice gửi cho người khác sẽ được giữ bí mật, vì những người khác sẽ cung cấp các khóa móc khác nhau để Alice sử dụng.

Mã hóa không đối xứng sử dụng các khóa khác nhau để mã hóa và giải mã. Người nhận tin nhắn tạo khóa riêng tư và khóa công khai. Khóa công khai được phân phối giữa những người gửi tin nhắn và họ sử dụng khóa công khai để mã hóa tin nhắn. Người nhận sử dụng khóa riêng của họ bất kỳ tin nhắn mã hóa nào đã được mã hóa bằng khóa công khai của người nhận.

Có một lợi ích lớn khi thực hiện mã hóa theo cách này so với mã hóa đối xứng. Chúng tôi không bao giờ cần phải gửi bất kỳ điều gì bí mật (như khóa mã hóa hoặc mật khẩu của chúng tôi) qua một kênh không an toàn. Khóa công khai của bạn ra thế giới — nó không phải là bí mật và không cần phải như vậy. Khóa riêng tư của bạn có thể luôn kín đáo và ấm cúng trên máy tính cá nhân của bạn, nơi bạn tạo ra nó — nó không bao giờ phải được gửi qua e-mail ở bất cứ đâu hoặc bị đọc bởi những kẻ tấn công.

Cách mã hóa bảo mật thông tin liên lạc trên web

Trong nhiều năm, giao thức SSL (Lớp cổng bảo mật) đã bảo mật các giao dịch web bằng cách sử dụng mã hóa giữa trình duyệt web của bạn và máy chủ web, bảo vệ bạn khỏi bất kỳ ai có thể rình mò mạng ở giữa.

Bản thân SSL khá đơn giản về mặt khái niệm. Nó bắt đầu khi trình duyệt yêu cầu một trang bảo mật (thường là https: //)

Máy chủ web gửi khóa công khai cùng với chứng chỉ của nó.

Trình duyệt kiểm tra xem chứng chỉ được cấp bởi một bên đáng tin cậy (thường là CA gốc đáng tin cậy), chứng chỉ đó vẫn hợp lệ và chứng chỉ có liên quan đến trang web được liên hệ hay không.

Sau đó, trình duyệt sử dụng khóa công khai, để mã hóa một khóa mã hóa đối xứng ngẫu nhiên và gửi nó đến máy chủ với URL được mã hóa theo yêu cầu cũng như dữ liệu http được mã hóa khác.

Máy chủ web giải mã khóa mã hóa đối xứng bằng khóa riêng của nó và sử dụng khóa đối xứng của trình duyệt để giải mã dữ liệu URL và http của nó.

Máy chủ web gửi lại tài liệu html được yêu cầu và dữ liệu http được mã hóa bằng khóa đối xứng của trình duyệt. Trình duyệt giải mã dữ liệu http và tài liệu html bằng cách sử dụng khóa đối xứng và hiển thị thông tin.

Và bây giờ bạn có thể an toàn mua mặt hàng eBay mà bạn thực sự không cần.

Bạn có học được gì không?

Nếu bạn đã tiến xa đến mức này, chúng ta đang ở cuối cuộc hành trình dài để hiểu về mã hóa và một chút về cách hoạt động của nó — bắt đầu từ những ngày đầu của mã hóa với người Hy Lạp và La Mã, sự nổi lên của Lucifer, và cuối cùng là cách SSL sử dụng mã hóa đối xứng và bất đối xứng để giúp bạn mua chú thỏ hồng lông tơ đó trên eBay.


Chúng tôi là những người hâm mộ lớn của mã hóa ở đây tại How-To Geek và chúng tôi đã đề cập đến rất nhiều cách khác nhau để thực hiện những việc như:

  • Bắt đầu với TrueCrypt (để bảo mật dữ liệu của bạn)
  • Thêm mã hóa trang web tự động vào Firefox
  • BitLocker để mã hóa ổ đĩa flash di động trong Windows 7
  • Cách bảo mật PC Linux của bạn bằng cách mã hóa ổ cứng của bạn
  • Thêm tùy chọn mã hóa / giải mã vào menu chuột phải của Windows 7 / Vista
  • Bắt đầu với Mã hóa ổ TrueCrypt trên Mac OS X

Tất nhiên, mã hóa là một chủ đề quá phức tạp để thực sự giải thích mọi thứ. Chúng ta đã bỏ lỡ điều gì đó quan trọng? Vui lòng cung cấp một số kiến ​​thức cho độc giả đồng nghiệp của bạn trong phần bình luận.

Tham khảo (HowToGeek)