암호화의 이해 : AES, 블록 암호 운영 모드, 패딩 모드 간단 용어 정리
👉 AES 알고리즘 : 보안 수준별 암호화 방식
- 설명
- AES (Advanced Encryption Standard)는 대칭키 암호화 알고리즘
- 같은 키를 암호화와 복호화에 사용
- 종류
- AES128
- 128비트(16바이트) 키를 사용
- AES 알고리즘 중 가장 기본적이며, 빠른 처리 속도와 충분한 보안성을 제공
- AES192
- 192비트(24바이트) 키를 사용
- AES128보다 더 강력한 보안을 제공하지만, 처리 속도는 약간 느려질 수 있음
- AES256
- 256비트(32바이트) 키를 사용
- AES 알고리즘 중 가장 강력한 보안을 제공하지만, 처리 속도는 상대적으로 느림
- 높은 보안 요구 사항을 가진 시스템에 주로 사용
- 참고하기 좋은 사이트
📌 AES 암호 알고리즘(Advanced Encryption Standard)
👉 블록 암호 운영 모드 : 다양한 암호화 접근법
- 설명
- 암호화 프로세스에서 데이터 블록이 처리되는 방식을 정의
- 종류
- CBC (Cipher Block Chaining)
- 각 블록의 암호화가 이전 블록의 암호화 결과에 의존
- 첫 번째 블록은 초기화 벡터(IV)와 XOR 연산된 후 암호화
- 이렇게 연쇄적으로 데이터를 암호화하는 방식은 패턴을 숨기는 데 도움
- ECB (Electronic Codebook)
- 가장 기본적인 운영 모드로, 각 블록을 독립적으로 암호화
- 패턴이 보존되는 단점이 있어 보안성이 낮음
- CFB (Cipher Feedback)
- 스트림 암호처럼 작동하며, 데이터를 블록 크기보다 작은 단위로 처리할 수 있음
- OFB (Output Feedback)
- CFB와 유사하지만, 입력 데이터 대신 암호화된 블록을 피드백으로 사용
- 오류 전파가 없는 장점이 있음
- CTR (Counter)
- 카운터 값을 암호화한 후 이를 데이터와 XOR 연산
- 병렬 처리가 가능하며, 임의 접근이 가능
👉 패딩 모드 : 암호화 데이터의 완성도를 높이는 기술
- 설명
- 패딩은 암호화할 데이터가 블록 크기와 정확히 맞지 않을 때 사용
- 종류
- NoPadding
- 데이터가 블록 크기와 정확히 일치할 경우 사용되며, 추가적인 패딩을 하지 않음
- 이 경우, 입력 데이터는 블록 크기의 정확한 배수여야 함
- PKCS7
- 데이터의 길이가 블록 크기의 정수 배수가 되도록 패딩을 추가
- 패딩된 바이트의 각 값은 추가된 패딩 바이트의 총 수
- ISO10126
- 블록의 마지막 바이트에 패딩된 바이트 수를 저장하고, 나머지는 무작위 값으로 채움
- ZeroPadding
- 블록 크기에 맞추기 위해 0값을 추가
- 원본 데이터에 0값이 없는 경우에 적합
👉 암호화 데이터의 표현 방식 : HexString, Base64, Binary
- HexString
- 16진수 형태로 데이터를 표현하는 문자열
- 암호화된 데이터는 종종 바이너리 형태로 존재하는데, 이를 인쇄 가능한 형태로 표현하기 위해 HexString 형태로 변환
- 각 바이트는 두 자리의 16진수로 표현
- Base64 인코딩
- 64개의 인쇄 가능한 문자를 사용해 바이너리 데이터를 표현
- 데이터의 크기가 약 33% 증가
- Binary 형식
- 원시 바이너리 데이터 그대로를 사용
- 이 형식은 파일이나 네트워크 전송에 직접 사용될 수 있지만, 인쇄나 화면 표시에는 적합하지 않음