Proposed Cipher suite:
aes-ctr(key, ++iv, sha-1(plainText + aes-ctr(key,iv,0^128))+(plainText + aes-ctr(key,iv,0^128)));
Security targets achieved:
- Encryption of the plain text.
- Integrity of the plain text.
- Authenticity of the plain text.
Used components and reason behind using them:
- sha-1: For checking integrity of the plaintext.
- aes-ctr: Used for encryption of the plaintext.
- aes-ctr(sha-1): sha-1's output is encrypted with aes-ctr to provide authenticity of the plaintext.
Reasons, I think it is secure:
- As aes-ctr is secure encryption algorithm we can't predict the key-stream.
- To generate a new ciphertext the attacker need to have knowledge about message encrypted. Here the message is
sha-1(plainText + aes-ctr(key,iv,0^128))+(plainText + aes-ctr(key,iv,0^128))
, which would be unique for every message because of using the key streamaes-ctr(key,iv,0^128)
. Hence it is not attackable by chosen plaintext attack. - We also can't predict sha-1 value because everytime a new sha-1 would be generated because the text used to generate is
plainText + aes-ctr(key,iv,0^128)
, which contains the unpredictable key stream aes-ctr(key,iv,0^128)
. - Hence the encrypted message can be authenticated and checked for integrity.
This method is improved version derived from the method proposed in this question.