So sánh mã hóa DES, Triple DES, AES, blowfish cho dữ liệu


Câu trả lời:


245

Sử dụng AES.

Trong chi tiết:

  • DES là "tiêu chuẩn mã hóa dữ liệu" cũ từ những năm bảy mươi. Kích thước khóa của nó quá ngắn để bảo mật đúng cách (56 bit hiệu quả; điều này có thể bị ép buộc, như đã được chứng minh hơn mười năm trước ). Ngoài ra, DES sử dụng các khối 64 bit, điều này gây ra một số vấn đề tiềm ẩn khi mã hóa một vài gigabyte dữ liệu bằng cùng một khóa (một gigabyte ngày nay không phải là lớn).
  • 3DES là một mẹo để sử dụng lại các triển khai DES, bằng cách xếp tầng ba trường hợp của DES (với các khóa riêng biệt). 3DES được cho là an toàn tối thiểu " 2 112 " bảo mật (khá nhiều và khá xa trong lĩnh vực "không thể phá vỡ với công nghệ ngày nay"). Nhưng nó chậm, đặc biệt là trong phần mềm (DES được thiết kế để triển khai phần cứng hiệu quả, nhưng nó hút phần mềm và 3DES hút gấp ba lần).
  • Blowfish là một mật mã khối được đề xuất bởi Bruce Schneier, và được triển khai trong một số phần mềm. Blowfish có thể sử dụng các khóa lớn và được cho là an toàn, ngoại trừ liên quan đến kích thước khối của nó, là 64 bit, giống như DES và 3DES. Blowfish là phần mềm hiệu quả, ít nhất là trên một số nền tảng phần mềm (nó sử dụng các bảng tra cứu phụ thuộc khóa, do đó hiệu suất phụ thuộc vào cách nền tảng xử lý bộ nhớ và bộ nhớ cache).
  • AES là sự kế thừa của DES là thuật toán mã hóa đối xứng tiêu chuẩn cho các tổ chức liên bang Hoa Kỳ (và là tiêu chuẩn cho khá nhiều người khác nữa). AES chấp nhận các khóa 128, 192 hoặc 256 bit (128 bit đã rất không thể phá vỡ), sử dụng các khối 128 bit (vì vậy không có vấn đề gì ở đó) và hiệu quả trong cả phần mềm và phần cứng. Nó đã được lựa chọn thông qua một cuộc thi mở liên quan đến hàng trăm nhà mật mã trong vài năm. Về cơ bản, bạn không thể có tốt hơn thế.

Vì vậy, khi nghi ngờ, hãy sử dụng AES.

Lưu ý rằng mật mã khối là một hộp mã hóa "khối" (khối dữ liệu 128 bit với AES). Khi mã hóa một "tin nhắn" có thể dài hơn 128 bit, tin nhắn phải được chia thành các khối và cách bạn thực hiện việc phân tách được gọi là chế độ hoạt động hoặc "xâu chuỗi". Chế độ ngây thơ (phân chia đơn giản) được gọi là ECB và có vấn đề. Sử dụng một mật mã khối đúng cách là không dễ dàng và điều quan trọng hơn là chọn giữa, ví dụ, AES hoặc 3DES.


4
Là một chút của một hạt, tôi gần như luôn luôn đề nghị AES256
hdost

2
Holy Sh * t, NSA có thể bẻ khóa DES năm 1976 nhưng vẫn khuyến khích sử dụng đến năm 2002! Gọi tôi là hoang tưởng nhưng tôi sợ sự thúc đẩy của AES
Tiến sĩ Deo

25

Tất cả các chương trình này, ngoại trừ AES và Blowfish, đã biết các lỗ hổng và không nên được sử dụng.
Tuy nhiên, Blowfish đã được thay thế bởi Twofish .


11

Các phương thức mã hóa được mô tả là các mật mã khối đối xứng.

Tiêu chuẩn mã hóa dữ liệu (DES) là tiền thân, mã hóa dữ liệu trong các khối 64 bit bằng khóa 56 bit. Mỗi khối được mã hóa riêng rẽ, đây là một lỗ hổng bảo mật.

Triple DES mở rộng độ dài khóa của DES bằng cách áp dụng ba thao tác DES trên mỗi khối: mã hóa bằng khóa 0, giải mã với khóa 1 và mã hóa bằng khóa 2. Các khóa này có thể liên quan.

DES và 3DES thường gặp phải khi giao tiếp với các sản phẩm và dịch vụ thương mại cũ.

AES được coi là sự kế thừa và tiêu chuẩn hiện đại. http://en.wikipedia.org/wiki/Advified_Encrypt_St Chuẩn

Tôi tin rằng việc sử dụng Blowfish không được khuyến khích.

Chúng tôi khuyên bạn không nên cố gắng thực hiện mật mã của riêng mình và thay vào đó hãy sử dụng triển khai cấp cao như GPG cho dữ liệu khi nghỉ ngơi hoặc SSL / TLS cho dữ liệu chuyển tiếp. Dưới đây là một video tuyệt vời và nghiêm túc về các lỗ hổng mã hóa http://rdist.root.org/2009/08/06/google-tech-talk-on-common-crypto-flaws/


2
Tại sao sử dụng blowfish được khuyến khích? Đó không phải là một trong những an toàn nhất?
Yogsma

5
@yogsma: Blowfish có kích thước khối chỉ 64 bit (vì nó có nghĩa là một sự thay thế thả xuống cho các giao thức DES), và do đó gặp vấn đề sau khi một số GB dữ liệu được mã hóa bằng cùng một khóa.
Paŭlo Ebermann

@rohannes, tại sao BlowFish không được khuyến khích, tôi đã đọc ở đâu đó về hiệu suất. BlowFish tốt hơn AES xem bài viết này trên trang web Brighthub.com
Yogesh

9

AES là một thuật toán mã hóa đối xứng, trong khi RSA là thuật toán mã hóa bất đối xứng (hoặc khóa công khai). Mã hóa và giải mã được thực hiện với một khóa duy nhất trong AES, trong khi bạn sử dụng các khóa riêng biệt (khóa chung và khóa riêng) trong RSA. Độ mạnh của khóa AES 128 bit gần tương đương với khóa RSA 2600 bit.


7
bạn có thể cung cấp toán học ủng hộ câu trả lời này, hoặc một nguồn? Tôi rất muốn biết làm thế nào bạn đi đến kết luận rằng AES 128 bit tương đương với RSA 2600 bit (Tôi nhận ra đây là một câu trả lời cũ)
Russell Uhl

3
@RussellUhl - Tôi đồng ý rằng lịch sử của những con số đó là một câu hỏi thú vị, thậm chí sau 2 năm im lặng thêm. :) Những con số này dường như có thể lấy được từ tài liệu PDF này: eprint.iacr.org/2013/635.pdf có tiêu đề Universal security - from bits and mips to pools, lakes – and beyond.
Jesse Chisholm

4

Mặc dù TripleDESCryptoServiceProvider là một phương pháp an toàn và tốt nhưng nó quá chậm. Nếu bạn muốn tham khảo MSDN, bạn sẽ nhận được lời khuyên đó là sử dụng AES thay vì TripleDES. Vui lòng kiểm tra liên kết dưới đây: http://msdn.microsoft.com/en-us/l Library / system.security.cryptography.tripledescryptoserviceprovider.aspx bạn sẽ thấy sự chú ý này trong phần nhận xét:

Lưu ý Có sẵn thuật toán mã hóa đối xứng mới hơn, Tiêu chuẩn mã hóa nâng cao (AES). Cân nhắc sử dụng lớp AesCryptoServiceProvider thay vì lớp TripleDESCryptoServiceProvider. Chỉ sử dụng TripleDESCryptoServiceProvider để tương thích với các ứng dụng và dữ liệu cũ.

Chúc may mắn


3
Điều này thật buồn cười khi Microsoft vẫn tích cực sử dụng TripleDES trong một số sản phẩm của họ để mã hóa ( en.wikipedia.org/wiki/Triple_DES#Usage )
Tom Heard

@Tom bạn đúng nhưng đừng quên nhiều phần mềm sử dụng các công nghệ cũ và cần có thời gian để thích nghi với các phương pháp mới. Đặc biệt đối với các công ty lớn như Microsoft, mặc dù tôi đồng ý với bạn về việc cần phải cập nhật và điều này thật tệ khi công ty chúng tôi đề xuất một số điều và làm những việc khác.
QMaster

1
Microsoft nổi tiếng về khả năng tương thích ngược. Việc sử dụng TripleDES của họ nằm ngay dưới "chỉ để tương thích với các ứng dụng và dữ liệu cũ".
Dan Bechard

1

nhập mô tả hình ảnh ở đây

DES là "tiêu chuẩn mã hóa dữ liệu" cũ từ những năm bảy mươi.


0

AES là thuật toán tiêu chuẩn hiện được chấp nhận để sử dụng (do đó có tên là Tiêu chuẩn mã hóa nâng cao ).

Phần còn lại thì không.


3
Do đó tên? Làm thế nào để đặt tên "AES" cho thấy nó nên được sử dụng?
CodyBugstein

15
Tiêu chuẩn mã hóa dữ liệu thì sao? Logic của bạn "nó có <tiêu chuẩn> trong tên - do đó đây là những gì nên được sử dụng" là khá thiếu sót.
Zlatin Zlatev

0
                DES                               AES
Developed       1977                              2000
Key Length      56 bits                           128, 192, or 256 bits
Cipher Type     Symmetric                         Symmetric
Block Size      64 bits                           128 bits
Security        inadequate                        secure
Performance     Fast                              Slow

AES nhanh hơn 3DES, đặc biệt là trên các CPU hỗ trợ AES-NI. (nhưng ngay cả khi không có điều đó - DES được thiết kế để triển khai phần cứng nhanh, không phải triển khai phần mềm) ( DES bình thường nhanh hơn một chút trên một số điểm chuẩn , nhưng khóa 56bit khiến nó không phù hợp với bất kỳ mục đích sử dụng nào hiện nay)
Gert van den Berg
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.