디지털 서명의 필요성
- MAC을 이용한 메세지 인증의 한계
- 제 3자에게 증명하기
- 부인 방지 (Von-repudiation)이 불가능
- 위의 문제가 발생하는 이유는 MAC이 대칭키 방식이기 때문이다.
- MAC을 위해 사용되는 대칭키는 Alice와 Bob만이 공유하고 있고, 그 키를 갖고 있어야 증명과 검증이 가능하다.
- 거꾸로 생각하면 그 키를 갖고 있지 않으면 검증이 불가능한 상황
- 따라서 메세지 작성만이 서명하고, 누구나 검증할 수 있는 새로운 메세지 인증 시스템이 필요하다.
- 공개키 암호화 방식은 누구나 암호화할 수 있고, 수신자만이 복호화 할 수 있는데 이것을 역이용하여 디지털 서명을 설계
- 개인키로 나만 무결성을 증명 → 공개키로 다들 검증 가능 = 공개키 암호화 방식 사용
서명키 | 디지털 서명 |
Handwritten Signature | Digital Signature |
서명을 원본 문서로부터 분리할 수 없음 | 서명을 원본 문서로부터 분리가 가능함 |
서명 복제가 거의 불가능 | 서명 복사 가능 |
기존의 다른 서명과 비교 | 미리 정해진 알고리즘으로 검증 |
디지털 서명과 공개키 암호의 비교
개인키(비밀키) | 공개키 | |
공개키 암호 | 수신자가 복호화에 사용 | 송신자들이 암호화에 사용 |
디지털 서명 | 서명자가 서명 작성에 사용 | |
→ 증명에 사용 | 검증자들이 서명 검증에 사용 | |
키는 누가 갖는가? | 개인이 갖는다. | 필요한 사람은 아무나 가지고 있어도 된다. |
디지털 서명의 구조
- 공인인증기관이 개입하게 되면
- 내가 메세지를 보낼 때 공개키와 공개키로 서명한 서명을 같이 보낸다.
- 공인인증기관이 공개키를 해시함수에 넣어본다.
- 공인인증기관이 나의 서명을 공인인증기관의 공개키로 복호화한다.
디지털 서명 방법
- 메세지의 해시값에 서명하는 방법
- 주로 사용
- 메세지를 해시함수에 넣은 후, 그 해시값을 비밀키로 암호화한다.
- 위 방법을 사용하는 이유
- 공개키 암호화 방식을 사용하기 때문에 메세지를 암호화하는 것보다 크기가 매우 작은 해시값을 암호화하는 것이 훨씬 효율적이기 때문이다.
- 전송하는 메세지의 크기와 관련하여 메세지 자체를 비밀키로 암호화하면 그 결괏값의 크기가 메세지와 거의 비슷하여 메세지와 서명을 보내기 위하여 원래 메세지 크기의 두 배만큼의 크기를 보내야 한다. 하지만, 해시값을 암호화하여 보내면 매우 작은 값만 원래 메세지와 같이 보내면 되기 때문에 전송량이 크게 줄어든다.
- 작아서 더 효율적이라서
- s가 원본 msg 사이즈와 별로 차이가 안나서
디지털 서명과 관련된 이슈
- 기밀성 관련 이슈
- 디지털 서명은 기밀성과 상관없기 때문에, 기밀성을 위해서는 추가로 암호화 해주어야 한다.
- 서명을 다른 사람이 복사하여 재사용할 수 있는지 여부
- 서명을 다른 문서에 재사용하면, 수신자가 검증하는 데에 실패하기 때문에 서명 재사용은 불가능 (가능은 한데 들통이 난다)
- 재전송 공격에 취약하다. : M || $s_A$를 그대로 다시 보내면 된다.
- 부인 방지 원리
- 메세지에 서명을 할 수 있는 사람은 해당 비밀키를 가진 송신자 뿐이다. 또한, 공개키만 갖고 있으면 누구나 그 송신자가 보냈다는 것을 확인할 수 있다. 따라서 메세지와 서명을 함께 보내면 메세지를 보내지 않았다고 부인하는 것이 불가능해진다.
- 종이서명 대체 여부
- 1999년에 전자서명법이 제정되었으며, 손으로 종이에 서명한 것과 같이 취급하기 위하여(법적으로 인정) 등장했다.
디지털 서명의 사용 예시
- 보안 공지
- Ex. 경고 msg
- 소프트웨어
- 중요도 : 기밀성 < 무결성
- SW가 많이 사용되면 공격자는 악성코드를 심고 싶어 하다. → SW가 진짠지 확인이 필요하다.
- SSL/TLS
- 웬만한 보안 통신 (msg authentication or 디지털 서명 사용)
- 공개키 인증서 = 공인인증서
- 내 공개키를 인증하는 것 + 진짜 너 것 맞아?(제3의 공인인증기관이 확인 = 공개키 인증서 : 나의 공개키, 나의 공개키의 서명 포함, 여기서 서명을 제3의 공인인증기관이 한 것)
- 로그인에만 사용되는 것도 아니다.
Digital Signature Algorithm = DSA
- RSA보다 안전하다.
- NIST에서 채택한 표준 디지털 서명 알고리즘
- 이산 로그 문제를 푸는 것이 어렵다는 것을 기반으로 한다.
- g^x mod p = g 에서 x 구하기가 어렵다.
- 난수를 사용하기 때문에, 같은 사용자가 같은 메세지에 서명하더라도 다른 서명값이 나올 수 있다.
디지털 서명에 대한 공격
- 중간자 공격 (Man in the Middle)
- 중간의 공격자가 본인이 Alice인 척 한다.
- Alice의 공개키가 바뀌었다고($pk_D$) Bob에게 거짓말 한다.
- Alice의 메세지를 받아 공격자의 비밀키로 서명하여 Alice인 척 Bob에게 보낸다.
- 문제점 : $pk_D$가 Alice의 것이 맞는지 몰라서 발생하는 문제이다.
- 수신자가 송신자 공개키를 정확히 알 수 없기 때문에 발생할 수 있다.
- 이를 위하여 송신자의 공개키를 믿을 수 있는 제3자(공인인증기관)가 인증해주는 기법이 사용된다.
- 중간의 공격자가 본인이 Alice인 척 한다.
- 잠재적 위조 (RSA 한정)
- 해시함수를 안쓰는 경우
- 어떤 무작위 비트열 S에 대하여, 이를 공개키로 RSA 암호화한 것을 M이라고 하자.
- M을 비밀키로 암호화하면 S이다. = 그러면 M을 비밀키로 RSA S가 나오게 된다.
- 만일 M에 의미 있는 내용이 있고, 공격자가 M || S 를 키의 주인이 보낸 것처럼 한다면 수신자들이 믿을 수 밖에 없다.
- 이를 방지하기 위해 디지털 서명을 할 때 메세지 그 자체가 아닌 해시값을 서명하는 방식을 사용한다. = M도 해시함수에 넣어 서명으로 쓰자.
'Computer Science > Network Security' 카테고리의 다른 글
[CS][알기 쉬운 정보보호개론 3판] Chapter12. Key (1) | 2023.12.06 |
---|---|
[CS][알기 쉬운 정보보호개론 3판] Chapter11. 인증서 (0) | 2023.12.06 |
[CS][알기 쉬운 정보보호개론 3판] Chapter09. 메세지 인증 코드 (MAC) (0) | 2023.12.06 |
[CS][알기 쉬운 정보보호개론 3판] Chapter08. 일방향 해시함수 (0) | 2023.12.06 |
[CS][알기 쉬운 정보보호개론 3판] Chapter07. 하이브리드 암호 시스템 (1) | 2023.10.17 |