[참고문헌]
[용어정의]
- AES (Advanced Encryption Standard) : 대칭키를 쓰는 블럭 암호이다.
[특징]
- 암호화 키는 128, 192, 256의 세 가지 중 하나가 될 수 있으며, 키의 길이에 따라 실행하는 라운드 수가 각각 10, 12, 14 이다.
[모드]
- ECB (Electronic Code Block) : 가장 단순한 모드로, 블록 단위로 순차적으로 암호화 하는 구조이다. 한 개의 블록만 해독되면 나머지 블록도 해독이 되는 단점이 있다. 암호문이 블록의 배수가 되기 때문에 복호화 후 평문을 알기 위해 패딩을 해야 한다.
- CBC (Cipher Block Chaining) : 블록 암호화 운영 모드 중 보안 성이 제일 높은 암호화 방법으로 가장 많이 사용된다. 평문의 각 블록은 XOR 연산을 통해 이전 암호문과 연산되고 첫 번째 암호문에 대해서 IV (Initial Vector)가 암호문 대신 사용된다. 암호문이 블록의 배수가 되기 때문에 평문을 얻기 위해서 패딩을 해야한다. 암호화가 병렬처리가 아닌 순차적으로 수행되어야 한다.
- CFB (Cipher FeedBack) : 블록 암호화를 스트림 암호화처럼 구성해 평문과 암호문의 길이가 같다. 패딩이 필요없다. 최초의 키생성 버퍼로 IV가 사용된다. CBC 모드와 마찬가지로 암호화는 순차적으로, 복호화는 병렬적으로 처리할 수 있다.
- OFB (Output FeedBack) : 블록 암호화를 스트림 암호화처럼 구성해 평문과 암호문의 길이가 같다. 패딩이 필요없다. 암호화 함수는 키 생성에만 사용되며, 암호화 방법과 복호화 방법이 동일해 암호문을 한번 더 암호화하면 평문이 나온다.
- CTR (CounTeR) : 블록을 암호화할 때 마다 1씩 증가해가는 카운터를 암호화해서 키 스트림을 만든다. 즉, 카운터를 암호화한 비트열과 평문블록과의 XOR을 취한 결과가 암호문 블록이 된다. CTR 모드는 OFB와 같은 스트림 암호의 일종이다. 암복호화 시 병렬처리가 가능하다.
[PKCS#7 패딩]
- AES가 블럭 암호화 알고리즘인 만큼 다른 모든 블럭 암호화 알고리즘처럼 패딩하여 블럭의 빈 자리를 채울 필요가 있다.
- 블럭의 크기가 k 바이트 (k=1~255) 일 때 패딩하고자 하는 데이터의 바이트 단위 길이가 k의 배수가 되는데 필요한 나머지 바이트 개수 n 만큼 n을 붙인다.
[BEST]
- ECB 모드에 PCKS7 패딩이 기본값으로 사용됨
'컴퓨터 공학' 카테고리의 다른 글
C++ vs Node.js vs Go - 멀티스레드 퀵정렬 수행속도 비교 (1) | 2021.06.07 |
---|---|
[요약] 2019년 네이버 검색 서비스에 사용된 MongoDB 시행착오 정리 (0) | 2021.04.17 |
2019년 국가 별 개발자 연봉 (0) | 2021.03.19 |
현재 시간을 filetime, unixtime, 포맷 형식으로 출력하는 프로그램 (0) | 2021.02.23 |
타입스크립트에서 worker_threads 사용 기본 예제 (0) | 2021.02.23 |