Giá trị của kết quả sha1 có phải là "tốc độ" của sự kết hợp giữa ctr + hmac sha1 vì đó là nút cổ chai hay tôi phải trừ hai giá trị này để có được tốc độ kết hợp của ctr + hmac sha1?
Trước hết, bạn nên sử dụng AES-CBC để đảm bảo rằng bạn đang sử dụng kết hợp đúng các thuật toán. AES-CBC chậm hơn nhiều so với AES-CTR trên máy của tôi. Điều này có thể là do bộ đệm; có thể tính toán trước phần lớn luồng khóa cho AES-CTR.
Các gói TLS thường có kích thước khoảng 1,5 K, vì vậy bạn có thể sử dụng các khối 1024 byte làm chỉ báo tốt nhất. Tôi đã thực hiện bài kiểm tra tốc độ với SHA-1, AES-CBC cũng như AES-GCM.
Vì vậy, hãy sử dụng các giá trị sau:
SHA-1 (đại diện cho HMAC-SHA-1): 1467708 kB/s
AES-CBC : 1330523 kB/giây
AES-GCM : 3346640k
Thay vì GB/s, bạn thực sự nên xem xét ns trên kB, theo cách đó bạn có thể cộng thời gian xử lý lại với nhau rồi tính lại thành GB/s như bạn muốn.
Bây giờ chúng ta có thể tính tốc độ của SHA-1 + CBC bằng cách thực hiện:
$$T_{SHA-1\&CBC} = {1 \over {1 \over T_{SHA-1}} + {1 \over T_{AES-CBC}}}$$
ở đâu $T$ là tốc độ truyền tính bằng byte trên giây.
Điều này sẽ dẫn đến giá trị sau: 697876kB/s cho SHA-1 + AES-CBC.Điều đó có nghĩa là AES-GCM nhanh hơn khoảng 4,8 lần so với SHA-1 + AES-CBC đối với triển khai bình thường, không theo luồng. Điều này giả định rằng HMAC có cùng tốc độ của SHA-1 (điều này gần đúng trong mọi xác suất, mặc dù nó phải xử lý nhiều dữ liệu hơn một chút).