CCM mode of operation combines CBC (for integrity and authentication) and CTR mode (for data confidentiality)
The inputs to the CCM are
- A Valid Nonce N which is used in CTR mode
- Valid Payload P
- Valid Associated data A which will be authenticated but not encrypted
- A Vlaid Key K
The CCM Algorithm works as
- Apply formatting function on (N,A,P) to make blocks such that B0||B1||B2....Bn = B
- AuthenticationTAG = (CBCk (B))LastBlock Truncated to Desired Length of AuthenticationTAG
- CiperText = CTRk,N (P || AuthenticationTAG)
Why do we need to include the Nonce N in Authentication? What implications does it have if N is not made part of the authentication tag?
Why do we use same key for both authentication and confidentiality? Why not two separate keys?