[네트워크] 8-3. Digital Signiture

kkado·2023년 6월 13일
0

네트워크

목록 보기
45/49

⚠️ 들어가기 앞서
경북대학교 컴퓨터학부 COMP0414-001 컴퓨터망 과목을 공부하며 정리한 글입니다.


Digital Signiture?

디지털 서명(영어: digital signature)은 네트워크에서 송신자의 신원을 증명하는 방법으로, 송신자가 자신의 비밀키로 암호화한 메시지를 수신자가 송신자의 공용 키로 해독하는 과정이다. (위키백과)

실생활에서 우리는 어떤 사람 본인이 맞음을 검증하기 위해 서명을 하거나 날인을 찍는다.네트워크 상에서도 송신자의 신원을 보증하기 위해 송신자만이 가지고 있는 개인키로 암호화하여 데이터를 보낼 수 있다.

만약에 밥이 본인의 개인키를 이용해 암호화한 데이터를 앨리스에게 전달하면 이를 'message with signiture' 라고 하며, 밥의 공개키를 사용해 복호화를 진행할 수 있다.


hash function

긴 데이터를 암호화하는 과정이 오래 걸릴 수 있고, 또는 공개키를 사용해 암호화한 값은 길이가 길어서 계산하는 데 오래 걸릴 수가 있다. 이에 결과값으로 항상 고정된 (fixed-length) 값이 나오게 하여 계산에 용이하게 만든 hash function 이라는 것이 사용된다.

해시 함수 또는 해시 알고리즘 또는 해시함수알고리즘은 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수이다. 해시 함수에 의해 얻어지는 값은 해시 값, 해시 코드, 해시 체크섬 또는 간단하게 해시라고 한다. (위키백과)

해시 함수는 다음과 같은 특징을 가진다.

  • many-to-1 : 서로 다른 값이 같은 해시 값을 가질 수 있다.
  • fixed size message digest : 항상 고정된 길이의 해시를 배출한다.
  • 해시 값을 가지고 원본 값을 찾을 수 없다.

암호화 과정에는 해시 함수를 단독으로 사용하기보다는 암호키 사용 방식과 같이 사용하곤 한다.

밥이 어떤 메시지 m을 해시 함수를 이용해 H(m)이라는 값을 얻었고 이를 밥의 개인키로 암호화한 Kb(H(m)) 와 원본 데이터 m 을 앨리스에게 보낸다.

앨리스는 받은 원본 데이터 m에 해시 함수를 사용한 H(m)과, 암호화된 값을 밥의 공개키로 복호화한 결과값을 서로 비교한다.

해시 함수를 이용하는 알고리즘 중에는 128비트 해시 값을 만들어 내는 MD5 와 160비트 해시 값을 만들어 내는 SHA-1 이 있다.


Public key certification

Pizza plank!

악독한 트루디가 또다시 밥을 괴롭히려고 한다. 다음과 같은 절차를 거쳐 피자 가게에다 장난 전화를 한다.

  • 트루디는 다음과 같은 주문 메일을 피자가게에 보낸다.

안녕하세요. 저는 밥인데요, 페퍼로니 피자 4개 갖다주세요. 감사합니다.
-밥 드림-

  • 트루디는 본인이 가지고 있는 개인키를 가지고 암호화하여 주문을 넣는다.
  • 트루디는 피자가게에다가 본인의 공개키를 알려준다. 그런데 밥의 공개키라고 하고 알려준다.
  • 피자가게는 "밥"의 공개키를 받아서 주문을 검증한 결과 이상이 없다는 걸 알게 된다. 피자를 만들어서 밥에게 배달한다!

밥 : 😵‍💫 ???


Certification Authority (CA)

위와 같은 사례에서, 우리는 '검증된' 공개키의 필요성을 깨달았다. 우리는 공개키의 검증을 위해서 인증 기관의 도움을 받는다. 이 인증 기관은 신뢰성이 보장된 기관이다.

암호학에서 인증 기관(Certificate Authority, CA)은 다른 곳에서 사용하기 위한 디지털 인증서를 발급하는 하나의 단위이다. (위키백과)

기관은 한 사람의 개인정보와 그 사람의 공개키를 서로 바인딩하여 갖고 있는다. 그리고 이를 기반으로 인증서 (certificate) 를 만든다.

인증서란, 사용자의 개인 정보와 공개키를 CA의 개인키로 암호화한 것이다.
이는 "이것은 이 사용자의 공개키입니다." 라는 것을 CA가 보장한다는 뜻이다.

이제, 앨리스가 밥을 검증하고 싶어한다고 가정해보자. 그러면 앨리스는 "밥"에게 (밥이 아닐수도 있음, 밥을 사칭하고 있는 사람일 수도 있음) 인증서를 요구한다.
인증서를 받으면, CA에게 공개키를 요구하여 그 인증서를 복호화 해본다. 만약 복호화가 성공적이라면, 그 복호화의 결과로 나온 밥의 공개키는 CA(의 개인키)에 의해 암호화된 것이므로 믿을 수 있는 밥의 공개키이다.

이렇게 공개키를 신뢰성 있는 출처로부터 얻을 수 있으면 위의 피자 장난 전화 같은 일을 막을 수 있다. 트루디는 밥의 개인키를 모르고, 트루디 본인의 개인키로 암호화한 주문 내용은 피자 가게가 CA를 통해 얻은 '진짜 밥의 공개키'로 복호화가 불가능하기 때문이다. 따라서 장난 전화임이 들통나게 된다.


profile
베이비 게임 개발자

0개의 댓글