인증(Authentication): 자신이 누구라고 주장하는 사람을 '누구구나~' 하고 확인하는 절차. 인증을 통해 Spoofing하는 공격자들로부터 시스템을 지킬수 있다.
Classes of Authentication
인증을 하는 방법은 여러가지가 있다.
- 지식을 통한 인증: 비밀번호, PIN, Cryotographic key, TAN
- 소유물을 통한 인증: 스마트 카드, USB-Token, SIM 카드
- 생체정보를 이용한 인증: 지문, 홍채, DNA
- 행동을 통한 인증: 목소리, 걸음걸이
- 여러 요소를 혼합한 인증: ex. banking card and PIN
Password Security
비밀번호의 안정성은 다음에 따라 결정된다:
- 비밀번호의 길이, 조합, 정책
- 비밀번호를 저장하는 시스템의 안전성 및 사용자가 비밀번호를 얼마나 안전하게 보관하는지.
- 비밀번호 입력/전소 시 보안
비밀번호 도메인의 크기는 다음과 같이 결정된다.
특수기호, 대문자, 소문자 등을 혼합하여 비밀번호를 생성했을때 비밀번호 도메인이 커지는 것을 확인할 수 있다.
시도-응답 인증 (Challenge-Response Authentication)
기존의 ID + PASSWORD 방식은 재전송 공격에 취약하다. 시도-응답 인증은 이런 취약점을 보완하기 위해 대칭키 기반의 소지기반 보안을 추가한 일회성 인증 방법이다.
시도-응답 인증에서 중요한 개념은 일회성 인증이다. 은행의 시크리트 카드보다 OTP가 보안성이 훨씬 좋은 것과 같은 맥락이다. 사용지가 인증을 원할 경우 서버에선 사용자에게 일회성 Challenge를 보낸다. 사용자는 이를 비밀키로 암호화하여 서버에 Response 한다. Challenge 는 일회성으로 난수로 예측할 수 없고 매번 다른 값으로 바뀌어야 한다.
이런 방식이라면 해커가 중간에 Response를 스니핑 하더라도 이를 재사용 할 수 없다. 이미 한번 쓰였던 일회용 값이기 때문이다.
이러한 인증 방법을 사용하려면 서버와 클라이언트만 알고 있는 대칭키(비밀키)가 필요하다.
대칭키를 이용한 인증 (Authentication by Symmetric Key)
대칭 암호화를 위한 비밀키가 이미 사용자 사이에서 공유가 되었을 때 인증방법.
- 사용자A는 사용자B에게 인증을 받고자 한다.
- 사용자B는 난수 x를 생성한다.
- 사용자B는 사용자A에게 난수 x를 대칭키를 이용해 암호화하라고 요청한다.
- 사용자A가 암호화 된 x를 사용자B에게 전송한다.
- 사용자B가 자신의 대칭키로 x를 암호화한 결과와 비교한다. 같다면 인증 완료.
공개키를 이용한 인증 (Authentication by Public Key)
사용자B가 사용자A의 공개키를 알고있을 때 사용가능한 인증방법
- 사용자A는 사용자B에게 인증을 받고자 한다.
- 사용자B는 난수 x를 생성한다.
- 사용자B는 사용자A에게 난수 x를 개인키를 이용해 암호화하라고 요청한다.
- 사용자A가 암호화 된 x를 사용자B에게 전송한다.
- 사용자B는 자신이 아는 사용자A의 공개키로 x를 암호화한 결과와 비교한다. 같다면 인증 완료.
장점:
- 서버와 클라이언트가 사전에 비밀을 합의할 필요가 없음
- 공개키가 진짜인지 확인해야 함. 따라서 Public Key Infrastructure (PKI)가 필요하다.
- 또한 서버는 저장된 공개키의 무결성을 보장하여 공격자가 위조된 키와 교환할 수 없도록 해야한다.
대안: 서버는 응답 외에 로그인 할 때마다 클라이언트로부터 유효한 인증서를 요청할 수 있으며, 이를 기반으로 공개 및 개인 키의 유효성을 확인한다.
전자 서명 (Signature)
서명과정:
1. 사용자A는 공개키와 개인키의 쌍을 생성한다.
2. 전자문서(원문)을 해시함수에 통과시켜 고정된 길이의 출력값으로 변환한다.
3. 출력값을 사용자의 개인키로 암호화한다. 이는 "내 개인키로 원문의 사실에 서명한다" 라는 의미를 가지게 되는데 이렇게 개인키에 의해 암호화 생성된 메시지가 전자서명이다.
검증과정:
1. 사용자B는 사용자A의 공개키를 이용하여 사용자A의 전자서명을 복호화한다.
2. 생성 과정 때와 마찬가지로 전자문서(원문)을 해시함수에 통과시켜 축약 메시지를 만들어 낸다.
3. 축약된 메시지의 값이 복호화된 전자서명과 일치하는지 대조하여 전자서명을 검증한다.
전자서명 5가지 필수 원칙:
- 위조 불가 조건: 합법적인 서명자만이 전자문서에 대한 전자서명을 생성할 수 있음
- 서명자 인증 조건: 전자서명의 서명자를 누구든지 검증할 수 있음
- 부인 불가 조건: 서명자는 서명 후에 자신의 서명 사실을 부인할 수 없음
- 변경 불가 조건: 서명한 문서의 내용은 변경할 수 없음
- 재사용 불가 조건: 전자문서의 서명은 다른 전자문서의 서명으로 사용될 수 없음
Creation of Trust
Certification Authority (CA)로 부터 인증 완료된 public key를 받는 행위
Certification Authority (인증기관): 디지털 서명을 이용한 전자상거래 등에 있어서 누구나가 객관적으로 신뢰할 수 있는 제 3자를 의미한다.
구현 방식으로는 Direct Trust, Web of Trust, Hierarchical Trust 가 존재하는데 Hierarchial Trust 방법을 채택하는 경우가 대다수이다.
Public Key Infrastructure (PKI)
공개키 기반 구조.
-
공인된 인증기관이 인터넷상에서 사용자간에 법적 효력이 있는 인증서를 전자적으로 분배, 전달, 제공함으로써 비인가된 자로부터 개인 정보보호, 전자상거래 위변조 방지 등을 할 수 있게 한다.
-
목적: 누구나 안전하게, 편리하게, 효율적으로 공개키를 휙득 사용하게 하는 것
PKI 주요 구성 요소
- 인증서 (Certificate)
- 인증기관 (Certification Authority)
- Issues certificates and signs them
- Publishes current certificates
- Creates and publishes lists of invalid certificates, Certificate Revocation
List (CRL)
- Provides Online Certificate Status Protocol (OCSP) for clients
- 등록기관 (Registration Authority)
- 소유자와 공개키가 연결이 잘 되도록 해준다
- 저장소 (Repository)
- 인증서 관리 시스템
- 사용자
- Timestamp
- 유효기간, 등등
- Personalization
- Transmission of keys (secret key) and certificates
인증서 (Certificates)
공개키나 공개키 관련 정보를 포함한다.
인증서 계층구조 (Certificate Hierarchies)
- 상위 CA는 하위 CA에게 인증서 제공한다.
- Root CA는 최상위 CA이다. ex. Regulatory Authority for Telecommunications
- 인증서 유효성 검사 -> 인증 경로