암호의 역사
스키테일 암호
BC400년 스파르타에서 군사용으로 사용하던 암호화 방식
스키테일은 막대기를 의미하며 같은 굵기의 막대기를 가진 두 사람이 메시지를 전달하기 위해 사용됨
전치법 방식으로, 문자의 순서를 바꾸는 암호이다.
암호화 방법
- 보내는 사람과 받는 사람은 똑같은 굵기의 막대기를 가지고 있음
- 종이를 막대기에 나선형으로 감는다
- 종이위에 평문을 가로로 작성
- 종이를 막대기에서 풀면, 글자각 뒤섞인 순서로 나열됨
- 뒤섞인 글자들이 암호문이 된다.
시저 암호
BC100년경에 로마의 줄리어스 시저가 군사적인 목적으로 사용한 암호
단일 치환 알고리즘: 알파벳 한 글자를 다른 한 글자로 대체
키 = 3인 경우 A->D, B->E, C->F
시저 암호는 치환 규칙이 단 하나의 키로만 결정되기 때문에 가능한 경우의 수가 26개밖에 없음, 공격자가 26개의 키를 모두 시도해보면 원문을 찾을 수 있다. 이 방법을 전사 공격이라고 함.
단일 치환 암호: 모노 알파베틱 암호
알파벳 26글자를 각각 다른 알파벳에 대응시키는 방식으로 암호화
단일 치환 암호 방식이지만, 시저 암호처럼 단순히 밀지 않고 복잡하게 대응시키는 알고리즘의 개선을 통해 보안성을 강화함
전사 공격에 다소 강하기 때문에 10세기까지 사용됨
빈도 분석법에 취약
빈도 분석법이란?
- 자연 언어에는 특정 문자가 더 자주 등장, 영어에서는 E, T, A, O가 많이나옴
- 암호문에서 자주 등장하는 문자들을 찾아, 어떤 문자가 E일지, T일지 추측할 수 있다.
- 치환 방식은 복잡해도 문자의 빈도는 보존되기 때문에 분석이 가능.
다중 치환
한 글자가 암호화 키와의 매핑에 따라 여러 각지 글자로 대체되어 암호화되는 방식
암호화하려는 단어: aaa
암호화 키: BDG
빈도 분석법에 다소 강함
플레어페어 암호, 에니그마 등으로 발전됨
컴퓨터의 고속 병렬 처리 연산 등으로 현대에는 해독이 비교적 어렵지 않게 가능해짐
암호화 과정
- 암호: 중요 정보를 다른 사람들이 해석할 수 없게 하는 방법
- 평문: 암호화되기 전 메시지
- 암호문: 암호화된 후 메시지
- 암호화 또는 암호화 과정: 평문을 암호문으로 바꾸는 과정
- 암호화 알고리즘: 평문 어떤 방식으로 암호문으로 변경할지 결정
- 암호화 키: 허락받지 않은 외부인이 암호문으로 강제적으로 해독하는 것을 막음
복호화 과정
- 복호화: 암호문을 복호화 키를 이용하여 평문으로 바꾸는 과정
암호화 방식 비교
1. 대칭 암호화 알고리즘
암호화 키 == 복호화 키
같은 키를 사용해서 암호화와 복호화를 진행, 보낸 사람과 받는 사람이 동일한 비밀키를 공유해야함
예시
- 철수는 편지를 비밀 상자에 넣고 열쇠로 잠가서 영희에게 전송(암호화)
- 영희도 같은 열쇠를 가지고 있어야 그 상자를 열 수 있다.(복호화)
2. 비대칭 암호화 알고리즘
암호화 키 != 복호화 키
서로 다른 키 쌍(공개키, 개인키)을 사용
예시
- 철수는 영희의 공개키를 받아 편지를 암호화
- 이 암호화된 메시지는 오직 영희의 개인키로만 열 수 있음
- 공개키는 아무에게나 알려져 있어도 안전
DES 대칭 암호화 방식
1997년 미국의 연방 정보의 표준 암호로 채택됨, 64비트의 평문을 64비트 암호문으로 암호화
키의 크기: 56비트(오류 검출을 위해 8비트가 사용)
1998년 전사 공격으로 DES의 해독이 가능해짐에 따라 EFF(전자 프론티어 재단)이 하드웨어 장비를 이용해 56비트 키를 56시간 만에 해독함 → DES는 더 이상 안전하지 않다고 선언
트리플 DES
DES의 대안으로 제시된 DES의 암호화 강도를 강화한 대칭키 암호 방식
DES를 3번 연속 실행, 삼중 DES 혹은 3DES라고도 불림
아직 충분한 암호 강도가 아니기 때문에, AES가 권장됨
AES
1997년 미국의 NIST의 암호 공모에서 새로운 대칭 암호의 표준으로 채택된 대칭키 암호 방식
특징: 128비트 평문을 128비트 암호문으로 암호화, 키의 크기는 3가지(128,192, 256비트), 10번의 Round 수행
그 밖의 대칭 암호
SEED: 국산 128비트 블록 암호 알고리즘
ARIA: 국산 128비트 블록 암호화 알고리즘
IDEA: 유럽에서 많이 사용
RC5: 미국 RSA 연구소에서 개발
블록 암호 모드
대칭 암호화 방식은 하나의 평문을 블록 단위로 나누어서 암호화 또는 복호화를 수행
예시: 300비트 평문을 AES로 암호화 하는 경우
-AES의 블록 크기: 128비트
-블록 개수: 3개
-3번째 블록에 저장되는 데이터의 크기: 44비트
마지막 블록의 크기가 정해진 블록 크기보다 작을 경우, 패딩이 필요하다.
패딩: 블록의 남은 부분에 데이터를 채워 넣는 것
ECB모드
블록 암호에서 가장 단순한 방식으로, 각 평문 블록을 독립적으로 암호화하여 암호문을 생성하는 방식
동작 원리
- 평문 데이터를 블록 단위로 나눔
- 각 블록에 동일한 키로 암호화를 적용
- 평문 블록 -> 암호문 블록으로 변환되며, 블록 간 상호작용은 없음
C₁ = E(K, P₁)
C₂ = E(K, P₂)
C₃ = E(K, P₃)
E = 암호화 함수
K = 키
P₁, P₂... = 평문 블록
C₁, C₂... = 암호문 블록
장점-계산이 단순
단점:
같은 평문 블록-> 같은 암호문 블록, 패턴이 드러남, 이미지나 반복적인 구조의 데이터는 암호화 후에도 형태가 보임
"펭귄 이미지 ECB 암호화" 검색
CBC모드
각 블록을 암호화할 때 이전 암호문 블록과 연결해서 처리하는 방식, 암호문 블록을 마치 체인처럼 연결하는 모드
블록들이 서로 체인처럼 연결되어 암호화되기 때문에 한 블록만 따로 떼어내거나 조작하는 것이 힘들다.
암호화 과정
현재의 평문 블록과 현재 블록 바로 직전에 암호화된 암호 블록을 XOR 연산한 후 암호화
초기화 벡터(IV: Initial Vector): 최초 블록을 암호화할 때 XOR 연산에 사용되는 블록
초기화 벡터는 반드시 무작위 벡터를 사용해야함 -> 같은 평문을 암호화해도 매번 다른 암호문이 나와야 보안성이 유지되므로.
중간에 있는 블록을 복호화하기 위해서 반드시 첫 블록부터 복호화해야함 -> CBC는 블록들이 서로 체인처럼 연결되어 있어서 앞 블록 암호문이 뒤 블록의 복호화에 필요하다.
'정보보안' 카테고리의 다른 글
비대칭 암호화 (0) | 2025.05.27 |
---|---|
쓰레드를 이용한 소켓 통신 (0) | 2025.05.25 |
소켓 통신 (0) | 2025.05.25 |
스니핑(Sniffing) (0) | 2025.04.20 |
네트워크, 전송 계층 TCP/IP 프로토콜의 연관성 (0) | 2025.04.15 |