정보보안 전문가를 꿈꾸며 작성하는 블로그입니다.

SK 쉴더스 루키즈

[SK 쉴더스] 네트워크 보안 3일차 - 암호화 -- 추가예정

minjoo 2022. 9. 26. 16:59

1.1 암호화의 원리 (치환방식)

- 최초의 암호화 방식 : 치환(Caesar가 사용)

- 암호화 키 : shift+2, 복호화키 : shift-2 → 알파벳을 오른쪽으로 두 칸씩 이동

→ 암호화키와 복호화키가 서로 대칭을 이룸 → 대칭키(Symmetric Key)

1) 대칭키 방식 : 치환과 순열 → 현재 SPN 방식 사용(S:치환, P:순열, N:네트워크 → 치환과 순열의 반복)

- 치환(Substitution) : 문자를 다른 문자로 바꾸는 것

사례) ROT13 : 알파벳 26자를 반으로 나눠서 각각 대응하는 알파벳으로 치환

ex) HELLO → URYYB

- ROT13 방식의 단점 : 영어만 암호화 가능 → 해결 : ROT47

* ROT47

- 대/소문자, 숫자, 특수문자 94를 반으로 나누어서 섞어서 치환

- 순열 : 알파벳 순서를 바꾸는 것

ex) 암호화 키 : 12345 → 41523 : 알파벳을 5개씩 잘라서 암호화 키에 따라 순서를 변경

      복호화 키 : 41523 → 12345

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

- 대칭키는 다른 사람이 알면 안됨 → 비밀키(Secret Key)

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

2) Matrix 방식

- 암호화 : 가로로 쓰고 세로로 읽음

- 복호화 : 세로로 쓰고 가로로 읽음

 

* 용어 정리

- 평문 : 누구나 읽을 수 있음

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

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

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

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

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

 

1.2 암호화의 역사

1) 스키테일

2) 시저사이퍼 - 치환방식

3) 현대암호화(1800)

4) 전신기 활용(1854) - 신호를 멀리 보냄

5) 기계를 이용한 암호화(1918) - ex) 모스부호

6) 패스워드의 도입(1960s)

7) IBM 컴퓨터 암호화(1970s) - 금융권에서 사용

8) 정보보호법(1990s) - 오남용시 처벌

9) 미공군기지 해킹(1997)

10) DES → AES(2001)

 

2.1 대칭키

- 암호화키와 복호화키가 대칭을 이룸

- 평문 --대칭키--> 암호문 --대칭키--> 평문

- 문제점 : 대칭키를 비밀리에 상대방에게 전달할 방법이 없음(키 전달 문제)

- 대칭키 = 비밀키 = 단일키 = 세션키

- 종류 : DES, 3DES, AES(현재 가장 많이 사용), SEED, HIGHT, LEA, ARIA, RC6, Blowfish 등

- 장점 : 암/복호화 속도가 빠름 → 데이터 암호화에 사용 ex) 로그인시 ID/PW 암호화

- 단점 : 키 전달 문제 - 안전학게 전달이 어려움, 키 개수 문제(키는 n(n-1)/2 개 필요) - 너무 많은 키가 필요

 

2.2 대칭키 종류

1) DES

- 최초의 표준 대칭키, NIST(미국표준기관)에서 표준으로 지정

- 2000년, 크래킹됨 → 표준에서 제외

- 블록 암호화 방식 : 데이터를 64bit(블록)씩 잘라서 암호화, 키의 길이도 64bit

- 실제 암호화키는 56bit, 나머지 8bit는 검증키(패리티 비트)

2) 3DES

- DES를 3번 반복 연산

3) AES

- 현재 표준 대칭키

- 벨기에의 Rijndael(리인델)이 AES로 채택 - 안정성 및 속도(DES 표준 제외 후 3DES를 임시 표준으로 사용하면서 새로운 대칭키 표준 공모)

- SPN 방식 사용(치환과 순열의 반복)

- 128bit, 192bit, 256bit 중 선택(128bit, 192bit는 최근 사용x)

* 대칭키(AES) 활용 사례

- ID/PW로 로그인하는 대부분의 경우

- Wi-Fi로 이용하는 데이터(트래픽) 암호화

4) SEED

- 금융중앙망에서 사용(우리나라에서 만든 대칭키)

- http://seed.kisa.or.kr/ - 소스코드 공개(백도어가 없음을 보여줌)

5) HIGHT/ARIA/LEA : 경량 대칭키(우리나라에서 만듦)

* 대칭키는 만드는 방식이 어렵지 않음 - SPN 방식, Feistel 방식(DES)등을 사용

6) RC 시리즈

- RC4 : 무선 공유기에서 많이 사용, 키를 크래킹하는 방식이 알려져서 최근에는 사용X

- RC6 : RC4 개량, AES 최종라운드에서 탈락

7) Fish 시리즈

- Bruce Schneier(브루스 슈나이어)라는 유명 암호학자가 만듦

- TwoFish : AES 최종라운드에서 탈락

- BlowFish : 안전하기로 유명(해커들이 악성코드 사용에 선호)

 

3.1 공개키

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

- 누구나 개인키과 공개키 쌍을 가짐(개인키로 공개키 생성)

- 개인키(Private Key) : 본인만 안전하게 보관하고 사용

- 공개키(Public Key) : 거래 상대에게 제공(누구나 알 수 있음) 

 

3.2 공개키 실습 - ubuntu

- (ssh 설치) sudo apt update후, sudo apt install ssh 

- /etc/ssh 폴더 내용 확인

- ssh_host_ecdsa_key : 개인키

- ssh_host_ecdsa_key.pub : 공개키

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

 

*개인키, 공개키의 특징

- 공개키를 상대방에게 제공(누구든지 볼 수 있음)

- 자신의 개인키와 상대방의 공개키를 연산해서 생성된 키는 양쪽이 일치 → 대칭키로 사용(교환 필요 x)

→ 대칭키 키 교환의 문제 해결

- ID/PW를 모두 대칭키로 암호화해서 상대방에게 제공, 상대는 같은 대칭키로 복호화

 

3.3 RSA

- 소인수분해의 어려움에 근거하여 등장

- 양방향 암호화 가능 : 개인키로 암호화하면 공개키로 복호화, 공개키로 암호화하면 개인키로 복호화

- 특허 만료로 무료 사용 가능
- 기밀성 : 송신자가 수신자의 공개키로 암호화해서 전송 → 수신자는 자신의 개인키로 복호화(다른 사람은 복호화 불가)

- 인증 : 송신자가 자신의 개인키로 암호화해서 전송 → 수신자는 송신자의 공개키로 복호화(보낸 사람 인증 가능)

 

3.4 SSL/TLS

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

- Netscape에서 SSL(Secure Socket Layer)을 만듦 → 웹 암호화

- SSL의 취약점이 계속 발견되어 이를 해결하기 위해 SSL3.0을 업그레이드하여 표준화 → TLS(Transport Layter Security)

- 지금은 SSL대신 TLS를 사용하지만 관용적으로 SSL이라고 표기

- 최근 TLS는 1.3버전 사용

 

4. Hash 함수

- 원문을 해시함수에 넣으면 해쉬값이 출력

* 해시함수의 특징

1) 고정길이 출력 : 원문의 길이와 관계없이 출력되는 해시값의 길이는 고정

2) 일방향 함수 : 해시함수와 해시값을 알아도 원문을 알아내는것은 불가능

3) 충돌방지 : 원문은 다른데 해시값이 같을 확률은 0에 수렴함

- 원문이 조금이라도 달라지면 해시값이 달라짐 → 원문 변조 여부 확인 가능(무결성 검증)

→ Digital Sign(디지털 서명) : 1bit라도 달라지면 전혀 다른 해시값이 나오므로 공개키의 주인 검증 가능

 

4.1 전자서명

- 원문의 해시값에 송신자의 개인키로 서명하고 원문과 함께 전송

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

→ 일치하면 무결성(내용이 변조되지 않음) 검증, 인증(송신자에 대한 검증), 부인봉쇄 확인

 

4.2 인증서(Certificate)

- 형식 : X.509v3

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

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

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

- 검증 : CA의 공개키로 서명된 해시값을 복호화 후 원문의 해시값과 비교

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

 

* PKI 기관

- RA(Registration Authority, 등록기관) : 인증서 신청 업체를 검증하고 등록을 대행

- CA(Cartificate Authority, 인증기관) : 인증서를 발행

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

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

 

* 우리나라 공인인증 체계

1) NPKI(National Public Key Infrastructure)

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

- Root CA : KISA

- CA(인증기관) : 금융결제원, 정보인증, 전자인증, Koscom, 무역정보협회

- RA(등록기관) : 은행, 증권회사, 대행업체 등

2) GPKI : 행자부

3) MPKI : 국방부

4) EPKI : 교육부

 

중요 키워드 : 대칭키, 공개키, 해시함수, 전자서명, 인증서, SSL/TLS