Questa configurazione va bene, sebbene raccomando di offrire anche una delle suite ChaCha20-Poly1305 e rendere questa suite l'opzione preferita. Ti suggerisco di offrire TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
se stai utilizzando i certificati RSA o TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
se stai utilizzando certificati ECDSA.
Il motivo di ciò è la prestazione. AES-GCM utilizza alcune operazioni che non sono veloci senza accelerazione hardware. In particolare, l'estensione dell'insieme di istruzioni AES e la moltiplicazione senza portante (ad esempio PCLMULQDQ, XMULX) vengono utilizzate per eseguire la crittografia a blocchi e la moltiplicazione senza porta su GF (2 k ) rispettivamente per GHASH. Senza queste estensioni le prestazioni di AES-GCM sono particolarmente scarse. Ciò riguarda principalmente gli smartphone che possono avere estensioni AES (solo sugli architetti ARMv8), ma non fornirà le necessarie estensioni multiplo senza portatore.
ChaCha20-Poly1305, tuttavia, si basa solo sulle istruzioni SIMD per le prestazioni. Questi sono abbastanza onnipresenti. Tutti i moderni processori x86_64 e la maggior parte dei processori ARM high-end offrono una gamma di estensioni di istruzioni SIMD (ad esempio SSE4, AVX2, NEON, ecc.) Che possono consentire implementazioni altamente efficienti e performanti di ChaCha20-Poly1305.
Inoltre, facendo riferimento alla mia menzione dei certificati ECDSA, potresti volerli considerare invece dei certificati RSA tradizionali. Tutti i browser moderni supportano tali certificati e, di nuovo, offrono prestazioni migliori. L'ECDSA è anche considerato più a prova di futuro contro nuovi attacchi ed è generalmente più diretto dal punto di vista della sicurezza (RSA ha un lotto di problemi che devi mitigare quando scrivi un'implementazione). Se scegli i certificati ECDSA, dovrai sostituire la configurazione esistente per utilizzare TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
per GCM.