Part 3. 공개키 암호화
Chapter 9. 공개키의 탄생
- 공개된 라인을 통한 키 교환
-
비밀키 배달 문제
- 비밀키/시리얼 번호 쌍 데이터베이스 만들기
- 암호화된 비밀키/시리얼 번호 쌍 데이터베이스 만들기
암호시스템의 분류
암호시스템
-
공개키 암호 시스템
-
인수분해 문제(Integer Factorization Problems; IFP)
- RSA
- Rabin
- Goldwasser-Micali
-
이산대수 문제(Discrete Logarithm Problems; DLP)
- DH(Diffie-Hellman)
-
ECC
- ECDLP(DLP over EC group)에 기반
- DSS
-
타원곡선 이산대수문제(Elliptic Curve Discrete Logarithm Problem; ECDLP)
- Elliptic Curve ElGamal(Elliptic Curve Diffie Hellman)
-
-
대칭키 암호 시스템
- DES
- IDEA
- RC5
- 기타 등등...
공개키 암호
- Diffie-Hellman: 1976, New Directions in Cryptography
- Rivest, Shamir, Adleman: RSA
- ElGamal, Rabin algorithm: 암호화, 전자서명
- 실제로는 혼합형(hybrid) 암호시스템 사용
Diffie-Hellman 키 교환법
-
새로운 해결책 : Diffie-Hellman 키 교환법
- 해커가 비밀키를 알기 위해 더 많은 시간이 걸리도록 수학을 기반으로 만듬
- 처음 개발된 이 공개키 암호 시스템(DH)은 SSL, IPSec에서 사용
- 공개된 라인에서도 비밀키를 교환할 수 있게 됨
-
교환 방법
-
예
DH 방법의 문제점
- 인증(Authentication) 기능이 불가능
-
비밀키 교환을 하는데 있어서 불편
- RSA 방법이 인증 문제, 키 교환 문제 모두 해결
Chapter 10. 공개키를 사용하면서 얻는 기밀성
-
기밀성 보장(Confidentiality)
- 공개키로 암호화된 메시지는 공개키에 관계된 개인키로만 복호화
- 해커는 공개키로 복호화하는 것이 불가능하며, 개인키를 알아내기도 어렵다.
공개키 분배
- 공개키가 알려지더라도 상관없게 설계됨(오히려 적극적으로 알림)
- 공개키 분배가 비밀키보다 쉽다.(전자게시판 등에 광고)
양방향 기밀성 유지
- 메시지를 공개키로 암호화
- 공개키로 암호화된 메시지는 개인키로만 복호화
Chapter 11. 공개키를 만드는 수학적 트릭
-
모듈라 인버스
- 곱셈에 대한 인버스: 인버스 관계가 있는 두 수를 곱했을 때 1이 되는 경우
- 예) 8 과 1/8
모듈라 수학(Modular Math)
- 대부분의 공개키 암호 시스템(RSA도 포함)은 나머지 연산을 사용하는 모듈라 수학을 사용
- 나누는 수 : Modulus
- 나머지 : Residue (몫은 중요하지 않음)
- 모듈라 수학을 사용하면 숫자가 줄어듬
공개키를 만들기 위해 모듈라 인버스 만들기
-
예) 메시지가 4라고 가정
- 모듈러스 10에 대한 인버스 쌍(7과 3)
4 * 7 mod 10 = 8 (암호화)
8 * 3 mod 10 = 4 (복호화)
- 모듈러스 10에 대한 인버스 쌍(7과 3)
- 대부분의 공개키 암호 시스템은 역으로 계산하는 것이 어렵다는 것을 이용하여 보안성 강화
공개키 알고리즘의 수학적 기반
-
인수분해 문제(Integer Factorization Problem)
- 큰 수(768비트 이상)를 인수 분해하는 시간이 많이 필요
- 대표적인 알고리즘 : RSA
- 복호화할 때 빠름(암호화할 때 연산량이 많기 때문)
-
이산 대수 문제(Discrete Logarithm Problem)
- 대표적인 알고리즘 : DSA, KCDSA, Diff-Hellman
-
타원곡선 이산 대수 문제(Elliptic Curve Discrete Logarithm Problem)
- 대표적인 알고리즘 : ECC(ECDSA, ECKCDSA)
- 암호화할 때 빠름(복호화할 때 연산량이 많기 때문)
RSA(Rivest-Shamir-Adleman)
Chapter 12. 개인키를 사용하여 전자 서명하기
- 옛날: 종이에 자신임을 나타낼 수 있는 서명
- 요즘: 기밀성 유지보다 인증이란 방법에 더 관심
-
개인키(Private Key)로 인증과 무결성 제공
- 전자서명 : 개인키로 암호화하는 것
공개키 암호시스템
-
공개키로 암호화 / 개인키로 복호화
- 기밀성 제공
-
개인키 암호화 (서명하기) / 공개키 복호화(서명 확인)
- 개인키를 사용한 인증 - 전자서명
- 전자서명 - 인증, 데이터 무결성, 부인방지 제공
개인키 인증 방법
-
RSA
- Rivest, Shamir, Adleman이 만든 공개키 알고리즘
- 널리 사용되고 있는 독보적인 공개키 암호화 알고리즘
- 개인키나 공개키로 암호화하는 것에 모두 수학적으로 안전
- 컴퓨터의 처리량이 많아지게 되면 더 큰 소수 요구
- 공개적으로 알고리즘을 깨도록 허락
- 기밀성 서비스 - 공개키로 암호화
- 전자인증 - 개인키로 암호화
- RSA의 서명 및 서명확인(검증) 과정
-
DSA(Digital Signature Algorithm)
- DSA는 전자서명을 통해 인증, 무결성, 부인 방지 제공
- 기밀성 유지에는 사용되지 않음
- 1990년대에 NIST에 의해 제안, US FIPS에 의해 채택
- FIPS Pub 186-1에 의해 DSS(Digital Signature Standard)라고 명명 - 미국표준 서명 알고리즘
-
RSA와 DSA의 차이
- RSA는 전자 서명시에 원래 메시지가 필요
- RSA는 원문을 개인키로 암호화해야 서명이 가능하나 DSA는 그렇지 않다
- DSA는 전자서명 여부에 따라 예, 아니오로 간단하게 사용
- 속도 : RSA가 DSA보다 빠르지만, 미리 계산된 값이 있다면 DSA가 RSA보다 빠르다
- KCDSA - 대한민국 표준 서명 알고리즘
- ECDSA / ECKCDSA - DSA / KCDSA에 ECC 적용
공개키(또는 개인키로) 인증
-
부인 방지
- 개인키로 서명하고, 다른 사람들이 서명한 사람의 공개키로 서명을 확인
- 양방향 인증
-
공개키, 개인키
- 모든 공개키 암호 알고리즘 방법은 공개키와 개인키를 가진다
- 개인키는 항상 비밀로서 유지, 공유 불가
-
서명하기 전에 메시지 압축
-
서명하는 것은 너무 느리기 때문에, 메시지암호화 하기전에 줄일 필요
-
MD(Message Digest)
- 해시함수 형태
-
-
History
Last edited on 04/14/2008 03:25 by tadoli
Comments (0)