4-2 Stream Cipher와 Block Cipher

@hongo · April 18, 2022 · 1 min read

classification of Symmetric Encryption

현대에서 쓰이는 Symmetric Encryption은 Stream Cipher와 Block Cipher로 나뉜다.

sb

  • Stream Cipher : key를 seed값으로 써서 bit stream generation 알고리즘을 돌림. 평문과 key를 xor연산

    ideal case : One-time pad

  • Block Cipher : 평문을 128bit단위로 잘랐다면 또 다른 128bit로 변경. 어떻게 변경할건지의 규칙이 key.

    같은 평문이라도 어떤 key냐에 따라서 다른 cipher text생성

    key에 의해서 block cipher의 동작이 결정됨.

    동작은 본질적으로 block 단위를 다른 블록으로 덮어쓰는 역할을 함

    (이 두 개가 중요함. 다른건 그냥 흐름정도만 이해)

Feistel Cipher

Block Cipher의 일종

plain text를 두 부분으로 자르고 연산 반복
(두 개로 잘랐으니까 블록임. 암튼 블록임.)
연산을 각각 한 다음에 두 개를 교차함
암호화와 복호화가 키 순서를 제외한 전체가 같은 계산을 반복한다

  • 많은 블록암호가 Feistel Cipher 형식을 취한다.
  • 물론 Feistel Cipher 형식이 아닌 블록암호도 있다 (ex. AES)
  • 내부적으로 substitution과 permutation으로 구성되어있다
  • Substitutions : 각 plaintext의 요소나 그룹 bit들을 다른 ciphertext 그룹으로 대체. 치환
  • Permutations : 각 원소의 순서를 바꿈. 위치이동. 전치. (permutation cipher와 혼동하면 안됨. 걔는 substitution의 일종)

ex) DES

des

치환, 전치 (두 개로 자르고 교차한다)

라운드키, 서브키

Substitution-Permutation Network (SPN)(ex. AES)

교차가 없음

ex) AES

aes

@hongo
홍고 블로그