Elliptic Curve Cryptography (ECC) is an asymmetric public key cryptography method based on elliptic curves over finite fields. It relies on the difficulty of discovering the discrete logarithm of a random elliptic curve. ECC is especially useful in a mobile (wireless) environment or in an interactive voice response environment owing to its smaller key size. Smaller key sizes result in lesser power/memory/bandwidth consumption and lower computational cost.
Smaller key size: ECC offers an equal level of cryptographic strength with considerably smaller key sizes than its counterparts. This results in reduced computational requirements which is very advantageous for devices having limited computing power.
A comparison of key sizes (RSA v/s ECC) is as given below
As can be seen from the table above, the difference in size keeps increasing dramatically as the key sizes grow.
Greater speed: Given that the key size is relatively small for a given strength, it enables faster processing. This results in faster page load time for web pages and improves end user experience. Same benefits taken to Mobile devices provide even better user experience.
Note: You can bind an ECC curve to SSL front-end entities only.
A NetScaler appliance supports the following ECC curves:
Firmware versions 10.1 onwards, all four curves are bound by default to an SSL vserver in the following order: P_256, P_384,P_224,P_521. To change the order, you must first unbind all the curves, and then bind them in the desired order.
Note: As per the rfc4492 client enumerates the ECC curves which it supports during the SSL client hello packet in “elliptic_curve” extension header. If the SSL vserver has these ECC curve bound and if the ECDHE ciphers are on top then only the Netscaler will send the ECDHE ciphers in the server hello packet. If there is a mismatch in ECC curve bound in vserver and curves which are enumerated in client hello then the Netscaler will not select the ECDHE ciphers even if ECDHE cipher is in top.
ECC Configuration in NetScaler:
Set up Basic SSL Offloading on NetScaler.
Enable SSL Offloading feature
Add SSL based services
Add an SSL virtual server
Add a certificate-key pair
Bind the SSL key pair to the SSL vserver
Bind the SSL services to the SSL virtual server
This is basic SSL Offload configuration on NS. Refer to following link for details : Citrix Documentation - Configuring SSL Offloading.
Bind the ECC curves to the SSL virtual server.
To bind ECC curves from the CLI you can execute the following command to bind an ECC curve to a vserver:
bind ssl vserver <vServerName> -eccCurveName <eccCurveName>
From the GUI, Go to Configuration > Traffic Management > Load Balancing > Virtual Servers > Select the SSL vserver which you want to edit > ECC Curve > Add Binding and bind the required ECC curve to the vserver.
Configure ECDHE ciphers.
Using ECDHE ciphers instead of DHE make the communication more secure with smaller key sizes.
To configure ECDHE ciphers, go to Configuration >Traffic Management > Load Balancing > Virtual Servers > Select the SSL vserver which you want to edit > Advanced Settings > SSL Ciphers > Select ECDHE in the cipher group list.
To view the ciphers that belong to ECDHE group, go to Configuration > Traffic Management > SSL > Cipher Groups > ECDHE.
If you decide to bind more than one suite of ciphers, ensure that the ECDHE ciphers are on the top of the list.