본문 바로가기

Rookies 9기/시스템 네트워크보안

시스템/네트워크 보안 3일차

728x90

암호화

• 암호화 개요

암호화를 사용하지 않으면 도청을 할 수 있다.(SnifFing)

 

• Caesar가 사용한 최초의 암호화 방식 ( 치환 : 다른 글자로 바꾸는 것)

ex) 평문 : attack --> cvvcem , paris --> rctku

암호화 키: shift +2 , 복호화 키 : shift -2   ---> 서로 대칭을 이룬다.(대칭키)

 

• 용어 정리

- 평문 : 누구나 읽을 수 있는 글

- 암호문 : 아무도 읽을 수 없는 글

- 암호화 : 평문을 암호문으로 만드는 것

- 복호화 : 암호문을 평문으로 만드는 것

- 암호화 키 : 평문을 암호문으로 만드는 규칙

- 복호화키 : 암호문을 평문으로 만드는 규칙

 

대칭키

• 대칭키 방식의 특징

- 치환(s)과 순열(p) ----> 현재 SPN 방식을 사용(S : 치환, P : 순열, N : 네트워크 --> 치환과 순열의 반복)

- 암화키와 복호화 키가 서로 대칭을 이룬다.(대칭키 Symmetric Key)

- 암호화키를 알면 복호화 키를 알 수 있다.(단일 키 Single Key)

- 대칭키는 다른 사람이 알면 안 된다(비밀키 Secret Ket)

- 한번의 세션에서만 사용(세션 키 Session Key)

- 종류 : DES, AES, SEED 등

- AES 활용 사례 : ID/PW로 로그인하는 대부분의 경우, Wi-Fi를 이용하는 모든 트래픽도 AES로 암호화 등

- 장점 : 암호화/복호화 속도가 빠르다(데이터 암호화에 사용)

- 단점 : 키 전달의 문제(직접 전달), 키 개수의 문제( 키는 n(n-1)/2개 필요함)

 

Diffie - Hellman

- 최초의 공개키

- 누구나 개인키와 공개키 한쌍을 가진다(개인키로 공개키를 생성)

- 개인키는 자기 혼자만 안전하게 보관한다

- 이산대수의 어려움을 이용해서 공개키 방식을 인류 최초로 만듦

 

개인키와 공개키 확인

• SSH 설치
sudo apt udate
sudo apt install ssh
cd /etc/ssh
ls -l

-rw-------   1 root root    492  9월 19 11:43 ssh_host_ecdsa_key  //개인키(Private key) : 확장자 없음
-rw-r--r--   1 root root    169  9월 19 11:43 ssh_host_ecdsa_key.pub  //공개키(Public key) : 확장자가 pud임

 

• Diffie - Hellman 방식의 특징

- 개인키는 나 혼자만 보는 것(600), 공개키는 상대방에게 제공하기 위한 것(644)

- 공개키를 상대방에게 제공(평문으로 가도 상관없음, 이메일로 보내도 됨, 딴 사람이 가져도 상관없음)

- 자신의 개인키와 상대방의 공개키를 연산해서 생성된 키는 양쪽이 일치하게 된다. --> 대칭키로 사용면 된다(대칭키를 교환할 필요 없음) --> 대칭키 키 교환의 문제를 해결

- ID와 PW를 모두 대칭키로 암호화해서 상대방에게 제공하면 됨, 상대방도 같은 대칭키가 있기 때문에 복호화 가능함

 

• RSA 등장

- 소인수분해의 어려움에 근거 

- 양방향 암호화 가능 : 개인키로 암호화하면 공개키로 복호화(인증), 공개키로 암호화하면 개인키로 복호화(기밀성)

- 특허가 2001년쯤 만료되어서 무료로 사용 가능---> 상당히 많이 사용( De Facto)

 

• 대칭키의 종류

1) DES(Data Encryption Standard)

- 최초의 표준 대칭키, IBM의 Lucifer System을 기반으로 만듦

- 블록 암호화 방식 : 데이터를 64bit씩 잘라서 암호화를 하는데 키의 길이도 64bit이다.

- 키는 65bit인데, 실제 암호화 키는 56bit 나머지 8bit를 패리티 비트로 채운다.

DES 실습

https://www.flashbit.site/ko/des/

 

2) 3 DES 

- DES를 3번 반복 연산 -> 임시 표준

 

3) AES(Advanced Encryption Standard)

- 표준 대칭키(현재) -> 안정성도 있고 속도가 빨라서 선정되었다.

- 128bit, 192bit, 256bit 중에 선택해서 사용

- SPN 방식을 사용

 

4) SEED ( 대칭키는 각자 국가에서 만든 것을 주로 사용)

우리나라에서 만들었다.

SEED(금융 중앙 망), HIGHT/ARIA/LEA는 경량 대칭키 --> 모바일/IoT 시대에 적합하도록 만들었다.

http://seed.kisa.or.kr (소스코드 공개하는 이유는 백도어가 없음을 보여주는 것)

 

KISA 암호이용활성화

 

seed.kisa.or.kr

5) RC 시리즈

- RC4 : 무선공유기에서 많이 사용되었으나 키를 크래킹 하는 방식이 알려져서 최근에는 사용하지 않는다.

(Kali Linux 40분 정도 크래킹 가능, AirCrackng, FernWiFicracker 등)

- RC6는 AES 선정할 때 최종라운드까지 갔다가 탈락

 

6) Fish 시리즈

- TwoFish : AES 선정할 때 최종라운드까지 갔다가 탈락

- BlowFish : 안전하기로 유명함

• 대칭키 방식의 발전

‣ 치환

- 문자를 다른 문자로 바꾸는 것

- ROT13 방식이 있다 -> 숫자, 특수문자는 암호화가 안되고 영어만 암호화된다. --> 이 문제를 해결하기 위해 ROT47 방식이 생겼다.

https://rot13.com/

 

rot13.com

rot13.com Please enable JavaScript to use this page. ↓ ROT1 ROT2 ROT3 ROT4 ROT5 ROT6 ROT7 ROT8 ROT9 ROT10 ROT11 ROT12 ROT13 ROT14 ROT15 ROT16 ROT17 ROT18 ROT19 ROT20 ROT21 ROT22 ROT23 ROT24 ROT25 ↓

rot13.com

‣ 순열

알파벳 순서를 바꾸는 것 ex) 땅리독는도우 => 독도는 우리 땅

 

‣ 메트릭스 

5*5 메트릭스는 암호화를 가로로 쓰고 세로로 읽어 들인다. 복호화는 세로로 쓰고 가로로 읽어 들인다.

 

•  SSL/TLS

- 웹 브라우저와 웹 서버 간 암호화를 하기 위한 프로토콜

- Netscape에서 SSL(Secure Socket Layer)를 만듦 --> 웹 암호화 시작

- SSL1.0, SSL2.0 ---> 취약점 발견되어 SSL3.0을 만들었지만 취약점이 있다.

- 표준화하기로 결정하고 이름을 TLS(Transport Layer Security)로 변경, SSL3.0의 업그레이드 버전으로 TLS1.0을 만듦

- 지금은 SSL은 사용하지 않지만 관용적으로 SSL이라고 한다(실제로는 TLS를 사용하고 있다)

- TLS는 1.3 버전을 사용하고 있다.

http는 평문으로 전송 :TCP80를 사용
https는 암호문으로 전송 : TCP443을 사용 --> TLS가 동작하면서 인증서를 받아옴(인증서 안에는 방문한 웹사이트의 공개키가 들어있음) => 세션키를 생성한 다음, 서버의 공개키로 암호화해서 보내줌 -> 서버는 자신의 개인키로 복호화하면 세션키 나옴 : 양쪽이 세션키 갖게 됨)

 

Hash Function

• 해시함수의 특징

- 고정길이 출력 : 원문의 길이와 관계없이 해쉬 값은 항상 일정한 길이로 출력

ex) MD5(128bit), SHA-1(160bit), SHA-256(256bit)

- 일방향 함수 : 해쉬 함수와 해쉬값을 알아도 원분 복구는 불가능

- 충돌 방지 ( 충돌 : 원문이 다른데 해쉬값이 같은 것)

 

※ 구글 보안팀 (프로젝트 제로)

- 세계적인 해커들을 고용해서 각종 테스트, 크래킹 등을 해본 다고 함

https://shattered.io/ SHA-1의 충돌 쌍을 공개

 

SHAttered

Isn't SHA-1 deprecated? Today, many applications still rely on SHA-1, even though theoretical attacks have been known since 2005, and SHA-1 was officially deprecated by NIST in 2011. We hope our practical attack on SHA-1 will increase awareness and convinc

shattered.io

PDF 파일 비교

다른 PDF 파일인데 MD5 해시값은 다르지만 SHA-1 해시값은 같다.

MD5와 SHA-1은 더 이상 안전하지 않다. --> ISMP-P, ISO27001에서 사용하면 안 된다고 한다(인증 안됨)

 

전자서명

- 생성 : 원문의 해시값에 송신자의 개인키로 서명을 하고 원문과 함께 보낸다.

- 검증 : 서명된 해시값을 송신자의 공개키로 복호화하고 원문의 해시값과 비교해서 일치하는지 확인

- 일치하면 무결성 검증(내용이 변조되지 않음), 인증(송신자에 대한 검증), 부인 봉쇄(아니라고 하지 못함) 확인된다.

ex) 은행 이체 마지막 단계   "XX은행 YYY계좌로 얼마를 이체"하겠습니까? 공인인증서가 보임---> 비밀번호를 입력(개인키 사용:서명)

 

• 공개키에 대한 검증이 필요함

- 진짜 거래 상대의 공개 키인가? <-- 인증기관이 발급 <--- 인증기관이 맞는지? <--- 루트 인증기관 <--- OS에 들어있음(인터넷 옵션)

 

• 인증서(Certificate)

- 형식 : X.509v3

- 인증서의 주요 내용 : 서명 알고리즘, 유효기간, 발급자, 주체, 주체의 공개키, 서명된 해시값 등

- 공개키가 올바른지 확인 (주체의 것이 맞는지 검증)

- 공개키가 진짜 주인이 맞는지 확인이 필요함

- 공개키의 해쉬값에 CA의 개인키로 서명해서 보냄

- 검증 가능 

- 방법은 전자서명과 비슷함

- 생성 : 원문이 (공개키)의 해시값을 구해서 송신자(CA)의 개인키로 서명

- 검증 : 송신자(CA)의 공개키로 서명된 해시값을 복호화한 후, 원문(공개키)의 해시값을 구해서 비교해봄

 

• PKI기관(공개키 기반 구조)

1) NPKI(National Public key Infrastructure)

- PAA(정책기관) : 미래부

- RootCA (최상위 인증기관) : , KISA, 인증기관을 검증

- CA(Certificate Authority, 인증기관) : 금융결제원, 정보인증, 전자인증, koscom, 무역정보협회, 인증서를 발행

- RA(Registration Authority, 등록기관) : 은행, 증권회사, 대행업체 등, 인증서 신청 업체를 검증하고 등록을 대행하는 역할

- Repository : 인증서(공개키)를 모아놓은 데이터베이스

2) GPKI, MPKI, EPKI 등

 

* 인증서 취소 목록 (CRL : Certificate Revocation Authority): 일반인들이 조회하기 전까지는 가짜 인증서 확인 어렵다.

--> OCSP(Online Certifiacate Status Protocol) : 온라인에서 실시간으로 인증서의 유효성을 검증하는 프로토콜이다.