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