HeYStRanGeR
article thumbnail

 

(2022.04.09)

네보실 5주차 실습강의 정리


 

Key Distribution problem

 

Alice 와 Bob이 메시지를 주고 받는다고 하면, Alice가 자신의 메시지를 암호화 할때 사용했던 대칭키를 Bob에게 보내지 않으면 Bob은 Alice에게 받은 메시지를 복호화할 수 없다.

--> 대칭 암호를 사용하게 되면, 키 분배 문제가 발생한다. 

 

이에 대한 대표적인 해결방안은 아래와 같다.

  • PSK - pre shared key
  • KDC - key distribution center
  • DH - diffie-hellman
  • PKI - public key infrastructure

 

 

1. PSK - pre shared key

암호화에 필요한 대칭키를 사전에 미리 공유하는 방식이다.

--> 이때, 가장 중요한 것은 안전한 방법으로 키를 공유해야한다는 것이다.

 

2. KDC - key distribution center

신뢰할 수 있는 제 3자에게 키 분배를 맡기는 방식이다.

--> 이때, 제 3자는 모두가 신뢰할 수 있어야하며, 기존에 센터와 키를 공유하고 있어야한다.

 

 

 


 

key distribution problem - asymmetric key (public key)

 

답을 구하기 매우 어려운 문제를 NP 라고 한다. (Nondeterministic Polynomial time Problem)

- NP 문제 예시 : 외판원 문제, 클릭 문제, 배낭 문제

 

공개키 암호는 특정한 수학적 난제, NP 문제에 기반을 두고 설계된다.

--> 인수분해, 이산대수 가 주로 이용된다.

 

공개키 암호는 2개의 키를 사용하여 비대칭 키라고도 부르는데, 대칭키와는 다르게 키의 분배가 필요없다.

 

 

 

비밀키로 암호화한 것은 공개키로 복호화

공개키로 암호화한 것은 비밀키로 복호화

 

비밀키는 소유자가 비밀리에 가지고 있는 것이고, 공개키는 누구나 접근할 수 있다.

--> 인증 제공

 

사용하는 키의 길이에 비해 보장하는 보안성은 낮다.

128bit 보안 수준을 달성하려면 최소 4096bit가 필요하다.

--> 대칭키는 암호화보다는 교환, 전자서명을 위한 수단으로 활용된다.

 

 

 

 


 

DH - Diffie-Hellman

이산대수 문제의 어려움을 기반으로 한 키 합의 알고리즘 , 키 교환 알고리즘이다.

암호화되지 않은 통신으로 비밀키를 안전하게 공유할 수 있다.

but, 인증을 제공하지 못한다.

 

 

p가 300자리 이상 소수이고, a 와 b가 각각 100자리 이상의 정수이면, 공개된 정보로부터 비밀키를 알아내는 것은 불가능하다.

사용자 인증을 제공하지 않아서 중간자 공격이 가능하다.

 

 

--> 중간자 공격에 대한 방안 3가지

1. 교환하는 값을 대칭키로 암호화해서 보낸다. (교환하는 값: g^a mod p, g^b mod p)

2. 교환하는 값을 공개키로 암호화해서 보낸다.

3. 교환하는 값을 개인키로 서명한다.

 


 

RSA

인수분해 문제의 어려움에 기반한 최초의 공개키 암호화 알고리즘이다.

 

 

 

textbook RSA

암호화하고자하는 메시지를 그대로 평문으로 사용하는 단순한 RSA를 가리키는 용어

--> textbook RSA는 결정론적이다.

    -- 같은 평문을 두 번 암호화하면 같은 암호문이 두번 생성된다.

    -- 공격자는 두 RSA 암호문을 이용해서 새로운 유효한 암호문을 생성할 수 있다.

    ----> 이러한 취약점을 가소성(Malleability)이라고 하고, 이를 보완한 것이 RSA-OAEP이다.

 

이를 보완하는 2가지 방법

  1. padding을 이용하여 같은 평문이라도 다른 암호문이 나오도록하는 확률적인 성질을 갖게 한다.
  2. 공격자가 일방향함수의 역함수를 구하지 못해 평문을 복호화할 수 없도록 보장함으로써 암호문의 일부분을 복호화하거나 노출되는 것을 막는다.

 

 

RSA 암호 이용시 권고사항

  1. n은 적어도 2048 bit 가 되어야한다.
  2. 서로 다른 두 소수 p, q 는 적어도 1024 bit 가 되어야한다.
  3. 서로 다른 두 소수 p, q 가 너무 가까이 있지 않도록 한다.
  4. (p-1) 과 (q-1)은 적어도 하나의 큰 소인수를 가져야한다.
  5. n은 공통적으로 사용하지 않는다.
  6. 만약 개인키 d 가 노출되었을 경우, 수신자는 반드시 공개키 n과 e, 개인키 d 를 즉시 고쳐야한다.

 

RSA - digital signature

공개키 암호화에서 비밀키로 암호화한 것은 누구나 공개키로 복호화가 가능하다. 

-> alice가 비밀키로 암호화한 것은 오직 alice의 공개키로 복호화가 가능하기 때문에 alice는 자신이 암호화한 것을 부정할 수 없게 된다. (부인방지)

-> 공개키는 누구나 사용할 수 있기 때문에 모든 사람이 전자서명을 검증할 수 있다.

-> 전자서명은 결정론적이지만 안전하다. (전자서명은 인증을 제공하여 위조를 방지하기 위한 기술)

 


 

공개키 이용

1. 암호화

  - 송신자의 공개키로 메시지를 암호화 --> 보안성에 중점

  - 송신자의 개인키로 메시지를 암호화 --> 인증에 중점

2. 전자서명

3. 대칭키 교환

 

 

대칭키를 이용한 서명의 기능

  1. 송신자의 신원
  2. 메시지 무결성
  3. 부인봉쇄는 불가능함...

 

 

 

 

 

 

 

728x90
profile

HeYStRanGeR

@HeYStRanGeR

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!