# 암호화 #
암호화 : 어떠한 자료를 이해할 수 없는 형태로 만들어서 그 자료의 기밀성(confidentiality)를 보장한다.
암호화를 위해서는 알고리즘과 비밀 값이 필요한데,
암호화 알고리즘 = 암호, Cipher
암호화에 쓰이는 비밀 값 = key
-> 비밀키를 모르면 누구도 암호화된 메시지에서 어떤 정보를 알아낼 수 없다.
암호화되지 않은 메시지를 평문 (plain text),
암호화된 메시지를 암호문 (cipher text),
평문과 키를 암호화 함수에 입력하여 암호문을 만들고
암호문과 키를 복호화 함수에 입력하여 평문을 얻는다.
★ 암호문은 평문과 길이가 같거나 더 길다.
하지만 평문보다 짧은 길이의 암호문은 없다
# 고전 암호 #
고전암호: 컴퓨터가 쓰이기 전, 비트가 아닌 문자를 다루는 암호
+ 시저 암호 (=카이사르 암호) /,Caesar cipher
: 메시지의 각 글자를 알파벳 순서에서 3자리 뒤로 순환 이동한 글자로 대체한다.
(만약 Z라면 C가 된다.)
ex) CAESAR -> FDHVDU
매우 쉬워서 암호화기능을 한다고 보기 어렵다.
만일 순환이동할 자리수를 임의의 수로 바꾼다 하더라도 시간이 조금 더 걸릴 뿐 사람의 힘으로 풀어낼 수 있다.
+ 비즈네르 암호 / Vigenere cipher
: 키로 정의된 값만큼 각 글자를 이동한다.
비즈네르의 key는 일련의 글자들로 이루어져 있고 각 글자는 알파벳 위치에 따라 특정한 수를 나타낸다. 예를 들어 키가 ABC라면 평문의 글자를 0자리, 1자리, 2자리 0자리, 1자리, ... 이동한다.
비즈네르가 시저보다는 안전하지만 여전히 취약하다.
+ 비즈네르 해독하기 1 : 키의 길이 알아내기
암호문에서 반복되는 글자가 있는지 확인하고 이 단어들 사이의 글자 수를 통하여 키의 길이를 추론한다.
ex) THEYDRINKTHETEA 라는 문장을 키 DUH를 이용하여 암호화한
암호문 WBLBXYLHRWBLWYH
이때 WBL이 반복하여 두 번 나타나는데 이 단어 사이의 글자 수가 9글자이므로
키가 9의 약수 중 하나일 것으로 추론할 수 있다
+ 비즈네르 해독하기 2 : 도수분석(frequency analysis)
도수분석=빈도분석
언어에서 글자들의 분포가 고르지 않다는 점을 활용하여 실제 키를 추론한다.
영어에서 가장 흔히 쓰이는 문자 (ex: a, e, ...)는 암호문에 나오는 문자일 것임을 이용한다
# 암호의 작동방식
암호는 두 개의 구성요소로 이루어지는데 바로 ‘치환 permutation’과 ‘운영모드 mode of operation’이다.
* 치환 permutation: 주어진 한 항목을 변환하는 함수
각 치환에 고유한 역원이 존재한다는 전제조건이 붙는다.
안전한 암호를 위해서는 치환이 다음 세 조건을 만족해야 한다.
+ 치환은 반드시 키로 결정되어야 한다.
: 키의 비밀을 유지하는 한, 치환의 비밀도 유지할 수 있다.
+ 키가 다르면 치환도 달라야 한다.
서로 다른 키가 동일한 치환을 가지면 암호문을 풀기 위해 시도할 경우의 수가 줄어든다.
+ 치환은 (넓은 의미에서) 무작위성을 가진다.
: 어떠한 패턴이 보이면 공격자가 치환을 예측할 수 있다.
-> 이 세조건을 모두 만족하는 치환을 안전한 치환(secure permutation = 보안 치환)이라 한다.
* 운영모드 mode of operation: 치환을 이용해서 임의의 길이의 메시지를 처리하는데 쓰이는 알고리즘
한 암호의 운영모드는 중복 문자들에 대해 서로 다른 치환을 적용함으로 평문의 중복 글자 패텬이 드러나는 문제를 완화한다.
= 안전한 암호를 구축하려면 안전한 치환과 안전한 모드를 조합하야 한다.
= 공격자는 메시지의 길이말고 아무 정보도 알아낼 수 없다.
# 안전한 암호
고전 암호는 사람이 할 수 있는 암산, 연산들로 한정되기 때문에 필연적으로 안전하지 않다.
암
암호가 안전하려면 치환 연산이 무작위해야 하며 실제로 무작위하게 만드는게 제일 좋다
단순한 연산을 사용함에도 안전한 치환을 얻기
: 테이블로 표현된 무작위 치환을 매번 선택하고 그 테이블을 참조하여 대입을 수행한다
단점 : 서술이 길어짐
짧은 서술을 가지지만 안전한 치환
: 복잡한 연산을 사용하기
'about Security > 암호' 카테고리의 다른 글
[현대암호기초] #05 block cipher / DES + AES (0) | 2020.10.29 |
---|---|
[현대암호기초] #04 블럭암호 block cipher(1) (0) | 2020.10.28 |
[현대암호기초] #03. 무작위성 (0) | 2020.10.12 |
[현대암호기초] #02. OTP + 공격모형 + 암호화 응용 (0) | 2020.10.12 |
[현대암호기초] #00. 암호화 encryption (0) | 2020.10.11 |
댓글