코딩공작소
암호화/복호화 본문
1. 기본 개념
1) 상징
p : plain text ( p1, p2, ... )
c : cipher text ( c1, c2 , ... )
enc : 암호화 알고리즘
dec : 복호화 알고리즘
e : 암호화 키
d : 복호화 키
c = enc ( p , e ) // 암호화 과정 e는 암화화 키.
p = dec ( c , d ) // 복호화 과정 d는 복호화 키.
Symmetric ( 대칭 키 )
Asymmetrci ( 비대칭 키 )
2) 기본 암호화 기술
shift cipher (시저 방법 )
subtitution
2. 대칭 키 알고리즘
대칭 키 알고리즘에서, 암호화 키는 복호화 키와 같거나 거의 비슷하다.
가깝게 연관되어 있는 하나의 키로 나머지 키를 쉽게 계산할 수 있다.
DES기법이 이에 속한다.
**대칭키 알고리즘의 문제점 :
- 빠르고 이용하고 쉽지만 brute-force 어택에 무너질 수 있다.
- 키 분배의 문제. G마켓으로 신용카드 번호를 보내고 싶을 때, DES를 사용하면 G마켓과 너는
같은 64비트 키를 공유 해야 한다. 키를 바꿀 때도 그 키를 상대방에게 알게 해주기 위한 것이 힘들다.
3. 비대칭 키 알고리즘 (public key 알고리즘)
암호화 키는 복호화 키와 다르다.
2가지의 키 (public key, private key를 가지고 있다.)
하나의 키를 기반으로 다른 하나의 키를 알아내는것이 거의 불가능 하다.
RSA기법이 이에 속한다.
4.RSA
1) 기본 개념
relative prime : 두개의 숫자의 GCD가 1 이면 이것을 relative prime이라고 한다. 21,10 은 relative prime이다.
phi function : phi(N)은 [1, ... , N-1] 안에 있는 숫자중 N과 relative prime을 이루는 수의 개수 이다.
ex) phi(8) = 4 because {1,3,5,7}
만약 N이 prime number이면 phi(N) = N-1이고 , phi(P*Q) = (P-1)*(Q-1) ,if P , Q are prime numbers.
ex) phi(15) = phi(3*5) = 2*4 = 8 //{1,2,4,7,8,11,13,14}
알고리즘은 RSA글에 따로 정리
2) RSA의 보안성
n,e가 알려져 있고, n으로 부터 d를 계산하는 것은 거의 불가능하다. n의 비트의 숫자가 RSA키의 길이이다.
1024 비트가 medium security라고 여겨진다.
(n,e) : public key
(n,d) : private key
5.public key system의 사용
1) 전자서명
(M, enc(H(M),d_A)
M : document
H(M) : hash value of M
enc( H(M) , d_A ) : private key A를 이용해 H(M)을 암호화 한것.
수신자는 H(M)과 hash value를 비교함으로써 M의 타당성을 체크 할 수있다.
H(M)은 enc( H(M) , d_A )를 해독함으로 얻어낼 수 있다. e_A는 공개키이다.
만약 누군가가 M을 바꾸면, H(M)이랑 불일치한다.
2)public key certificate (X.509)
CA ( Certificate Authority ) : 디지털 시그니쳐를 증명서에 제공한다.
사람이나 단체가 다른 CA들로 부터 certificate을 얻을 수 있다. CA는 certificate안에 있는 정보들을 검증하고
그것에 디지털 시그니쳐를 붙인다.
X509는 무슨 정보가 certificate에 제공되어야 하는 지를 명시화한다.
인증서 구조
X.509 v3 디지털 인증서의 구조
- Certificate
- Version 인증서의 버전을 나타냄
- Serial Number CA가 할당한 정수로 된 고유 번호
- Signature 서명 알고리즘 식별자
- Issuer 발행자
- Validity 유효기간
- Not Before 유효기간 시작 날짜
- Not After 유효기간 끝나는 날짜
- Subject 소유자
- Subject Public Key Info 소유자 공개 키 정보
- Public Key Algorithm 공개 키 알고리즘
- Subject Public Key
- Issuer Unique Identifier (Optional) 발행자 고유 식별자
- Subject Unique Identifier (Optional) 소유자 고유 식별자
- Extensions (Optional) 확장
- ...
- Certificate Signature Algorithm
- Certificate Signature
인증서 파일 확장자
- .CER - CER 암호화 된 인증서. 복수의 인증서도 가능.
- .DER - DER 암호화 된 인증서.
- .PEM - (Privacy Enhanced Mail) Base64로 인코딩 된 인증서. "-----BEGIN CERTIFICATE-----"와 "-----END CERTIFICATE-----" 가운데에 들어간다.
- .P7B - .p7c 참조.
- .P7C - PKCS#7 서명 자료 구조(자료는 제외), 인증서이거나 CRL(복수도 가능).
- .PFX - .p12 참조.
- .P12 - PKCS#12, 공개 인증서와 암호로 보호되는 개인 키를 가질 수 있다(복수도 가능).