암호문은 기본적으로 대체 암호화와 위치 암호화 방법을 적절히 조합하여 작성한다. 최근에는 고성능 컴퓨터가 많아져 연산속도가 빨라지기 때문에 알고리즘의 복잡도를 높이는 방식으로 암호화한다. 대표적으로는 DES와 RSA 알고리즘이 있다.
DES 알고리즘
- DES 알고리즘은 암호문을 작성할 때 사용하는 암호키와 암호문을 해독할 때 사용하는 해독키가 같다. 따라서 이 키는 절대로 외부에 유출되지 않도록 관리해야 하며, 비밀키(Secret Key)라 부른다. 또한 양쪽이 동일 키를 사용한다고 해서 대칭키(Symmetric Key)라고도 한다.
- 이처럼 외부 사용자에게 노출되지 않아야 하는 암호키로 암호화하는 알고리즘을 비공개키 알고리즘이라 한다.
- 비공개키 방식의 DES(Data Encryption Standard)알고리즘은 미국 정부가 개발하여 여러 하드웨어와 소프트웨어에서 사용해왔다. 대체 암호화와 위치 암호화를 복잡하게 조합하여 개발한 DES 알고리즘은 암호화를 64비트 단위로 수행하며, 암호키의 크기는 56비트이다.
동작 방식
DES 알고리즘은 크기가 64비트인 데이터 블록을 32비트씩 둘로 나누어 독립적으로 처리한다. 32비트 블록 하나를 암호키로 암호화한 후에, 두 블록의 위치를 맞바꾸는 과정을 16번 반복한다.
DES 알고리즘의 동작 과정에서 위치 암호화는 시작과 끝에서 2번 수행된다. 왼쪽 과정은 총 18번의 단계로 구성되며, 처음과 마지막에는 위치 암호화, 중간에는 암호화 과정이 16번 진행된다. 위치 암호화 1과 위치 암호화 2는 서로 반대의 위치 변환을 수행한다.
16단계의 암호화
위치 암호화의 중간 단계에는 동일한 암호화 알고리즘을 16번 반복한다. 이전 단계에서 주어진 입력 데이터의 오른쪽 32비트는 아무 작업 없이 출력 데이터의 왼쪽 32비트로 바로 나가 다음 단계의 입력으로 전달된다.
- 오른쪽 출력의 32비트 계산은 조금 복잡하다. 암호화를 위해 48비트의 암호키와 32비트의 입력을 이용한다.
- 먼저 임의의 함수 F(오른쪽 32비트, 48비트 암호키)를 이용해 32비트의 결과를 얻는다.
- 이 값과 입력 데이터의 왼쪽 32비트를 배타적 논리합(Exclusive OR)으로 계산하면 오른쪽 32비트 출력을 얻는다.
- 데이터 블록의 오른쪽 32비트는 48비트의 암호키와 연산히기 위해 48비트로 확장하는 작업을 먼저 한다. 반대로 암호키는 원래 56비트이므로 48비트로 축소하는 작업을 한다.
3DES 알고리즘
- 3DES 암호 기능을 강화하기 위하여 세 번의 DES 알고리즘을 수행하는 3단계 DES 알고리즘이다. 기존의 DES 알고리즘은 56비트의 비교적 작은 키를 사용하여 여러 평가에서 보안 기능에 많은 문제점이 노출되었다. 특히 고성능 컴퓨터를 이용하여 이루어지는 반복적인 공격에 대하여 취약점을 드러내고 있다. 장기적인 관점에서 AES(Advanced Encryption Standard라는 차세대 표준 암호화 알고리즘으로 대체 되는 과정이지만, 그 중간 과정으로 3DES가 임시방편으로 사용되고 있다.
- 3DES는 기본적으로 DES 알고리즘을 그대로 사용하기 때문에 구현하기 쉬우며, 기존의 DES 시스템을 사용하던 환경에 적용하기 편리하다는 장점이 있다. 그러나 DES 알고리즘에 비하여 3배 이상 속도가 느리다는 단점이 있다.
- 3DES는 3단계 절차를 거쳐 암호화가 이루어지며, 반대의 해독 과정에서도 3단계 절차가 진행된다. 매 단계마다 서로 다른 56비트의 키가 사용되므로 전체적으로 168비트의 키를 지원하여 보안 기능이 한층 강화되었다.
3DES 알고리즘은 암호화 과정에서 각각 56비트 크기인 3개의 DES 키(K1, K2, K3)를 사용한다. 즉, 키 K1을 이용하여 DES 암호화, 키 K2를 이용하여 DES 해독, 키 K3를 이용하여 DES 암호화 기능을 수행한다.
해독 과정은 반대의 절차로 이루어진다. 즉, 키K3를 이용하여 DES 해독, 키 K2를 이용하여 DES 암호화, 키 K1을 이용하여 DES 해독 기능을 수행한다.
암호키 사용과 관련해서는 세 가지 옵션이 표준으로 정해져있다.
옵션 | 설명 |
3개의 키가 모두 독립적 | 168비트, 보안 기능이 가장 뛰어나다. |
K1과 K2는 독립적, K3 = K1 |
112비트, 보안 기능이 약간 떨어지지만 DES 알고리즘을 단순 2번 수행하는 것보다 강화된 기능을 지원한다. |
3개의 키가 모두 동일 K1 = K2 = K3 |
56비트, DES 알고리즘과 동일하여 권고에서 제외된다. |
RSA 알고리즘
- 비공개키 알고리즘은 비밀키에 대한 보안이 절대적으로 중요하다. 따라서 허가받은 수신자에게만 비밀키를 분배하도록 관리한다. DES 알고리즘처럼 암호키와 해독키가 동일하면(혹은 하나로 다른 하나를 쉽게 유추할 수 있으면) 이 키를 분배하는 과정에서 키가 외부로 유출되지 않도록 해야 한다.
- 비밀키가 외부에 유출되면 보안을 유지하기가 사실상 불가능하다. 공개키 알고리즘은 암호키와 해독키가 동일하지 않도록 고안된 방식이다. 공개키 알고리즘을 이용하면, 암호문을 작성할 때 사용하는 암호키가 외부에 공개되어도 해독키를 모르면 암호문을 해독할 수 없다.
- 공개키 알고리즘은 사용자가 두 개의 암호키(공개키, 비공개키) 조합을 사용하는데, 공개키(Public Key)는 원 문서를 암호화하는 데 사용하므로 원칙적으로 누구에게나 공개된다. 따라서 송신 호스트는 공개키로 원문서를 암호화하여 전송한다. 수신 호스트는 암호문을 해독하기 위해 비공개키(Private Key)를 사용한다. 비공개키는 공개키와 다른 값을 갖는다.
- 공개키 알고리즘의 대표적인 예는 RSA(알고리즘 발명자인 Rivest, Shamir, Adelman 세 사람 이름의 첫 글자) 알고리즘이다. RSA 알고리즘은 (공개키, 비공개키) 조합을 만드는 방법을 제시한다.
송신자는 공개키를 이용해 암호문을 작성하는데, 작성한 암호문은 비공개키로만 해독할 수 있다. 이때 알고리즘으로 얻을 수 있는 (공개키, 비공개키) 조합은 다양한데, 서로 다른 조합에 표시된 공개키를 이용해 비공개키를 유추할 수 없다.
전자 서명
전자 서명은 인터넷 환경에서 특정 사용자를 인증하려고 사용한다. 인증은 특정인이 진짜 그 사람이지를 확인하는 절차이다. 이와 비슷한 기능으로 권한이 있고 없음을 확인하는 권한이 있는데, 인증과 다른 특징이 있다.
일반적으로 전자 서명의 인증 과정은 RSA 알고리즘과는 반대 원리이며, 비공개키 알고리즘과 공개키 알고리즘의 조합을 사용한다. 전자 서명의 기능은 자신을 다수의 타인에게 증명하는 것이므로 암호화 과정에서 자신만 아는 비밀키(전자서명)를 사용한다. 암호화한 전자 서명은 다수의 타인이 확인하므로 해독 과정에서는 공개키를 사용한다.
암호화 과정
- 2단계로 이루어진다.
- 비공개키 암호화 단계: 전자 서명 알고리즘으로 자신을 인증한다.
- 공개키 암호화 단계: 전자 서명의 정보를 전송하기 위해 다시 RSA 알고리즘을 사용한다.
해독 과정
- 수신자가 전자 서명된 문서를 해독한다.
- 수신한 문서를 RSA 알고리즘의 비공개키 Rs로 해독함으로써 전자 서명문 Ds(P)를 얻는다.
- 얻은 문서를 송신자의 인증에 필요한 전자 서명 공개키(Dp)를 사용해 해독하여 원문서 P를 얻는다.
Reference
쉽게 배우는 데이터 통신과 컴퓨터 네트워크
https://soso-hyeon.tistory.com/115
[쉽게 배우는 데이터 통신과 네트워크] CH17. 암호화와 네트워크 보안 (최종)
01 암호화의 이해1 암호화 관련 용어메시지 읽기: 인터넷에서 신호 도청을 차단하기는 쉽지 않으므로 암호화 기법으로 해결해야 한다.전송 방해: 전송 메시지가 수신자에게 도착하지 못하게 함
soso-hyeon.tistory.com
https://step-by-step-developer.tistory.com/10
암호화와 네트워크 보안
암호화의 이해 네트워크는 개방형 시스템으로 외부 노출 가능성이 있다. 암호화 관련 용어 - 메시지 읽기: 전송 선로를 도청, 암호화 기법으로 해결함 - 전송 방해: 송수신자 간의 통신을 방해,
step-by-step-developer.tistory.com
'CS > Network' 카테고리의 다른 글
[Chapter 17] 암호화와 네트워크 보안 (보안 프로토콜) (0) | 2025.02.19 |
---|---|
[Chapter 17] 암호화와 네트워크 보안 (암호화의 이해) (0) | 2025.02.19 |
[Chapter 16] 파일 전송 (TFTP 동작 과정과 예) (0) | 2025.02.19 |
[Chapter 16] 파일 전송 (FTP 원리) (0) | 2025.02.19 |
[Chapter 16] 파일 전송 (파일 전송을 위한 사용자 환경) (0) | 2025.02.19 |