구성요소
•
식별자 : ID 사용자 식별
•
속성 : ID 사용자 특징 확인
•
인증 수단 : ID 소유권 확인
•
발행인 : ID 발행인 확인
SSO(Single Sign On, 통합 로그인)
•
IdP(Identity Provider) 웹 사이트의 회원정보를 이용하여 RP(Relying Party) 웹사이트로 회원 가입 혹은 로그인할 수 있는 기능
•
ex) IdP : 구글 RP : 익스피디아
•
프로토콜
◦
OAuth(Open Authorization)
◦
SAML(Security Assertion Markup Language)
◦
JWT(Json Web Token)
•
디지털 인증서
◦
대칭키
▪
동일한 키를 사용해서 암/복호화 수행
◦
비대칭키
▪
비밀키, 공개키라 불리는 서로 다른 키 쌍을 사용해서 암/복호화 수행
▪
비밀키로 암호화를 수행하면 데이터 송신자/사용자에 대한 사용자 인증 가능
▪
공개키로 암호화를 수행하면 데이터 암호화/원하는 상대한테만 데이터 공개가 가능
•
Hash(일방향 함수)
◦
sha256 = Data → 256bit Result(64개의 16진수, 개당 4bit)
◦
디지털 서명
SSL/TLS
•
CA(Ceritificate Authority, 인증기관)의 인증노드 활용 SSL/TLS 프로토콜
•
디지털 서명 생성 방식
1.
웹 사이트 → 자신의 정보와 공개키 → CA 제출
2.
CA는 웹사이트가 제출한 정보를 검증한 후 올바른 웹사이트라 판단되면 웹사이트의 정보가 포함된 인증서 정보 생성
3.
이후 CA는 자신의 비밀키를 사용하여 웹 사이트의 공개키가 포함된 인증서 정보에 대한 디지털 서명 생성
a.
인증서 정보 해시
b.
a의 결괏값을 CA의 비밀키로 암호화
4.
CA가 b의 결괏값(CA의 디지털 서명)을 인증서 정보에 추가하여 디지털 인증서 생성
5.
CA는 웹사이트의 공개키 및 정보와 CA의 서명이 포함된 디지털 인증서를 웹 사이트에게 발행
6.
사용자는 웹 브라우저를 통해 웹사이트에 접속
* ‘Client hello’라는 Message 전송, 이때 세션키 생성에 필요한 CR(Client Random)이 포함
7.
웹사이트는 ‘Client hello’에 대한 응답으로 ‘Server Hello’와 웹 사이트 디지털 인증서를 사용자에게 전송
* ‘Server hello’에 향후 세션키 생성에 필요한 SR(Server Random)이 포함
8.
웹 사이트의 디지털 인증서를 수신한 사용자 웹브라우저는 디지털 인증서에 포함된 CA의 서명을 검증하여 신뢰할 수 있는 CA가 인증서 내용을 보증해 주는지에 대한 진위 판단
a.
웹브라우저 - CA 공개키 획득 (대부분 CA의 공개키 내재)
b.
획득한 CA의 공개키를 이용하여 인증서에 포함된 서명 복호화
디지털 서명 생성 방식 b값을 공개키로 복호화, 결괏값으로 인증서 정보의 해시값 나옴
c.
사용자 - 디지털 인증서의 인증서 정보를 CA가 사용했던 것과 동일한 해시 함수를 사용하여 해시. (인증서 정보에 CA가 사용한 해시 함수 명시)
d.
b와 c가 동일한 결괏값을 출력한다면 해당 디지털 인증서는 신뢰할 수 있는 CA에 의해 검증된 디지털 인증서로 증명
데이터를 해시 → 고정된 길이의 결괏값 출력 : 데이터의 길이가 일괄적이므로 서명 등의 작업을 수행하기 훨씬 수월
9.
디지털 인증서로부터 웹사이트 공개키 획득. 웹사이트의 공개키는 추후 사용자와 웹사이트 간의 실제 통신에 사용되는 동일 세션키(대칭키) 생성을 위한 암호화 용도로 사용
10.
사용자와 웹사이트는 세션키 생성을 위한 PS(Premaster Secret)와 MS(Master Secret)를 생성
클라이언트가 46바이트의 난수 생성 + 프로토콜 버전 2바이트 = 48바이트의 PS 생성
11~12. 이후 생성한 PS를 앞서 취득한 웹사이트의 공개키로 암호화하여 웹사이트에 전송
13.
웹사이트는 자신의 공개키로 암호화된 데이터를 자신의 비밀키로 복호화하여 PS를 획득
14.
PS가 무사히 교환되면 사용자와 웹사이트는 앞서 교환했던 CR과 SR을 PS와 합쳐서 MS 생성
15.
다시 MS와 CR, SR을 합쳐 세션키 생성
16.
사용자와 웹사이트 간에 동일한 세션키 공유 → 이용하여 암호화 통신 가능