y-seo
y-seo의 딩코 기록들
y-seo
  • 분류 전체보기 (174)
    • Computer Science (49)
      • Database Design & Query Lan.. (10)
      • Network Security (16)
      • Software Engineering (6)
      • Computer Network (17)
    • Spring (50)
      • Spring-Basic (11)
      • SpringBoot-AWS (7)
      • SpringBoot&JPA (22)
      • 토비의 스프링 (3)
      • + α (7)
    • Cloud (22)
      • AWS (4)
      • GCP (1)
      • ElasticSearch (17)
    • Test (3)
    • Project (4)
    • Algorithm (24)
      • 개념 (9)
      • 문제풀이 (15)
    • AI (3)
      • About (2)
      • AIDU ez (1)
    • IT (5)
      • SQLD (4)
      • ADsP (1)
    • Error (4)
    • ETC (1)
    • Review (8)
    • Free mover (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

최근 글

최근 댓글

전체 방문자
오늘
어제

태그

  • 자바
  • 스프링부트
  • 인프런
  • algorithm
  • Spring
  • 알고리즘
  • springboot
  • 백준
  • 파이썬
  • 보안
  • 알기 쉬운 정보보호개론 3판
  • 스프링
  • 컴퓨터 네트워킹 하향식 접근
  • 네트워크보안
  • 네트워크
  • java
  • baekjoon
  • 김영한
  • JPA
  • Python

티스토리

hELLO · Designed By 정상우.
y-seo

y-seo의 딩코 기록들

[CS][알기 쉬운 정보보호개론 3판] Chapter11. 인증서
Computer Science/Network Security

[CS][알기 쉬운 정보보호개론 3판] Chapter11. 인증서

2023. 12. 6. 11:14

 

 
 

공개키 암호를 위한 키 분배의 한계

  • 공개키 암호의 가장 큰 역할은 키 분배 문제를 해결할 수 있다는 것이다.
  • 공개키 암호 기반의 키 분배는 다음 두 과정으로 이루어져 있다.
    1. 공개키의 분배
    2. 공개키 암호를 이용한 대칭키 분배
  • 공개키 인증서
    • 공개 키 암호를 이용하면 키 분배 문제를 해결할 수 있지만, 누구라도 공개 선언을 위장할 수 있다는 한계점이 있다.
    • 이를 방지하기 위해 제 3자 기관인 Certificate Authority(CA)를 두어 운영하고 CA로부터 공개키의 인증서(Certificate)를 발급받는다.
    • 인증서는 대체로 키 소유자의 ID, 공개키, 그리고 CA가 서명한 값으로 구성되어 있다. (필수)
    • 인증서는 누구나 검증할 수 있도록 설계되어 있다.

 

 
 

공개키 인증서

  • 사용자의 공개키를 인증하기 위한 인증서
  • 기본적으로 사용자의 공개키가 저장되어 있다.
  • 이름, 소속, 메일 주소 등의 개인 정보가 추가적으로 들어있다.
  • 공개키를 인증하기 위해 인증기관(CA, Certification Authority)이 자신의 개인키로 디지털 서명을 하고 사용자에게 배포하낟.
  • 세계적인 인증기관으로는 DigiCert(Verisign), Sectigo, GlobalSign 등이 있다.
  • 우리나라에는 금융결제원, 코스콤, 한국전자인증, 한국무역정보통신, 한국정보인증이 있다. (범용인증서)

 

 
 

공개키를 이용한 세션키 분배 방법

  • 안전한 데이터 통신을 위한 최종 목표는 쌍방이 세션키를 공유하는 것이다.
  • Diffie-Hellman 키 교환을 이용해서도 세션키를 공유할 수 있긴 하지만, 보안 허점(Ex. Man-in-the-middle)이 많기에 적당하지 않다.
  • 따라서 공개키 암호를 이용하여 세션키를 공유하되, 그 공개키의 무결성은 인증서를 이용하여 검증한다.
  • Alice가 Bob에게 메세지를 보내기 위한 과정
    1. Bob이 자신의 공개키와 CA의 서명이 포함된 인증서를 준비한다.
    2. Bob이 Alice에게 인증서를 보낸다.
    3. Alice가 Bob의 인증서를 검증한다.
    4. 검증에 이상이 없으면, Alice는 세션키(=비밀키)를 하나 선정하고, 이를 Bob의 공개키로 암호화한다.
    5. 암호화된 세션키를 Bob에게 전달하고, Bob은 그것을 자신의 비밀키를 이용하여 복호화한다. = 세션키 공유
    6. 그러면 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를 사용해 자신의 공개키를 등록하고 싶어 하는 사람, 인증서를 받고 싶은 사람
    • 역할
      1. 공개키/비밀키 쌍을 작성한다. (인증기관이 작성하는 경우도 있다.)
      2. 인증기관에 공개키를 등록한다.
      3. 인증기관으로부터 인증서를 발행 받는다. (공개키에 대한 서명을 받게 된다.)
      4. 필요할 경우 인증기관에 신청해서 등록한 공개키 를 무효로 한다. (노출된 것 같을 때)
      5. 수신한 암호문을 복호화한다.
      6. 메세지에 디지털 서명을 한다.
  • 인증서 이용자
    • 등록되어 있는 공개키를 사용하고 싶어 하는 사람, 인증서를 받는 사람
    • 역할
      1. 메세지를 암호화해서 수신자에게 송신한다.
      2. 디지털 서명을 검증한다.
  • 인증기관 (CA)
    • 인증서의 관리를 행하는 기관
    • 종류
      1. 키 쌍을 작성한다. (이용자가 작성하는 경우도 있다.)
      2. 공개키 등록 때 본인을 인증한다.
      3. 인증서를 작성해서 발행한다.
      4. 폐기 요청시 인증서를 폐지한다.
  • 등록기관 (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의 인증서를 발행해주는 기법이 있다.

알기 쉬운 정보보호개론 3판

 

 
 

인증서에 대한 공격

  1. 공개키에 생성된 시점과 등록된 시점 사이에 공격 수행 (Bob이 나빠야 가능?)(1)
  2. 닮은 이름으로 등록하는 공격
    • 믿어줘버릴수도
    • 방지를 위해 인증서 로그인시 PW 요구
    • 요즘은 잘 안 통한다
  3. 인증 기관의 개인키를 훔쳐내는 방법
    • 공인인증기관의 개인키를 훔쳐 공인인증서를 막 찍어낼 수 있다.
  4. 공격자 자신이 인증기관이 되는 공격
    • 수상한 인증기관(X 표시가 있는)
    • 정식 인증을 받지 못한
  5. CRL에 대한 공격
    1. CRL이 업데이트 되기 전에 CRL에 올라올 인증서 사용(6)
    2. 자신이 인증서로 불법적인 이득을 취한 후 바로 CRL에 등록하여 부인 시도 (그냥 내가 만들어버리고 나중에 책임을 추궁할 때 해킹 당해서 CRL에 등록했다고 변명)
  6. 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
    'Computer Science/Network Security' 카테고리의 다른 글
    • [CS][알기 쉬운 정보보호개론 3판] Chapter13. 난수
    • [CS][알기 쉬운 정보보호개론 3판] Chapter12. Key
    • [CS][알기 쉬운 정보보호개론 3판] Chapter10. 디지털 서명
    • [CS][알기 쉬운 정보보호개론 3판] Chapter09. 메세지 인증 코드 (MAC)
    y-seo
    y-seo

    티스토리툴바