평문을 일정한 크기의 블럭 단위로 나누어 각 블럭마다 암호화 과정을 수행하고 고정된 크기의 암호문을 생성하는 양방향 대칭키 기반 암호화 방식.
Feistel :
SPN (Substitution - Permutation Network) :
📌
Substitution은 '어떤 문자를 다른 문자로 바꾸는' 것 (혼돈)
e.g. '가나다라마' -> 'a나c라e'Permutation은 '문장 안에서 문자들의 순서를 바꾸는' 것 (확산)
e.g. '가나다라마' -> '마나가라다'Substitution을 대입, Permutation을 치환이라고 번역하기 보다는 위와 같이 해석하는 게 더 좋을 것 같다.
S-Box표를 이용하여 대체하고, P-Box를 이용하여 치환하며 Round Key를 통해 반복적인 연산 수행
Feistel 구조에 비해 속도가 빠르지만 복호화 시 별도 루틴을 구현해야 함
e.g. AES, ARIA
💡 SPN구조를 사용하는 AES 알고리즘
Electronic Codebook (전자 코드북)
Cipher Block Chaining (암호 블록 체인)
💡 ECB와 CBC의 차이점
Cipher Feedback (암호 피드백) 모드
💡 CBC 모드와 CFB 모드 비교
Output Feedback (출력 피드백) 모드
💡 CFB 모드와 OFB 모드 비교
- 암호 알고리즘으로의 입력이 다름.
- CFB 모드에서는 1단계 이전의 암호문 블록이,
- OFB 모드에서는 1단계 이전의 암호화 출력이 암호 알고리즘의 입력으로 사용된다.
Counter (카운터) 모드
💡 OFB 모드와 CTR 모드 비교
- OFB 모드에서는 1단계 이전의 암호화 출력값을 입력으로 피드백하고 있지만,
- CTR 모드에서는 카운터 값이 암호화의 입력이 된다.
Galois/Counter (갈루와/카운터) 모드
좋은 글 감사합니디