it-swarm-vi.com

Kích thước khóa và kích thước khối có ý nghĩa gì trong mật mã?

Ai đó có thể giải thích một cách đơn giản ý nghĩa và sự khác biệt giữa khóa đối xứng và kích thước khối.

Tại sao kích thước khối 64 không an toàn nữa và họ tăng nó lên 128 (AES, ..., Serpent)? Và những gì về kích thước chính?

18
rezx

Thuật toán khóa đối xứng là thuật toán sử dụng cùng một khóa cho cả mã hóa và giải mã. Ví dụ về các thuật toán khóa đối xứng là AES, 3DES, Blowfish.

Mặt khác, thuật toán khóa bất đối xứng , sử dụng 2 khóa, một để mã hóa và một để giải mã. Một thuật toán khóa bất đối xứng được thiết kế theo cách không thể lấy được khóa riêng từ khóa chung. Một thuật toán khóa bất đối xứng phổ biến là RSA.

Kích thước khối thuật ngữ đề cập đến mật mã khối. Về cơ bản, có 2 loại mật mã.

Mật mã hóa luồng - Thuật toán mã hóa/giải mã tin nhắn 1 bit mỗi lần.

Mật mã khối - Thuật toán mã hóa/giải mã khối tin nhắn theo khối, một khối tham chiếu đến một nhóm bit. Các thuật toán mã khối phổ biến bao gồm AES - hoạt động trên các khối 128 bit và Blowfish - hoạt động trên các khối 64 bit.

Tất cả thông tin này có thể được tìm thấy trên các mục Wikipedia tương ứng của họ:

http://en.wikipedia.org/wiki/Symmetric-key_alacticm

http://en.wikipedia.org/wiki/Public-key_cryptography

http://en.wikipedia.org/wiki/Block_codes

http://en.wikipedia.org/wiki/Stream_codes

15
user10211

Bạn hỏi 2 câu hỏi khác nhau nhưng có liên quan.

Tại sao kích thước khối 64 bit không còn an toàn nữa và tại sao họ tăng nó lên 128 bit?

Trong một mật mã khối , dữ liệu văn bản thuần túy có kích thước cố định (kích thước khối) được mã hóa thành bản mã có cùng kích thước. Tuy nhiên, tổng số khối bản mã có thể chỉ có 2kích thước khốivà khi bạn chỉ sử dụng căn bậc hai của số khối đó, bạn có 50% cơ hội có một khối trùng lặp, làm rò rỉ thông tin. Căn bậc hai của 264 là 232 và 232 khối 23 byte = 235 Byte = 32 GiB. Vì vậy, trên ổ đĩa 1 TiB với mã hóa toàn bộ đĩa, bạn sẽ tìm thấy khoảng 1.000 khối bản mã được sao chép. (Từ công thức tại đây : (240/ 23)2/ 264) Công bằng mà nói, một khối bản mã trùng lặp không phải là một thảm họa, vì các kỹ thuật được sử dụng để đảm bảo cùng một bản rõ không mã hóa cho cùng một bản mã mỗi lần, do đó, điều ngược lại cũng đúng: bản mã trùng lặp không nhất thiết phải đại diện cho bản sao trùng lặp. Điểm lớn hơn là sức mạnh tính toán và không gian lưu trữ đã vượt xa các khối bản mã 64 bit.

Vì vậy, các thuật toán mã khối hiện tại sử dụng các khối 128 bit khiến cho không thể thấy một bản sao trong Exbibytes (hàng triệu Tebibytes) của dữ liệu, điều này sẽ đủ trong một thời gian. Hầu hết các hình thức tấn công khác được thực hiện một cách khó khăn hơn đáng kể bởi sự gia tăng kích thước khối này.

Ý nghĩa của kích thước khóa là gì và tại sao kích thước lại quan trọng?

Kích thước khóa là kích thước của "bí mật" được sử dụng để mã hóa dữ liệu. Trong một mật mã hoàn hảo, bạn sẽ phải kiểm tra mọi khóa có thể để đảm bảo bạn có thể giải mã một số dữ liệu được mã hóa và trung bình bạn sẽ phải thử một nửa các khóa có thể để thành công. Khi DES được xuất bản, 56 bit là không gian khóa đủ lớn để "đủ cứng" mà lực lượng vũ phu là không hợp lý trong điện toán dân sự. Sau đó, vào năm 1998, Tổ chức Electronic Frontier Foundation đã xây dựng một cỗ máy giải mã vũ lực DES với giá 250.000 đô la. Bây giờ với sự bùng nổ của sức mạnh tính toán dân sự, đặc biệt là việc tận dụng điện toán song song cực kỳ mạnh mẽ trong GPU, thậm chí 128 bit chỉ được coi là đủ an toàn cho mức thông tin được phân loại thấp nhất, BÍ MẬT.

Ngoài ra, không có mật mã nào là hoàn hảo và nhiều cuộc tấn công có thể phục hồi một phần của khóa, vì vậy các khóa dài hơn cung cấp bảo mật bổ sung trong đó ngay cả khi một phần của khóa được khôi phục, vẫn còn một khoảng trống lớn vẫn bị tấn công vũ phu.

12
Major Major

AES, 3DES, blowfish ... là mật mã khối . Mật mã khối là một hàm lấy dữ liệu đầu vào khối có kích thước nhất định (số bit cố định) và a key (cũng là một chuỗi bit, không nhất thiết phải có cùng kích thước so với khối); và đầu ra là một khối khác có cùng kích thước so với khối đầu vào. Hơn nữa, đối với khóa cố định, hàm phải là hoán vị: hai khối đầu vào riêng biệt sẽ mang lại hai khối đầu ra riêng biệt.

Ví dụ. Triple-DES (còn được gọi là 3DES) sử dụng các khối 64 bit và các khóa 192 bit (điều này xảy ra là thuật toán Triple-DES hoàn toàn bỏ qua 24 trong số 192 bit chính, vì vậy chúng ta thường nói rằng Triple-DES sử dụng khóa 168 bit, tuy nhiên, việc triển khai tuân thủ tiêu chuẩn mong đợi khóa 192 bit, còn gọi là 24 byte).

Mã hóa và giải mã khối là tốt, nhưng thông thường chúng tôi muốn mã hóa "tin nhắn", tức là các luồng dữ liệu dài, với độ dài không nhất thiết là bội số của kích thước khối và có thể khá cao (ví dụ: bạn có thể mã hóa một số gigabyte giá trị dữ liệu). Để biến một mật mã khối thành một công cụ có thể mã hóa và giải mã tin nhắn, bạn cần sử dụng chế độ hoạt động . Làm các chế độ tốt là một nghệ thuật; có nhiều lỗ hổng tinh vi có thể làm tê liệt an ninh nếu chế độ không được thiết kế tốt. Kích thước khối dường như là một yếu tố quan trọng: trong hầu hết các chế độ, bảo mật giảm, đôi khi khá mạnh, khi độ dài thông báo đầu vào vượt quá ngưỡng phụ thuộc vào kích thước khối; cụ thể là, nếu mật mã khối của bạn sử dụng n - khối bit và bạn mã hóa nhiều hơn 2n/2 khối dữ liệu, sau đó bạn gặp rắc rối. Đối với một mật mã khối sử dụng các khối 64 bit, ngưỡng là khoảng 32 gigabyte ( 232 khối 8 byte). Khi DES được thiết kế, 32 gigabyte là khoa học viễn tưởng, ngày nay, 32 gigabyte là ổ flash USB 20 đô la.

Vì vậy, bây giờ chúng tôi thích mật mã khối với các khối 128 bit. Đó là một tiêu chí thiết kế cho AES .

Kích thước khóa là một vấn đề trực giao. Các khóa cho mật mã khối là chuỗi các bit có độ dài nhất định, phụ thuộc vào cấu trúc bên trong của mật mã khối. Không có yêu cầu về độ dài khóa để phù hợp với kích thước khối theo bất kỳ cách nào; tuy nhiên, các nhà mật mã học yêu thích nhị phân, vì vậy độ dài khóa thường sẽ là sức mạnh của 2 như 128 hoặc 256, và do đó sẽ có kích thước khối. AES đã được xác định để sử dụng các khóa 128, 192 hoặc 256 bit.

Điều cần thiết cho bảo mật là có hai khóa có thể để kẻ tấn công thử tất cả chúng (thử tất cả các khóa có thể cho đến khi tìm thấy kết quả khớp được gọi là tìm kiếm toàn diện). Mỗi bit khóa bổ sung nhân đôi số lượng kích thước khóa có thể. Các khóa 128 bit là đủ lớn với lề thoải mái; kích thước khóa lớn hơn là có để tuân thủ quan liêu, các nhà quản lý paranoiac và các nhà phát triển, những người cảm thấy bị đe dọa trong độ tuổi vị thành niên của họ.

3
Thomas Pornin

Liên quan đến câu hỏi của bạn về 64 bit hiện kém an toàn hơn 128 bit: với mỗi lần tăng sức mạnh xử lý, sẽ mất ít thời gian hơn để bẻ khóa nó bằng cách sử dụng vũ lực. Bài viết này cung cấp một tài liệu tham khảo tốt về thời gian cần thiết để tạo ra một chìa khóa:

http://tjscott.net/crypto/64bitcrack.htm

Bài báo giả định 2 bộ xử lý Pentium 3.2 GHz để thực hiện công việc. Công suất bộ xử lý tăng lên mọi lúc và chúng ta có thể không quá xa so với bộ xử lý thương mại 64 lõi và thậm chí 256 lõi.

2
Todd Dill