ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 암호학 5주차 - DES
    보안/CRYPTOGRAPHY 2024. 3. 15. 22:15

    0. 서론

    DES(Data Encryption Standard)

    : 미국의 국가 안보국에서 IBM의 루시퍼 알고리즘을 개량하여 만든 대칭키 암호

    • DES는 키 길이를 56비트로 줄였고 내부에서 사용하는 알고리즘도 일부 변경했다.
    • 현대에는 DES에 대한 공격 기법이 많이 연구되어 더 이상 블록 암호의 표준으로 사용하지 않는다.
    • DES는 8바이트를 한 블록으로 하는 블록 암호이고 전체 구조는 초기 순열, 최종 순열, 페이스텔 구조의 16 라운드, 그리고 각 라운드에 사용되는 48비트의 키를 생성하는 키 생성 함수로 구성되어있다.
     

    1. DES의 원리

    DES는 혼돈 성질을 만족하기 위해 치환을, 확산 성질을 만족하기 위해 순열을 사용한다.

    치환과 순열을 여러 번 교차해서 반복 적용하면 혼돈과 확산의 성질을 모두 만족할 수 있다.

    • 곱암호(Product Cipher)

    : 치환이나 순열과 같은 단순 연산으로 한 라운드를 구성하고 각 라운드를 여러 번 반복하여 암호학적 안전성을 확보하는 암호

    • 페이스텔(Feistel) 구조

    - 특징

    - 역함수가 존재하지 않아도 된다.

    - 암호화에 사용한 라운드 키를 역순으로 입력하면 복호화가 이루어진다.

    - 오른쪽 블록은 처리되지 않아 비페이스텔 암호화와 같은 안전성을 갖기 위해 라운드를 2배 정도 사용해야 한다.

     

    - 페이스텔 구조를 따르는 과정

    1. 입력으로 들어온 블록을 동일한 길이의 왼쪽 블록과 오른쪽 블록으로 나눈다.

    2. 각 라운드마다 오른쪽 블록은 다음 라운드의 왼쪽 블록으로 입력된다.

    3. 왼쪽 블록은 오른쪽 블록에 라운드 함수 F를 적용한 결과와 xor 되어 다음 라운드의 오른쪽 블록으로

    입력된다.

     

    -> P=평문, K=라운드에서 생성된 키 라고 할 때

    (1)L0 =P[:len(P)/2], R0 =P[len(P)/2:]

    (2)Ln+1 =Rn

    ​(3)Rn+1=LnF(Rn,Kn)


    2. DES의 과정

    • 1&3번째 단계에서

    DES 는 시작할 때 초기 순열(Initial Permutation, IP)을, 마지막에는 최종 순열(Final Permutation, FP)을

    수행한다.

    - 초기 순열과 최종 순열은 정해진 테이블을 이용해 64비트 입력을 비트 단위로 전치한다.

    - 테이블의 n번째 값이 m일 때 출력의 n번째 비트는 입력의 m번째 비트가 된다.

    - 초기 순열과 최종순열은 각각 초기 순열 테이블(IPT)과 최종 순열 테이블(FPT)을 이용한다.

    - 초기 순열과 최종 순열은 역관계에 있다.

    • 2번째 단계 개요

    : 라운드 함수를 사용한다

    - 라운드 함수 F에는 오른쪽 블록만 입력되므로 입력의 길이는 32비트이다.

    - 라운드 함수는 확장 순열(Expansion P-Box), 라운드 키 결합 (XOR), 치환 테이블(S-Box), 고정 순열

    (Straight P-Box)로 이루어져 있다.

     

     

    • 2단계 구체적인 과정

    1. 확장 순열과 라운드 키 결합

    • 확장 순열은 입력을 비트 단위로 전치하고 전체 길이를 48비트로 확장한다.
    • 32비트의 입력값을 4비트씩 8개의 부분으로 나누고 테이블을 참조하여 각각 6비트로 확장한다.
    • 라운드 키 결합은 확장 순열로 나온 출력을 라운드 키와 xor 하는 것이며 초기 순열, 최종순열과 같은 방식이다.
     

     

    2. S-Box와 고정 순열

    • S-Box(Substitution-Box)는 라운드 키 결합에서 출력된 48비트 결과 값을 32비트로 축소한다.
    • S-Box는 4행 16열로 이루어진 표를 사용하고 표의 각 값은 4비트로 표현되는 수
    • S-Box 적용 과정

    1. 입력을 6비트씩 8개의 부분으로 나눈다.

    2. 여섯 비트 중 첫 번째와 마지막 비트로 행을 결정하고 나머지 네 개의 비트로 열을 결정한다.

    3. S-Box표에서 행과 열을 참조하여 값을 반환한다. DES에서는 여섯 비트로 자른 부분마다 다른 S-Box를

    사용한다.

    4. S-Box로 길이를 축소하고 나면 고정 순열(Straight P-Box)로 다시 비트 단위 전치가 이루어진다.

    • 키 생성 함수

    키 생성 함수(key scheduling): 64비트의 입력을 받아 각 라운드에 필요한 48비트 라운드 키를 생성하는 함수

    - 패리티 비트 제거(Parity Bit Drop), 쉬프트(Shift), 압축 순열(Compression P-Box)로 구성되어 있다.

     

     

    • 패리티 비트 제거(Parity Bit Drop)

    : 입력에서 패리티 비트를 제거하고 남은 56비트에 순열을 적용하는 과정

    DES의 비밀키에서 각 바이트의 가장 오른쪽 비트는 자신이 속한 바이트의 나머지 7비트에 대한 홀수 패리티 비트이다.

     

    • 홀수 패리티 비트(Odd Parity Bit)

    : 한 바이트를 이진수로 표현했을 때 1의 개수가 홀수가 되도록 덧붙인 비트

    ex. 1010101 -> 10101011

    - 특징

    - 패리티 비트는 통신 중에 비트 반전이 일어나지 않았음을 보증한다.

    - 홀수 패리티 비트를 사용해서 통신할 때 1의 개수가 짝수인 바이트가 있으면 반전이 일어났다는 것을

    알 수 있고 수신자가 재전송을 요구할 수 있다.

    • 쉬프트(Shift)

    : 입력을 왼쪽 28비트와 오른쪽 28비트로 나누어 각각을 1비트나 2비트만큼 왼쪽으로

    순환 쉬프트(Cyclic Shift)하는 과정

    - 1, 2, 9, 16 라운드: 1비트 쉬프트 // 나머지 라운드는 2비트만큼 쉬프트

    ex. 10101111 - 왼쪽 1비트 순환 쉬프트 -> 왼쪽 끝의 비트가 오른쪽 끝으로 이동해서 01011111

    • 압축 순열(Compression P-Box)

    : 56비트의 입력을 48비트의 길이로 압축하는 과정


    3. DES의 응용

    • 다중 DES

    : 서로 다른 키를 사용하는 DES모듈을 여러 개 이어붙여서 DES의 약점을 보완한 암호 시스템

     

    - 이중 DES: DES를 두 겹으로 사용, 112비트의 키 사용

    - p를 평문, c를 암호문이라고 할 때

    암호화: Ek2(Ek1(p))=c

    - 삼중 DES: DES를 세 겹으로 사용, 168비트의 키 사용

    - p를 평문, c를 암호문이라고 할 때

    암호화: Ek3(Dk2(Ek1(p)))=c

    - 중간에 복호화 하는 이유: k2=k3 설정 시 E_k3와 D_k2가 상쇄되어 키가 k1인 단일 DES로도

    사용할 수 있기 때문이다.

    - 중간 일치 공격(Meet-in-the-Middle-Attack)으로 안전성을 많이 높일 수 없다.

    이중 DES는 단일 DES와 비슷한 안전성을 가지고 삼중 DES는 키 길이를 2배로 늘리는 효과만 얻는다.

    • 중간 일치 공격

    : 어떤 평문 p와 p를 암호화한 암호문 c를 알 수 있을 때 수행 가능한 공격

     

    - 이중 DES에 대한 중간 일치 공격 방법

    1. 56비트 키 공간 K에서 가능한 모든 키 k1으로 p를 암호화하여 집합 S1를 생성한다.

    S1={Ek1(p)∣k1K}

    2. K에서 가능한 모든 키 k2c를 복호화하여 집합 S2를 생성한다.

    S2={Dk2(c)∣k2K}

    3. S1의 모든 원소와 S2의 모든 원소에 대해 Ek1(p)=Dk2(c)를 만족하는 k1, k2의 쌍으로

    후보키의 집합 CK를 생성한다.

    CK={(k1,k2)∣Ek1(p)=Dk2(c),Ek1(p)∈S1,Dk2(c)∈S2}

    4. 다른 평문 pp 암호화한 암호문 c'을 생성한다.

    5. CK의 모든 원소에 대해 Ek1(p)=Dk2(c)을 만족하는 k1k2의 쌍으로 집합 CK를 갱신한다.

    CK={(k1,k2)∣Ek1(p′)=Dk2(c),(k1,k2)∈CK}

     

    6. CK의 원소가 하나가 될 때까지 4와 5의 과정을 반복한다.

    • 이중 DES에 중간 일치 공격을 수행할 때 연산량에 영향을 미치는 것은 2^56번의 DES암복호화이다.
    • 삼중 DES는 이 공격을 적용해도 112비트 키를 사용하는 DES 이상의 안전성을 가진다고 있어서 다중 DES 사용할 때는 일반적으로 삼중 DES를 사용한다.

    '보안 > CRYPTOGRAPHY' 카테고리의 다른 글

    암호학 6주차 - Diffie-Hellman 알고리즘  (0) 2024.03.16
    암호학 5주차 - 블록암호  (0) 2024.03.16
    암호학 5주차 - AES  (1) 2024.03.15
    암호학 4주차 - 현대 암호  (0) 2024.03.15
    암호학 4주차 - 고전 암호  (0) 2024.03.15
Designed by Tistory.