암호의 개념
통신 당사자들끼리만 아는 비밀스런 신호나 부호
암호화와 복호화하기 위한 원리, 수단, 방법 등을 취급하는 기술이나 과학
고전(2차대전까지): 주체-사람들이 만들고 해석, 알파벳 byte 단위 stream
현대(2차대전이후): 주체-컴퓨터, bit단위(6bit) block 암호시스템
블록암호화 (Block Cipher) : 평문을 n개의 캐릭터나 비트단위 블록으로 분리한후
동일한 암호 알고리즘과 k를 각각의 블록에 적용해서 얻는다.
암호문을 만들기 위해 암호 키와 알고리즘이 데이터 블록 단위로 적용되는 암호화 방법.
평문의 동일 블록들이 하나의 메시지에서 동일한 암호문으로 되지 않도록 하기 위해 이전
암호 블록의 암호문을 다음 블록에 순서대로 적용하는 것이다. 같은 시간에 암호화된 동일
메시지들이 같은 암호문을 만들지 않도록 난수 발생기에 의한 초기화 벡터를 평문의 첫 블록에
조합함으로써 다음 블록들이 이전 암호 블록과 다른 암호문이 된다.
스트림암호화 (Stream Cipher) : 평문을 일련의 비트열로 취급하여 한 번에 1비트씩
혹은 바이트 암호화하는 대칭 암호화 방식
암호화(Cipher) : 캐릭터나 비트상에 적용하는 암호 변환
암호문 또는 암호(Ciphertext or Cryptogram) : 이해할수 없는 메시지
클러스터링(Clustering) : 일반 평문 메시지가 동일한 변환 알고리즘 과 서로다른 암호변수
혹은 키를 사용해서 일치하는 암호문 메세지를 만드는 경우
코드(Codes) : 단어나 문장 수준에 적용되는 암호변환
암호해독(Cryptanalysis) : 메시지를 전달받아야 할 최초로 의도했던 수신자를 속이기
위해 메시지를 변경하거나 가짜 메시지를 만들기 위해서 암호문에서 가치있는 평문이나
키값을 알아내고자 시도하는 행위, 암호문 공격임
암호화 알고리즘(Cryptographic Algorithm): 평문을 암호화 하고 암호문을 다시 복호화 하는 절차에 쓰이는 기법
암호법(Cryptography): 원치않는 수신자로부터 통신의미를 숨기는 기법이나 과학
암호 작성법(Cryptology): 암호법과 암호해독을 포함
암호 시스템(Cryptosystem): 메시지 스페이스에서부터 암호문 스페이스로의 변환 세트
해독(Decipher): 암호화 과정을 반대로 해서 메시지를 읽을수 있게 만든다.
평문(Plaintext): 누구나 쉽게 읽을수 있는, 사람이 판독가능한 형태의 메시지
스테가노 그래피(Steganography): 전하고자 하는 의미를 숨겨놓은 비밀 통신
암호화와 스테가노그래피의 차이점에 대해서 이해해두자...!!
암호화는 메세지의 존재는 확인되나 메세지의 내용자체를 숨긴다.
스테가노그래피는 아예 메세지 존재 자체를 숨긴다.
-- 암호의 역사 --
고대
- 이집트 상형문자 : 엄밀히 말해 암호는 아님(예전에 쓰던 문자이므로)
- Steganography : 메시지의 존재를 숨김
- 노예의 깎은 머리에 메시지를 기록하고 머리가 자라면 노예를 보내 메시지를 전달함
- 특수잉크 : 과즙으로 만든 잉크로서 촛불 등에 비쳐보면 글씨가 보임
- Microdot : 작은점에 메시지의 내용을 육안으로 쉽게 파악되지 않는 정보를 숨김
요새 주목받고 있는 최첨단 소자.. 미션임파서블3에 보면 초소형 영상장비를 볼수있다.
- Scytale 암호 : 암호문을 적은 테이프를 둥근 막대(Scytale)에 감으면 암호가 해독됨
중세~근데
-치환(Permutation)암호 : 평문을 일정 길이의 블록으로 나눈후 블록내에서 문자의 위치를
재배열하는 암호
-전치(Transposition)암호 : 평문을 일정 길이의 블록으로 구획하여 행렬로 만든후 이를
전치하는 암호
-대입(Substitution)암호 : 평문의 문자를 다른 문자로 대체하는 암호
제2차 세계 대전 전후 기계식 암호기기
-이니그마(Enigma)
-1918년 독일 개발
-평문을 자판으로 입력하면 각 회전자에 의하여 암호문으로 변환됨
-콜로서스(Colossus)
-1943년 영국 개발
-Enigma 암호 해독기
-하벨린(Habelin)
-스위스 개발
-한국전쟁에서 미군사용
현대의 암호
암호시스템 : 단, Ke : 암호화키, Kd : 복호화키 (여기서 K 는 key 를 의미 e 는 encryption d는
descrambling 을 의미한다.)
- 대칭키 시스템: C = e(M,Ke), M = d(C,Kd), Ke = Kd
C = e(M,Ke) 의미 : 암호문은 평문에 encryption ke를 하면 암호문을 만들수 있다.
M= d(C,Kd) 의미 : 평문은 암호문에 descrambling ke를 하면 평문을 만들수 있다.
대칭키 시스템을 보면 암호화할때와 복호화할때 사용되는 키가 같다. ^^
- 대칭키 시스템, 관용키 시스템, 싱글키 시스템, secrete key system 이라고 한다.
- 비대칭키 시스템: C = e(M,Ke), M = d(C,Kd),Ke =/ kd
비대칭키 시스템, 공개키 시스템 이라고 한다.
비대칭키 시스템을 보면 암호화할때와 복호화할때 사용되는 키가 다르다. ^^
대칭키 장점: 빠르다 단점: 키배분이 어렵다.
제공되는 보안 서비스
- 기밀성 : 승인받은 사람만 이해가능 -> 제공 ( 대칭키 알고리즘 , 비대칭키 알고리즘)
- 무결성 : 메시지 인증(메세지가 변경되지 않았다는것을 보장)
-> 제공(비대칭키알고리즘, 해쉬알고리즘)
- 인증 : 사용자인증 -> 제공(비대칭키 알고리즘)
- 부인봉쇄 : 메세지를 받았는데 안받았다고 하는것과 보냈는데 안보냈다고하는것
-> 제공 (비대칭키알고리즘, 디지털서명 보장해줌)
- 접근통제 : 제공하지 못함
- 가용성 :서비스를 항상 할수 있게 만드는것 -> 제공하지못함
암호시스템의 안전성 판정
- 공격하는데 소요되는 비용이 정보의 가치보다 더 크면 안전
- 암호문이 유효한 시간안에 키를 찾아낼수 없다면 안전
안전선 판정에 관한 개념은 간단하다 오늘 중요한 비밀문서일지 몰라도 내일지나면 비밀문서가 아닐수도 있다는 개념.. 따라서 유효한 시간안에 키를 찾아냈다면야 당연히 안전하지 못한것이고 유효한시간이 지난후에 키를 찾아내지 못했다면 안전하다는 개념
대칭키 알고리즘 vs 공개키 알고리즘 비교
구분 대칭키알고리즘 공개키 암호방식
역사 BC 500년경 1976년
키 대칭키(비밀키) 비대칭키(공개키,사설키)
키의상호관계 암호화키=복호화키 암호화키 =/ 복호화키
암호화키/복호화키 비밀/비밀 공개/비밀
암호알고리즘 공개 공개
키의 개수 n*(n-1)/2 2*n
장점 계산속도빠름(1000배:des/rsa) 임호화키 사전공유불필요,통신대상의 추가가 용이
알고리즘이 다양
단점 키분배 및 관리의 어려움 계산속도 느림
대표적인예 DES RSA
대칭키알고리즘 vs 공개키 알고리즘 성능차이
- 동일 강도를 갖는 대칭키 암호 알고리즘과 공개키 암호 알고리즘에 사용되는 키 길이 비교
대칭키 암호 알고리즘용 키 길이 공개키 암호 알고리즘용 키 길이
56bits 384bits
64bits 512bits
80bits 768bits
112bits 1792bits
128bits 2304bits
-- 암호화 기술 --
고전적인 암호
대입
- 평문의 각 문자를 대응하는 다른문자를 대입함
- 줄리어스 시저가 처음으로 사용한 방법으로 알려져 있음
- 예
평문 a b c d e f g h i j k l m n o p q r s t u v w x y z
1 2 3 4 5 6 7 8 9 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7
암호문 d e f g h i j k l m n o p q r s t u v w x y z a b c
4 5 6 7 8 9 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6
- 평문 : he looks like a man who can be trusted with a secret
- 암호문 : kh orrnv olnh d pdq zkr fdq eh wuxvwhg zlwkdvhfuhw
- 알고리즘과 키
- 비밀키: (3,26)
- 암호화 알고리즘 : e(M) = (M+3) mod 26 = C
- 복호화 알고리즘 : d(C) = (C-3) mod 26 = M
Subjstitution cipher 의 암호 해독
- 접근법 : 철자의 출현 빈도에 대한 언어학적 통계적 접근법을 사용한다.
- 자주쓰이는 철자 : E, T, A... 순으로 가장많이 사용됨
- 자주 동반되는 철자 : th, he, an, er 등의 철자 쌍은 빈번히 사용됨
- 자주 쓰이는 단어 : the, of, and, to , a , in 등은 빈번히 사용됨
- 암호문 : kh orrnv olnh d pdq zkr fdq eh wuxvwhg zlwkdvhfuhw
- 자주 쓰이는 철자 : h(6),W(4),k(3)는 E나 T일 가능 높음
전치
평문을 d x n 행렬로 구획 후 다시 n x d 의 행렬로 전치함
-예
- 평문 : he looks like a man who can be trusted with a secret
h e l o o
k s l i k
e a m a n H K E W N U W S
w h o c a E S A H B S I E
n b e t r ---------------> L L M O E T T C
u s t e d O I A C T E H R
w i t h a O K N A R D A E
s e c r e
- 암호문 : hkewnrwsesahbsiellmoettcoiactehroknardae
- 알고리즘과 키
- 비밀키 : 5
- 암호화 알고리즘 : 평문을 ? X 5 행렬로 구획한후 전치함
- 복호화 알고리즘 : 암호문을 5 x ? 행렬로 구획한후 전치함
Transposition cipher 의 암호 해독
- 접근법 : 일정한 간격을 건너 뛰면서 문자를 조함하여 패턴을 발견
- 암호문 : hkewnrwsesahbsiellmoettcoiactehroknardae
- 패턴분석
- D = 5 : hkewnrwsesahbsiellmoettcoiact..... ---> hraeei...
- D = 6 : hkewnrwsesahbsiellmoettcoiactehroknar... ---> hwbmir...
- D = 7 : hkewnrwsesahbsiellmoettcoiactehroknardae ----> hsitta...
- D = 8 : hkewnrwsesahbsiellmoettcoiactehroknardae ----> helooks...
치환
평문을 일정주기(D)로 구획 후 각 구획 내에서 위치 변경
- 평문 : he looks like a man who can be trusted with a secret
- 구획(D=5) : heloo kslik eaman whoca nbetr usted witha secre t
- 위치변환 : f: (1,2,3,4,5) -----> (3,1,5,2,4)
- 암호문 : lhoeo lkksi menaa owahc enrbt tudse twaih cseer
- 알고리즘과 키
- 비밀키 : D = 5
- 암호화 알고리즘 : 주기에 따라 구획한 후 , 규칙 f 에 따라 자리를 바꿈
- 복호화 알고리즘 : 주기에 따라 구획한 후 , 규칙 f의 역에 따라 자리를 바꿈
Permutation cipher의 암호해독
- 접근법 : 주기 D를 바꾸어 가며 다양하게 치환 과정을 유추해봄
- 암호문 : lhoeolkksimenaaowahcenrbttudsetwaihcseera
- 패턴분석
- D = 4 : lhoe olkk sime naao wahc enrb ttud setw aihc seer a
- D = 5 : lhoeo lkksi menaa owahc enrbt tudse twaih cseer a
" lhoeo " --> "heloo" , "lkksi" --> "kslik"
버너 암호화 (일회용 패드) --> 현재 가장 강력함 절대깨지지 않음 키를 딱한번만 사용!!
일회용 패드(One-Time Pad) 혹은 버넘 암호화(Vernam Cipher)라고 하는 이방식은 반복되지 않는 캐릭터들로 이루어진 무작위 발생 글자들로 이루어진 키를 사용해 구현된다. 평문 글자에 각각 키 글자들의 모듈러 26연산이 행해진다. 일회용 패드에서 각 키 글자들은 오직 하나의 메세지만을 위해 사용된 후 절대 다시 사용되지 않는다. 키 캐릭터 스트림의 길이는 메시지의 길이와 동일하다. 메가바이트나 기가 바이트 크기 메시지에 대해서는 이 일회용 패드가 적합하지 않다.
-예-
일반 평문 HOWAREYOU 7 14 22 0 17 4 24 14 20
일회용 패드키 XRAQZTBCN 23 17 0 16 25 19 1 2 13
표면적인 합 30 31 22 16 42 23 25 16 33
합 Mod 26 4 5 22 16 16 23 25 16 7
암호문 E F W Q Q X Z Q H
곱암호(Product Cipher)
곱암호
- 정의 : 대입과 전치/치환을 혼함한 암호
- 혼동 : 평문 1비트의 변화가 암호문에 가져오는 변화를 예측할수 없는 성질,대입을 통해 달성함
- 확산 : 평문을 구성하는 각각의 비트들이 암호문 전체에 걸쳐 분산되는 성질,전치/치환을 통해 달성함
쇄도효과
평문 혹은 키의 미세한 차이가 암호문의 50%이상의 변화를 가져옴
Round
확산과 혼동을 적용하는것
Iterated product cipher : 많은 수의 라운드를 적용하는 암호
Brute force attack : 가능한 모든 비밀키를 시도하여 암호를 해독하는 공격(암호화를깨는 가장효율 무차별대입)
work factor : 암호화 시스템을 깨뜨리는데 소요되는 시간, 노력또는 자원
strong method : 사용 가능한 비밀키가 너무 많아서 암호 제작자까지 비밀키 없이는 암호를 해독하는것이 거의 불가능한 암호화방법
현재의 기술력으로 work factor가 충분히 큰 암호화 기법
무어의 법칙 : 같은 금액의 컴퓨터의 컴퓨팅 파워는 매 18개월마다 두 배로 성장함
현재는 스트롱 메소드라고 하더라도 조만간 그렇지 않을수 있음을 시사함
- 대칭키 암호시스템
비밀키 암호화는 대부분의 사람들에게 친숙한 암호방식이다. 이런유형의 암호방식에서는 송신자와 수신자가 모두 하나의 동일한 비밀키를 알고있다. 송신자는 평문 메시지를 이 비밀키로 암호화 하고 수신자는 역시 같은 키로 이 메시지를 복호화한다. 이런 방식에서는 중간에 어떤 문제를 야기하지 않고 비밀키를 송신자와 수신자가 모두 사용가능하게 해주는 것이 관건임이 분명하다. 보안문제가 증대됨에 따라 비밀키는 수시로 일정한 간격을 두고 변경시켜 주어야만 한다. 이상적인 경우라면 부분적인 비밀키는 오직 한번만 사용되어야한다.
비밀키 암호화 시스템은 공개된 사적인 정보로 이루어져 있다. 공개 정보는 다음과 같다.
- 암호화된 메시지의 평문 복사본을 암호화 하기 위한 알고리즘
- 평문과 그와 관련된 암호문의 복사본 가능
- 의도하지 않은 수신자에 의해 선택된 평문의 암호화 가능
사설정보는 다음과 같다.
- 키 또는 암호변수
- 수많은 가능성 있는 변환중 한개의 특정 암호화 변환
암호화/복호화 키가 동일
- secret key / session key /single key / symmetric key / conventional key
- stream cipher / block cipher
stream cipher : 평문을 일련의 비트열로 취급하여 한 번에 1비트씩 혹은 바이트 암호화하는
대칭 암호화 방식
- 평문을 2진수로 늘어 놓은후 , 키 순서열의 XOR로 1비트씩 암호문 생성
- 암호화와 복호화 과정
- 암호화 : Ci = Pi + Ki
- 복호화 : Pi = C1 + Ki(Pi + Ki + Ki = Pi)
- 키비트의 생성
- 동기시스템 : 키비트가 평문/암호문과 무관하게 생성됨
- 자기 동기 시스템 : 키 비트가 평문/암호문에 의존하여 생성됨
- one time pad(=vernam) -> Absolutely Unbreakable, RC4, SEAL, WAKE
원타임패드기법 (키를 딱한번만 사용) 메세지의길이와 key 길이가 거의 비슷 (Key 길이는 같거나 좀더 커야한다. )
block cipher : 암호문을 만들기 위해 암호 키와 알고리즘이 블럭 단위의 평문에 적용되는 대칭 암호화 방식
- 평문을 암호화 하거나 복호화할때 Block(64비트)단위로 처리함
- 블록의 구조는 크게는 Feistel, SPN과 그외의 것들로 나눌수 있음
Feistel : 블록을 다시 둘로 분할하여 암호화/복호화를 수행 (64bit 를 32bit 32bit로 암호화)
동일한 대치와 치환을 반복하면서 암호문이 평문으로부터 암호화되는 반복 블록 암호. 데이터 암호화 표준(DES)과 유사한 암호로, 평문을 반씩 2개 블록으로 나누어 한쪽은 서브키를 사용한 기능 F로 치환하고 그 결과를 다른 반쪽에서 배타적 논리합(XOR)한 다음 서로 교환한다. 이러한 과정을 각 치환마다 동일한 패턴으로 하되 마지막 치환에서는 서로 교환하지 않는다. 암호화 시 사용된 서브키는 복호화 시 역으로 사용된다.
SPN : 블록을 그대로 사용하여 암호화/복호화를 수행 (블록자체를 암호화 )
-DES,3DES,DESX,AES,IDEA,Blowfish,CAST-128, RC2,5,6,SEED
'Cryptography' 카테고리의 다른 글
암호화 및 키관리 PDF파일 (0) | 2012.07.09 |
---|---|
암호학 (0) | 2012.07.02 |
암호학 (0) | 2012.07.02 |