X.509 인증서
ITU-T 권고안 X.509는 디렉터리 서비스를 정의하는 권고안 X.500 시리즈의 한 부분
X.509
- X.509는 인증 서비스의 구조를 규정합니다
- 공개 키 암호와 디지털 서명을 이용해서 만들어졌습니다
- 해당 표준에서는 특정 디지털 서명 알고리즘/해시 함수 사용을 명시하지 않습니다
디렉터리
- 사용자 정보 데이터베이스를 관리하는 하나의 서버 또는 분산 서버 집단
- 공개키 인증서의 저장소로 이용
- IT 센터 등에서 컴퓨터 안에 들어가야 할 소프트웨어 정보들을 관리 할 때 디렉터리를 사용한다
X.509 형식
X.509 구조의 핵심은 각 사용자와 연관 된 공개 키 인증서이다.
해당 사용자 인증서(공개 키 인증서)는 CA가 만들고, CA나 사용자가 디렉터리에 올린다
디렉터리 서버 자체는 공개 키 작성이나 인증 기능에는 관여하지 않는다
오직 사용자가 인증서를 쉽게 찾을 수 있도록 잘 정리해 놓을 뿐이다
필드
- 버전 : 인증서 형식을 구별하기 위해 버전 번호를 붙인다
- 버전 1 : 디폴트
- 버전 2 : 발행자 유일 식별자나 주체 유일 식별자를 포함 할 경우
- 버전 3 : 한 개 혹은 여러 개의 확장을 포함했을 경우
- 일련 번호 : CA가 발행한 인증서의 일련 번호
- 서명 알고리즘 식별자 : 인증서 서명에 사용된 알고리즘과 매개 변수
- 인증서에 끝 부분에 있는 서명 필드에 반복해서 나타난다
- 그닥 쓸모 있진 않다
- 발행 자 이름 : 인증서를 발행한 CA의 이름
- 유효 기간 : 인증서가 유효한 시작일과 만료일 날짜로 구성
- 주체 이름 : 이 인증서가 인증하는 사용자의 이름
- 인증서는 공개 키와 대응 되는 개인 키를 소지하고 있는 주체의 공개 키를 인증
- 보내는 사람 인증한다는 이야기다
- 인증서는 공개 키와 대응 되는 개인 키를 소지하고 있는 주체의 공개 키를 인증
- 주체의 공개 키 정보 : 주체의 공개 키와 이 키를 사용하는 알고리즘 식별자, 연관 매개 변수
- 발행자/줒체 유일 식별자(Optional) : 비트열 필드
- 다른 개체가 X.500 이름을 재사용 할 때 구별하는데 사용
- 확장 : 한 개 혹은 여러 확장 필드의 집합
- 버전 3에서 확장을 추가 했다
- 서명 : 인증서의 나머지 필드 전체를 보호
- 다른 필드 전체에 해시 함수를 적용해서 얻어진 해시 코드 포함
- 이 코드를 CA의 개인 키로 암호화
- 이 필드는 서명 알고리즘 식별자를 포함한다
인증서 표현하는 방법
사용자 인증서 얻기
CA가 발행하는 사용자 인증서의 특징
- CA 공개 키를 얻은 사용자는 특정 사용자의 인증된 공개 키를 사용 할 수 있다.
- 인증 기관을 제외한 어느 누구도 들키지 않게 인증서를 변경 할 수 없다
인증서 체인
인증서 체인이 가능한 이유
- 사용자 그룹이 대규모일 경우 모든 사용자가 한 CA에 가입하는 것이 현실적으로 어렵다
- CA의 공개키는 무결성과 인증이 갖춰진 상태에서 공유 되어 사용자는 인증서 신뢰 가능
- 즉 각각의 CA가 자신의 공개 키를 제공 할 수 있다면, CA는 여러 개 두는게 실용적임
X.509 계층 구조
- 순방향 인증서
- 다른 CA에 의해 생성된 X의 인증서
- 역방향 인증서
- X가 생성한 다른 CA 인증서
- 인증서 얻는 예시
인증서 취소
인증서의 유효 기간이 포함 되어 있기 때문에, 일반적으로 기존의 인증서 유효기간이 만료되기 직전에 새 인증서가 발행 된다
하지만, 취소해야 하는 경우도 생기는 법
- 사용자 개인 키가 노출되었거나 훼손 된 것으로 여겨 질 때
- CA가 더 이상 인증을 해줄 수 없을 때
- CA의 인증서가 노출, 훼손 되었을 때
취소 인증서 목록(CRL:Certificate Revocation List)
- 각 CA는 취소 했지만 유효기간이 아직 끝나지 않은 인증서 목록 보관
- 취소된 인증서들은 사용자에게 발행한 것과 다른 CA들에게 발행한 것 모두 포함
- 취소 목록은 디렉터리에 공개 되어 있음
사용자는 인증서를 수신 할 때 디렉터리를 조회해서, 취소 여부를 확인 할 수 있다.
취소 인증서 목록 사항
- 발행자 이름
- 목록 작성 일자
- 다음 번 CRL을 발표할 일자
- 취소된 인증서 항목
X.509 버전 3
버전 2의 약점
- 신원 정보 결여
- 주체 필드가 키 소유자 신원을 전달하기에 부적합
- 자세한 신원 정보가 결여
- 주체 필드의 수용 능력 부족
- 개체를 이메일 주소, URL 혹은 다른 형태의 인터넷 관련 신원을 통해 인식하기에 부적합
- 보안 정책 정보 표시 필요
- IPSec 같은 보안 응용 프로그램이나 보안 기능이 X.509 인증서를 주어진 정책에 사용 할 수 있게 하기 위함
- CA에 대한 견제 기능 필요
- 특정 인증서 사용에 제약 조건을 설치하여 악의가 있는 CA에 의해 유발 되는 피해를 줄임
- 시간 별 사용하는 키 구별이 필요
- 키 소유자가 다른 시간에 사용하는 다른 키를 구별하는 능력 필요
- 이 기능은 키의 수명 관리를 지원
- 특히 사용자와 CA의 키 쌍을 정기적, 예외적인 환경하에서 갱신 가능
인증서 확장은 아래 3가지 부류 중 하나에 속한다.
- 키와 정책 정보
- 주체와 발행자 속성
- 인증 경로 제약 조건
키와 정책 정보
- 주체와 발행자 키에 관한 추가적인 정보,인증서 정책 표시자를 처리
- 인증서를 특정 집단이나 일상적인 보안 사항을 요구하는 응용 프로그램 집단에 적용할 수 있는지 없는지를 판단
포함되는 내용
- 기관 키 식별자(Authority key identifier):
- 주체 키 식별자(Subject key identifier):
- 키 용도(Key usage):
- 개인키 유효기간(Private-key usage period):
- 인증서 정책(Certificate policies):
- 정책 매핑(Policy mapping)
인증서 주체와 발행자 속성
인증서 주체나 다른 형식을 갖는 인증서 발행자의 대체 이름을 지원한다
- 주체 대체 이름(Subject alternative name):
- 발행자 대체 이름(Issuer alternative name):
- 주체 디렉터리 속성(Subject directory attributes):
인증 경로 제약 조건
다른 CA에 의해 CA에게 발행 된 인증서 안에 제약 조건을 포함 할 수 있게 한다
- 기본 제약(Basic constraints):
- 이름 제약(Name constraints):
- 정책 제약(Policy constraints):
728x90
'Computer Science > Security' 카테고리의 다른 글
확장 인증 프로토콜(EAP) (0) | 2023.04.12 |
---|---|
네트워크 접근 통제 (0) | 2023.04.12 |
Kerberos (0) | 2023.04.11 |
Kerberos 5 (0) | 2023.04.11 |
Kerberos 4 (0) | 2023.04.11 |