2019. 12. 25. 13:12ㆍProgramming/CS
Symmetric Key(대칭키)를 이용한 암호해독방식(confusion, diffusion)
암호화, 복호화 과정에 사용되는 키는 여러가지가 있고 Encrypt/Decrypt 시 같은 키를 사용하는 경우의 키를 대칭키(Symmetric Key)
라고 한다.
대칭키를 이용하여 암호해독을 하는 시스템들의 두가지 특성, 그리고 그와 관련된 암호방식알고리즘을 살펴보도록 한다.
그리고 이후에 DES, AES에 관하여 다룬다.
Symmetric Key Cryptography : 대칭키를 이용한 암호해독
Properties, 암호해독시스템의 2가지 특성
-
confusion : 치환, ABC → DGW, key-cipher 관계 감춤
-
diffusion : 확산, ABC → CAB, plain - cipher 관계 감춤
Classification of Ciphers
-
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에대한 정보는 알 수 없다.
-
computationally secure
-
브루트포스로 풀 수 있으나, 효율적인 알고리즘이 없다
-
RSA(asymetric key)
- RSA 128bit → RSA 256bit로 늘리면서 보안성이 더 쎄졌음!! NP 이다 얘내.
Classifications of Attacks
123갈수록 attacker가 더 많은 정보를 알고있다
-
Ciphertext only
- 오직 암호문만 알고있을 때
-
known-plaintext
- 한쌍의 input - output(plaintext - cypher)
-
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 CIPHER
→ WKLV 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 의 관계(통계적 성질)를 감추는 성질
-
여러번의 순열을 이용하여 확산
'Programming > CS' 카테고리의 다른 글
[OS] Dual Mode(이중모드), 하드웨어 보호 (0) | 2020.04.08 |
---|---|
[OS] OS의 서론, 역사, 인터럽트 기반 시스템 (0) | 2020.04.07 |
[OS] 폰노이만구조, CPU와 성능개선 (0) | 2020.04.04 |
[정보보안]AES(Rijndael)와 DES (0) | 2019.12.27 |
[정보보안]Feistel Cipher(파이스텔 구조) 와 DES (0) | 2019.12.26 |