* 암호학이란 무엇인가? *
암호학이란 해킹에 있어서 가장 중요한 지식중에 하나이다.
이 글에서는 암호학에 대한 간단한 내용만 소개하겠다. 깊이들어가는건 무리...
1. 암호학 소개
(1) 개요
- 아래는 위키백과에 나오는 '암호학의 개요'이다.
암호학(cryptography, cryptology)은 정보를 보호하기 위한 언어학적 및 수학적 방법론을 다루는 학문으로
수학을 중심으로 컴퓨터, 통신 등 여러 학문 분야에서 공동으로 연구, 개발되고 있다.
초기의 암호는 메시지 보안에 초점이 맞추어져 군사 또는 외교적 목적으로 사용되었지만,
현재는 메시지 보안 이외에도 인증, 서명 등을 암호의 범주에 포함시켜 우리의 일상에서
떼 놓을 수 없는 중요한 분야가 되었다. 현금지급기의 사용, 컴퓨터의 패스워드,
전자상거래 등은 모두 현대적 의미의 암호에 의해 안정성을 보장받고 있다.
현대 암호학은 암호 시스템, 암호 분석, 인증 및 전자서명 등을 주요 분야로 포함한다.
(2) 용어
암호학의 관련된 용어들은 수 없이 많지만
기본적인 용어들은 아래와 같다.
- 평문(Plaintext)
"사람이 이해 할 수 있는 일반적인 메시지를 평문이라 한다."
- 암호문(Ciphertext)
"평문을 암호학적 방식으로 변환한 것을 암호문이라 한다."
- 암호화(Encryption)
"평문을 암호문 으로 변환하는 과정을 암호화 한다 라고 한다."
- 복호화(Decryption)
"암호문을 평문 으로 변환하는 과정을 복호화 한다 라고 한다."
- 전자서명(Digital Signature)
"말 그대로 서명 방식이다."
- 키(Key)
"암호화 하거나 복호화 할때 사용된다."
...... 등등~
(3) 역할
암호화의 목적은 아래와 같다.
1. 기밀성(Confidentiality)
"허가받은 사용자가 아니면 정보 접근을
허용 하지 않는것 (부적절한 노출 방지)"
2. 무결성(Integrity)
"허가받은 사용자가 아니면 내용을
변경할 수 없어야 함 (부적절한 변경 방지)"
3. 가용성(Availability)
"어떠한 경우에도 신속하고 완전하게
복구 될 수 있는 특성 (부적절한 서비스 거부 방지)"
4. 부인봉쇄(Non-repudiation)
"메시지를 전달하거나 전달받은 사람이 메시지를
전달하거나 전달받았다는 사실을 부인할 수 없어야 함"
(4) 공격방식
- 수동적 공격(소극적 공격)
"도청 / 트래픽 분석"
- 능동적 공격(적극적 공격)
"메시지변조, 삽입공격, 삭제공격, 재생공격"
- 암호 메시지에 대한 공격유형
1. 암호문 단독 공격(COA)
"암호문으로부터 평문이나 암호키를 찾아내는 방법"
2. 알려진 평문 공격(KPA)
"이미 입수한 평문과 암호문의 관계를 이용하여 새로운 암호문을 해석하는 방법"
3. 선택 평문 공격(CPA)
"평문을 선택하면 대응되는 암호문을 얻을 수 있는 상황에서 공격 하는 것"
4. 선택 암호문 공격(CCA)
"암호문을 선택하면 대응되는 평문을 얻을 수 있는 상황에서 공격 하는 것"
(5) 역사... 는 패스... (역사가 궁금하다면 암호학 역사에 대해 구글링 !)
2. 암호화 방식
(1) 분류
- 암호화 에는 큰 분류로 나누자면 두가지가 있다.
대칭형 암호화 (Symmetric Cryptography)
"대칭키 또는 비밀키 라고도 불린다"
비 대칭형 암호화 (Asymmetric Cryptography)
"비대칭키 또는 공개키 라고도 불린다"
(2) 소개
- 암호화 방식의 특징을 알아보자.
1) 대칭형 암호화 (Symmetric Cryptography)
특징
"암호화 키와 복호화 키가 서로 동일! (암호화키 == 복호화키)"
"암.복호화 속도가 빠르다(비대칭방식에 비해 10~1000배 빠르다)"
"암호화 시 사이즈 증가가 없다"
"통신에 주로 사용된다"
우선 대칭키 방식은 1개의 키를 사용한다는건 알고있을것이다.
"암.복호화키가 동일한 키" 라는 말이다
사용자 A가 암호화키를 이용해서 암호화한 암호문을 사용자 B에게 보낸다.
그러면 사용자 B는 같은 암호화키를 이용해서 암호문을 복호화한다.
만약 사용자 C에게 암호문과 암호화키가 유출되면 암호문이 해독되는 문제가 발생하게 된다.
단점
"확장성(Scalability) 이 좋지 않다"
(따라서 불특정 다수를 상대로 한 암호화에는 좋지 않다.)
"Key 동기화가 반드시 필요하다"
Key를 주고 받아야 하기 때문에 이 부분이 취약점이 될 수 있다.
대칭키 알고리즘
"대칭키 알고리즘에는 크게 '스트림 암호' 와 '블럭 암호' 가 있다."
대표적인 알고리즘
( DES, AES, IDEA, RC, SEED )
2) 비 대칭형 암호화 (Asymmetric Cryptography)
특징
"암호화 키와 복호화 키가 서로 다르다(암호화키 != 복호화키)"
"암호화 키를 공개키(Public Key) 라고 부른다"
"복호화 키를 개인키(Private Key) 또는 비밀키(Secret Key)라고 부른다"
"Key 동기화 과정 불필요"
"비밀 정보를 공개할 필요가 없다"
"암호화 키가 공개되어도 복호화 키는 공개되지 않음"
각각 자신의 공개키와 개인키를 생성하고 공개키는 공개한다.
A가 B의 공개키로 암호화하여 보냈을 경우 B는 자신이 가지고있는 개인키로 복호화 하여 보게된다.
만약 C사용자가 공개되어 있는 B의 공개키로는 복호화할수가 없다
단점
"처리 속도가 느리다"
(소프트웨어로 구현한 경우 10~1000배)
(하드웨어로 구현한 경우 1000~10000배)
"사이즈가 증가한다."
"통신에 사용되기에는 부적합 하다."
공개키 알고리즘
"복잡한 수학적 기법들을 기반으로해서 암/복호화 가 복잡하다."
대표적인 알고리즘
( RSA, DSA, EI Gamal, ECC )
"블럭 암호와는 달리 한번에 한바이트씩 XOR하여 암호화 되는 형식이다"
(가장 처음에는 초기값(IV)이 필요하다)
"원타임 패드를 실용적으로 구현할 목적으로 개발됨"
"다음에 출력비트를 예측할 확률이 2/1이어야 안전하다"
"긴주기와 높은 선형복잡도가 요구된다"
"블럭암호에 비해 속도가 더 빠르다"
"블럭암호의 CFB, OFB 모드는 스트림과 같은 역할이다"
4) 블럭 암호 (Block Cipher)
특징
"대칭키 암호화 구조중 하나로, 값을 일정 크기로 자른 후 블럭단위로 암호화 되는 형식이다"
"Feistel구조와 SPN구조가 있다"
블럭암호 종류
DES |
대칭 블록암호로서 평문의 각 블록의 길이가 64비트 이고 키가 64비트(실제로는 56비트 키 8비트 검사용)이며, 암호문이 64비트인 암호이다 DES 알고리즘은 64비트의 평문이 16라운드의 Feistel연산을 거쳐 64비트의 암호문이 나오게 한다. |
3DES |
DES의 단점을 보완하여 나옴. 3개의 키값을 사용하고, DES 16 라운드의 3배인 48라운드를 수행하여 암호화 강도를 높인다. |
IDEA |
64비트 평문으로 동작하고 키 의 길이는128비트 이며, 8라운드 암호방식을 적용한다. 암, 복호화에 동일한 알고리즘이 사용되고 구현이 용이하다. (이론상으로는 DES 보다 2배 빠르다고 한다) |
SEED |
국내에서 개발된 128비트 블록암호 이다. 전체적인 구조는 블록길이만 다를뿐 DES구조와 같다. 데이터 처리단위는 8,16,32 비트 모두 가능하다 |
AES |
DES를 대체하여 나온 암호 알고리즘으로 암복호화에 동일한 키를 사용한다. DES와는 다르게 첫번째 라운드 수행시 평문과 라운드키의 XOR 연산수행을 한다. 가변길이의 블록과 가변길이의 키 사용이 가능하다(128, 192, 256) |
블럭암호의 운영모드
ECB(Electronic Code Book)
"평문을 블록단위로 잘라서 각 블록마다 암호화함. 블록값의 오류 전파가 없다"
CBC(Cipher Block Chaining)
"전 블록으로부터 나온 암호문을 난수로 사용함. 출력되는 암호문이 다음 평문 블록에 영향을 준다"
CFB(Cipher Feed Back)
"초기화벡터를 블록암호화해서 생성한 키스트림값을 평문과 XOR연산으로 암호문 블록을 생성함"
OFB(Output Feed Back)
"암호 알고리즘의 출력을 다시 암호 알고리즘의 입력으로 피드백 해줌, 스트림 암호화 방식"
CTR(CounTeR)
"IV값을 Counter로 1씩 계속 증가시킨걸, 암호화해 키 스트림을 만들어 냄, 스트림 암호화 방식"
블럭암호의 공격방식
차분 공격(Differential Cryptanalysis)
"두 개의 평문블록과 이에 대응되는 암호문 블록들의 비트들의 차이를 이용해 암호키를 찾음"
선형공격(Linear Cryptanalysis)
"알고리즘 내부의 비선형 구조를 선형화해서 키를 찾음"
전수공격(Exhaustive Key Search)
"암호화할 때의 모든 경우에 대하여 조사하는 방법(경우의 수가 적을 때만 가능)"
통계적 분석(Statistical Analysis)
"많이 사용되는 단어의 빈도의 통계적 수치를 가지고 해독하는 방법"
수학적 분석(Mathematical Analysis)
"통계적인 방법을 포함해, 수학적 이론을 이용하여 해독하는 방법"
5) 공개키 암호방식
인수분해 기반 : 소인수분해의 어려움을 이용함
RSA 방식
"메시지를 보내는 사람과 받는 사람이 서로 다른 키를 가짐으로써 키 전송의 위험을 방지함"
철수는 누구에게나 공개된 영희의 공개키를 이용해 보내고자 하는 메시지를 암호화한다.
그리고 영희에게 암호화된 메시지를 보낸다. 암호문을 받은 영희는 자신의 비밀키를 이용해 암호화된 메시지를 복호화한다.
이때 암호문을 제3자가 가로챈다 하더라도 영희의 비밀키가 없으므로 암호문을 해독하지 못하게 된다.
이 외에도 철수 자신의 비밀키를 사용해서 디지털 서명을 암호화하여 함께 보내준다면
철수가 보낸 메시지임을 더욱 확신시켜 줄 수 있다.
메시지를 받은 영희는 철수의 공개키를 사용해 암호화된 서명을 복호화할 수 있다.
즉 ‘발신자 도장’을 찍어 보냄으로써 신뢰를 줄 수 있는 것이다.
Rabin 방식
"RSA 암호방식보다 훨씬 빠르고 암호화 과정이 더 단순하다"
이산대수 기반
"El Gamal"
"Diffie-Hellman (최초의 공개키 암호 알고리즘)"
"Schnorr"
자료참고 : IT용어사전, 한국정보통신기술협회, 네이버 지식백과
'IT소식 > IT 공부' 카테고리의 다른 글
레지스트리를 통해 프로그램 설치날짜 조작 (747) | 2016.03.15 |
---|---|
리눅스 로그파일 종류 (739) | 2016.03.15 |
쉘 스크립트 - 웹 페이지 체크 (803) | 2016.03.10 |
쉘 스크립트 놀이 (803) | 2016.03.10 |
SOLARIS 에서 특정 포트 물고있는 어플 확인하기 (900) | 2016.03.02 |