소프트웨어 보안개발방법론

AE, AEAD / (Authenticated Encryption, Authenticated Encryption with Associated Data)

라구넹 2025. 4. 19. 21:01

AE (Authenticated Encryption)

Encryption Data MAC

기밀성과 무결성 제공

비밀키(대칭키) 암호화와 MAC을 이용

- Encryption then MAC

- Encryption and MAC

- MAC then Encryption

 

Encrypt then MAC

- IPSEC, TLS, SSHv2

 

Encrypt and MAC

- SSH

 

MAC then Encrypt

SSL/TLS 1.2 이하

 

 

AEAD (Authenticated Encryption with Associated Data)

- 기밀성 / 무결성 / 인증 보장  * AE도 인증 됨. 그냥 성능이 좋음

- Associated Data (추가 데이터)

    - 암호화되지 않고 인증만 됨

    - 네트워크 헤더 정보, 시퀀스 넘버, 프로토콜 버전 등

- tag

    - 암호화된 데이터(Cipher Text)와 추가 데이터(Associated Data)를 기반으로 계산된 MAC

- error
    - 복호화 및 무결성 검증 결과

 

AEAD 알고리즘 내에서 tag 해시 계산까지 다 돌아감

저기에 보통 Nonce까지 같이 포함됨, Associated Data는 암호문 외부에 별도로 붙여서 보냄

 

대표적인 AEAD 알고리즘

GCM(Galois/Counter Mode)

- GHASH 함수 사용

- 병렬 처리 가능

 

CCM(Counter with CBC-MAC)

- CBC-MAC과 CTR 모드 결합

- 2번 암호화, 병렬 처리에 제한적

 

ChaCha20-Poly1305

- ChaCha20 스트림 암호 + Poly1305

- 소프트웨어 구현에 최적화

- 구글이 TLS spec에 도입

 


 

GCM(Galois/Counter Mode)

- CTR 모드를 사용해서 데이터 암호화.. 오히려 CBC보다 많이 씀

- GHASH를 사용하여 연관 데이터와 암호문의 무결성 및 인증

- 0번째 키 스트림은 보관해뒀다 마지막에 사용(초기 카운터 블록, J0), 1번째 키 스트림부터 평문 암호화에 적용

-  additional data에 GHASH

- 1번째 인크립션의 결과, 즉 첫번째 암호문과 이전 GHASH 결과를 XOR 후 GHASH, 반복

- 마지막 암호문까지 XOR후 GHASH, additional data, ciphertext 길이를 붙이고 최종 블록과 XOR, GHASH

- 초기 카운터 블록과 XOR 후 다시 GHASH

=> Authentication Tag

 


ChaCha20-Poly1305

ChaCha20 스트림 암호

- 키와 난수를 이용하여 암호화 키 생성

- 암호화 키와 평문 XOR 연산 -> 암호문 생성

- 복호화 동일

 

ChaCha20-Poly1305

- ChaCha20을 이용하여 암호문 생성

- ChaCha20을 이용하여 Poly1305 키 값 생성

- 생성된 키와 암호문을 입력값으로 Poly1305 수행

- Poly1305 출력 값을 인증 tag로 사용