Tài liệu

Benchmark bảo mật và mật mã

Thời gian đọc 5 phút
Trên trang này

Chỉ số hiệu năng chi tiết cho các nguyên thủy bảo mật của Nalix, bao gồm cipher mã hóa, tính toán handshake và thuật toán băm.

Bộ cipher envelope

So sánh các stream cipher (Salsa20 và ChaCha20) và các bộ AEAD (Salsa20-Poly1305 và ChaCha20-Poly1305) trên payload 64 B và 1024 B. Mọi thao tác đều chạy trên span không cấp phát bộ nhớ.

Hiệu năng cipher envelope (Payload Size = 64)

Phương thứcPayloadSizeMeanErrorStdDevP95Cấp phát
Encrypt_Salsa2064331.0 ns10.13 ns11.66 ns342.7 ns0 B
Decrypt_Salsa2064260.2 ns5.27 ns6.07 ns265.0 ns0 B
Encrypt_Chacha2064343.4 ns4.49 ns5.17 ns347.8 ns0 B
Decrypt_Chacha2064260.1 ns6.18 ns7.12 ns263.5 ns0 B
Encrypt_Salsa20Poly130564734.6 ns27.18 ns31.30 ns752.7 ns0 B
Decrypt_Salsa20Poly130564712.0 ns95.41 ns109.87 ns773.4 ns0 B
Encrypt_Chacha20Poly130564511.2 ns5.81 ns6.69 ns520.5 ns0 B
Decrypt_Chacha20Poly130564484.0 ns3.58 ns4.13 ns492.0 ns0 B

Hiệu năng cipher envelope (Payload Size = 1024)

Phương thứcPayloadSizeMeanErrorStdDevP95Cấp phát
Encrypt_Salsa2010241,895.6 ns25.27 ns28.09 ns1,940.0 ns0 B
Decrypt_Salsa2010241,887.3 ns21.79 ns25.09 ns1,928.4 ns0 B
Encrypt_Chacha2010241,127.3 ns265.28 ns305.50 ns1,419.2 ns0 B
Decrypt_Chacha2010241,301.6 ns59.30 ns68.29 ns1,334.3 ns0 B
Encrypt_Salsa20Poly130510244,526.5 ns64.45 ns74.22 ns4,583.9 ns0 B
Decrypt_Salsa20Poly130510244,606.4 ns12.49 ns14.39 ns4,623.0 ns0 B
Encrypt_Chacha20Poly130510242,695.9 ns59.62 ns68.66 ns2,743.3 ns0 B
Decrypt_Chacha20Poly130510242,736.3 ns60.69 ns69.89 ns2,788.0 ns0 B

Đằng sau thiết kế

  • Stream cipher hiệu quả trên phần mềm: Salsa20 và ChaCha20 thực hiện mã hóa với tốc độ gần bằng phần cứng. Trạng thái được giữ trong bộ nhớ stackalloc, đảm bảo không cấp phát.
  • AEAD một lượt: Các cipher kết hợp với Poly1305 thực hiện xác thực và giải mã trong một lượt duy nhất trên khối bộ nhớ, giảm thiểu cache miss.

Giao thức Handshake

Chỉ số hiệu năng cho giai đoạn handshake mật mã, thiết lập danh tính phiên.

Phương thứcMeanErrorStdDevP95Cấp phát
ComputeMasterSecret2.513 μs0.1719 μs0.1980 μs2.614 μs0 B
ComputeServerProof2.194 μs0.2906 μs0.3346 μs2.609 μs0 B
ComputeClientProof2.368 μs0.3165 μs0.3645 μs2.654 μs0 B
DeriveSessionKey2.619 μs0.0755 μs0.0869 μs2.675 μs0 B

Đằng sau thiết kế

  • Khóa không cấp phát: Các phép tính khóa tốn kém, mỗi phép mất khoảng ~2–2.6 μs và chạy hoàn toàn không cấp phát (0 B), tách biệt các handshake mật mã khỏi tác động của garbage collection.

Băm và mật mã

So sánh các thuật toán băm mật mã, cipher xác minh và dẫn xuất khóa.

Hiệu năng băm (Payload Size = 64)

Phương thứcPayloadSizeMeanErrorStdDevP95Cấp phát
Keccak256_Hash64605.3 ns11.16 ns12.85 ns615.0 ns0 B
HmacKeccak256_Compute642,518.4 ns45.27 ns52.13 ns2,553.1 ns0 B
Poly1305_Compute64111.5 ns0.95 ns1.09 ns112.3 ns0 B
Pbkdf2_Hash642,561,666.8 ns43,716.23 ns50,343.68 ns2,609,432.4 ns312 B
Pbkdf2_Verify642,548,772.0 ns39,314.36 ns45,274.48 ns2,590,398.3 ns256 B

Hiệu năng băm (Payload Size = 1024)

Phương thứcPayloadSizeMeanErrorStdDevP95Cấp phát
Keccak256_Hash10244,862.0 ns64.07 ns71.22 ns4,967.1 ns0 B
HmacKeccak256_Compute10246,591.5 ns140.27 ns161.54 ns6,758.3 ns0 B
Poly1305_Compute1024888.9 ns57.31 ns66.00 ns940.5 ns0 B
Pbkdf2_Hash10242,545,073.2 ns49,667.27 ns57,196.90 ns2,608,114.0 ns312 B
Pbkdf2_Verify10242,552,527.7 ns49,817.62 ns57,370.04 ns2,601,772.5 ns256 B

Đằng sau thiết kế

  • Tối ưu Keccak: Triển khai Keccak256 tự phát triển băm các cấu trúc nhỏ trong khoảng ~605 ns và cấu trúc 1 KB trong 4.86 μs mà không cấp phát bộ nhớ.
  • Chi phí PBKDF2 và cách ly: PBKDF2 là hàm dẫn xuất khóa an toàn, được thiết kế cố ý tốn kém về mặt tính toán (khoảng ~2.5 ms mỗi thao tác). Do tính chất phụ thuộc CPU, các kiểm tra PBKDF2 được tách khỏi hot path mạng để tránh làm đói thread pool của listener.