Network

루키즈교육 - 0919학습

김띵똥 2022. 9. 19. 16:28

* 대칭키 방식                    

- 하나의 비밀키를 양쪽(Client & Server)가 모두 같이 사용

- 치환(S)과 순열 (p)로 이루어져 있음
=>현재 SPN방식을 사용(S:치환, P:순열, N : 네트워크) => 치환과 순열의 반복

- 암호화키와 복호화키가 서로 대칭을 이룸 => 대칭키(Symmetric Key)
- 암호화키를 알면 복호화키를 알 수 있음 => 단일키(Single Key)
- 대칭키는 다른 사람이 알면 안됌 => 비밀키(Secret Key)
- 한번의 세션에서만 사용 => 세션키(Session Key)
- 대칭키 기법을 사용하는 암호 알고리즘 방식으론 DES,3-DES,AES,SEED,ARIA,MASK 등이 있음

 


* Matrix 방식

1) 암호화

- 가로로 쓰고 세로로 읽어들인다
2) 복호화

- 세로로 쓰고 가로로 읽어들인다.

* Rot 13 (문자 => 암호화)
참고자료 rot13 변환
https://rot13.com/

* Rot 13 (문자 => 암호화) 단점
- 영어만 암호화됨
- 숫자,특수문자는 암호화 안됌 => 이문제를 해결하기 위해서 ROT47이라는 방식 등장

* ROT47
- 대/소/숫/특수문자를 다합치면 94개를 반으로 나누어서 섞어서 사용하는 방식

* 대칭키 (AES)활용 사례

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

* DES
- 데이터를 64bit씩 잘라서 암호화를 함
- 키는 64bit인이며,  실제 암호화키는 56bit, 나머지 8bit를 패리티 비트로 채움

* 실습) DES 암호화 실습

https://www.flashbit.site/ko/des/
U2FsdGVkX18u27F/j0wMOTJQ/0zboEBBV68LeIC6a9TIaIDJ6yF5/A==
대칭키(비밀키) : 12345678

* 1999년 RSA컨퍼런스에서 DES를 크래킹하는 시연 => 57시간만에 크래킹에 성공함
=> DES를 표준에서 제외 => 3DES방식을 임시 표준으로 사용 => 새로운 대칭키 표준을 공모 시작

* 2001년 차세대 대칭키 표준(AES, Advanced Encryption Standard)을 선정
- 벨기에의 Rijndael이 AES로 최종 선정됨 : 안전성도 있고 속도가 빨라서 선정

* 우리나라에서도 대칭키를 만들어서 사용(대칭키는 각자 국가에서 만든 것을 주로 사용)
seed.kisa.or.kr (소스코드 공개하는 이유는 백도어가 없음을 보여주는 것)
SEED(금융중앙망), HIGHT/ARIA/LEA는 경량 대칭키 => 모바일 / IOT 시대에 적합하도록 만듦

* 대칭키는 만드는 방식이 어렵지 않음 :SPN방식,Feistel방식(DES) 등을 사용하면 되기 떄문

* RC 시리즈
- MIT공대의 Rivest교수팀
- RC4 : 무선공유기에서 많이 사용되었으나 키를 크래킹하는 방식이 알려져서 최근에는 사용하지 않음
(Kali Linux 40분 정도 크래킹 가능)
- RC6는 AES선정할 때 최종라운드까지 갔다가 탈락

* Fish 시리즈
- 브루스 슈나이어라는 유명 암호학자가 만듦
- TwoFish : AES선정할 떄 최종라운드까지 갔다가 탈락
- BlowFish : 안전하기로 유명함 (해커들이 선호..)

* 대칭키의 문제점
- 키를 전달하는 문제점 (안전하게 전달하기 힘듦)
- 키의 개수의 문제점 (너무 많아서)

* Diffie-Hellman
- 이산대수의 어려움을 이용해서 공개키 방식을 인류 최초로 만듦
- 누구나 개인키와 공개키 쌍을 가짐

* 실습) 우분트 DVWA
$ sudo apt update
$ 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) : 확장자가 pub임

- 개인키는 나 혼자만 보는 것 (600), 공개키는 상대방에게 제공하기 위한 것 (644)
- 공개키를 상대방에게 제공(평문으로 가도 상관 없음, 이메일로 보내도 됨, 딴사람이 가져도 상관없음)
- 자신의 개인키와 상대방의 공개키를 연산해서 생성된 키는 양쪽이 일치하게 됨 => 대칭키로 사용하면 됨(대칭키를 교환할 필요 없음)
- 대칭키 키 교환의 문제를 해결 (공개키만 제공했는데 대칭키가 생성되었음)
- ID와 PW를 모두 대칭키로 암호화해서 상대방에게 제공하면 됨, 상대방도 같은 대칭키가 있기 때문에 복호화 가능함

* RSA 등장
- 소인수분해의 어려움에 근거 91 = A * b = 7 * 13 (1은 제외)
- 양방향 암호화 가능 : 개인키로 암호화하면 공개키로 복호화, 공개키로 암호화하면 개인키로 복호화
- 특허가 2001년 쯤 만료되어서 무료로 사용 가능 => 상당히 많이 사용 (De Facto)

* SSL/TLS
- 웹브라우저와 웹서버간 암호화를 하기 위한 프로토콜
- Netscape사에서 SSL(Secure Socket Layer)를 만듬 => 웹 암호화 시작
- SSL1.0, SSL2.0 => 취약점이 발견되어 SSL3.0을 만들었지만 취약점이 있음
- 표준화하기로 결정하고 이름은 TLS(Transport Layer Security)로 변경, SSL3.0의 업그레이드 버전으로 TLS1.0을 만듬
- 지금은 SSL은 사용하지 않지만 관용적으로 SSL이라고함 , 실제로는 TLS를 사용하고 있음(SSL/TLS)
- TLS는 1.3버전을 사용하고 있음(TLS1.3과 TLS1.2 만 권장, TLS1.1이하는 비권장)

* 구글 보안팀 (프로젝트 제로)
- 세계적인 해커들을 고용해서 각종 테스트,크래킹 등을 해본다고 함
https://shattered.io/ SHA

* MD5와 SHA-1은 더이상 안전하지 않음

=> ISMP-P , ISO27001에서 사용하면 안됀다고함(인증 안해줌)

* 전자서명이란?
- 생성 : 원문의 해시값에 송신자의 개인키로 서명을 하고 원문과 함꼐 보냄
- 검증 : 서명된 해시값을 송신자의 공개키로 복호화하고 원문의 해시값과 비교해서 일치하는지 확인
- 일치하면 무결성 검증, 부인봉쇄, 확인됨
- 무결성(내용변조되지 않았음), 인증(송신자에 대한 검증), 부인봉쇄(아니라고 하지 못함)

 


ex) 은행 이체 마지막 단계 "XX은행 YYY계좌로 얼마를 이체"하겠습니까? 공인인증서가 보여짐

 => 비밀번호 입력(개인키 사용:서명)


ex) 스마트폰 이체 : "XX은행 YYY계좌로 얼마를 이체"하겠습니까? 지문인식을 하면

 => 본인임이 확인 => 빼박

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

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

* 인증서는(Certificate)
- 형식 : X.509v3
- 인증서의 주요 내용 : 발급자, 주체, 주체의 공개키, 서명된 해시값 등
- 공개키가 올바른지 확인(주체의 것이 맞는지 검증)
- 방법은 전자서명과 비슷함, 원문(공개키)의 해시값을 구해서 송신자(CA)의 개인키로 서명
- 생성 : 원문(공개키)의 해시값을 구해서 송신자(CA)의 개인키로 서명
- 검증 : 송신자(CA)의 공개키로 서명된 해시값을 복호화한 후, 원문(공개키)의 해시값을 구해서 비교해봄

* PKI (공개키 기반 구조)
1) NPKI (National Public Key Infrastructure)
- PAA(정책기관) : 미래부
- Root CA : KISA
- CA(인증기관) : 금융결제원 , 정보인증 , 전자인증 , Koscom, 무역정보협회
- RA(등록기관) : 은행, 증권회사, 대행업체 등등

2) GPKI, MPKI,EPKI 등등