2. 1. PKI 개요
2
• PKI(Public Key Infrastructure) 공개 키 기반…
인증서(공개키), SSL, 전자 서명 등…
• 공개키 인증서의 인증서(무결성)을 제공하기 위한 신뢰구조
• RFC 2459 - Internet X.509 Public Key Infrastructure
(http://www.ietf.org/rfc/rfc2459.txt)
- X.509: 인증서 포멧
• 주요 기술
- Cryptographic Hash: 해쉬 함수
- Symmetric Key Algorithm: 암/복호화, 대칭키
- Asymmetric Key Algorithm: 암/복호화, 비 대칭키
3. 1. PKI 개요 – 주요 기술: Cryptographic Hash
3
• 임이의 길이의 데이터를 고정된 길이의 데이터로 매핑(축약)하는 알고리즘(단 방향)
문서/파일 위변조 검증(Checksum)
• 알고리즘
- MD5(16bytes)
- SHA-1(20bytes)
- SHA256(32bytes)
- SHA512(64bytes)
출처 - https://en.wikipedia.org/wiki/File:Hash_function.png
4. 1. PKI 개요 – 주요 기술: Symmetric Key Algorithm
4
• 대칭키
• 암호화, 복호화 같은 ‘키’ 사용
• 알고리즘
- DES/3DES
- AES
- SEED
출처 - https://cryptocat.tistory.com/2
5. 1. PKI 개요 – 주요 기술: Asymmetric Key Algorithm
5
• 비 대칭키
• 암호화, 복호화 두개의 ‘키’ 사용
• 알고리즘
- RSA
- DSA
- ECDSA(타원 곡선)
출처 - https://m.blog.naver.com/PostView.nhn?blogId=gkenq&logNo=10185848184
6. 1. PKI 개요 – 개인키 기반 암호화
6
• 개인키로 암호화한 내용은 공개키로만 검증 가능
• 개인키 소유자가 만든 데이터임을 알 수 있으므로 송신자를
식별(Authentication)할 수 있음
• 송신자가 메시지 작성 사실을 부인하지 못하므로 “부인 방지"(Non-Repudiation)
라고도 함
• 개인키 암호화를 전자서명(Digital Signature) 라고 부름
출처 - https://www.slideshare.net/ssuser800974/ss-76664853
7. 1. PKI 개요 – 공개키 기반 암호화
7
• 수신자의 공개키로 데이터 암호화
• 개인키 소유자만 해독할 수 있으므로 안전하게 데이터 전달 가능
• RSA,Rabin, Elgamal 알고리즘은 공개키 암호화 기능 제공
• DSA는 전자서명 기능만 제공
출처 - https://www.slideshare.net/ssuser800974/ss-76664853
8. 1. PKI 개요 – 인증서
8
• 공개키를 신뢰할 수 있는 인증 기관에서 인증 후 발행
- 공개 키와 인증 기관의 전자 서명 등 포함
- 암호화, 전자서명, 신원확인 용도 등으로 사용
9. 2. 인증서 (신뢰구조)
9
USER1이 USER2의 인증서를 검증하기 위한 과정
1. USER2의 인증서 획득
2. ⓒ의 인증서 획득
- USER2의 인증서 검증
- ⓒ의 인증서 내에 포함된 공개키로 USER2의 인증서 검증
3. Ⓐ의 인증서 획득
- ⓒ의 인증서 검증
- Ⓐ의 인증서 내에 포함된 공개키로 ⓒ의 인증서 검증
A
B C
D
USER1
USER2
10. 3. SSL(Socket Secure Layer), TLS (Transport Layer Security)
10
• 전송 계층 상에서 클라이언트,서버에 대한 인증 및 데이터 암호화 수행
- 클라이언트와 서버 양단 간 응용 계층 및 TCP 전송 계층 사이에서 안전한 보안 채널을
형성해 주는 역할을 수행하는 보안용 프로토콜
• SSL v3.0 을 참고로하여 RFC 2246(1999년)으로 표준화된 것이 TLS 임
• 주요 응용
- HTTP (HTTPS), FTP, TELNET, SMTP, SIP, POP, IMAP 등 에서 사용 가능
- 주로, 웹 브라우저와 웹 서버 사이의 안전한 보안 채널을 제공하기 위해 많이 사용됨
출처 - http://www.ktword.co.kr/abbr_view.php?m_temp1=1957&id=831
12. 3. SSL/TLS 기능
12
• 신원 확인
- 인증 기관에서 회사정보(사업자 등록증 등)를 검증한 후 인증서 발급
- 알고리즘: RSA, DSS, X.509
• 메시지 비밀 보장
- 각 Session에 하나의 Session키가 사용되고 이 Session키는 한번만 사용된다.
(재사용 안됨.)
- 알고리즘: DES, 3DES, RC4 등
• 메시지 무결성
- 알고리즘: HMAC-MD5, HMAC-SHA-1
출처 - https://m.blog.naver.com/onestone73/110106304935
14. 4. 인증서 - CSR(Certificate Signing Request)
14
• 회사 정보, 공개키를 인증기관(CA)으로 보내 인증서를 발급 받게 하는 일종의 신청서
$ openssl req -new -out hlkug.csr -keyout hlkug.key
Generating a RSA private key
writing new private key to 'hlkug.key'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
Country Name (2 letter code) [AU]:KR
State or Province Name (full name) [Some-State]:Seoul
Locality Name (eg, city) []:Seoul
Organization Name (eg, company) [Internet Widgits Pty Ltd]:HLKUG
Organizational Unit Name (eg, section) []:HLKUG
Common Name (e.g. server FQDN or YOUR name) []:hlkug.org
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
$ ls
hlkug.csr hlkug.key
-----BEGIN CERTIFICATE REQUEST-----
MIICpjCCAY4CAQAwYTELMAkGA1UEBhMCS1IxDjAMBgNVBAgMBVNlb3VsMQ4wDAYD
VQQHDAVTZW91bDEOMAwGA1UECgwFSExLVUcxDjAMBgNVBAsMBUhMS1VHMRIwEAY
D
VQQDDAlobGt1Zy5vcmcwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDE
0lEQ5ae6geHfUbtbNYl5e1NBupkvGYbJr+Ry/kQ2bswUZt5HuZQqOEa4CWZcNz8G
T+3P1xprs6ivO3CBPd47f6llYPlvYBWTmDS2WbnDphwErLpn1ngHzar2YWa/6GRz
rvljv2DTVmjCDkLh/HKN5Eh2hQP3zsKBJLbQQhnxJAYD1YEwal20Ef/hSGVdBBn4
fhBg9MtcT4wCXE61BcpNIfYmS6qfoYDuS/FD2L0zA0E4HBOBhleZ5PRAUeZ7QxaE
72Dx825k/8+X2y9U4I26MTXOTJ/Q9ZIs1J/l3Ips6TyxDZZRQV84sCQQ9vMRob0x
uvuFBMegwnn5VuWCGzCdAgMBAAGgADANBgkqhkiG9w0BAQsFAAOCAQEAk54ylnhe
pc9agWdrPhwPdQXlW4yHl2NYSCjQZQdcY49bTaQCmUCOHmRcq401pRJSJXJJP66+
zvy4sBKkDYWu8ejGOQhcl76G9dAZNltxi6ZX/RjffBdfKJ7zxNZwVNfmhwXjKSJE
7oyGK/GrwEPeZAxAuvZRPiaBNqccYzIGkx4WQ8N/KKdNC8eWrZ42wMLeMUoD6d8z
ZDVq2RE/HYt4ISYmDbACRdXlRI3HvyKp/yRwgqbHbFFJeij02uD8MbTxPxtzocTk
t04Sb/RtD9gDu9cdR94PPyk7OWYYai/tlZtQ3Y4tDV4myDXlvmsrjolA8iJXLgUC
46gMiXYAaEC3PQ==
-----END CERTIFICATE REQUEST-----
* CSR Decoder - https://www.fairssl.se/en/csr
* OpenSSL for Windows
https://code.google.com/archive/p/openssl-for-
windows/downloads
15. 4. 인증서 - 인증 기관(Certificate Authority, CA)
15
• 다른 곳에서 사용하기 위한 디지털 인증서를 발급하는 하나의 단위
출처 - https://ko.wikipedia.org/wiki/인증_기관
http://blog.naver.com/jvioonpe/221384409377
16. 4. 인증서 - CSR파일에 서명을 통한 인증서 생성
16
$ openssl x509 -req -days 365 -in hlkug.csr -signkey hlkug.key -out hlkug.crt
$ openssl x509 -text -noout -in hlkug.crt
Certificate:
Data:
Version: 1 (0x0)
Serial Number:
1e:4a:7a:6e:ba:66:ad:87:a9:4e:2c:12:05:19:79:7f:af:42:e3:09
Signature Algorithm: sha256WithRSAEncryption
Issuer: C = KR, ST = Seoul, L = Seoul, O = HLKUG, OU = HLKUG, CN = hlkug.org
Validity
Not Before: Sep 8 14:01:24 2019 GMT
Not After : Sep 7 14:01:24 2020 GMT
Subject: C = KR, ST = Seoul, L = Seoul, O = HLKUG, OU = HLKUG, CN = hlkug.org
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public-Key: (2048 bit)
Signature Algorithm: sha256WithRSAEncryption
2c:36:76:d2:12:7b:cf:5a:d7:75:2f:43:22:00:a9:7e:7e:e5: