* 암호의 개념
통신 당사자들끼리만 소통 가능하도록 하는 비밀스러운 신호나 부호의 약속.
*암호학
암호화/복호화의 원리, 수단, 방법 등을 취급하는 기술과 과학
* 암호의 요소
- 평문
- 암호 알고리즘
- 암호화 키
- 복호 알고리즘
- 복호화 키
보통 암호화 알고리즘의 프로그램과 복호화 알고리즘의 프로그램은 같다.
*암호 연산자 유형
- 치환(Substitution): 평문의 각 원소를 다른 원소로 바꾼다. (ex. 시저-카이사르 암호)
- 전치(Transposition): 평문의 각 원소를 재배열한다. (ex. 애너그램)
- 혼합(Confusion): bit 단위에서 평문의 원소를 치환한다.
- 확산(Duffusion): bit 단위에서 평문의 원소를 확대한다.
* 대칭키와 공개키
사용된 키의 개수에 따라 암호를 두 가지로 분류한다.
- 대칭키: 송수신자가 동일한 키를 사용
- 공개키: 송수신자가 다른 키를 사용
* 평문의 처리 방법
- 블록 암호화 (Block cipher) : 연산을 블록 단위로 처리한다.
- 스트림 암호화(Stream cipher) : 입력을 연속적으로 처리한다.
* 단대단 암호화 링크 암호
암호화가 어느 계층에서 이뤄지는가에 따라 분류된다.
- 단대단 암호(End-to-End Encryption): OSI모델의 최상위 계층(7,6)에서 암호화가 이뤄진다. 네트워크에서 보안 유지에 실패하더라도 데이터의 비밀성은 위협받지 않는다. 암호화는 송수신 프로세서가 담당하고 있다.
- 링크 암호(Link Encryption) : OSI모델의 최하위 계층(1,2)에서 암호화가 이뤄진다. 송수신 호스트나 중간 노드에서 타인에게 노출될 수 있다. 신뢰적 호스트간의 비신뢰적 매체(공개 네트워크 등)를 이용할 때 유리하다. 암호화는 송수신 호스트에서 담당한다.
* 관용 암호(대칭키)
- 송수신자가 키를 교환해야하며, 그 키를 비밀로 유지해야한다. 키 분배의 어려움이 존재하며, 디지털 서명이 불가하다.
- 암호화/복호화 속도가 빠르다?
* 공개키 암호(개인키)
- 암호/복호에 각각 다른 키를 사용하므로 송수신자가 페어 키 쌍 중 하나를 각각 지니고 있어야한다. 그 중 하나인 개인키는 비밀 유지가 필요하다. 공개키는 공개되므로, 디지털 서명으로 사용할 수 있다.
- 속도가 느리다? 왜?
* 고전 암호 기술
- Steganographpy : 메시지의 존재 자체를 은폐하는 방식. 메시지의 존재 자체를 보통 사람들은 알아차릴 수 없다. 원문 내의 단어가 문자를 적당히 배열함으로서 실제 메세지를 나타낸다. 생성이 쉬우나, 적은 정보를 은닉하는 것에 많은 코스트를 요구한다. 또한 방법이 노출되면 재사용이 불가하다.
*치환 기법-카이사르(시저) 암호
- 알파벳을 숫자 1~26까지 대치시킨 뒤, 키(숫자)만큼 뒤로 옮겨 치환한다. 키가 2일때 A가 C가 되는 형식이다.
- 암호화 및 해독 알고리즘이 널리 알려져 있으며, 가능한 키는 25개 뿐이다. 따라 Brute-force attack이 가능하다.
- 평문의 언어를 알고 있으면 쉽게 해독이 가능하다.
*치환기법-단일 치환
- 각 문자에 숫자를 랜덤하게 대치시킨다. 이 경우 카이사르 암호는 25개의 키만을 사용할 수 있으나 단일 치환 시 26! 개의 대치 방안이 존재한다.
- 단 출현 빈도수를 이용해 평문의 유추가 가능하다. 예를들어 영어에는 t,e,a,h 등의 알파벳이 자주 쓰이는데, 그것을 통해 대치된 원문을 유추할 수 있다.
*다중 치환- playfair 알고리즘
- 5*5 행렬에 기초한다. 키워드가 monarchy인 행렬은 맨 윗줄부터 monarchy를 채우고, 아래는 알파벳 숫으로 배치한다. 이때 I와 J는 동일 문자로 취급한다.
M | O | N | A | R |
C | H | Y | B | D |
E | F | G | I/J | K |
L | P | Q | S | T |
U | V | W | X | Z |
우선 단어를 2자기로 나눈다. star 라면 st ar 이런식이다.
단, 나눴을 때 문자가 반복되는 경우가 존재한다. 이때는 x 등과 같은 채움 문자로 분리한다.
ex) balloon -> ba lx lo on
홀수 단어일 경우에도 마지막에 채움문자를 입력한다.
이후 2자기씩 암호화를 진행한다.
자기를 이루는 두 문자의 행렬 상 위치에 따라 방법이 달라진다.
(1) 두 문자가 같은 행에 위치한다: 바로 우측에 있는 문자와 치환한다. (ex. A와 B -> R와 D)
(2) 두 문자가 같은 열에 위치한다: 바로 밑의 문자와 치환한다. (ex. Y와 Q -> G와 W)
(3) 그 외에는 대각선에 위치한 문자와 치환한다. (H와 S -> B와 P)
특징으로서는 2자기의 문자 위치에 따라 치환이 달라지므로, 같은 알파벳이어도 같은 자기에 속한 문자에 따라 다른 복호화가 될 수 있다. 따라 빈도수 분석이 어렵다.
그러나 평문의 원래 구조가 많이 드러난다는 단점이 있으며 암호문자의 길이가 길 경우 구조를 금새 파악할 수 있다.
*다중단일문자치환
'이론' 카테고리의 다른 글
TCP 데이터 전송 - rdt (0) | 2025.01.15 |
---|---|
Transport Layer의 TCP/UDP (0) | 2025.01.13 |
IP(Network Layer) (0) | 2025.01.07 |
Ethernet과 그의 확장 (0) | 2025.01.07 |
네트워크 모델과 Topology (0) | 2025.01.06 |