암호의 구분

 

이동암호(Shift Cipher) 

 - 영문자를 나열하고 환자 전의 문자를 일정방향으로 일정 간격 시프트(shift) 시키는 방법이 있다.

 - Caesar 암호 :  시프트간격을 3만큼 평행이동 시킴으로 써 암호화함 a->D, b->E

- 전수 조사 공격, 소모적 공격(Exhaustive Search)에 취약

 

치환암호 (subsititution cipher)

단일 치환암호(Monoalphabetic Substitution Cipher, simple subsititution)

 - 평문문자를 다른 문자로 치환하여 암호화 하는 방식으로 암호화 키의 총 수 는 26! - 단순 환자 암호표

 - 전수 조사 공격시 2^88가지로 많은 시간이 필요하므로,  통계적 특징을 이용한 빈도분석에 의한 암호해독에 취약함

다중 치환암호(Polyalphabetic Substitution Cipher)

- 암호문 문자의 언어의 통계학적 성질을 제거할 수 있는 방식으로, 다표식 환자표를 2회이상 적용하는 방식

- 평문에 등장하는 문자의 빈도와 암호문에 등장하는 문자의 빈도를 다르게 만드는 암호 알고리즘

- Vigenere cipher : 특정 문자열,키워드(d)를 정한 후, vigenere cipher 변환표에서 평문과 키워드에 일치하는 위치하는 문자료 변환

 

전치암호(transposition, permutaion)

 - 평문문자의 순서를 어떤 특별한 절차에 따라 재배치하여 평문을 암호화하는 방식

 - 지름이 동일한 scytale 이라는 연통을 나눠 갖고, 파피루스를 감아 횡으로 평문을 작성하여 전치 암호화 

단순 전치 암호(simple transposition cipher)

- 정상적인 평문 배열을 특정한 키의 순서에 따라 평문 배열을 재조정하여 암호화

ex) 123456 > 351642

 

페이스텔 암호(Feistel)

- 암호 방식에서 전치와 환자를 반복시켜 암호화하면 암호문에 평문의 통계적 성질이나 암호키와의 관계를 숨길수 있어 보다안전한 암호 구성 가능

 

암호해독

 

Kerckhoffs의 원리(Kerckhoffs' Principle)

"암호 해독자는 현재 사용되고 있는 암호 방식을 알고 있는 것을 전제로 하고, 암호 해독을 시도하는 것으로 가정"

- 공격자는 항상 암/복호 알고리즘은 알고 있다고가정

- 암호의 안전성은 키의 안전성에만 바탕을 둠

- 키를 알아내는 것이 매우 어려워서 암/복호화 알고리즘을 비공개로 할 필요가 없어야 함

 

암호해독 방법은  암호 해독자가 사용 또는 알고 있는 내용에 따라 달라짐

 

1. 암호문 단독 공격(ciphertext only cryptanalysis)

  - 암호 해독자는 단지 암호문 C만을 갖고 이로부터 평문 M이나 키 K를 찾아내는 방법

  - 평문 M의 용장도, 통계적 성질, 문장의 특성 등을 추정하여 해독

2. 기지 평문 공격(known-plaintext cryptanalysis)

  - 암호 해독자는 약간의 평문 M에 대응 하는 암호문 C를 알고 있는 상태에서 해독하는 방법 

  - 암호문 C와 평문 M의 관계로부터 키 K나 평문 M을 추정하여 해독

3. 선택 평문 공격(chosen-plaintext cryptanalysis)

  - 암호 해독자가 사용된 암호기에 접근할 수 있어 평문 M을 선택하여 그 평문 M에 해당하는 암호문 C를 얻어 키 K나 평문 M을 추정하여 암호를 해독하는 방법

4. 선택 암호문 공격(chosen-ciphertext cryptanalysis)

  - 암호해독자가 암호 복호기에 접근할 수 있어 일부 암호문 C에 대한 평문M을 얻어 암호를 해독하는 방법

 

Shanon Theory

 

암호는 혼돈과 확산 특성을 동시에 갖도록 치환과 전치를 결합하여 사용해야 하며, 안전성을 높이기 위해 연산들을 반복적으로 사용할 것을 제시

 1. 혼돈(confusion) : 평문의 작은 변화가 암호문에 어떤 변화를 일으킬 것인지 예측할 수 없는 성질을 말하며 암호문과, 암호키 간의 관계를 알기어렵게 만듦, Subsititution(치환)

 2. 확산(diffusion) : 평문의 통계적 특성을 암호문 전반으로 확산시켜 이를 숨기는 것을 말하며, 이를 통해 암호문과 평문 사이의 관계를 알기 어렵게 만듦, Transposition(Permutation, 순열, 전치)

반응형

'Information Security > Cryptography' 카테고리의 다른 글

암호학 용어 정리 및 분류  (0) 2023.10.29

평문(plain text, P) : 암호화가 되어 있지 않아 누구나 식별할 수 있는 문장 또는 문자열

암호문(cryptogram 또는 ciphertext, C) :  평문을 일반인이 이해할 수 없는 형태로 변형된 문장

암호화(encryption process) : 평문을 암호문으로 변환하는 과정

복호화(decryption procss) : 암호문을 평문으로 변화하는 방법을 알고 평문으로 바꾸는 과정

해독(analysis process), (attack process) :  변환방법을 모르는 상태에서 평문을 얻는 과정

암호화키(encryption key, EK) : 평문을 암호문으로 바꾸는 데 필요한 키

복호화키(decryption key, DK) : 암호문을 평문으로 바꾸는데 필요한 키

암호화함수(encryption function, E)

복호화함수(decryption function, D)

송신자(sender, alice) : 암호화된 정보를 안전하게 보내기를 원하는 사람 또는 주체

수신자(reciver, bob) : 송신자로부터 합법적으로 정보를 받는 사람 또는 주체

도청자(eavesdropper, trudy)  송신자와 수신자 사이에 전송중인 정보 또는 저장된 정보를 가로채려는 사람 또는 주체

 - 단순히 정보를 가로채려는 사람을 수동적인(passive) 도청자

 - 정보의 변조 또는 차단 등으로 수신자를 혼돈시키는 도청자를 능동적(active) 도청자

 

 

대칭암호와 비대칭 암호

 

 1. 대칭암호 (Sysmmetic cipher) :

암호화를 할 때 사용하는 키와 복호화할 때 사용되는 키가 동일한 암호 알고리즘

  - 비밀키 사전 공유에 대한 문제 존재

  - 대표적으로 DES, AES, SEED가 존재함

 2. 비대칭 암호(Asysmmetic cipher ) :

암호화를 할 때 사용하는 키와 복호화를 할 때 사용하는 키가 서로 다른 암호 알고리즘, 암호화 키를 공개키(public key)라 하고, 복호화 키를 개인키(private key)라고함

 - 대표적으로 RSA, EIGamal가 존재함

 

블록암호와 스트림 암호 

 

 1.  블록암호(block cipher) :

평문을 일정한 블록 단위로 나누어서, 각 단위마다 암호화 과정을 수행하여, 블록단위로 암호문을 얻는 방법

  - 다양한 플랫폼에서 범용적으로 사용, 메모리, 속도 측면에서 제한적, 안전성 분석 용이, 인증과 같은 암호 서비스에 사용

 1) 블록암호의 주요 연산

   ① 순열(Permutation)

     각 비트의 위치를 변경하거나 행렬을 이용하여 섞어주는 선형 연산 수행(단순 P-박스, 축소 P-박스, 확장 P-박스)

      * 축소 P-박스와 확장 P-박스는 역함수가 존재하지 않음

   ② 치환(Substitution)

     m 비트 입력을 n 비트 입력으로 치환(비선형 함수 사용)

     * m과 n이 같을 필요 없음.

   ③ Exclusive-OR(XOR)

     배타적 논리합, 각각의 비트에 XOR 연산 수행, 2개의 비트가 동일한 경우 0, 다른 경우 1 출력

   ④ Circular Shift(Rotation)

      순환 이동, n-비트 입력을 받아 r- 비트 만큼 회전이동하는 연산

   ⑤ Swap

      r=n/2인 형태의 Circular shift 연산

   ⑥ 분할(Split)과 결합(Combine)

 

  2) 블록 암호의 구성

   구성 : 암호화 과정 + 키 생성 과정(키 스케줄)

   - Shannon 이론 : 치환과 순열을 반복적으로 적용하면 안전한 암호를 설계할 수 있음

    ① 혼돈(Confusion) : 암호문과 비밀키 사이의 관계를 숨기는 역할, 주로 치환(Subsititution, S-box)을 이용

    ② 확산(Diffusion) : 평문과 암호문의 관계를 숨기는 역할, 주로 수열(Permutation)을 이용

    ③ 라운드(Rounds) : S-box, P-box, 기타 연산을 이용, Product Cipher를 구성하는 단위 연산

 

 3) 블록암호의 구조

   ① Feistel 구조 : DES, SEED 등

     - 블록 암호의 대표적인 구조, SPN 구조에 비해 설계가 자유로움

     - 암/복호화 과정이 동일, 라운드 함수에 무관하게 복호화(키 순서만 바꾸어 적용)

     - 구조적 취약점이 발견되지 않음

     - 취약한 라운드를 반복 사용함으로써 강한 암호를 설계

   ② SPN 구조 : AES, ARIA 등

     - Shannon의 혼돈(Confusion)과 확산(Diffusion) 이론을 바탕으로 한 구조

     - 치환(Subsititutions)와 순열(Permutation)을 반복하면 암전한 암호를 설계 할 수 있음

     - SPN 구조의 1라운드는 Feistel 구조의 2라운드의 효과를 가짐

     - 암호화와 복호화가 다름

 

 

 2.  스트림 암호(stream cipher) :

평문과 같은 길이의 키스트림을 생성하여 평문과 키를 비트단위로 합하여(XOR) 암호문을 얻는 방법

  - 실시간으로 사용 가능

  - 블록 암호에 비해 경량

  - 암호화 속도가 빠름(하드웨어 환경)

  - 키 수열에 대한 엄격한 동기화 요구

 

 

오류전달암호와 비오류 전달암호

암호화 과정에서 발생한 오류가 뒤에 암호화에 영향을 주는 암호를 오류전달암호(에러확산, error propagation cipher), 영향을 받지 않는 암호를 비오류전달암호라 한다.

 

피드백 암호와 비피드백 암호

스트림 암호계에서 주로 이용되는 방법으로 비트별로 암호화할 떄, 이미 암호화된 비트에 영향을 받아 암호화되는 암호를 피드백 암호(feedback cipher)라하고 그렇지 않은 암호를 비피드백 암호라 한다.

반응형

'Information Security > Cryptography' 카테고리의 다른 글

암호 구분 및 암호 해독  (1) 2023.10.29
반응형