Crypto (3)

임정환·2023년 6월 7일
0

비대칭 키 암호화

개인키로 암호화한 평문은 공개키로 복호화 가능
공개키로 암호화한 평문은 개인키로 복호화 가능
위의 성질을 이용하여, 개인키로 암호화한 평문은 '디지털 서명' 으로서의 가치가 존재하고 공개키로 암호화한 평문은 '특정 주체만 볼수 있는 암호화'로서의 가치가 존재한다.

RSA 암호화

인수 분해의 어려움에 기반한 비대칭 키 생성 알고리즘.

P와 Q는 충분히 큰 소수
N = PQ 
e 는 (p-1)(q-1) 과 서로소인 값
d 는 ed%(p-1)(q-1) = 1 을 만족하는 값 
C = M^e mod N 
M = C^d mod N 

만일 공격자가 N = pq를 만족하게 인수분해 가능하다면 공격 가능. 하지만, 막대한 연산이 요구되므로 뚫기 어렵다.

Diffie-Hellman 키 교환 알고리즘

만일 통신 과정이 감청되고 있단는 가정하에, Alice와 Bob은 어떻게 대칭 key를 공유할 수 있을까

P,Q는 공개되어 있다고 가정
Alice의 개인키는 x
Bob의 개인키는 y 
Alice는 Bob에게 P^x mod Q 를 전송
Bob은 Alice에게 P^y mod Q 를 전송
Alice와 Bob이 각자 수신한 값에 자신의 개인키를 제곱할경우 대칭키가 생성됨

중간자 Trudy는 P^x mod Q 와 P^y mod Q 를 감청 가능하지만, 그 이후로 어떠한 정보도 알 수 없음

  • Meet in Middle in DHKE
    디피-헬먼 키 교환의 경우 중간자 공격에 취약하다.

    위와 같이 alice와 bob의 중간에서 alice와 bob의 대칭키를 생성가능하다.
    사실 상호인증이 필요한 이유를 여실히 보여준다.
    메세지를 개인키나 공개키로 암호화하여 MIM 공격을 방지 가능하다

Elgamal Digital Signature 알고리즘

원문 메세지의 작성자 검증을 위한 디지털 서명 알고리즘

g와 x와 p가 주어질 경우 Y를 구할 수 있지만
Y와 g와 p가 주어질 경우 x를 구하기 어려움을 이용한 디지털 서명알고리즘

타원 곡선 암호화

RSA의 개량 버전이다. 적은 bit로도 RSA 보다 향상된 보안성을 자랑한다.
특수하게 정의된, 타원곡선상에서의 암호화 알고리즘을 통해 비대칭 키를 생성한다.

점 p1 + p2 의 정의는 두 점을 잇는 직선이 처음 그래프와 만나는 교점을 x축 반전시킨 곳이 p3이다. 복잡한 수식은 black-box로 놔두고 핵심은
A = xG -> 즉, 원점 x로부터 G 번 곱하여 A를 생성하고 A는 public, x는 private 이다. A를 통해서 어떠한 숫자를 몇 번 곱했는 지 유추하기 어려운 점을 이용한 암호화이다.

타원 곡선 Diffie - Hellman 키 교환 알고리즘

위의 타원 곡선을 이용한, 개량된 디피-헬먼 키 교환 알고리즘 이다.

	public 좌표 (2,5)가 존재한다고 가정하자.
    alice의 개인키는 4
    bob의 개인키는 7 
    alice는 bob에게 4(2,5)를 전달 
    bob은 alice에게 7(2,5)를 전달
    각자 수신한 값에, 자신의 개인키를 곱해줄 경우 대칭 키가 생성된다

공개 키 암호화의 사용법

여러 사용법이 있겠지만

  • 부인 방지
    어떠한 메세지에 디지털 서명 (본인의 개인키)을 할경우 자신이 작성하지 않았다고 발뺌이 불가능함

프로토콜의 중요성


위의 사례에서, bob은 자신의 개인키로 alice가 서명한 메세지를 얻을 수 있음.
이때, bob이 의도적으로 charlie의 공개키로 암호화하여 charlie에게 전달할 경우
charlie는 alice가 자신에게 송신하였다는 착각이 가능함

이번 사례의 경우, 메세지를 bob의 공개키로 암호화하고 alice의 개인키로 서명하였다. 이 경우, 찰리가 쉽게 alice의 서명을 복호화하고 자신의 개인키로 서명하여서 자신이 작성했다고 bob을 기만할 수 있다.
위의 사례들에서 볼 수 있듯이, 프로토콜의 미묘함으로 인해 여러 기만이 가능하므로 protocol을 안전하게 설정하다는 것이 중요함을 알 수 있음

profile
CS 박제

0개의 댓글

관련 채용 정보