Shine's dev log
블록암호(Block cipher)와 스트림암호(Stream cipher) 본문
암호화와 복호화때 같은 키를 사용하는 대칭키 암호화 방식에서, 다루는 데이터를 다루는 단위에 따라 블록암호와 스트림암호로 나눌 수 있다.
1. 블록암호(Block cipher)와 스트림암호(Stream cipher)
- 블록암호
- 평문을 블록단위로 나누어서 암호화하는 방식
- Feistel 암호와 SPN 암호로 나뉘어짐
- Feistel 암호 : DES, SPN 암호 : AES, ARIA
- 스트림암호
- 평문을 문자마다 바로바로 암호화하는 방식
- RC4 등이 있다.
2. Feistel 방식 (블록암호)
Feistel 방식을 그림으로 나타내보면 아래와 같다.
1) 암호화할 블록을 반으로 잘라 L bits와 R bits로 나눈다.
2) R bits를 다음 라운드의 L bits로 그대로 보낸다.
3) R bits와 라운드키를 라운드함수에 넣고 돌린다.
4) 라운드함수의 결과값과 L bits를 XOR연산한 후 다음라운드의 R bits로 보낸다.
5) 위의 과정을 라운드 수만큼 반복한다.
복호화과정은 위의 과정에서 R bits와 L bits를 바꾸거나, 라운드 키를 거꾸로 대입하면 된다. (그림에서는 라운드 키를 거꾸로 대입하는 방법을 사용했다)
feistel 방식은 따로 복호화기를 만들지 않아도 된다는 장점이 있다.
3. SPN 방식 (블록암호)
SPN 방식을 그림으로 나타내보면 아래와 같다.
SPN 방식은 shannon의 혼돈(confusion)과 확산(diffusion)이론을 바탕으로 한 구조이다.
여기서 혼돈(confusion)이란, 평문과 암호문 사이의 관계를 파악할 수 없는 성질이다. 즉 평문 1비트의 변화가 암호문에는 어떤 영향을 끼칠 지 예측할 수 없는 것을 말한다.
확산(diffusion)이란, 평문을 이루는 하나의 비트가 암호문의 여러개의 비트에 영향을 끼치는 성질이다.
SPN 방식은 혼돈과 확산 이론을 구현하기 위해 치환(S-box)와 전치(P-box)를 조합하여 만들어져있다.
참고로, SPN 1번과 같은 '혼돈과 확산 효과'를 가지기 위해서는 fielstel 을 2번 돌려야 한다.
오늘 내용을 정리해보면,
1. 암호화 때 다루는 데이터의 유형에 따라 블록암호와 스트림암호로 나눌 수 있다.
2. 블록암호에는 Feistel 암호와 SPN암호가 있다.
본 내용은 공부하며 정리한 것으로, 치명적인 오류가 있을 수 있습니다.
'보안' 카테고리의 다른 글
RC4 암호 알고리즘 (0) | 2020.05.14 |
---|---|
AES 암호화 (0) | 2020.05.08 |
DES 암호화 (0) | 2020.05.07 |
치환암호와 전치암호 (0) | 2020.05.05 |
암호란 무엇인가? (암호의 원리와 공격유형) (0) | 2020.05.04 |