암호화
• 암호화 개요
암호화를 사용하지 않으면 도청을 할 수 있다.(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를 패리티 비트로 채운다.
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 (소스코드 공개하는 이유는 백도어가 없음을 보여주는 것)
5) RC 시리즈
- RC4 : 무선공유기에서 많이 사용되었으나 키를 크래킹 하는 방식이 알려져서 최근에는 사용하지 않는다.
(Kali Linux 40분 정도 크래킹 가능, AirCrackng, FernWiFicracker 등)
- RC6는 AES 선정할 때 최종라운드까지 갔다가 탈락
6) Fish 시리즈
- TwoFish : AES 선정할 때 최종라운드까지 갔다가 탈락
- BlowFish : 안전하기로 유명함
• 대칭키 방식의 발전
‣ 치환
- 문자를 다른 문자로 바꾸는 것
- ROT13 방식이 있다 -> 숫자, 특수문자는 암호화가 안되고 영어만 암호화된다. --> 이 문제를 해결하기 위해 ROT47 방식이 생겼다.
‣ 순열
알파벳 순서를 바꾸는 것 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의 충돌 쌍을 공개
다른 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) : 온라인에서 실시간으로 인증서의 유효성을 검증하는 프로토콜이다.
'Rookies 9기 > 시스템 네트워크보안' 카테고리의 다른 글
시스템/네트워크 보안 6일차 (0) | 2022.09.22 |
---|---|
시스템/네트워크 보안 5일차 (0) | 2022.09.21 |
시스템/네트워크 보안 4일차 (0) | 2022.09.20 |
시스템 / 네트워크 보안 2일차 (0) | 2022.09.16 |
시스템/네트워크 보안 1일차 (0) | 2022.09.15 |