공개키 암호를 위한 키 분배의 한계
- 공개키 암호의 가장 큰 역할은 키 분배 문제를 해결할 수 있다는 것이다.
- 공개키 암호 기반의 키 분배는 다음 두 과정으로 이루어져 있다.
- 공개키의 분배
- 공개키 암호를 이용한 대칭키 분배
- 공개키 인증서
- 공개 키 암호를 이용하면 키 분배 문제를 해결할 수 있지만, 누구라도 공개 선언을 위장할 수 있다는 한계점이 있다.
- 이를 방지하기 위해 제 3자 기관인 Certificate Authority(CA)를 두어 운영하고 CA로부터 공개키의 인증서(Certificate)를 발급받는다.
- 인증서는 대체로 키 소유자의 ID, 공개키, 그리고 CA가 서명한 값으로 구성되어 있다. (필수)
- 인증서는 누구나 검증할 수 있도록 설계되어 있다.
공개키 인증서
- 사용자의 공개키를 인증하기 위한 인증서
- 기본적으로 사용자의 공개키가 저장되어 있다.
- 이름, 소속, 메일 주소 등의 개인 정보가 추가적으로 들어있다.
- 공개키를 인증하기 위해 인증기관(CA, Certification Authority)이 자신의 개인키로 디지털 서명을 하고 사용자에게 배포하낟.
- 세계적인 인증기관으로는 DigiCert(Verisign), Sectigo, GlobalSign 등이 있다.
- 우리나라에는 금융결제원, 코스콤, 한국전자인증, 한국무역정보통신, 한국정보인증이 있다. (범용인증서)
공개키를 이용한 세션키 분배 방법
- 안전한 데이터 통신을 위한 최종 목표는 쌍방이 세션키를 공유하는 것이다.
- Diffie-Hellman 키 교환을 이용해서도 세션키를 공유할 수 있긴 하지만, 보안 허점(Ex. Man-in-the-middle)이 많기에 적당하지 않다.
- 따라서 공개키 암호를 이용하여 세션키를 공유하되, 그 공개키의 무결성은 인증서를 이용하여 검증한다.
- Alice가 Bob에게 메세지를 보내기 위한 과정
- Bob이 자신의 공개키와 CA의 서명이 포함된 인증서를 준비한다.
- Bob이 Alice에게 인증서를 보낸다.
- Alice가 Bob의 인증서를 검증한다.
- 검증에 이상이 없으면, Alice는 세션키(=비밀키)를 하나 선정하고, 이를 Bob의 공개키로 암호화한다.
- 암호화된 세션키를 Bob에게 전달하고, Bob은 그것을 자신의 비밀키를 이용하여 복호화한다. = 세션키 공유
- 그러면 Alice와 Bob은 동일한 세션키를 갖게 되었으며, 둘은 그 세션키를 이용하여 안전하게 통신할 수 있다.
HTTP 접속 시 | 평문으로 통신 |
HTTPS 접속 시 | 암호화 하여 통신 (서버의 공개키로 대칭키 행성 → 서버의 것이 맞는지 검증하기 위해 공인인증기관에게 인증을 받는다.) |
- 만약 서명 인증 하지 않고 공개키로 들어가면, 감염 확률이 올라간다.
- SSH 접속 : 인증기관에게 인증을 받지 않아서 접속하겠냐고 물어본다.
- 이 인증서를 신뢰할거냐고 묻는 이유 : 공개키를 인증서로 만들어 보내야 하는데 공식 인증기관이 아니라(사설이라) 믿기 힘들기 때문이다.
공용 인증서 종류
- 범용 공인인증서
- 모든 분야에서 이용 가능
- 인터넷뱅킹, 온라인증권, 전자상거래, 전자정부 민원서비스, 4대 사회보험, 국세청 홈 텍스, 전자세금계산서, 전자입찰/조달, 온라인교육, 예비군 등 다양한 분야에서 활용
- 생성시, 소정의 수수료가 붙을 수 있음
- 로그인해서 들어가는 곳은 다 사용된다.
- 용도제한 공인인증서
- 은행 및 보험, 신용카드 업무, 정부 민원업무 등 특정 분야에서만 이용 (특정 App에서만 사용)
- 해당 기관이 고객에게만 발급
- 대부분 무료
인증서 표준 규격 = X.509
- 공개 키 인증 서비스의 표준이며, 우리 나라에서 사용되는 공인인증서도 X.509 형식을 사용하고 있다.
- X.509는 정부, 금융 기관 등 본인 인증을 할 때 사용될 뿐 아니라, S/MIME, IPSec, SSL/TLS 등 다양한 분야에 사용된다.
- 1988년에 처음으로 소개되었고, 1993년부터 2012년까지 계속 수정, 보완되어 가고 있으며, 현재 버전은 7이다.
- X.509 인증서는 기본적으로 소유자의 공개키, CA의 서명을 포함하고 있으며, 기타 소유자의 여러 가지 정보를 포함하고 있다.
- 공개 키 알고리즘에 제한을 두고 있지는 않지만, RSA를 권장하고 있다.
공개키 기반 구조 (PKI)
- 공개키를 효과적으로 운용하기 위해 정한 많은 규격이나 선택사양의 총칭
- 종류
- PKCS (Public-Key Cryptography Standards) : RSA사가 정하고 있는 규격의 집합
- RFC(Requests for Comments) 중에서도 PKI에 관련된 문서 : 인터넷의 선택사양을 정한다.
- X.509 : API 사양서, 주소 사용하는 것
- 구성요소
- 이용자 - PKI를 이용하는 사람(인증서를 이용하는 사람)
- 인증기관 - 인증서를 발행하는 사람
- 저장소 - 인증서를 보관하고 있는 DB
각 요소별 역할
- 공개키 이용자
- PKI를 사용해 자신의 공개키를 등록하고 싶어 하는 사람, 인증서를 받고 싶은 사람
- 역할
- 공개키/비밀키 쌍을 작성한다. (인증기관이 작성하는 경우도 있다.)
- 인증기관에 공개키를 등록한다.
- 인증기관으로부터 인증서를 발행 받는다. (공개키에 대한 서명을 받게 된다.)
- 필요할 경우 인증기관에 신청해서 등록한 공개키 를 무효로 한다. (노출된 것 같을 때)
- 수신한 암호문을 복호화한다.
- 메세지에 디지털 서명을 한다.
- 인증서 이용자
- 등록되어 있는 공개키를 사용하고 싶어 하는 사람, 인증서를 받는 사람
- 역할
- 메세지를 암호화해서 수신자에게 송신한다.
- 디지털 서명을 검증한다.
- 인증기관 (CA)
- 인증서의 관리를 행하는 기관
- 종류
- 키 쌍을 작성한다. (이용자가 작성하는 경우도 있다.)
- 공개키 등록 때 본인을 인증한다.
- 인증서를 작성해서 발행한다.
- 폐기 요청시 인증서를 폐지한다.
- 등록기관 (RA, Registration Authority)
- 인증기관의 일 중 “공개키의 등록과 본인에 대한 인증”을 대행하는 기관 (이 사람을 인증해주는)
- Ex. 통신사, PASS, 정부기관 등
공인 인증기관
- 과학기술정보통신부 산하에 민간 최상위 인증기관인 한국인터넷진흥원(KISA)가 있다.
- 전자서명법 제4조의 규정에 의해 지정된 공인인증기관은 5개가 있다.
- 개인 또는 기업 등의 요청에 따라 공인인증서를 발급
- 철저한 심사 절차를 통해 발급
- 법적 효력(피해를 입었을 때 구제 가능)과 안전성 보장
- 저장소(repository)
- 인증서를 보존하고, 이용자가 인증서를 입수할 수 있도록 한 DB
- 인증서를 다시 받을 수 있다. (새로 발급보다 덜 귀찮다.)
인증기관의 역할
- 키 쌍의 작성
- 공개키와 비밀키의 쌍을 만드는 작업
- 사용자가 만들 수도 있고, 인증기간이 만들어서 사용자에게 줄 수도 있다.
- 인증서 등록
- 공개키에 서명해주는 것
- 사용자가 인증서 작성을 의뢰하면 인증서를 생성해준다.
- X.509 형식으로 제작된다.
- 인증서 폐지와 CRL(Certificate Revocation List)
- 인증서를 유효기간 전에 폐지해야 하는 경우 : 개인키가 분실되었을 때, 개인키가 도난됐을 때
- 인증서 폐지 목록을 만들어서 인증서 사용자로부터 인증서를 받은 상대방이 인증서의 유효성을 검사할 수 있도록 한다.
- CRL : 유효기간이 지나지 않은 인증서가 들어 있다.
- CRL에 대한 여러 가지 공격 방법이 알려져 있다.
서로 다른 인증기관 간의 인증서 인증
- CA가 발행하는 인증서의 특성
- CA의 공개키를 가지고 있는 사용자는 누구나 인증서 소유자의 공개키를 검증할 수 있다.
- 인증기관을 제외한 어느 누구도 인증서를 변경할 수는 없다.
인증서의 계층구조
- 두 개의 인증기관 X, Y에 대해 X가 Y보다 상위 기관이라고 하자.
- 그랬을 때, Y가 발행한 인증서를 신뢰하기 위해 X가 Y의 인증서를 발행해주는 기법이 있다.
인증서에 대한 공격
- 공개키에 생성된 시점과 등록된 시점 사이에 공격 수행 (Bob이 나빠야 가능?)(1)
- 닮은 이름으로 등록하는 공격
- 믿어줘버릴수도
- 방지를 위해 인증서 로그인시 PW 요구
- 요즘은 잘 안 통한다
- 인증 기관의 개인키를 훔쳐내는 방법
- 공인인증기관의 개인키를 훔쳐 공인인증서를 막 찍어낼 수 있다.
- 공격자 자신이 인증기관이 되는 공격
- 수상한 인증기관(X 표시가 있는)
- 정식 인증을 받지 못한
- CRL에 대한 공격
- CRL이 업데이트 되기 전에 CRL에 올라올 인증서 사용(6)
- 자신이 인증서로 불법적인 이득을 취한 후 바로 CRL에 등록하여 부인 시도 (그냥 내가 만들어버리고 나중에 책임을 추궁할 때 해킹 당해서 CRL에 등록했다고 변명)
- Superfish
- 주기적으로 에드웨어를 띄우는 악성코드 (광고를 띄우는)
- Root 인증서를 불법적으로 만들어서 그냥 laptop에 내장되어 있다.
인증서에 대한 추가 이슈
- 인증서가 반드시 필요한가?
- 요즘은 인증서를 대체하려는 노력이 많이 되어서 블록체인으로도 가능하다. 그러나 아직 멀었다.
- 독자적 인증 방법을 사용하는 것은 안전한가?
- 인증서 말고는 안전하다고 느끼기 어렵다.
- 인증기관을 어떻게 신뢰할 것인가? (근본적인 분제_
- 상위기관을 믿어서 쓰는 것이다.
- 혹시 이것마저 못 믿겠어서 나타난 기술은 “블록체인”이다. (나 빼고 아무도 못 믿는다.)
'Computer Science > Network Security' 카테고리의 다른 글
[CS][알기 쉬운 정보보호개론 3판] Chapter13. 난수 (1) | 2023.12.06 |
---|---|
[CS][알기 쉬운 정보보호개론 3판] Chapter12. Key (1) | 2023.12.06 |
[CS][알기 쉬운 정보보호개론 3판] Chapter10. 디지털 서명 (0) | 2023.12.06 |
[CS][알기 쉬운 정보보호개론 3판] Chapter09. 메세지 인증 코드 (MAC) (0) | 2023.12.06 |
[CS][알기 쉬운 정보보호개론 3판] Chapter08. 일방향 해시함수 (0) | 2023.12.06 |