5 kiểu mã hóa phổ biến và tại sao bạn không nên tự tạo

Tiền mã hóa thường xuyên được đề cập đến trong tin tức, nhưng nó thường là do chính sách của chính phủ được thông báo sai hoặc chịu một phần trách nhiệm cho các hành động tàn bạo khủng bố.
Điều đó bỏ qua mã hóa quan trọng như thế nào. Phần lớn các dịch vụ internet sử dụng mã hóa để giữ thông tin của bạn an toàn.
Tuy nhiên, mã hóa hơi khó hiểu. Có rất nhiều loại, và chúng có những công dụng khác nhau. Vậy làm thế nào để bạn biết loại mã hóa “tốt nhất”?
Vậy, các loại mã hóa chính hoạt động như thế nào? Và tại sao bạn không nên sử dụng thuật toán mã hóa của riêng mình?
Mục Lục
Các loại mã hóa so với Sức mạnh mã hóa
Một trong những kẻ nhầm ngôn ngữ mã hóa lớn nhất đến từ sự khác biệt giữa các loại mã hóa, thuật toán mã hóa và sức mạnh tương ứng của chúng. Hãy chia nhỏ nó:
- Loại mã hóa: Loại mã hóa liên quan đến cách mã hóa được hoàn thành. Ví dụ, mật mã không đối xứng là một trong những loại mã hóa phổ biến nhất trên internet.
- Thuật toán mã hóa: Khi chúng ta thảo luận về sức mạnh của mã hóa, chúng ta đang nói về một thuật toán mã hóa cụ thể. Các thuật toán là nơi bắt nguồn của những cái tên thú vị, như Triple DES, RSA hoặc AES. Tên thuật toán mã hóa thường đi kèm với một giá trị số, như AES-128. Con số đề cập đến kích thước khóa mã hóa và xác định thêm độ mạnh của thuật toán.
Có một số thuật ngữ mã hóa khác mà bạn nên tự làm quen sẽ giúp phần còn lại của cuộc thảo luận này dễ hiểu hơn.
5 thuật toán mã hóa phổ biến nhất
Các loại mã hóa tạo nền tảng cho thuật toán mã hóa, trong khi thuật toán mã hóa chịu trách nhiệm về sức mạnh của mã hóa. Chúng tôi nói về sức mạnh mã hóa tính bằng bit.
Hơn nữa, bạn có thể biết nhiều thuật toán mã hóa hơn những gì bạn nhận ra. Dưới đây là năm loại mã hóa phổ biến nhất, kèm theo một ít thông tin về cách chúng hoạt động.
1. Tiêu chuẩn mã hóa dữ liệu (DES)
Tiêu chuẩn mã hóa dữ liệu là một tiêu chuẩn mã hóa ban đầu của Chính phủ Hoa Kỳ. Ban đầu nó được cho là không thể phá vỡ, nhưng sự gia tăng sức mạnh tính toán và giảm chi phí phần cứng đã khiến mã hóa 56-bit về cơ bản là lỗi thời. Điều này đặc biệt đúng đối với dữ liệu nhạy cảm.
John Gilmore, người đồng sáng lập EFF, người đứng đầu dự án Deep Crack, cho biết “Khi thiết kế các hệ thống và cơ sở hạ tầng an toàn cho xã hội, hãy lắng nghe các nhà mật mã học, không phải các chính trị gia.” Ông cảnh báo rằng thời gian kỷ lục để bẻ khóa DES sẽ gửi “lời cảnh tỉnh” cho bất kỳ ai dựa vào DES để giữ dữ liệu ở chế độ riêng tư.
Tuy nhiên, bạn vẫn sẽ tìm thấy DES trong nhiều sản phẩm. Mã hóa mức thấp dễ thực hiện mà không yêu cầu một lượng lớn sức mạnh tính toán. Như vậy, đây là đặc điểm chung của thẻ thông minh và các thiết bị có nguồn tài nguyên hạn chế.
2. TripleDES
TripleDES (đôi khi được viết là 3DES hoặc TDES) là phiên bản DES mới hơn, an toàn hơn. Khi DES bị bẻ khóa trong vòng chưa đầy 23 giờ, chính phủ nhận ra rằng một vấn đề quan trọng sắp xảy ra. Như vậy, TripleDES đã ra đời. TripleDES tăng cường quy trình mã hóa bằng cách chạy DES ba lần.
Dữ liệu được mã hóa, giải mã và sau đó được mã hóa lại, tạo ra độ dài khóa hiệu dụng là 168 bit. Điều này đủ mạnh cho hầu hết các dữ liệu nhạy cảm. Tuy nhiên, trong khi TripleDES mạnh hơn DES tiêu chuẩn, nó có những khiếm khuyết riêng.
TripleDES có ba các tùy chọn khóa:
- Chìa khóa Tùy chọn 1: Cả ba phím đều độc lập. Phương pháp này cung cấp độ mạnh khóa mạnh nhất: 168-bit.
- Chìa khóa Tùy chọn 2: Khóa 1 và Khóa 2 là độc lập, trong khi Khóa 3 giống như Khóa 1. Phương pháp này cung cấp độ bền khóa hiệu quả là 112 bit (2×56 = 112).
- Chìa khóa Tùy chọn 3: Cả ba phím đều giống nhau. Phương pháp này cung cấp một khóa 56-bit.
Keying tùy chọn 1 là mạnh nhất. Tùy chọn khóa 2 không mạnh bằng nhưng vẫn cung cấp khả năng bảo vệ nhiều hơn so với chỉ mã hóa hai lần với DES. TripleDES là một mật mã khối, có nghĩa là dữ liệu được mã hóa theo kích thước khối cố định này đến kích thước khối cố định khác. Thật không may, kích thước khối TripleDES nhỏ ở mức 64 bit, khiến nó dễ bị tấn công nhất định (như va chạm khối).
3. RSA
RSA (được đặt theo tên của những người tạo ra nó là Ron Rivest, Adi Shamir và Leonard Adleman) là một trong những thuật toán mật mã khóa công khai đầu tiên. Nó sử dụng chức năng mã hóa bất đối xứng một chiều được tìm thấy trong bài viết điều khoản mã hóa được liên kết trước đó.
Nhiều khía cạnh của Internet sử dụng rộng rãi thuật toán RSA. Đây là tính năng chính của nhiều giao thức, bao gồm SSH, OpenPGP, S / MIME và SSL / TLS. Hơn nữa, các trình duyệt sử dụng RSA để thiết lập thông tin liên lạc an toàn qua các mạng không an toàn.
RSA vẫn cực kỳ phổ biến do độ dài khóa của nó. Khóa RSA thường dài 1024 hoặc 2048 bit. Tuy nhiên, các chuyên gia bảo mật tin rằng sẽ không lâu nữa RSA 1024-bit bị bẻ khóa, khiến nhiều tổ chức chính phủ và doanh nghiệp chuyển sang sử dụng khóa 2048-bit mạnh mẽ hơn.
4. Tiêu chuẩn mã hóa nâng cao (AES)
Tiêu chuẩn mã hóa nâng cao (AES) hiện là tiêu chuẩn mã hóa đáng tin cậy của Chính phủ Hoa Kỳ.
Nó dựa trên thuật toán Rijndael được phát triển bởi hai nhà mật mã học người Bỉ, Joan Daemen và Vincent Rijmen. Các nhà mật mã học của Bỉ đã đệ trình thuật toán của họ lên Viện Tiêu chuẩn và Công nghệ Quốc gia (NIST), cùng với 14 người khác cạnh tranh để trở thành người kế nhiệm DES chính thức. Rijndael “chiến thắng” và được chọn làm thuật toán AES được đề xuất vào tháng 10 năm 2000.
AES là một thuật toán khóa đối xứng và sử dụng mật mã khối đối xứng. Nó bao gồm ba kích thước chính: 128, 192 hoặc 256 bit. Hơn nữa, có các vòng mã hóa khác nhau cho từng kích thước khóa.
Một vòng là quá trình chuyển bản rõ thành văn bản mật mã. Đối với 128-bit, có mười vòng. 192-bit có 12 vòng và 256-bit có 14 vòng.
Có những cuộc tấn công về mặt lý thuyết chống lại thuật toán AES, nhưng tất cả đều yêu cầu một mức sức mạnh tính toán và lưu trữ dữ liệu đơn giản là không khả thi trong thời đại hiện nay. Ví dụ: một cuộc tấn công yêu cầu khoảng 38 nghìn tỷ terabyte dữ liệu — nhiều hơn tất cả dữ liệu được lưu trữ trên tất cả các máy tính trên thế giới vào năm 2016. Các ước tính khác cho biết tổng thời gian cần thiết để thực hiện một khóa AES-128 lên tới hàng tỷ trong nhiều năm.
Do đó, chuyên gia mã hóa Bruce Schneier không “tin rằng bất kỳ ai sẽ phát hiện ra một cuộc tấn công sẽ cho phép ai đó đọc được lưu lượng Rijndael”, bên ngoài việc mã hóa học thuật lý thuyết bị phá vỡ. Thuật toán mã hóa Twofish của Schneiers (được thảo luận bên dưới) là đối thủ trực tiếp thách thức Rijndael trong cuộc thi để chọn thuật toán an ninh quốc gia mới. Người ta cho rằng AES sẽ là một thuật toán bằng chứng tính toán lượng tử, bảo vệ chống lại sức mạnh tính toán khổng lồ trong tương lai.
5. Cá hai màu
Twofish từng lọt vào vòng chung kết cuộc thi Tiêu chuẩn mã hóa tiên tiến của Viện Tiêu chuẩn và Công nghệ Quốc gia — nhưng nó đã thua Rijndael. Thuật toán Twofish hoạt động với kích thước khóa 128, 196 và 256 bit và có cấu trúc khóa phức tạp nên khó bẻ khóa.
Các chuyên gia bảo mật coi Twofish là một trong những thuật toán mã hóa nhanh nhất và là sự lựa chọn tuyệt vời cho phần cứng và phần mềm. Hơn nữa, mật mã Twofish miễn phí cho bất kỳ ai sử dụng.
Nó xuất hiện trong một số phần mềm mã hóa miễn phí tốt nhất, chẳng hạn như VeraCrypt (mã hóa ổ đĩa), PeaZip (lưu trữ tệp) và KeePass (quản lý mật khẩu mã nguồn mở), cũng như tiêu chuẩn OpenPGP.
Bạn có nên tạo thuật toán mã hóa của riêng mình không?
Bạn đã thấy một số thuật toán mã hóa tốt nhất (và hiện không còn tồn tại) có sẵn. Các thuật toán này là tốt nhất vì về cơ bản chúng không thể bị phá vỡ (ít nhất là vào thời điểm hiện tại).
Nhưng còn việc tạo thuật toán mã hóa homebrew thì sao? Việc tạo một hệ thống riêng tư an toàn có giữ cho dữ liệu của bạn được an toàn không? Đặt trong thời gian ngắn, không! Hoặc có lẽ tốt hơn nên nói không nhưng…
Các thuật toán mã hóa tốt nhất được bảo mật về mặt toán học, được thử nghiệm với sự kết hợp của những máy tính mạnh nhất kết hợp với những bộ óc thông minh nhất. Các thuật toán mã hóa mới trải qua một loạt các bài kiểm tra nghiêm ngặt được biết là có thể phá vỡ các thuật toán khác, cũng như các cuộc tấn công dành riêng cho thuật toán mới.
Lấy ví dụ thuật toán AES:
- NIST đã kêu gọi các thuật toán mã hóa mới vào tháng 9 năm 1997.
- NIST đã nhận được 15 thuật toán AES tiềm năng vào tháng 8 năm 1998.
- Tại một hội nghị vào tháng 4 năm 1999, NIST đã chọn ra năm thuật toán cuối cùng: MARS, RC6, Rijndael, Serpent và Twofish.
- NIST tiếp tục thử nghiệm và nhận các bình luận cũng như hướng dẫn từ cộng đồng mật mã cho đến tháng 5 năm 2000.
- Vào tháng 10 năm 2000, NIST xác nhận Rijndael là AES triển vọng, sau đó một giai đoạn tham vấn khác bắt đầu.
- Rijndael, với tư cách là AES, đã được xuất bản thành Tiêu chuẩn xử lý thông tin liên bang vào tháng 11 năm 2001. Việc xác nhận bắt đầu kiểm tra xác nhận theo Chương trình xác thực thuật toán mật mã.
- AES trở thành tiêu chuẩn mã hóa chính thức của chính phủ liên bang vào tháng 5 năm 2002.
Bạn không có đủ tài nguyên để tạo một thuật toán mã hóa mạnh
Vì vậy, bạn thấy đấy, việc tạo ra một mã hóa thực sự an toàn, lâu dài và mạnh mẽ cần có thời gian và phân tích chuyên sâu từ một số tổ chức bảo mật mạnh nhất trên hành tinh. Hoặc, như Bruce Schneier nói:
“Bất kỳ ai cũng có thể phát minh ra một thuật toán mã hóa mà bản thân họ không thể phá vỡ; việc phát minh ra một thuật toán mà không ai khác có thể phá vỡ được thì khó hơn nhiều.”
Và đó là nơi nhưng tất nhiên, bạn có thể viết một chương trình lấy văn bản của bạn, nhân giá trị bảng chữ cái của mỗi chữ cái với 13, thêm 61, rồi gửi cho người nhận.
Đầu ra là một mớ hỗn độn, nhưng hệ thống vẫn hoạt động nếu người nhận của bạn biết cách giải mã nó. Tuy nhiên, nếu bạn sử dụng mã hóa homebrew của mình một cách hoang dã, để gửi thông tin riêng tư hoặc nhạy cảm, bạn sẽ có một khoảng thời gian tồi tệ. Có một lý do khiến chúng tôi tin tưởng các ứng dụng nhắn tin sử dụng mã hóa đầu cuối thay vì chỉ gửi tin nhắn ở dạng văn bản rõ ràng.
Còn một nữa nếu, cũng vậy. Nếu bạn muốn tìm hiểu về mã hóa và mật mã, bạn nên thử nghiệm với sự phát triển và phá vỡ thuật toán mã hóa do cá nhân phát triển. Chỉ cần không yêu cầu bất cứ ai sử dụng nó!
Mã hóa được tốt nhất để lại cho các chuyên gia
Mã hóa là quan trọng. Hiểu cách thức hoạt động của nó là hữu ích nhưng không bắt buộc phải sử dụng nó. Có rất nhiều cách để mã hóa cuộc sống hàng ngày của bạn mà không tốn nhiều công sức. Ví dụ: bạn có thể bắt đầu bằng cách mã hóa ổ cứng hoặc ổ flash USB.
Điều cấp thiết là nhận ra rằng cộng đồng toàn cầu siêu mạng của chúng ta cần mã hóa để duy trì an toàn. Thật không may, có một số lượng lớn các chính phủ và cơ quan chính phủ muốn các tiêu chuẩn mã hóa yếu hơn. Điều đó không bao giờ được xảy ra.
Việc mày mò với các thuật toán mã hóa cá nhân là hoàn toàn ổn. Nếu bạn muốn tìm hiểu và hiểu thêm về mã hóa, đó là một trong những điều tốt nhất nên làm! Nhưng trừ khi bạn đang kiểm tra thuật toán mã hóa đó và thử nghiệm rộng rãi, có lẽ tốt nhất bạn nên giữ nó như một nỗ lực riêng tư.