기초암호학
암호학
정보를 보호하기 위한 언어학적 및 수학적 방법론을 다루는 학문. 수학을 중심으로 컴퓨터, 통신 등 여러 학문 분야에서 공동으로 연구, 개발되고 있다. 현재는 메시지 보안, 인증, 서명에 사용된다.
용어 정의
Cpytography : 비밀 정보를 안전하게 보내는 방법에 대한 연구
Cryptanalysis : 권한이 없는 사람이 암호화된 정보로부터 비밀정보를 읽어내는 기술에 대한 연구
평문 : 암호학을 이용해 보호해야 할 메시지
암호문 : 평문을 암호학적 방법으로 변환한 것
암호화 : 평문을 암호문으로 변환하는 과정
복호화 : 암호문을 다시 평문으로 변환하는 과정 (합법적으로 '암호화 키'를 보유한 사람)
*해독은 합법적으로 키를 보유하지 않은 사람이 복호화 하는 것을 포함한다.
암호학적 서비스가 제공하고자 하는 목표
1. 기밀성 : 허가받은 사용자가 아니면 내용에 접근할 수 없다.
2. 무결성 : 허가받은 사용자가 아니면 내용을 변경할 수 없다.
3. 가용성 : 부적절한 서비스 거부 방지
4. 부인봉쇄 : 메시지를 전달하거나 전달받은 사람이 메시지를 전달하거나 전달받았다는 사실을 부인할 수 없어야 한다.
암호 기법
1. 전치 : 평문의 글자를 마구 섞어놓는 것
예) 'secret' -> 'etcrse'
2. 대칭 : 평문의 글자를 아예 다른 글자로 대체시킴
예) 'secret' -> '19 3 18 5 20' or 'XIWOXV'
대칭이 더 활발하게 사용되고, 종류도 더 많다.
암호 알파벳 : 기존의 abcd와 달리 비밀을 주고받는 사람들만 알고 있는 알파벳.
단일문자 : 한 가지 암호 알파벳을 사용하는 암호 쓰템
다중문자 : 여러 개의 암호 알파벳을 사용하는 암호 시스템
예) 1이라는 글자가 e, 가, n, 13 등 다양한 것들로 교체될 수 있다. (e, 가, n, 13은 동음이의어)
널(null) : 비밀을 가로채려는 사람들을 헷갈리게 하기 위해 아무 의미 없는 걸 암호 알파벳에 넣는 것
분류
양방향 | 대칭키 | 스트림방식 | 동기식 |
비동기식 | |||
블록방식 | Feistel | ||
SPN | |||
비대칭키 | |||
일방향 | 해시함수 | MDC | 해시함수 |
MAC | 해시함수+대칭키 | ||
전자서명 | 해시함수+비대칭키 |
참고)
암호학에 대해 설명할 때는 앨리스(Alice)와 밥(Bob)이 자주 등장하는데, A와 B를 바꾼 것이다. 그 외 C의 Carol, D의 Dave나 Eavesdropp(엿듣는사람)의 Eve가 자주 등장한다.
대칭키(비밀키)
암호화에 사용되는 암호화키와 복호화에 사용되는 복호화키가 동일하다. 암호 시스템의 안전성은 키의 길이, 키의 안전한 관리에 의존성이 높다. 작성자와 수신자가 동일한 키를 비밀리에 관리해야 하므로 폐쇄적인 특성을 갖는 사용자 그룹에 적합하다. 일반적으로 키의 길이가 길수록 안전성이 높지만 무한정 길게 하면 관리가 어려워진다.
OTP는 대칭키 암호 시스템의 예이다.
암호화 및 복호화
앨리스와 밥은 같은 키를 공유하고 있어야 한다. 앨리스는 공유한 키로 암호화를 하며, 밥은 같은 키로 이를 복호화한다. 보통 복호화 과정은 암호화 과정의 역과정이다. 키가 같지 않더라도 한 키로부터 다른 키를 쉽게 얻을 수 있는 경우에는 대칭키 암호 시스템의 범주에 넣는다.
문제점
알고리즘이 상대적으로 단순한 장점이 있지만 키 관리에 어려움이 많다. 시스템에 가입한 사용자들 사이에 매 두 사용자 마다 하나의 서로 다른 키를 공유해야 하기 때문에 n명이 가입한 시스템에는 nC₂ = n(n-1)/2 개의 키가 필요하다. 또 각 사용자는 n-1개의 키를 관리해야 한다.
종류
DES, AES, ARIA, Twofish, SEED, HIGHT
비대칭키(공개키)
키관리가 어렵다는 대칭키 암호 시스템의 약점을 보완하기 위해 나타난 암호 시스템이다. 공개키 암호 시스템에서 각 사용자는 두 개의 키를 부여받는다. 그 하나는 공개되고, 다른 하나는 사용자에 의해 비밀리에 관리 되어야 한다. 각 사용자는 자신의 비밀키만 관리하면 되므로 키 관리의 어려움을 줄일 수 있다. 공개키 암호 시스템에서는 각 사용자의 공개키를 관리하는 공개키 관리 시스템(공개키 디렉터리)이 필요하며 각 사용자는 이 시스템에 자유롭게 접근하여 다른 사용자의 공개키를 열람할 수 있어야 한다.
단점 : 두 키의 수학적 특성에 기반하기 때문에, 메시지를 암호화 및 복호화 하는 과정에 여러 단계의 산술 연산이 들어간다. 따라서 대칭키 암호 시스템에 비하여 속도가 매우 느리다.
암호화 및 복호화
앨리스가 밥에게 암호문을 보내고 복호화하는 가장 기본적인 과정을 기술한다. 두 사용자에게는 각각 공개키와 비밀키가 부여되었고, 이들의 공개키는 공개키 디렉터리에 저장되어 있다. 앨리스는 공개키 디렉터리에서 밥의 공개키를 찾아 이를 이용하여 문서를 암호화하여 밥에게 보낸다. 밥은 수신한 비밀 문서를 자신만이 알고 있는 자신의 비밀키로 복호화하여 앨리스가 보낸 문서의 내용을 알 수 있다. 공개키 만으로는 복호화가 불가능하기 때문에, 앨리스 역시 암호화 하고 나서 복원할 수 없다는 특징이 있다.
공개키 암호 시스템에서 암호화-복호화 시스템은 두 키가 짝으로 동작하기 때문에, 비밀키로 암호화 하고 공개키로 복호화 할 수도 있다. 이 방법을 이용하면 해당 공개키에 맞는 비밀키 보유자를 확인 할 수 있으며, 전자서명에서는 이런 성질을 이용한다.
공개키와 비밀키의 관계
공개키 암호 시스템에서 각 사용자에게 부여되는 공개키와 비밀키에는 수학적 연관이 있기 때문에 암호화와 복호화가 가능하다. 이 둘은 마치 두 조각으로 나뉜 유리 조각과 같다. 한쪽은 공개되어 있고 그에 맞는 다른 한쪽은 감추어져 있는 것이다. 그러나 이들은 본래의 모습을 감추고 있다. 한쪽이 그대로 공개된다면 숨겨진 다른 한쪽의 모습도 알려질 수 있기 때문이다. 원래의 모습을 감추고 또 원래의 모습으로 되돌리는 과정에서 수학이 중요한 역할을 한다.
종류
해시함수
임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수
용어
키 : 매핑 전 원래 데이터의 값
해시 값, 해시 코드, 해시 체크섬, 해시 : 매핑 후 데이터의 값
해시 테이블 : 해시 값 + 데이터의 색인 주소
해싱 : 매핑하는 과정
용도
1. 해시 테이블이라는 자료구조에 사용되며, 매우 빠른 데이터 검색을 위한 컴퓨터 소프트웨어에 널리 사용된다. 해시 함수는 큰 파일에서 중복되는 레코드를 찾을 수 있기 때문에 데이터베이스 검색이나 테이블 검색의 속도를 가속할 수 있다. 예를 들어 DNA sequence에서 유사한 패턴을 찾는데 사용될 수도 있다.
2. 파일의 Checksum(검사합)을 구한다.
3. 암호를 저장한다.
암호용 해시 함수는 매핑된 해싱 값만을 알아가지고는 원래 입력 값을 알아내기 힘들다는 사실에 의해 사용될 수 있다.
메시지의 오류나 변조를 탐지할 수 있는 무결성을 제공하기 위해 사용되기도 한다.
메시지가 누구에게서 온 것인지 입증해주는 HMAC를 구성하는 블록으로 사용된다. 해시 함수는 결정론적으로 작동해야 하며, 따라서 두 해시 값이 다르다면 그 해시값에 대한 원래 데이터도 달라야 한다. (역은 성립하지 않는다) 해시 함수의 질은 입력 영역에서의 해시 충돌 확률로 결정되는데, 해시 충돌의 확률이 높을수록 서로 다른 데이터를 구별하기 어려워지고 검색하는 비용이 증가하게 된다.
*충돌이란 입력 값보다 출력 값의 범위가 좁아 입력이 다른데 동일한 값이 출력되는 경우이다. 해시 충돌을 해결하기 위한 방법으로 이중 해시가 있다. +분리 연결법, 개방 주소법
암호학적 해시함수
MD5, SHA계열 해시함수
암호학적 해시함수는 역상(pre-image), 제2역상(2nd preimage), 충돌쌍(collision)에 대하여 안전성을 가져야 하며 인증에 이용된다. 암호학적 해시함수는 임의의 길이를 입력 받기는 하지만 MD Strength Padding할 때 길이정보가 입력되므로 최대 길이에 대한 제한이 있다. 예를 들어 패딩시 하위 8비트에 길이정보가 입력 되는 경우에는 해시가능한 최대 길이는 0xFF가 되어 255바이트가 된다.(실제 길이정보는 패딩방식에 따라 다를 수 있다)
암호화 해시 함수의 특성과 효과
역상저항성 : 입력값 A에 의해 B가 출력됐을 때, 출력된 B값만 가지고는 A값을 찾는 것이 계산적으로 불가능함.
제2역상저항성 : 입력값 A와 출력값 B가 모두 주어졌을 때, 똑같은 B를 반환하는 A2를 찾아내거나 만들어내는 것이 계산적으로 불가능함.
단방향 암호화 : A로 만들어진 B를 가지고 다시 A로 역산할 수 없다.
충돌저항성 : 똑같은 B라는 출력값이 나오는 X가 단일하지 않고 중복이 되는 또 다른 Xn을 발견하는 것이 계산적으로 어려운 성질 (제2역상저항성의 부수효과이자 부분집합)
압축효과 : 암호화 해시 함수가 반환하는 일정한 길이의 작은 해시값만으로 크기가 거대한 데이터의 무결성을 보장할 수 있는 외부효과 (SHA-256의 경우 100GB의 파일도 256bit의 해시값으로 무결성을 보장할 수 있다.)
비암호학적 해시함수로는 CRC32등이 있다.
보안과 해시
1. 원래의 문장을 복호화할 수 없다.
2. 원문과 해시값 사이에 선형적 관계가 없다.
3. 입력값의 길이가 달라도 출력값은 항상 고정된 길이로 반환하므로, 원래의 정보는 손실된다.
4. 동일한 값이 입력되면 동일한 출력값을 보장한다.
5. 눈사태 효과 : 입력값의 아주 작은 변화로도 결과값이 전혀 다르게 도출된다. 변경되는 부분의 규칙성도 찾을 수 없다.
이런 특성 때문에 하나의 원 데이터는 하나의 해시값만 가지지만, 하나의 해시값을 만들어낼 수 있는 원본 데이터는 매우 많다. 그 때문에 해시값만 가지고는 원문을 복원해내는 것은 불가능하다.
비밀번호, 전자서명, 전자투표, 전자상거래와 같은 민감한 입력의 무결성을 검증할 때 사용된다.
어떤 해시 함수에서 해시 충돌이 일어나기 쉽다는 것은 보안 분야에서는 매우 민감한 문제에 해당한다. 데이터의 무결성과 직접적인 연관이 있기 때문이다.
해시 함수의 종류
MD5, CRC, Tiger, Argon2, Bcypt, Scrypt, Snefru, Ripemd, Haval, Gost, Joaat, FNV, Whirlpool, PBKDF2
- SHA-1
- SHA-256, SHA-512
- SHA-3
스테가노그래피
기밀 정보를 파일, 메시지, 이미지 또는 비디오 안에 숨기는 심층 암호 기술
메시지의 존재 자체를 은폐
예) 식초나 레몬으로 쓴 글자(불로 가열하면 나타남)
파일의 LSB나 이미지 파일의 픽셀 RGB정보에서 각 픽셀의 LSB를 변화시켜 메시지를 숨기는 방식
docs나 pptx의 경우에는 압축파일의 기능을 가지고 있으므로 압축해제로 그 안에 숨기거나 또는 문서내용과 섞어 메시지를 숨김
암호화 여부를 알기 힘들기 때문에 안전하지만, 본래 파일의 해시값을 알고 있다면 해시값 대조를 통해 알아낼 수 있다.
단점
1. 잘못된 알고리즘으로 인하여 커버데이터를 손상시켜 의심을 유발할 수 있으며 대량의 데이터를 은닉하기 힘들다.
2. 평범한 파일 안에 비밀 파일을 넣기 때문에 겉으로 드러나는 메시지보다 파일 용량이부풀려질 수밖에 없어 의심을 살 수 있다.
3. 스테가노그래피 기법을 통해 숨기려는 파일은 대부분 암호화가 되어 있지 않기 때문에 스테가노그래피라는 점만 확인되면 툴을 이용해 비밀 메시지가 바로 드러날 수 있다.
참고 : 사진 속에 비밀 텍스트나 파일 숨기기
활용
물리 스테가노그래피
디지털 스테가노그래피
네트워크 스테가노그래피
양자암호
일반적으로 공개키 암호 시스템의 안정성은 한 방향으로의 접근은 쉽지만 그 역방향으로의 해결은 매우 어려운 수학 문제에 근거하고 있다. 예를 들어 RSA의 안전성은 알려진 매우 큰 두 소수의 곱은 쉽게 구할 수 있지만, 두 소수를 모르는 채 곱해진 결과가 어떤 소수들의 곱인지를 알아내는 것은 현실적으로 불가능하다는데 안전성의 근거를 두고 있는 것이다.
RSA
큰 정수의 소인수분해가 어렵다는 점에 착안되어 만들어진 공개키 방식의 알고리즘
두 개의 큰 소수를 곱하고 추가 연산하여, 하나는 공개키, 다른 하나는 비밀키를 구성하는 방식. 곱셈에 사용했던 원래의 소수로 분해하는 수학적인 방식을 사용함.
단점
소인수분해를 빠르게 할수록 안전성이 위협된다. 컴퓨팅 기술과 계산 속도가 빨라질수록 암호화가 깨질 수 있는 단점이 있다. (양자컴퓨터의 등장)
가장 안전한 암호 시스템
가장 단순한 알고리즘을 사용하는 one time password(OTP)
단점 : OTP는 대칭키 암호 시스템으로 키생성, 키분배 등 일련의 키관리의 어려움이 있는 암호 시스템이다.
OTP와 같은 안전한 암호 시스템이 갖는 키분배의 문제점을 해결할 수 있는 훌륭한 도구이다. 이런 이유 때문에 양자암호는 양자키분배(quantum key distribution)으로 이해되고 있다.
양자암호의 안전성
양자암호의 안전성은 불확정성원리(Uncertainty principle)에 근거하고 있다. 양자암호에서 키분배를 위한 통신으로 양자채널과 인터넷이나 전화와 같은 통신수단을 동시에 사용한다. 일반적인 통신 수단을 이용한 정보의 교환은 노출 되어도 문제가 없다. 그러나 양자채널을 이용한 정보의 교환은 보안이 필요하다. 그런데 키 분배 또는 공유 과정에서 불법적인 사용자가 양자채널을 통과하는 정보를 측정하게 되면 불확정성원리에 따라 키분배 시스템의 정확도에 문제가 생겨 이를 합법적인 사용자가 감지할 수 있게 된다는 것이다.
하지만 중간자 공격에 대해 취약하다는 단점이 있으며, QND를 응용한 FPB Attack에 대해서도 취약하다는 것이 증명 되었다. 하지만 위의 두 경우 물리적 수단이나 고가의 장비가 동원되어야 한다는 전제조건이 있어 사실상 불가능하다.
종류
BB84, E91
참고 사이트
암호학
해시함수
스테가노그래피
'디지털포렌식' 카테고리의 다른 글
[Forensic] 윈도우 서치 데이터베이스 포렌식 | Windows.edb (0) | 2023.06.27 |
---|---|
[forensic-proof] 안티포렌식 (0) | 2022.08.13 |
파일시스템 기초 (0) | 2022.05.09 |
웹 브라우저 포렌식 (Web Browser Forensics) (0) | 2021.09.20 |
네트워크 기초 (0) | 2021.04.01 |