개발스토리

Block cipher 본문

Computer Science/보안

Block cipher

무루뭉 2020. 10. 3. 16:24

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

2key사용

3DES

2~3key3암복호화

 

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: 뒤에 것을 앞에 연결

최초의 평문 blkIVXOR

결과는 다음 평문 blkXOR해서 암호화한다

+같은 평문 blk라도 다른 암호문 blk 생성 -> xor 단계를 거치기 때문 -> 보안성 좋음

-Error propagation -> 중간에 err가 나면, 뒤에 단계도 다 err가 난다. 따라서 나머지 계산을 다시 해야함. 오류 전파.

Ipsec, Kerberos5 등에서 사용

 

CFB(Cipher FeedBack)

Feedback: 출력을 입력으로

초기blk을 암호화하여 결과를 평문 blkXOR

결과는 다음 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
Comments