[정보보안] Symmetric Key(대칭키)를 이용한 암호해독방식

2019. 12. 25. 13:12Programming/CS

Symmetric Key(대칭키)를 이용한 암호해독방식(confusion, diffusion)

암호화, 복호화 과정에 사용되는 키는 여러가지가 있고 Encrypt/Decrypt 시 같은 키를 사용하는 경우의 키를 대칭키(Symmetric Key) 라고 한다.

대칭키를 이용하여 암호해독을 하는 시스템들의 두가지 특성, 그리고 그와 관련된 암호방식알고리즘을 살펴보도록 한다.

그리고 이후에 DES, AES에 관하여 다룬다.

 

Symmetric Key Cryptography : 대칭키를 이용한 암호해독

Properties, 암호해독시스템의 2가지 특성

  1. confusion : 치환, ABC → DGW, key-cipher 관계 감춤

  2. diffusion : 확산, ABC → CAB, plain - cipher 관계 감춤

 

 


 

Classification of Ciphers

  1. unconditionally Secure

  • OTP(one time pad) : XOR 연산으로 암호화
    이는 brute force로 풀수없음(어떤키가 올바른 키인지 모름) A XOR B = C, A XOR C = B, B XOR C = A 이기때문에, 파악 불가능
    패드는 한번 사용하고 버려야한다! 현실적으로 패드를 100%노출안되게 지키는게 더 어려워서 힘듬

  • 해결책 → 요샌 그래서 공개키 암호화로 대체!
    조건 : H(M)≤H(K) 키의 길이가 메세지의 길이보다 크거나 같아야됨 무조건

  • one time password(OTP) : 나는 basic function, 서버컴퓨터는 more function 을 가지고 있어 basic function으로도 암호화/복호화가 가능하다.
    누르는 횟수별로 Hash function 을 몇번 중첩하게되는지의 원리. 당연히 hash에대한 정보는 알 수 없다.

  1. computationally secure

  • 브루트포스로 풀 수 있으나, 효율적인 알고리즘이 없다

  • RSA(asymetric key)

    • RSA 128bit → RSA 256bit로 늘리면서 보안성이 더 쎄졌음!! NP 이다 얘내.

 


 

 

Classifications of Attacks

123갈수록 attacker가 더 많은 정보를 알고있다

  1. Ciphertext only

  • 오직 암호문만 알고있을 때
  1. known-plaintext

  • 한쌍의 input - output(plaintext - cypher)
  1. chosen-plaintext

  • 여러개의 plaintext 중 chosen 하여 encryption 한 결과 cypher이어떤것인지를 알고있을떄

  • 이 경우에는 RSA가 절대적으로 안전하지 않다고 함

 


 

 

Types of Ciphers

1. Block Ciphers

  • ⭐️대칭키암호 : encryption - decryption 에서 사용되는 키가 같다

  • ⭐️공개키암호 : 암호화 - 공개키, 복호화 - 개인키

  • 메시지를 고정길이 block 으로 chop → 각 블록을 같은 키로 암호화

  • DES, e-mail

  • Describe the Strict Avalanche Conditions in symmetric ciphers.

  • plaintext/key 모두 1bit의 변경이 있을 때 cipher(output bits) 는 랜덤으로 50%이상이 변경되어야한다.

  • 그럼 쓸준비 어케하는지부터 알아보쟛!

1. Message Padding

2-1. Electronic Code Book Mode

  • 장/단점

    • 빠르고 간편하지만, 같은 M → 같은 C를 내뱉는다. (same input → same output)

    • 반복공격(reply attack)에 취약하다.. 그럴경우 다른 암호문으로 대체해야함..

  • solution

    • 그래서!! 임시 암호키 등 short pieces of information 만 transmission(전송)한다

위의 Electronic Code Book의 단점을 보완한 개념이다.

2-2. CBC(Cipher BLock Chaing)

정의

  • 이전 단계에 암호문과 다음 단계의 입력에 XOR이 반영된다.

  • 암호화 입력 값이 이전 결과에 의존하기 때문에, 병렬화가 불가능.

  • 복호화 : 각 블록을 복호화 → 이전 암호화 블록과 XOR하여 복호화 가능

  • 암호문 자체가 이전 일련의 과정을모두 포함하고있다. 계속해서 바뀌고 바뀜(same M→different C!)

  • 대칭키임. 왜냐? 항상 같은 키를 사용하기 때문!! (encryption 여러번도, decryption에서도)

Encryption

  • 각각의 plaintext block → 이전의 ciphertext block(encryption) 과 XOR!

Decryption

  • XOR 역함수

 

2. Stream Ciphers

Definition

  • 메세지를 같은 길이block 으로 chop → 다른 키로 암호화

  • Plaintext Stream + Key-Stream(Key+Random) = Ciphertext Stream

  • 공유비밀키로 인해 key-stream이 발생!!

  • 대칭키 암호화의 일종

Limitations

  • Confusion(치환) 만 가능!!

  • sender, receiver 사이에 손실이 있다 → resync!!

→ 그래서 뭔가 잘못됐다 싶으면!! if cryptosync 가 lost되었다 싶으면

→ Self-synchronous Stream Cipher !!!! (다시 동기화 → 전송)

같은 키를 사용하면 안된다

$$(M1⊕ K) ⊕ (M2⊕ K) = M1⊕ M2$$

  • XOR이니까 키 재사용 가능해보이지만!!!

  • 재사용하면 굉장히 위험함!! same키를 사용하면 안된다!!

 

 

Stream ciphers vs Block ciphers

직접적으로 동기화가 되어있으니, block으로 나누어 압호화하여 보내는 시간보다 훨씬 단축이 된다.

Stream ciphers는 plaintext stream + pseudo-random stream(키를 넣어서 랜덤으로 뽑아줌) ⇒ ciphertext stream

직렬 통신 채널의 블록 암호보다 동일한 키 스트림을 결합하여 수신기에서 반전된다. 그리고 그 반복된 입력 패턴이 랜덤으로 변화하기 때문에, 반복된 암호 스트림 시퀀스를 생성하지 않는다.

그래서 직접적으로 stream한 상태이다. 라고 표현을 할수있는것!

 

 

Stream ciphers

self-synchronous stream cipher

: 블록암호에 + stream ciphers 결합. 압호화된 문자를 키의 손실 여부를 판단한다. (하나씩 보낼 때 마다, sender랑 reciever의 key를통해서 나온 cipher를 비교하여 같은값이면 다음 값을 받아오고, 다른값이면 동기화하여 하나가 끝날때까지 다 잘못된값을 받아올 필요가없다. 잘못된걸 인지하자마자 re-sync를 시도하기때문

 

 


 

Simple Conventional Systems

Transposition : 위치변경

행을 섞어 → 위치 변경 → 문자를 대체하는경우에서만 빈도분석이 효과가 있다.

Letter Frequency

→ 빈번한 특정 a letter (알파벳) 사용: 알아채기 쉽다. 하지만 표준편차가 장난아니다.. 굉장하다.. 크다..

Diagram and Trigram Frequencies

실제 영어의 빈도가 이렇게 되는데, 어떤 문자열을 가지고 빈도수를 따져봤을 때 1,2,3순위를 저 단어로 대치한다!!

전치 패턴을 유추할 수 있는 문자 쌍(a pair)과 상대적 위치(relative positions) 를 찾을 수 있다.

Substitution Ciphers

Encryption

문자별로 변형된 글자로 Mapping(confusion)

→ 문자를 대체하는경우에서만 빈도분석이 효과가 있다.

이 경우, BruteForceAttacks : 26!(조합)을 통해 해독... 근데 겁나 오래걸리고 성능이 떨어진다.

→ 대량 암호문 분석시 문자의 빈도에 따라 다른 단어로 맵핑하여라

 

Shifted Alphabet

:몇칸씩 변경해서, 암호가된다.

$$f(x) = (x+k)mod 26$$

Example.

 

Caesar Cipher

알파벳을 k개만큼 shift한다. ex. shift of 3 : THIS IS A CAESAR CIPHERWKLV LV D FDHVDU FLSKHU

n과 k가 서로소일 경우, 정수배가 된다. 그래서 모두 겹치는게하나도 없이 1:1 Mapping이 가능하다는 의미를 내포하고있다.

$$f(x) = (xk+j)modn$$

위의 함수를 변형하면, i의 차수에 따른 고차방정식으로 표현이 가능하다.

사실상 Encryption시 각각의 다른 hash function을 사용한다. (EC 후 개념으로 등장예정) 위 고차방정식을 이용한 통계적 의미를 살펴보면,

 

smearing statistics

각각 다른함수로,다른 메세지를 변환하기때문에 다 다른 return의 결과를 갖게된다. 그래서, 결국 이 값들이 모두 통계적으로 의미를 잃는다.

 

Vigenere Cipher

반복된 키워드를 이용한 방식. 위 사진의 경우 ICR 이 반복된다..

그 알파벳이 각각 shift 값을 가지고있으면, 키가 반복되면서 각 key의 spell과 매칭되는 알파벳이 shift 하여 결론적으로 plaintext가 switch되는것

 

Kasiski Method

같은 문자열의 반복 사이의 distance 를 알아낼 수 있어 key의 length를 알아낼수있다.

메세지에서 반복되는 단어가 있으면 그 사이의 distance 를 가지고 key의 length를 구할 수 있음!!

 

Strict Avalanche Condition

1비트 당 암호화된 문자의변경→ 50%확률로 출력비트가 변경되기위해서

Strict Avalanche 조건은

input 1bit 의 change → 정확히 1/2의 output bits 의 change

(스트림이아니라) 간단하게 맵핑을 한다고 해도, 그 맵핑이 반복될수록 더욱 복잡해진다. → 강력한 암호

강력하게 얽힌 Mapping → 암호가 강력해진다

 

 


 

 

암호개론에서 DES와 AES이해에대한 선지식으로, confusion과 diffusion, 그리고 그와관련된 방식들을 이해해보았다.

마지막으로 정리를 하며 포스팅을 마친다.

Iterated Block Cipher(반복 블록 암호)
- substitution - confusion
- transposition - diffusion

confusion

  • key - cypher 의 관계를 감추는 성질

  • 다른 문자로 치환

  • Encryption KEY = Mapping from plaintext to ciphertext

diffusion

  • plaintext - cypher 의 관계(통계적 성질)를 감추는 성질

  • 여러번의 순열을 이용하여 확산