Tengo que implementar un complemento criptográfico en Java. El enfoque seguido es conceptualmente similar al utilizado para SRTP. El algoritmo utilizado para la confidencialidad de los datos es AES en modo CTR (estoy siguiendo una especificación).
Como sé, si queremos cifrar datos usando AES en Java, usamos IV, clave de sesión y especificamos el modo (CTR en este caso). El problema es que esta especificación proporciona muchos parámetros para usar en el cifrado como:
SessionSalt: = HMAC (MasterKey, "SessionSalt" + MasterSessionSalt + SessionId).
SessionKey: = HMAC (MasterKey, "SessionKey" + MasterSalt + SessionId).
SessionHMACKey: = HMAC (MasterKey, "SessionHMACKey" + MasterHMACSalt + SessionId).
Mi pregunta es: ¿Cuándo debo usar SessionSalt y SessionHMACKey con AES?