처음 만나는 클라우드 보안

암호화(encryption) 대칭키 공개키 그리고 해쉬함수 본문

정보보안

암호화(encryption) 대칭키 공개키 그리고 해쉬함수

영민하게 2022. 5. 2. 17:54
반응형

암호화의 효과

로그인정보 HTTP로 전송될때 => 암호화 과정을 거쳐 도청 및 Sniffing을 방지 할 수 있다.

 

관련 용어정리

  • 평문(Plaintext): 누구나 읽을 수 있는 글 (ex. P1, P2, P3.)
  • 암호문(Cypertext): 아무도 읽을 수 없는 글 (ex. C1, C2, C3)
  • 암호화(Encryption): 평문에서 암호문으로 변환하는 과정
  • 복호화(Decryption): 암호문에서 평문으로 변환하는 과정
  • 암호화키: 평문을 암호문으로 만드는 규칙
  • 복호화키: 암호문을 평문으로 만드는 규칙

1. 대칭키(Symmetric Key)

: 암호화 키와 복호화키가 서로 대칭(동일)한 경우를 말한다.

  = 비밀키(Secret Key): 사용자는 키를 비밀리에 보관한다

  = 단일키(Signle Key): 암호화키를 알면 대칭되는 복화화키도 알 수 있다

  = 세션키(Session Key): 한번의 세션에서만 사용한다.

일상속의 대칭키

: Wi-Fi, 각종 로그인, 주소표시줄의 자물쇠모양(https), 인터넷 상에서 일어나는 대부분의 접속에 대칭키(주로 AES)가 쓰인다.

대칭키의 특징

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

단점: 키 전달의 문제 발생, 키 개수의 문제

 

대칭키의 종류

DES: 최초의 대칭키, 크래킹 되면서 지금은 표준에서 퇴출되었다. 잠시동안 DES3가 임시로 사용되었음.

AES(Advanced Encryption Standard)

: 현재까지 사용되는 표준 대칭키로 벨기에의 Rijndael을 채택하여 사용한다. (AES 후보들로 RC6, Blowfish가 있었다.)

: SPN(Substitution, Permutation, Network) 치환과 전치를 반복한다.

SEED

: 국내 암호화 기술로서 seed.kisa.or,kr에 공개된 오픈 소스코드이다.

 

대칭키의 역사

  1. IBM의 Lucifer System을 Downgrade해서 DES(최초의 대칭키)로 NIST(국립표준원)에서 지정(1977년)
  2. DES는 데이터를 64bit로 잘라서 64bit짜리 키로 암호화를 하는 방식
  3. 64bit키중에서 56bit만 암호화키이고 8bit가 패리티비트(오류검사)로 되어 있음 => 8bit는 빈공간이나 다름 없다.
  4. 2000년쯤에 DES Cracking사건 이후로 표준에서 제외됨. 임시로 3DES를 사용
  5. 2001년 새로운 암호화 표준 공모 16개 업체가 지원(우리나라 업체: Future system)-->1라운드 대부분 탈락
  6. 2라운드에 올라간 암호화 알고리즘: RC6, Twofish, Rijnael 등 ---> Rijndael이 AES로 선정되어 지금까지 표준으로 남게 되었다.

어떤 카테고리?

ECB(Electronic code book)

I am hungry now =>
D6AA518633B59E0E0DD5AD22F2B3D14D
I am hungry now eat  =>
D6AA518633B59E0E0DD5AD22F2B3D14D47DBFF9DC10321E0

: 부분부분 복호화 가능

 

CBC(Cypher block chaining)

:앞의 암호문을 뒤의 평문하고 XOR연산을 한 다음, 암호화를 하는 방식, 연쇄효과로 부분 복호화 불가능

:대부분 CBC방식을 차용한다.

 

 

2. 공개키(Public Key)

: 누구나 개인키(Private Key)와 공개키(Public Key)를 가지며 이전에 상존하던 '키 전달의 문제'를 해결한 방식이다. 마치, 명함을 교환 하듯 서로의 공개키를 교환하고, 받은 공개키와 본인의 개인키를 이용해 서로의 세션키(대칭키)를 만들어 이를 암호화에 이용한다.

 

Diffie-Hellman방식

: 이산대수에 근거한 방식으로 최초의 공개키(Public Key)이다.

: 개인키와 상대방으로 부터 전달받은 공개키로 세션키를 생성한다.

: 키 전달 문제를 해결하였지만, MITM과 같은 취약점이 존재한다.

 

MITM (Man in the Middle Attack)

: Diffie-Hellman당사자 사이에 해커는 양쪽에 자신의 공개키를 준다.

: Alice와 Bob (당사자들)은 서로의 공개키인줄 알고 세션키를 생성한다.

: Alice가 암호화해서 보내도 해커가 복호화 가능, 내용 변조 후 Bob에게 전달 가능하다.

 

출처-https://www.cybervie.com/blog/man-in-the-middle-attacks-different-types-and-techniques/

 

RSA (Rivest, Shamir, Adleman)

: 현재 표준이 되는 공개키 방식으로 소인수분해에 근거한 방식의 암호화이다.

: 누구나 개인키와 공개키를 한쌍으로 가지며 쌍이되는 다른 키로만 복호화 된다.

 

기밀성과 인증

ex) Agent J와 Agent K의 상황예시

  1) 기밀성(Confidentiality)

J가 K에게 'M을 죽여라' 라는 메시지를 비밀리에 보낸다.

---> K는 메시지를 비밀리에 받아 공개키로 복호화 했지만, J의 메세지라는 증거가 없다.

 

2) 인증(Authentication)

J가 자신의 개인키를 사용해서 'M을 죽여라' 라는 메세지를 K에게 보낸다.

---> K는 J의공개키로 복호화한다. 하지만, J의 공개키는 누구나 사용할 수 있기 때문에 누설된다.

 

3) 기밀성+인증

J가 자신의 개인키를 사용해 암호화 한 뒤, K의 공개키로 다시 암호화해서 K에게 보낸다.

---> K는 우선 자신의 개인키로 복호화하고, M의 공개키로 복호화 하여 메시지를 본다.

 

참고) 공개키 방식은 연산의 복잡성으로 시간이 많이 소요됨. 따라서 데이터는 주로 대칭키로 암호화되고, 공개키는 대칭키를 전달하는 용도로 사용된다 .---> ex) TLS(Transport Layer Security) https를 사용할 때, 서버의 공개키를 받아오고, 대칭키를 공개키로 암호화 한다.

 

공동인증서 (구, 공인인증서)

: 사용자의 인증받은 개인키(Private Key)---> 서명용

 

TLS 암호 통신

웹서버(서버의 개인키와 서버의 공개키)에서 클라이언트와 암호 통신을 시도.

--> 서버의 공개키를 클라이언트에게 제공

--> 클라이언트는 세션키를 생성하여 서버의 공개키로 암호화 --> 전송

--> 서버는 자신의 개인키로 복호화하여 세션키를 꺼냄---> 클라이언트와 서버는 세션키를 공유하게 됨

=> 데이터를 세션키로 아호화해서 서로 주고 받을 수 있게됨

 

3. 해쉬 함수(Hash Function)

: 원문을 넣으면 해쉬 값이 출력된다. 일방향 함수로서 역연산은 불가하다.

: txt. avi. 원문의 길이와 관계없이 해쉬값은 항상 일정한 길이로 출력되며, 같은 값은 같은 해쉬값을 갖는다. (무결성)

 

ex) MD5(128bit), SHA-1(160bit), SHA-256(256bit) 아래 예시

MD5 방식: 16진수(2의 4승=4bit) 32자리이므로 128bit
SHA-1방식: 4bit 씩 40자리 160bit
SHA-256방식: 4bit씩 64자리 256bit / 현재 블록체인의 원리로 사용된다.

해쉬 함수의 충돌

MD5, SHA1 충돌쌍의 발견 확률은 매우 작지만, 그래도 발견되었다.

=> MD5와 SHA1을 사용해서 개인정보를 저장하면 ISO27001, ISMS-P인증에서 결함으로 판단함

=> 현재까지 SHA-256은 안전함(Bitcoin 및 공동인증서에서 사용중)

 

4. PKR(Piblic Key Infrastructure)

1) 최상위 인증기관(Root CA, PCA)

: 인증기관을 검증하고 인증기관을 인증하는 역할

 

2) 인증기관(Certificate Authority)

: 인증서를 발급하는 기관 (개인키 사용해서 서명하는데 1년에 약 50만원 정도)

 

3) 등록기관(RA: Registration Authority)

공개키의 신청자가 올바른지를 검증하는 역할 대행

 

4) 주체

: 인증서 발급을 신청한 기업 또는 단체

 

5) 인증서(Certificate)

: 공개키의 주인이 맞다는 것을 검증하는 공개키 인증기관(CA)가 보증한다.

 

참고) 한국전자인증(crosscert.com)

: NPKI(국내 인증)의 인증기관 역할, 글로벌 인증의 등록기관 역할(Digicert, Thawte, GeoTrust)들의 등록기관 역할

반응형
Comments