개발스토리
Block cipher 본문
Block cipher
• 긴 평문을 일정한 길이의 블록으로 나누어 블록단위로 암호화하는 방식
• SW 구현이 쉽다
• Round를 사용하여 반복적으로 암호화하므로 안전
• 대부분 Feistel cipher structure에 기반
• DES, AES, SEED, ARIA, Bluefish, Serpent 등
- block 단위로 암호화 후 block 단위로 복호화 한다.
Feistel Cipher Structure란?
• 대부분 Block cipher에 사용
• 입력 block을 반으로 나눈다
• 왼,오른쪽 바꿔가며 여러 round 수행
- 하나의 block을 두 개로 나누어 왼쪽 부분은 plain text left, 오른쪽 부분은 plain text right라고 보면 된다.
- block cipher에서는 round key의 크기, round 횟수에는 다 차이가 있다.
<특징>
• Block size
크면 안전해지나 느려짐
• Key size
크면 안전해지나 느려짐
• Round 회수
크면 안전해지나 느려짐
• Function의 복잡도
크면 안전해지나 느려짐
DES (Data Encryption Standard)
• 가장 많이 쓰이는 방식.
• Feistel cipher structure
• Block size 64bit, key size 56bit
• 16 round
DES의 변형
• 2DES
• 2개 key사용
• 3DES
• 2~3개 key로 3회 암복호화
Block Operation Mode
• Idea: Block 들을 어떻게 운용하느냐로 안전성 향상 (각 Mode에 따라서 안정성, 속도 차이가 많이 난다.)
• 4가지 mode
ECB(Electronic Code Block)
CBC(Cipher Block Chaining)
CFB(Cipher Feedback)
OFB(Output Feedback)
ECB(Electronic Code Block)
• 각 block이 서로 독립적
• + simple
• + 병렬처리용이 -> 속도가 빠르다.
• - 같은 평문에 대해 동일한 암호문생성 -> 해커가 한 블록에 대한 암호문을 풀게 되면 다른 블록 암호문도 풀 수 있다.
( +는 장점, -는 단점 )
CBC (Cipher Block Chaining)
• Chain: 뒤에 것을 앞에 연결
• 최초의 평문 blk은 IV와 XOR
• 결과는 다음 평문 blk과 XOR해서 암호화한다
• +같은 평문 blk라도 다른 암호문 blk 생성 -> xor 단계를 거치기 때문 -> 보안성 좋음
• -Error propagation -> 중간에 err가 나면, 뒤에 단계도 다 err가 난다. 따라서 나머지 계산을 다시 해야함. 오류 전파.
• Ipsec, Kerberos5 등에서 사용
CFB(Cipher FeedBack)
• Feedback: 출력을 입력으로
• 초기blk을 암호화하여 결과를 평문 blk과 XOR
• 결과는 다음 encrypt시에 입력으로 사용
• 평문을 직접 암호화하는것이 아니다!
• +같은 plaintext blk라도 다른 cipher blk생성 -> 보안성 good
• -Error propagation
• -앞 블록의 계산이 끝나야 진행 가능 (병렬 처리X)
• CBC랑 유사한 구조를 갖지만 plain text를 암호화 하는 것이 아닌 xor를 하기 때문에 속도 향상.
OFB(Output FeedBack)
• CFB와 차이는?
- 암호화 알고리즘의 output이 feedback돼서 CFB에 비해 빠르다. xor계산 결과를 기다리지 않아도 되기 때문이다.
• 장단점은 CFB와 동일
각 mode에 따른 그림을 잘 보아야 한다. 특히, input과 output의 이어진 선들에 집중하자.
'Computer Science > 보안' 카테고리의 다른 글
Firewall(방화벽) (0) | 2020.11.09 |
---|---|
페르마 정리와 오일러 정리 (0) | 2020.10.03 |
모듈러 연산(mod) (1) | 2020.10.03 |
Intro crypt (0) | 2020.10.02 |
Intro (0) | 2020.10.02 |