디지털 서명

From IT Wiki
Revision as of 23:24, 8 April 2023 by 에이매처 (talk | contribs) (새 문서: '''Digital Signature''' '''문서에 하는 인감 날인이나 사인에 해당하는 기능을 컴퓨터의 세계에서 실현하기 위한 기술''' == 기능 == * 사용자 인증 * 송신 부인 방지 * 수신 부인 방지 == 구성 요소 == * '''원본 문서(메시지)''' ** 디지털 서명을 통한 보호의 대상이 되는 문서(메시지)를 의미한다. * '''서명(암호문)''' ** 디지털 문서에 서명을 한 결과값을 의미한다. ** 개인...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Digital Signature

문서에 하는 인감 날인이나 사인에 해당하는 기능을 컴퓨터의 세계에서 실현하기 위한 기술

기능[edit | edit source]

  • 사용자 인증
  • 송신 부인 방지
  • 수신 부인 방지

구성 요소[edit | edit source]

  • 원본 문서(메시지)
    • 디지털 서명을 통한 보호의 대상이 되는 문서(메시지)를 의미한다.
  • 서명(암호문)
    • 디지털 문서에 서명을 한 결과값을 의미한다.
    • 개인키로 암호화 한 암호문이다.
    • 문서와 함께 보내진다.
  • 송신자(서명자)
    • 서명을 하는 자를 말한다. 서명을 수행한다.
  • 수신자(검증자)
    • 서명된 문서를 수신하는 자를 말한다. 서명을 통해 문서의 진위를 확인한다.
  • 공개키 쌍
    • 공개키 암호화를 사용한다.
    • 개인키는 송신자만 알고 있고, 공개키를 검증자에게 제공한다.
    • 이 공개키의 소유자가 송신자라는 사실은 기존에 확립되어 있어야 한다.

두가지 방법[edit | edit source]

메시지에 직접 서명하는 방법

  • 원본 메시지가 얼마나 큰 값(문서, 파일 등)이든 원본 메시지를 직접 암호화 하는 방식으로 서명한다.
  • 더 직관적인 방법이지만 서명과 검증에 모두 더 큰 부하가 생긴다.

메시지의 해시 값에 서명하는 방법

  • 원본 메시지의 해시값을 암호화하는 방식으로 서명한다.
  • 원본 메시지의 해싱 이라는 추가적인 절차가 생긴다.
  • 하지만 훨씬 더 가볍고 빠르게 수행 가능함에도 서명 효과는 동일하다.

절차[edit | edit source]

기본적인 암호화 활용 구조

700x700픽셀


메시지에 직접 서명하는 방법

700x700픽셀


메시지의 해시 값에 서명하는 방법 700x700픽셀

디지털 서명에 대한 의문과 답(FAQ)[edit | edit source]

  • 디지털 서명 검증을 위해 원본 메시지와 서명값이 같이 보내지고 있는데, 이렇게 하면 암호화를 했다고 해도 기밀성은 보장할 수 없게 되는 것이 아닌가?
    • 맞다. 다만, 디지털 서명은 기밀성을 지키기 위한 것은 아니다.
    • 만약 기밀성이 필요하다면 메시지를 그대로 보내는 것 이 아니고, 암호화를 별도로 행해서 보내야 된다.
  • 디지털 서명이라고 해도 단지 컴퓨터상의 데이터에 지나지 않으므로, 간단하게 복사본을 만들 수 있을 것 같은 느낌이 든다. 만약 같은 내용의 복사본을 간단히 만들 수 있다면 서명이라고 말할 수 없지 않을까?
    • 사실 서명이라고 해도 단지 컴퓨터상의 데이터에 지 나지 않는다.
    • 메시지의 마지막에 이름이 첨부되어 있는 경우도 있 고, 메시지와는 분리되어 서명이 별도의 파일로 되어 있는 경우도 있다.
    • 어느 경우라도 통상의 파일 복사처럼 같은 내용에 대 한 복사를 몇 개라도 간단히 만들 수 있다.
    • 서명은 그것이 원본이냐 사본이냐 하는 오리지널리티 의 진위가 중요한 것이 아니고, 특정 서명자와 특정 메 시지가 결부되어 있다는 사실이 중요한 것이다.
    • 아무리 많이 복사를 해도 「그 메시지에 누가 서명했 는가」하는 사실에는 조금도 변화가 없다. 복사는 할 수 있다. 그러나 그것에 의해 서명이 무의미해지는 것 은 아니다.
    • 이것은 서명된 계약서를 복사기로 복사하거나 스캔본을 만드는 것과 같다.
  • 디지털 서명이라고 해도 단지 데이터이므로 메시지와 서명 양쪽을 원하는 만큼 변경할 수 있을 것이다. 그렇다면 서명이라고는 말할 수 없는 것이 아닐까?
    • 확실히 서명한 후에 메시지와 서명의 내용을 수정할 수는 있다.
    • 그러나 수정해 버리면 서명의 검증에 실패하기 때문 에, 검증하는 사람은 수정이 되었다는 것을 검출할 수 있다.
    • 디지털 서명이 실현하고자 하는 것은 변경하지 못하도록 막는 방지가 아니라 문서에 변경 행위가 있었는지 아닌지를 검출하는 것이다.
  • 서명 대상의 메시지와 서명 양쪽을 수정해서 서명의 검증에 성공할 수 있도록 앞뒤를 잘 맞출 수 있지는 않을까?
    • 아니다. 이는 암호학의 원리와 암호 알고리즘의 안전성에 기반한다.
    • 서명 대상의 메시지가 1비트만 바뀌어도 서명값은 완전히 변한다.
    • 안전성이 검증된 암호화 알고리즘이라면 암호 키를 모르고 있는 상태에서 원하는 원본 메시지의 암호화 결과는 알 수 없다.
    • 다만 취약성이 밝혀진 암호화 알고리즘을 사용한 경우엔 이것이 가능해질 수도 있다. 디지털 서명은 아직까지 안전성이 보장된 암호화 알고리즘을 사용한 서명이었다는 전제 하에서 그 서명의 진위성이 보장된다.
  • 구체적인 누군가의 디지털 서명을 손에 넣었다면 그 서명 부분만 잘라내서 다른 메시지에 첨부할 수 있다 고 생각한다. 그렇다면 서명이 되는 것이 아닐까?
    • 서명 부분을 잘라낸다는 행위는 현실 세계의 종이로 된 계약서에서 서명을 베끼는 행위와 같은 공격으로, 실현 가능성이 있다.
    • 그러나 디지털 서명의 경우에는 메시지와 서명 사이에는 수 학적인 이론에 기초한 대응 관계가 있다. „ 메시지가 다르면 서명도 다르기 때문에 서명만 잘라내 서 재이용하는 것은 사실상 불가능하다.
  • 메시지 인증 코드로는 부인 방지를 할 수 없는데, 디지털 서명으로는 부인 방지를 할 수 있는 것은 왜인가?  
    • 부인 방지는 「키를 가지고 있는 것은 누구인가?」라 는 물음과 깊은 관계가 있다.
    • 메시지 인증 코드의 경우 MAC 값을 계산할 수 있는 키(공유 키)는 송신자와 수신자 양 쪽이 가지고 있었다. 그러므로 송신자와 수신자의 어느 쪽이 라도 MAC 값을 계산할 수 있었다. 「그 MAC 값을 계산한 것은 내가 아니라 수신자 쪽이다」라 고 주장하는 것이 가능했다.
    • 디지털 서명의 경우 ‡ 서명을 작성할 수 있는 키(개인 키)는 송신자만 가지고 있다. 서명을 작성할 수 있는 것은 송신자뿐 송신자는 「그 서명을 작성한 것은 내가 아니다」라고 주장 할 수가 없다.

관련 기출 문제[edit | edit source]