Với danh sách ciphersuite, bất kỳ khóa riêng nào (CA, Máy chủ hoặc Máy khách) có thể dựa trên EC hay tất cả chúng phải là RSA?
Tất nhiên, không chỉ RSA, hoặc một bí mật đối xứng được chia sẻ trước cho TLS-PSK.
Lưu ý rằng đối với bộ mật mã TLS-RSA, khóa sẽ được sử dụng để đóng gói khóa, tức là việc sử dụng khóa mã hóa và bộ mật mã TLS-ECDHE-RSA, bạn cần có chứng chỉ có thể được sử dụng để xác thực thực thể với việc sử dụng khóa để ký. Thường thì cả hai bit được đặt cho các chứng chỉ cụ thể của TLS.
Tôi cũng có nên giữ các gói MQTT riêng lẻ được gói bằng TLS càng nhỏ càng tốt hay đây có phải là thứ sẽ được đệm thêm byte không? (ví dụ.nó sẽ tạo ra sự khác biệt nếu gói của tôi nhỏ tới 5 byte hay tôi có thể tự do viết một gói dài 25 byte)
AES sẽ mã hóa thành bội số của 16 byte, 3DES thành bội số của 8. 3DES vẫn an toàn hợp lý, nhưng nó không thực sự được sử dụng nữa. May mắn thay TLS sử dụng 3 phím 3DES, vì vậy có điều đó.
Bộ mật mã ECDHE-RSA đang khiến tôi đau đầu. Họ đang sử dụng EC để trao đổi khóa nhưng RSA cho PKI? Điều này có nghĩa là máy chủ có thể có khóa riêng EC.
Đúng, nhưng chữ E trong ECDHE có nghĩa là Diffie-Hellman phù du-phù du. Cả máy khách và máy chủ sẽ (có khả năng/hy vọng) tạo một cặp khóa mới cho mỗi kết nối. Tuy nhiên, việc tạo cặp khóa cho EC nhanh như việc thực hiện thỏa thuận khóa DH, nhanh hơn nhiều so với việc tạo cặp khóa RSA.
Cặp khóa này dành riêng cho phiên và không cần lưu trữ, vì vậy bạn không phải thực hiện bất kỳ thao tác quản lý khóa nào xung quanh nó. Chỉ khóa RSA được sử dụng để xác thực thực thể nên khóa riêng và chứng chỉ làm cần được quản lý.