ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Block Ciphers
    보안/컴퓨터보안 2019. 9. 28. 23:26

    Block Cipher

    plain text를 블록단위로 나누어 암호키와 알고리즘을 적용하는 암호화 방식.

     

     

    Block Cipher는 반복으로 구성되어 있다.

    - 키를 확장한다 (ex. 16byte를 길게만든다? round가 12개면 12개의 key)  
      => 라운드마다 다른 키를 넣는다 

    - plaintext와 ciphertext가 고정된 크기의 블락으로 이루어져 있다. (64bit or more)

    - ciphertext는 round-function의 반복으로 부터 얻어진다. (동일한 round function 반복) 

    - round-function의 input에는 key이전 round의 output으로 이루어져 있다.

    - round function 정의해야 한다.

    - 주로 소프트웨어에서 실행된다.

     

    Feistel Cipher: Encryption

    - Block cipher의 타입중 하나이고, 특정한 block cipher를 의미하는 것은 아니다.

    - plain text 블락을 Left와 Right로 나눈다. => P = (L0, R0)

    - Ciphertext C = (Ln, Rn)

    - 각 라운드에서 Li = Ri-1, Ri = Li-1 xor F(Ri-1,  ki

    - Ki는 subkey 이다

     

    Feistel Cipher: Decryption

    - CiphertextC = (Ln, Rn)에서 부터 시작

    - 각 라운드에서 Ri-1=Li, Li-1 = Ri xor F(Ri-1, Ki) 

    - Plaintext P = (L0, R0)

     

     

     

    DES (Data Encryption Standard)

     

    - Feistel Cipher방식의 encryption 

      => 한번에 라운드를 거쳤을때 입력에 대해 절반만 변이가 나타난다.
    - 핵심문제..각각의 라운드에서 round function이 필요한데 어떻게 디자인하는지?
    - block size=64bit

      => encryption or decryption function으로는 64bit크기의 데이터블럭 입력이 주어져야하고 처리함 (AES는 128bit)
    - key length=56bit (56bit 초기 공유키)
    - 16 rounds
    - 각각의 라운드에 48bits subkey가 필요

    - 각 라운드 substitution과 permutation 반복

    - 보안: 주로 S-box에 의존한다. (6bit->4bit으로 만듦. s=Substitution)

     


    initial permutation -> 16rounds function -> swap operateion -> final permutation

    => 64bit cipher text(output)

    (initial permutationfinal permutationinverse관계. decryption에서 중요한 개념)

     

     

    다음 그림은 각 라운드에서 일어나는 operation

    각 라운드에서 일어나는 operation


    DES Expansion Permutation

    32bit input을 48bit output으로 만든다. 

    같은 값들이 들어가지만 위치가 다르고 순서가 바뀌어서 반복되는 숫자들이 있다.

     

    DES S­‐box

    처음과 마지막 비트는 열을 참조하고 중간에 비트들은 행을 참조한다.

    (ex. 101101 => 열:11, 행:0110 => 0001)

     

    DES P-box

    32bit 값들의 위치를 뒤죽박죽으로 만들어 놓는다.

     

    몇몇 중요한 내용

    - initial permutationround1 이전에 일어난다.

    - 마지막라운드가 끝난 후 나눠진 L, R은 스왑된다.

    - last permutationR16과 L16에 적용된다.

    - 이중 무엇도 보안목적을 제공하지 않는다.

     


    -Security of DES 

    - 보안이 S-box에 너무 의존적이다.

    - 백도어는 존재하지 않는다

    - 컴퓨터의 발전에 따라 56bit의 키 길이는 짧다. exhaustive key search 공격 가능하다.  

     

    => triple DES가 나타남


    Triple DES

    -56bit DES key는 너무 작기때문exhaustive key search 공격이 가능해져 나타났다.

    -DES를 3번 수행한다. 

     => C= E(D(E(P,K1)),K2),K1) 

          P= D(E(D(C,K1),K2),K1) 
    -2개의 서로 다른키가 필요하다.

     => 왜 3개가 아닐까?

           :Backward compatible (D(E(P,K1)),K2),K1) = E(P,K)

            112bits 키도 충분하다.

    댓글

Designed by Tistory.