SK shieldus Rookies/클라우드 기반 시스템 운영ㆍ구축 실무

[SK shieldus Rookies 16기] 대칭키/비대칭키 암호화, 공개 키 기반 구조(PKI)

su. 2024. 1. 5. 18:38
[SK shieldus Rookies 16기] 클라우드 기반 스마트 융합보안 과정
클라우드기반 시스템 운영 구축 실무 #03-04

 

학습 내용

-  대칭키/비대칭키 암호화
-  암호화/해시 알고리즘
-  암호화 프로토콜 (SSL/TLS)
-  암호화 실습 (대칭키/비대칭키)
-  공개 키 기반 구조 (인증기관: CA, 인증서: CRT)

 

 

 

암호화의 역할

•  기밀성(Confidentiality): 인가된 자만 데이터 열람 가능

•  신뢰성(Authenticity): 인증, 정당한 사용자임을 확인

•  무결성(Integrity): 변조(오염)로부터 보호된다 

 

 

대칭키 암호화 방식

•  암호화와 복호화 시 동일한 키를 사용

•  단일키(패스워드)

 

 

비대칭키 암호화 방식

•  암호화와 복호화 시 서로 다른 키를 사용

•  공개키, 개인키(Private Key, 발행주체만 가지는 키)

•  기밀성 보장: 공개키로 암호화 ➞ 인가된 자 = 개인키를 가진 자만 데이터 열람 가능

•  신뢰성 보장: A가 개인키로 암호화, B가 공개키로 복호화 ➞ A가 보낸 것을 신뢰 가능. (기밀성은△)

                 * 개인키로 암호화 = 전자서명

•  무결성 보장: 원본/백업본 전송 B에서 동일성 점검

    - A가 해싱한 데이터원본 데이터를 개인키로 서명해 전송한다 (+신뢰성)

    - B가 공개키로 복호화하고 원본 데이터를 동일한 함수로 해싱하여 A가 해싱한 데이터와 동일한지 확인한다

        * 해시 함수(MD, SHA), 해시값(Digest)

 

 

 

암호화 알고리즘

  양방향성: 원문 ↔ 암호문

  DES / 3DES / RSA

 

 

해시 알고리즘 (Hash Algorithm)

해시 : 하나의 문자열을 일정한 길이의 문자열로 변환, 원본의 크기와 관계없이 고정된 길이로 변환한다.

  단방향성: 원문 ➞ 암호문

  MD / SHA

 

    * MD 알고리즘

      - MD2, MD4, MD5 세 가지가 있다

      - MD4의 확장판인 MD5는 4보다 속도가 빠르진 않지만, 좀 더 안전하다

 

    * SHA 알고리즘

      - MD4가 발전한 형태로, 160비트의 값을 생성하는 해시 함수이다

      - MD5보다 조금 느리지만 좀 더 안전한 것으로 알려진다

 

 

 

 

암호화 프로토콜

          응용계층: SSH(Secure Shell, 보안 로그인 쉘), PGP(이메일 보안)

(Trans) 4계층: SSL / TLS(SSL 3.1)

(Net)    3계층: IPSec

(DLink) 2계층: PPTP, L2TP

HTTP/HTTPS     SSL/TLS Protocol stack

SSL/TLS

•  SSL(Secure Socket Layer, 보안 소켓 계층) / TLS(Transport Layer Security, 전송 계층 보안)

•  TLS는 SSL의 상위 버전(SSL3.1)으로, SSL은 이제 사용되지 않으나, 용어는 계속 사용되어 TLS를 나타낸다.

•  전송 계층 상위에서 동작하여 응용 계층을 암호화, HTTP 패킷을 보호한다.

•  서버, 애플리케이션, 사용자 및 시스템 간의 데이터를 암호화하는 통신 프로토콜

•  네트워크를 통해 연결된 두 당사자를 인증하여 데이터를 안전하게 교환할 수 있도록 한다.

•  Handshake: Client의 웹브라우저에서 웹서버의 TLS 인증서의 신뢰를 확인하고 암호화 키를 교환한다.

    * 신뢰확인: CA 공개키로 복호화되면, CA 개인키로 서명해 발급한 인증서임이 인증되어 신뢰 가능하다.

    * PKI 프로세스의 8) 인증서 신뢰확인

 

SSL/TLS 프로세스

1)  Client가 서버에 요청하면, 서버는 공개키가 담긴 TLS 인증서를 전송한다.

2)  Client는 CA 공개키로 인증서의 신뢰를 확인한다.

3)  Client는 함께 받은 서버의 공개키로 세션키를 암호화하고 서버에게 전송한다.

4)  Client가 데이터를 세션키로 암호화해 서버에게 전송한다.

5)  서버는 개인키로 복호화 한 세션키를 이용해 데이터를 확인할 수 있다.

    * Session key ≒ 대칭키   : 데이터 암호화

    *    Public key = 비대칭키: 세션키를 암호화

 

 

 

가상머신에서 실습

[WebServer - CentOS]

A가 평문의 파일을 만들고 ➞ 암호화 ➞ B에게 전송할 것이다

TEST 디렉터리를 생성하여 실습을 진행한다

 

 

 

  대칭키 암호화 방식

<A가 수행하는 작업>

1)  평문 파일 생성

 

평문 파일 생성

 

 

2)  암호화

openssl enc -e -des3 -salt -in P1.txt -out P2.bin

           암호화 방식 / 암호화할 파일 / 암호문 저장할 파일명

 

암호화

 

 

<B가 수행하는 작업>

  복호화

openssl enc -d -des3 -in P2.bin -out P3.txt

 

복호화

 

 

②  비대칭키 암호화 방식

<B에게 생성>

1)  개인키 생성 (private)

openssl genrsa -out private.pem 2048

  •  RSA로 개인키 private.pem 생성

  •  2048bit 길이 : 숫자가 높을수록 안전하다

 

개인키(private key) 생성

 

2)  공개키 생성 (public)

openssl rsa -in private.pem -out public.pem -outform PEM -pubout

  •  개인키 private.pem에 대한 공개키 public.pem 생성 (pair)

  •  공개키를 자신에게 정보를 제공할 사람(A)에게 전송

 

공개키(public key) 생성

 

<A가 수행>

  공개키로 암호화 (public)

openssl rsautl -encrypt -inkey public.pem -pubin -in P1.txt -out P4.ssl

 

공개키로 암호화

 

<B가 수행>

  개인키로 복호화 (private)

openssl rsautl -decrypt -inkey private.pem -in P4.ssl -out P5.txt

 

개인키로 복호화

 

 

리눅스에는 확장자가 따로 없기 때문에 'P1.txt' 전체가 파일 이름이다.

 

배포할 사람이 여러명일 경우, 효과적인 운영과 보안을 위해 인증서를 이용한다.

 

네이버의 경우 다음과 같이 디지털 인증서를 확인할 수 있다

 

 

 

 

공개 키 기반 구조(Public Key Infrastructure, PKI)

  전송과 관련된 당사자들을 인증하기 위해 공개 키 암호화를 사용하는 기능, 정책 및 서비스 시스템 환경이다

  인증 기관(Certification Authority, CA)은 다음 서비스를 제공한다

    - 디지털 인증서 발행 / 유효성 검증 / 폐기

    - 공개 키 분배

  공개 키를 직접 송신하지 않고, 디지털 인증서에 통합하도록 인증 기관에 요청한다

  ITU-T 의 X.509 표준을 따른다

    * ITU(International Telecommunication Union, 국제전기통신연합)  * -T (전기통신표준화부문)

 디지털 인증서, 공개 키를 관리하기 위한 암호화와 디지털 서명 서비스가 포함되기도 한다

 

 

최상위(Root) 인증기관(CA, Certification Authority) 

등록 대행 기관(RA) (공인인증서 발급 대행기관: 은행, 증권사)

 

크롬 > 설정 > 검색: 인증서 > 보안 > 인증서 관리

1)  CA가 웹 브라우저 회사에 인증서 배포(CA의 공개키가 담김),

2)  Client의 웹 브라우저에는 미리 설치된 인증서가 존재한다

3)  웹 서버(www.-)는 공개키와 개인키를 생성하고

4)  CA에 인증요청서(CSR)와 웹 서버 공개키를 제출

5)  CA가 인증서를 심사 후

6)  웹 서버의 공개키를 포함한 인증서(CRT)를 발급, CA의 개인키로 서명해 서버에게 전송한다

     * CRT: 인증서를 뜻하는 CERT의 약자 / 인증서 파일의 확장자 .crt 이다.

7)  웹 서버는 Client에게 인증서를 제출하고

8)  Client는 CA의 공개키로 복호화하여 인증서의 신뢰를 확인한다

9)  신뢰할 수 있다면 함께 있던 웹 서버 공개키로 암호화한 데이터를 전송한다

 

* 자체 발급 인증서는 신뢰성을 검사할 수 없다.

-  발급자 = 발급 대상

-  client에게 확인 수단이 없음