해당 포스팅은 2022학년도 동계 겨울방학 중 수강했던 "Linux 운영체제의 이해와 활용" 특강을 듣고 정리한 내용입니다.
1. 암호화(Encryption)
1-1. 암호화(Encryption), 복호화(Decryption) 정의
- 암호화(Encryption)란, 정보를 인가되지 않은 객체로부터 노출시키지 않기 위해 특정한 알고리즘을 이용하여 평문을 암호화된 형태(암호문)로 변환시키는 것을 말하며 암호문을 다시 평문으로 변환시키는 과정을 복호화(Decryption)라고 합니다.
1-2. 개발 관점에서 바라본 암호화, 암호화의 목적
- 민감한 정보(보호가 필요한 정보들)들을 특정 알고리즘을 이용해 외부에서 데이터를 확인할 수 없도록 암호화가 필요하며 민감한 데이터를 보호하기 위해 시스템적인 설계 부분보다 어떻게 보면 더 중요한 부분이라고 할 수 있습니다.
- 기밀성, 무결성, 부인 방지, 가용성을 유지하기 위해 암호화를 사용하고 있습니다.
1-3. 암호화의 기본적인 요소 2가지, 혼돈(Confusion), 확산(Diffusion)
(1) 혼돈(Confusion)
- 원문의 내용을 쉽게 파악할 수 없도록 구성해야 합니다.
(2) 확산(Diffusion)
- 암호화에 사용된 알고리즘 패턴을 쉽게 추론할 수 없도록 해야 합니다.
2. 해시 함수(Hash function)
2-1. 해시 함수의 일반적 정의, 암호화에서의 정의
- 해시 함수(Hash function)의 사전적 정의는 임의의 길이를 갖는 데이터에 대해 고정된 길이의 데이터로 매핑시킬 수 있는 함수를 의미하고 암호학에선 이러한 해시 함수의 부분집합적 특성을 이용해 암호화를 진행하고 있습니다.
2-2. 암호화 해시 함수의 특징 : 역상 저항성, 제 2 역상 저항성, 충돌 저항성
- 해시 함수로 매핑되기 전의 데이터 값을 키(Key)라고 부릅니다.
- 해시 함수로 매핑한 후의 데이터 값을 해시 값(Hash value)라고 합니다.
- 해시 값 + 데이터의 색인 주소의 형태를 해시 테이블(Hash table)이라고 합니다.
- 해시 함수로 매핑하는 과정 자체를 해싱(Hashing)이라고 부릅니다
(1) 역상 저항성(Preimage resistance)
- 주어진 해시 값에 대해 그 해시 값을 생성하는 입력값을 찾는 것이 계산상 어렵고 제 1 역상 공격에 대해 안전해야 합니다.
(2) 제 2 역상 저항성(Second preimage resistance)
- 입력 값에 대해 그 입력의 해시 값을 바꾸지 않으면서 입력을 변경하는 것이 계산상 어렵고 제 2 역상 공격에 대해 안전해야 합니다.
(3) 충돌 저항성(Collision resistance)
- 해시 충돌(Hash collision)에 대해 안전해야 하고, 같은 해시 값을 생성하는 두 개의 입력 값을 찾는 것이 계산상 어려워야 합니다.
2-3. 암호화 해시 함수의 종류 : MD5, SHA
(1) MD5(Message Digest Algorithm 5)
- 임의 길이의 메시지를 입력받아 128 비트 고정 길이를 출력하는 암호화 해시 함수를 의미합니다.
(2) SHA(Secure Hash Algorithm)
(A) SHA-0
- 1993년 NIST에서 최초로 제정되고 1995년 NSA에 의해 폐기된 암호화 해시 함수
(B) SHA-1
- 1995년 제정되어 활발하게 사용되었으나 안전성의 문제로 NIST에서 사용을 중지시킨 암호화 해시 함수
(C) SHA-2
- 2002년에 정식으로 표준 채택이 진행되고, SHA-224, SHA-256, SHA-385, SHA-512를 모두 아울러 SHA-2라고 정의하게 되었습니다.
3. 암호화 / 복호화 알고리즘(Encryption / Decryption algorithm)
3-1. 대칭키 암호화(Symmetric key cryptosystem)
- 암호화, 복호화에 동일한 키를 사용하는 암호화 방식을 의미합니다.
- 대칭키 암호화는 비교적 연산이 간단하고 빠르지만 데이터를 주고받는 그룹마다 키가 있어야 하기 때문에 사용자가 많아질수록 관리해야 하는 키의 양이 방대해집니다.
- 예시 : DES(Data Encryption Standard), AES(Advanced Encryption Standard), SEED 등
3-2. 공개키(비대칭키) 암호화(Public key cryptosystem)
- 각 개인별로 공개키(Public key) 또는 개인키(Private key)를 소유하며 누구나 접근할 수 있는 공개키로 암호화하고 각 개인이 소유한 비밀키로 복호화하는 암호화 방식을 의미합니다.
- 공개키 암호화는 대칭키 암호화 방식에 비해 연산 방식이 복잡하지만 각 사용자가 공개키와 비밀키를 모두 가지고 있기 때문에 대칭키 암호화 방식보다 키 관리가 수월하다는 특징을 가집니다.
- 예시 : RSA
4. SSL(Secure Socket Layer)
4-1. 개요
- 웹 서비스를 배포하기 위해서 SSL이라는 단어를 한 번쯤 들어봤을 보안 기법이며, SSL이 적용된 웹 프로토콜은 HTTPS(Hypertext Transfer Protocol Secure)을 사용하고 있고 현재 수많은 웹 서비스들이 HTTPS 기반 프로토콜을 사용하고 있습니다.
4-2. SSL의 정의
- SSL은 웹 서비스를 운영하는 웹 서버와 서비스를 이용하는 클라이언트 간 보안을 유지하기 위한 통신 규약을 의미합니다.
- HTTPS 프로토콜 환경에서 클라이언트가 서버에 접속하면, 서버는 클라이언트에게 인증서를 전달하고 클라이언트가 인증서를 확인하여 신뢰 가능한 서비스 제공자인지 서버의 신원을 우선적으로 확인한 후 서로 간 데이터 통신이 발생하게 됩니다.
4-3. 웹 서버가 인증서를 발급받는 과정
(1) 담당자는 웹 서버에 사용하기 위한 개인키, 공개키를 설정합니다.
(2) 방금 전 만든 웹 서버의 공개키와 웹 서버의 도메인 정보를 하나로 묶습니다.
(3) 위의 정보들을 바탕으로 신뢰할 수 있는 인증기관(CA)에 인증서 발급을 요청합니다.
(4) 인증 기관에서 도메인을 소유하고 있는지에 대한 진위 여부를 판별합니다.
(5) 진위 여부 판별 후, 서버의 공개키, 웹 서버의 도메인 정보를 암호화시킵니다.(CA의 개인키로 암호화)
(6) 그 결과(인증서)를 도메인의 웹 서버로 전달합니다.
(7) 이후 담당자는 웹 서버에 인증서의 위치, 개인키의 위치를 설정합니다.
======================================================================
해당 포스팅에 대해 내용 추가가 필요하다고 생각되면 기존 포스팅 내용에 다른 내용이 추가될 수 있습니다.
개인적으로 공부하며 정리한 내용이기에 오타나 틀린 부분이 있을 수 있습니다.
이에 대해 지적해 주시면 감사하겠습니다.
'컴퓨터 과학(Computer Science) > Linux' 카테고리의 다른 글
[Linux] - 웹 서버와 WAS, HTTP 통신(Cookie, Session, JWT, 요청과 응답) (0) | 2023.01.06 |
---|---|
[Linux] - 리눅스 파이프 명령과 리다이렉션, 디렉토리 구조, TCP/IP 네트워크, 정보 보안의 뜻 (0) | 2023.01.04 |
[Linux] - 리눅스 개요, Virtual Box 환경 구성, SSH로 Linux에 접속하기 (0) | 2022.12.29 |
댓글