it-swarm-vi.com

Hiểu về SSL 2048 bit và mã hóa 256 bit

Trên trang của DigiCert, họ quảng cáo SSL 2048 bit với mã hóa 256 bit: http://www.digicert.com/256-bit-ssl-certert.htmlm

Chính xác thì sự khác biệt ở đây là gì và tại sao hai bit mã hóa được tham chiếu?

Đây là một ảnh chụp màn hình của quảng cáo:

Trên quảng cáo SSL cao cấp của Geotrust, họ quảng cáo nó dưới dạng:

Security: domain control validation, strong 256-bit encryption, 2048-bit root

Vậy sự khác biệt giữa mã hóa 256 bit và root 2048 bit là gì?

Hy vọng rằng làm rõ câu hỏi.

63
JohnJ

2048 bit là về cặp khóa RSA: Các khóa RSA là các đối tượng toán học bao gồm một số nguyên lớn và "khóa 2048 bit" là một khóa sao cho số nguyên lớn lớn hơn 22047 nhưng nhỏ hơn 22048.

256-bit là về SSL. Trong SSL, khóa máy chủ chỉ được sử dụng để truyền khóa 256 bit ngẫu nhiên ( đó người ta không có cấu trúc toán học, nó chỉ là một bó bit); đại khái, máy khách tạo khóa 256 bit ngẫu nhiên, mã hóa nó bằng khóa công khai RSA của máy chủ (mã có trong chứng chỉ của máy chủ và là "khóa 2048 bit") và gửi kết quả đến máy chủ. Máy chủ sử dụng khóa RSA riêng để đảo ngược hoạt động và do đó có được khóa 256 bit do khách hàng chọn. Sau đó, máy khách và máy chủ sử dụng 256-bit để thực hiện đối xứng kiểm tra mã hóa và tính toàn vẹn và RSA không được sử dụng thêm cho kết nối đó.

Xem câu trả lời này để biết thêm chi tiết. Thiết lập này thường được gọi là "mã hóa lai". Điều này được thực hiện vì RSA không phù hợp với mã hóa hàng loạt, nhưng mã hóa đối xứng không thể thực hiện công việc kinh doanh công cộng/tư nhân ban đầu cần thiết để bắt đầu mọi thứ.

(SSL có thể thực hiện trao đổi khóa với các thuật toán khác ngoài RSA, vì vậy tôi đã đơn giản hóa mô tả một chút trong văn bản ở trên, nhưng đó là ý chính của ý tưởng.)

69
Thomas Pornin

Để thêm một chút chi tiết, khóa RSA 2048 bit là một thứ gọi là mật mã bất đối xứng. Nó được sử dụng để xác nhận danh tính (ký) và đảm bảo rằng chỉ người nhận dự định mới có thể truy cập thông tin được gửi (mã hóa). Nó bao gồm hai phần, một khóa công khai và một khóa riêng. Các khóa thực sự có liên quan với nhau, nhưng vì chúng có liên quan bởi hai số giả rất lớn (số nguyên tố liên quan đến nhau) nên chúng rất khó để tìm ra khóa riêng từ công chúng.

Điều đó nói rằng, bởi vì thuật toán dựa trên một thứ gì đó thực sự khó để tìm ra (nhưng có thể giải quyết được), nó kém an toàn hơn thuật toán đối xứng dựa trên một bí mật chung, không thể giải được về mặt toán học và không dựa vào độ phức tạp của một vấn đề toán học cho bảo mật (nhiều hơn về điều đó sau). Đây là lý do tại sao khóa lớn hơn nhiều so với đối tác đối xứng (chỉ 256 bit). Để làm cho phương trình khó giải quyết đòi hỏi khóa lớn hơn nhiều và cũng vậy, càng nhiều thông tin được truyền với khóa bất đối xứng, nó càng có khả năng bị phá vỡ (đồng thời, mã hóa/giải mã mạnh hơn bộ xử lý).

Vì lý do này, SSL chỉ sử dụng RSA cho các giai đoạn xác nhận và trao đổi khóa. Thay vào đó, một khóa đối xứng (trong trường hợp 256 bit này nếu được trình duyệt trên máy khách hỗ trợ) được tạo và truyền trở lại máy chủ thông qua mã hóa RSA và sau đó phần còn lại của dữ liệu được trao đổi thông qua khóa chung và thuật toán đối xứng.

Điều này xảy ra bởi máy khách trước tiên giải mã phản hồi cho một thách thức mà máy chủ mã hóa bằng khóa riêng của nó, sau đó máy khách có thể nhìn vào khóa chung của máy chủ (được ký bởi khóa gốc đã biết là CA (trong trường hợp này là DigiCert ) đã bao gồm với hầu hết các trình duyệt). Khi phản hồi được giải mã phù hợp với thử thách, khách hàng biết rằng máy chủ đã phản hồi yêu cầu (mặc dù có thể có một người trung gian chuyển tiếp nó). Sau đó, máy khách sẽ tạo khóa đối xứng 256 bit và mã hóa nó bằng khóa chung của máy chủ và gửi nó đến máy chủ. Vì khóa được mã hóa bằng khóa chung của máy chủ, nên chỉ máy chủ (biết khóa riêng) mới có thể giải mã được. Điều này có nghĩa là bất kỳ người trung gian nào trong bước trước không thể biết khóa chia sẻ mới. Bây giờ khách hàng có thể tin tưởng rằng bất kỳ thông tin nào được gửi qua khóa chung chỉ đến từ máy chủ dự định.

15
AJ Henderson

Chỉ cần thêm một số chi tiết cho các câu trả lời hiện có ...

câu hỏi của tôi là làm thế nào để khách hàng biết để tạo khóa 256 bit ngẫu nhiên? (Tại sao không phải là 128?).

Điều này phụ thuộc vào bộ mật mã được đàm phán. Danh sách những người được xác định là một phần của TLS 1.1 nằm trong RFC 4346 Phụ lục A.5 . Ví dụ: TLS_RSA_WITH_AES_128_CBC_SHA Sẽ sử dụng khóa 128 bit, trong khi TLS_DHE_RSA_WITH_AES_256_CBC_SHA Sẽ sử dụng khóa 256 bit.

Bộ mật mã nào được đàm phán sẽ phụ thuộc vào cấu hình máy khách và máy chủ, không phụ thuộc vào chứng chỉ được cài đặt trên máy chủ. Khi ứng dụng khách khởi tạo kết nối với thông báo Client Hello, Nó sẽ gửi một danh sách các bộ mật mã mà nó hỗ trợ. Sau đó, máy chủ chọn cái mà nó muốn và nói như vậy trong thông báo Server Hello.

Bộ mật mã này sau đó xác định cách các khóa đối xứng này cuối cùng được chia sẻ. Mục đích trước mắt của bắt tay SSL/TLS là thiết lập một chia sẻ bí mật tiền chính giữa máy khách và máy chủ. Điều này được gọi rộng hơn là trao đổi khóa (xem RFC 4346 Phụ lục F.1.1) .

Điều này thuộc hai loại (không bao gồm trao đổi khóa ẩn danh):

  • Trao đổi khóa RSA (ví dụ: TLS_RSA_WITH_AES_128_CBC_SHA): Máy khách mã hóa bí mật trước khi sử dụng khóa chung của máy chủ (tìm thấy trong chứng chỉ).
  • Trao đổi khóa DH (E) (ví dụ: TLS_DHE_RSA_WITH_AES_256_CBC_SHA): Quá trình trao đổi khóa Diffie-Hellman diễn ra. Máy chủ ký các tham số DH của nó và máy khách xác minh chữ ký dựa vào khóa chung trong chứng chỉ máy chủ. (Có chứng chỉ dựa trên RSA không có nghĩa là trao đổi khóa RSA.)

Khi kết thúc bắt tay, bất kỳ bước nào trong hai bước này đã được sử dụng, máy khách và máy chủ đều sở hữu một bí mật chung , từ mà họ lấy được một bí mật chính (xem RFC 4346 Mục 8.1 ).

Từ đó bí mật chính , cả hai bên có thể lấy được các khóa mã hóa (và bí mật MAC), như được mô tả trong RFC 4346 Mục 6. .

Ngoài loại khóa (RSA hoặc DSS), không có gì trong đó làm cho kích thước của khóa mã hóa phụ thuộc vào chứng chỉ. Ngoài ra, cả hai loại đều có bộ mật mã sử dụng khóa 256 bit: ví dụ TLS_DHE_DSS_WITH_AES_256_CBC_SHATLS_DHE_RSA_WITH_AES_256_CBC_SHA. (DSS là thuật toán chỉ có chữ ký, do đó bạn sẽ không nhận được trao đổi khóa giống như RSA để mã hóa bí mật tiền chính.)

Kích thước của khóa trong chứng chỉ chỉ quan trọng để ngăn chặn việc trao đổi khóa (hoặc có thể giải mã lưu lượng truy cập được ghi lại): nếu ai đó có thể tìm thấy khóa riêng từ khóa chung trong chứng chỉ, họ có thể đóng vai trò là một MITM để mạo danh máy chủ thực sự hoặc họ có thể giải mã được bí mật tiền mã hóa được mã hóa (và do đó lưu lượng được ghi lại) khi sử dụng trao đổi khóa RSA (bộ mật mã DHE được thiết kế chính xác để ngăn truy cập vào bí mật tiền chính , ngay cả khi kẻ tấn công bị giữ khóa riêng và lưu lượng đã ghi, hãy xem câu hỏi này ). Đây là lý do tại sao một khóa bất đối xứng đủ lớn có vấn đề.

Cơ quan chứng nhận có xu hướng đưa "256 bit" lên trang web của họ vì nó có vẻ tốt từ quan điểm tiếp thị.

Điều đó không sai, nhưng nó có thể gây hiểu lầm cho những người không hiểu rằng đó là cách máy chủ của bạn được thiết lập và những gì khách hàng của bạn hỗ trợ có vấn đề.

9
Bruno