대칭키 암호화 방식 개요 (ECB, CBC)
실무에서 자주 사용하는 암복호화 알고리즘이 어떤 원리로 동작하는지 정리해보았습니다.
블록 암호 모드
주어진 평문을 블록 단위로 (암호화 키) 암호화하는 기법이다.
대칭 암호화 방식은 하나의 평문을 블록 단위로 나누어서 암호화 또는 복호화를 하고 있다.
평문의 길이가 블록 암호의 블록 크기보다 커서 남는 경우에는 어떻게 할까?
예) 300비트 평문을 AES로 암호화 하는 경우
- AES의 블록 크기: 128비트
- 블록 개수: 3개
- 3번째 블록에 저장되는 데이터 크기: 44비트
패딩(Padding): 블록의 남은 부분에 데이터를 채워 넣는 것을 말한다.
정리하자면, 평문을 128비트로 나누어서 남은 비트는 Padding으로 들어간다는 뜻이다.
여기서 패딩 알고리즘 기법으로 PKCS#5 등이 사용되는데 그렇게 어려운 개념은 아니니 구글링해보면 알 수 있다.
ECB 모드 (Electric Code Bok)
- 평문 블록을 암호화 한 것이 그대로 암호문 블록이 됨
- [평문 블록 : 암호문 블록] 이라는 일대일 대응표를 갖기 때문에 전자코드북 모드라는 이름이 붙여짐
- ECB모드는 가장 간단해서 기밀성이 낮음
- 같은 평문 블록이 존재하면 모두 같은 암호문 블록으로 변환되기 때문에 평문속 패턴을 알게 되면 그 실마리로 암호를 해독할 수 있게 됨
암호문 블록을 복호화한 것이 그대로 평문 블록이 되기 때문에 안전하지 않음
예) 적극적 암호 해독자는 암호문블록의 순서를 서로 바꾸었다.
그 암호문을 복호화하면 암호문 블록에 대응하는 평문 블록도 바뀌게 됨, 적극적 암호 해독자는 암호 해독할 필요도 없고 블록암호 알고리즘에 대해 알지 않고 평문을 조작할 수 있게 되는 것
CBC 모드 (Cipher Block Chaining)
- 암호문 블록을 마치 체인처럼 연결하는 모드
- 현재의 평문 블록과 현재 블록 바로 직전에 암호화된 암포 블록을 XOR 연산한 후 암호화
- 초기화벡터(IV: Inital Vector) : 최초 블록을 암호화할 때 XOR 연산에 사용되는 블록
장점: 보안적으로 안전(변조 불가)
단점: 암호문 블록에 누락이 발생하면 수신측에서는 암호문을 블록으로 잘라내어 CBC모드 복호화에 맞춰 복호화를 하게 됨, 이때 누락된 비트가 포함된 암호문 블록을 전부 어긋나게 됨 (복호화 할 수 없게됨)
암호화 모드로는 ECB보단 CBC를 권장한다.
*
대칭키 암호화 방식은 키 교환 시 노출될 수 있다는 위험성이 있다.
이를 막기 위한 키 교환 알고리즘이 있는데 이중 가장 많이 사용되는 것이 디퍼-헬먼 키 교환법이다.
자세한 내용은 아래 링크를 통해 확인해보자
출처:https://itwiki.kr/w/%EB%94%94%ED%94%BC-%ED%97%AC%EB%A8%BC_%ED%82%A4_%EA%B5%90%ED%99%98