티스토리 뷰

우리가 이때까지 다루었던 암호에서 당연하다고 생각했던 가정이 몇가지 있었습니다.

앞서 설명한 '암호를 송수신 하는 사람이 제3자가 들을 수 없는 장소에서 만나거나 엿들을 수 없는 통신방법을 통해서 사용 할 키를 약속했다는 것'이 첫번째이고,

두 번째는 메세지를 송신자의 신분입니다. 

'메세지에는 보낸 사람이 Alice라고 되어있는데 정말 Alice가 보낸게 맞는가?'

즉, 인증(authentication)에 대한 문제입니다.

 

이때 필요한 것이 전자서명(digital signature)입니다.

전자서명의 정의를 보면 '전자문서의 위조 및 변조를 방지하기 위해 작성자를 확인 할 수 있도록 해당문서에 삽입하는 암호화 된 정보형태의 서명'이라고 되어있습니다.

다시 말하면 전자서명은 아래와 같은 특징을 가지고 있어야 합니다.

  • 위조불가 (타인이 서명 불가)
  • 인증 (본인이 서명을 했음이 분명)
  • 재사용불가 (서명 부분을 복사해 다른 곳에 이용이 불가능 해야함)
  • 변경불가 
  • 부인불가 (자신이 서명한 것을 후에 부인 할 수 없어야함)

Alice가 Bob에게 서명된 메세지를 보내고 싶다고 가정해봅시다.

Alice는 메세지에 복호화키를 적용합니다.

이때 복호화키는 개인키이기 때문에 Alice이외에는 복호화를 할 수 없습니다.

Alice는 자신의 암호화키는 공개합니다.

복호화 된 메세지를 받은 Bob은 공개되어있는 Alice의 암호화키로 복호화를 상쇄시킵니다.

만약 상쇄된 메세지가 읽을 수 있는 메세지라면 메세지를 보낸 사람이 Alice라는 것을 확신할 수 있을 것입니다.

복호화는 Alie만이 할 수 있으므로 Bob은 제3자에게도 이를 Alice가 보낸 것임을 확실히 알릴 수 있을 것입니다.

 

전자서명에 전용된 2가지 암호체계를 살펴봅시다.먼저 RSA 암호입니다.서명된 메세지를 보낼 Alice는 소수 p,q를 선택하고 n(=pq)은 공개합니다.그리고 Alice는 n에 대한 암호화 키 v를 선택합니다. 

이때 암호화 키를 인증키(verification key)라는 이름으로 부르기로 합시다.

Alice는 n과 암호화 키 v를 공개하고 서명 S를 Bob에게 보냅니다.

 서명을 받은 Bob은 공개 된 인증키 v를 이용해 S를 복구합니다.

서명 S를 읽을 수 있는 M으로 복구한 Bob은 서명을 보낸 사람이 인증키v를 공개한 Alice임을 확신 할 수 있을 것입니다.

 

두번째 암호체계는 전 장에서 살펴보았던 ElGamal 암호체계 입니다.

2020/12/04 - [암호론] - [암호론]13.ElGamal 암호화(ElGamal encryption), three-pass protocol

 

[암호론]13.ElGamal 암호화(ElGamal encryption), three-pass protocol

우리는 앞서 사전에 서로 합의하거나 만나지 않고 메세지를 주고 받는 방법을 크게 2가지 살펴보았습니다. 첫째는 디피-헬만 키 합의로 대칭키 암호에 쓸 비밀키를 합의하는 방식이었습니다. 둘

anuirin.tistory.com

서명을 보낼 Alice는 소수 p와 생성원 g를 선택합니다.

자신만의 비밀키 a를 선택합니다.

a를 이용해 Ag^a (mod p)를 만듭니다.

그리고 (p,g,A)를 공개키로 공개합니다.

다음으로 무작위로 r을 선택합니다.

이와같은 R,M을 계산한 후, Bob에게 (R,S,M)을 보냅니다.

(R,S,M)을 받은 Bob은 공개키(p,g,A)을 이용해 서명의 유효성을 확인합니다.

위의 식이 성립한다면 Bob이 받은 서명은 Alice가 보낸 유효한 서명일 것입니다.

Alice가 보낸 S가 맞다면 이 같은 식을 만족시키기 때문입니다.

 

두가지 암호체계를 이용한 전자서명에 대해 살펴보았습니다.

틀렸거나 부족한 부분이 있으면 알려주시면 감사하겠습니다.

벌써 2020년이 거의 끝나가고 있네요.

추운날씨 모두 감기와 코로나 조심하세요.

하루 빨리 코로나 전과 같은 일상으로 돌아가는 날이 왔으면 좋겠네요.

감사합니다.

댓글