본문 바로가기
Infra & Security Eng/Network & Security

암호시스템의 원리와 DES 암호화 과정 완벽 정리

by 엔지니어 E 2026. 3. 17.
반응형

1. 암호시스템의 목적 (보안의 핵심 요소)

암호시스템은 단순히 정보를 숨기는 것을 넘어, 다음 두 가지 핵심 가치를 지키기 위해 사용됨

기밀성 (Confidentiality): 정보가 인가되지 않은 사용자에게 노출되지 않도록 보호하는 것임. 기밀성이 훼손되면 소중한 자유와 정보가 유출되는 결과를 초래함

무결성 (Integrity): 정보가 전송 중에 가공되거나 변조되지 않았음을 보장하는 것임. 무결성이 훼손되면 데이터가 불법적으로 조작되었음을 의미함

 

2. 암호화와 복호화의 메커니즘

암호시스템은 데이터를 처리하는 일종의 **프로그램(알고리즘)**으로 이해할 수 있다

1) 암호 알고리즘 (Encryption)
평문을 암호문으로 바꾸는 과정

입력값: 평문(Original Data) + 암호 키(Key)
결과물: 암호문(Ciphertext)

2)복호 알고리즘 (Decryption)
암호문을 다시 원래의 평문으로 되돌리는 과정

입력값: 암호문(Ciphertext) + 암호 키(Key)
결과물: 평문(Original Data)

 

3. 키(Key) 관리와 데이터 전송

암호화에서 가장 중요한 것은 '키'를 어떻게 전달하고 관리하느냐이다

키의 생성: 일반적으로 **보내는 사람(송신자)**이 암호화에 필요한 키를 생성 한다
데이터의 전송: 인터넷과 같은 **개방 통신망(Network)**을 통해 전달되는 것은 '키'가 아니라, 탈취되어도 내용을 알 수 없는 **'암호문'** 이다
키의 전달 (상면): 가장 안전한 키 전달 방식은 직접 만나서(상면, Face-to-Face) 키를 전달하는 것이다.  네트워크를 통해 키를 보내면 키 자체가 유출될 위험이 있기 때문이다

 

4. 근원지 증명과 대칭키의 한계

암호화 통신에서 '누가 보냈는가'를 확실히 하는 것은 보안의 필수 요소임

근원지 증명(Source Authentication): 송신자가 주장하는 본인이 맞는지, 즉 메시지의 출처를 명확히 확인하는 과정이다. 현실의 '인감도장'이나 '친필 서명'과 같은 역할을 한다.

대칭키의 한계: 동일한 키를 송신자와 수신자가 공동으로 소유하기 때문에 발생한다.
둘 다 같은 키를 가졌으므로, 전송된 암호문이 '송신자가 만든 것'인지 '수신자가 직접 만든 것'인지 제3자가 객관적으로 증명할 수 없다.

따라서 대칭키 방식만으로는 **누가 작성했는지 증명(근원지 증명)**하거나, 나중에 "내가 보내지 않았다"라고 발뺌하는 것을 막는 것이 불가능하다

해결책: 이를 극복하기 위해 나만 가진 고유한 키로 서명하는 비대칭키(공개키) 기반의 전자서명 기술을 사용하여 근원지 증명을 실현한다

 

DES 암호화 실습

예시: CAT

1단계: 문자를 숫자로 변환 (ASCII 코드) * 알파벳 -> 이진수로 변환 
컴퓨터는 문자를 직접 다룰 수 없어 약속된 번호표(ASCII)를 사용해 숫자로 바꾼다

* 아스키 코드에서 A=65 부터이다. B: 66 C:67 ..

C = 67
A = 65
T = 84

(공백 5개) = 32, 32, 32, 32, 32

* DES에서 한 번에 처리하는 데이터의 크기는 무조건 64비트(8BYTE) 고정이므로 CAT 말고 5개를 더 PADDING 한다  

2단계숫자를 0과 1로 변환 (8비트 2진수) 
1. C (67): 0 1 0 0 0 0 1 1 (1~8번 비트)
2. A (65): 0 1 0 0 0 0 0 1 (9~16번 비트)
3. T (84): 0 1 0 1 0 1 0 0 (17~24번 비트)
4. 공백 (32): 0 0 1 0 0 0 0 0 (25~32번 비트)
5. 공백 (32): 0 0 1 0 0 0 0 0 (33~40번 비트)
6. 공백 (32): 0 0 1 0 0 0 0 0 (41~48번 비트)
7. 공백 (32): 0 0 1 0 0 0 0 0 (49~56번 비트)
8. 공백 (32): 0 0 1 0 0 0 0 0 (57~64번 비트)

3단계: 64비트 데이터 나열 (입력값 준비)
위에서 만든 비트들을 순서대로 쭉 이어 붙인다. 이것이 전치 테이블에 들어가기 전의 원본 데이터이다
0100001101000001010101000010000000100000001000000010000000100000