일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Coroutines
- 계측
- Flutter
- 테스트
- appbar
- data
- android
- binding
- DART
- LifeCycle
- textfield
- drift
- 앱
- Button
- 안드로이드
- livedata
- Navigation
- scroll
- Kotlin
- ScrollView
- viewmodel
- Compose
- activity
- intent
- textview
- tabbar
- Dialog
- 앱바
- CustomScrollView
- TEST
- Today
- Total
Study Record
[암호] 디지털 서명 본문
※ 디지털 서명 예시
주민등록등본 => 인터넷에서 발급(인증서)
앱(코로나 앱) => 인터넷에서 확인(인증서)
1. 메시지 인증과 디지털 서명
디지털 서명도 메시지 인증과 마찬가지로 상대편에 대한 검증을 수행한다.
메시지 인증은 같은 키를 서로 나눠가진 상태로 메시지 인증을 하기 때문에 중간에 해커가 키를 탈취한 상태면 거짓행세를 할 수 있고 부인 방지에 대한 것은 제공해주지 못하기 때문에 주로 상대방에 대한 인증으로 디지털 서명을 사용한다.
2. 디지털 서명 방법 - 공개키 암호
- 공개키 암호의 private key를 사용해서 사인하고 상대편은 그 사인값을 public key로 검증한다.
- 공개키 암호에서 private key 는 오직 만든 사람만이 알 수 있다.(public key로는 private key를 만들 수 없다.) 따라서 private key 를 이용해 사인한다면 그 사인값은 오직 그 사람만이 만들 수 있는 사인값인 것이다.
- 주로 메시지를 해시함수와 같이 사용해서 사인값을 만든다. 해시함수는 메시지의 길이를 줄이기 위해 사용된다.
4. 공개키 암호에서 디지털 서명과 메시지 암/복호화의 차이점
공개키 서명 -> 암호화(private key) -> 복호화(public key)
공개키 암호 -> 암호화(public key) -> 복호화(private key)
5-. 디지털 서명이 제공하는 기능
- 위조 불가(Unforgeable) : 서명자만이 서명문을 생성 가능
- 서명자 인증(Authentic) : 서명문의 서명자를 확인 가능
- 재사용 불가(Not Reusable) : 서명문의 서명은 다른 문서의 서명으로 사용 불가능
- 변경 불가(Unalterable) : 서명된 문서의 내용 변경 불가능
- 부인 불가(Nonrepudiation) : 서명자는 후에 서명한 사실을 부인 불가능
6. 디지털 서명으로 해결할 수 없는 문제
디지털 서명의 검증에 필요한 public ky 는 정말 내가 검증하고자한 사용자의 것이 맞을까?
이러한 문제점을 해결하기 위해 '인증서' 라는 개념이 나왔다.
☞ 인증서
바른 공개 키를 입수하기 위해 고안된 것이 공개 키 기반 구조(Public Key Infrastructure)
공개 키 인증서는 공개 키의 소유권을 증명하는 데 사용되는 전자 문서이다. 인증서에는 키에 대한 정보, 소유자의 신원에 대한 정보, 인증서의 내용을 확인한 발급자의 디지털 서명이 포함되어 있다. - 위키백과
7. 디지털 서명 활용
7-1. 보안 공지 - 클리어 서명(clearsign)
클리어 서명(clearsign) : 메시지를 암호화하지 않고 서명만 한 것이다.
ex) KISA 인터넷보호나라&KrCERT(https://www.krcert.or.kr/data/secNoticeList.do)
7-2. 소프트웨어 다운로드
소프트웨어의 작성자가 소프트웨어에 디지털 서명을 작성하고, 다운로드한 후에 서명을 검증하면 적극적 공격자에 의한 내용 조작을 검출하는 것이 가능하다.
ex) YUM Repository의 GPG 확인
7-3. 공개 키 인증서
공개 키 인증서는 공개 키의 소유권을 증명하는 데 사용되는 전자 문서이다. 인증서에는 키에 대한 정보, 소유자의 신원에 대한 정보, 인증서의 내용을 확인한 발급자의 디지털 서명이 포함되어 있다. - 위키백과
7-4. SSL/TLS
SSL/TLS에서는 서버가 올바른 것이라는 것을 인증하기 위해서 서버 인증서를 이용한다.
서버 인증서는 서버의 공개키에 디지털 서명을 한 것이다.
8. 디지털 서명 알고리즘
- ElGamal 방식 : 이산대수
- DSA(Digital Signature Algorithm) : NIST(National Institute of Standards and Technology)가 1991년에 제정한 디지털 서명 규격(DSS)으로 Schnorr의 알고리즘과 ElGamal 방식의 변종으로 디지털 서명에만 이용한다.
- Rabin 방식 : 평방근을 구하는 것이 곤란
- Schnorr : 1989년 Schnorr가 개인식별방식과 함께 제안
- GQ : 1998년 Guillou 와 Quisquater가 제안
- SIGN : 1991년 후지오까, 오까모도, 미야구찌가 제안
- Fiat Shamir : Fiat, Shamir, 1987
- KCDSA : 1999, TTA표준
- ECDSA : 2000, DSA의 변형, 미국 NIST 전자서명 표준
- EC-KCDSA : 2001, KC-DSA의 변형, TTA표준
'암호' 카테고리의 다른 글
[암호] GPG CMD (0) | 2021.12.13 |
---|---|
[암호] HTTPS 패킷 분석 - 복호화 작업 (0) | 2021.12.13 |
[암호] Window에서 private key를 가지고 리눅스 서버 접속 - putty (0) | 2021.12.10 |
[암호] 메시지 인증 코드(MAC) (0) | 2021.12.10 |
[암호] Window 사용자 암호 크랙 - chntpw CMD (0) | 2021.12.10 |