해시·전자서명·PKI
암호학의 두 번째 큰 축인 해시, 전자서명, PKI를 정리합니다.
암호학의 두 번째 큰 축인 해시, 전자서명, PKI를 정리합니다.
대칭키 암호 = 같은 키 사용, 빠름, 대량 데이터 암호화
공개키 암호 = 공개키·개인키 사용, 키 교환과 전자서명에 활용
하이브리드 암호 = 공개키로 대칭키를 교환하고 실제 데이터는 대칭키로 암호화이번 절은 정보보안기사 필기와 실기에서 모두 중요합니다. 특히 실기에서는 다음 형태로 자주 나올 수 있습니다.
해시 함수의 특징과 용도를 설명하시오.
암호화와 해시의 차이를 설명하시오.
MAC과 전자서명의 차이를 설명하시오.
전자서명이 제공하는 보안 속성을 설명하시오.
PKI의 구성요소와 역할을 설명하시오.
CRL과 OCSP의 차이를 설명하시오.
HTTPS 인증서 검증 절차를 설명하시오.학습 목표
이번 절가 끝나면 다음 질문에 답할 수 있어야 합니다.
| 질문 | 목표 |
|---|---|
| 해시 함수란 무엇인가? | 임의 길이 데이터를 고정 길이 해시값으로 변환하는 일방향 함수라고 설명 |
| 해시의 주요 특징은? | 일방향성, 고정 길이 출력, 충돌 저항성, 무결성 검증을 설명 |
| MD5와 SHA-1은 왜 주의해야 하는가? | 충돌 취약성 때문에 안전한 용도로 사용하지 않는다고 설명 |
| SHA-2와 SHA-3는 무엇인가? | 대표적인 안전한 해시 계열이라고 설명 |
| 비밀번호 저장에 해시를 어떻게 쓰는가? | 솔트와 느린 비밀번호 해시 방식을 함께 사용한다고 설명 |
| MAC과 HMAC은 무엇인가? | 비밀키 기반으로 메시지 무결성과 인증을 제공한다고 설명 |
| 전자서명이란 무엇인가? | 개인키로 서명하고 공개키로 검증하는 기술이라고 설명 |
| 전자서명이 제공하는 속성은? | 인증, 무결성, 부인방지를 설명 |
| 인증서란 무엇인가? | 공개키와 신원 정보를 CA가 보증한 전자 문서라고 설명 |
| PKI란 무엇인가? | 공개키 신뢰를 관리하는 기반 구조라고 설명 |
| CA와 RA의 차이는? | CA는 인증서 발급·서명, RA는 신원 확인·등록 업무라고 설명 |
| CRL과 OCSP의 차이는? | 인증서 폐지 여부 확인 방식의 차이로 설명 |
| 인증서 검증 절차는? | 유효기간, 도메인, 신뢰 체인, 서명, 폐지 여부 등을 확인한다고 설명 |
학습 내용의 큰 그림
이번 절에서 다룰 내용을 한 줄로 연결하면 다음과 같습니다.
해시는 데이터가 바뀌었는지 확인하고,
전자서명은 누가 보냈는지와 바뀌지 않았는지를 증명하며,
PKI는 공개키와 인증서를 신뢰할 수 있게 관리하는 체계이다.세 기술의 관계는 다음과 같습니다.
| 기술 | 핵심 역할 | 제공 속성 |
|---|---|---|
| 해시 | 데이터 지문 생성 | 무결성 |
| MAC/HMAC | 비밀키로 메시지 인증값 생성 | 무결성, 메시지 인증 |
| 전자서명 | 개인키로 서명, 공개키로 검증 | 인증, 무결성, 부인방지 |
| 인증서 | 공개키와 신원 정보 보증 | 공개키 신뢰 |
| PKI | 인증서 발급·검증·폐지 체계 | 신뢰 관리 |
해시 함수
해시 함수란?
해시 함수는 임의 길이의 데이터를 고정 길이의 해시값으로 변환하는 함수입니다.
시험식 정의는 다음입니다.
해시 함수는 임의 길이의 입력 데이터를 고정 길이의 해시값으로 변환하는 일방향 함수로, 데이터 무결성 검증과 비밀번호 저장 등에 사용된다.핵심 의미는 다음과 같다.
해시 = 데이터의 지문예를 들어 파일 내용이 조금만 바뀌어도 해시값은 크게 달라집니다.
원본 파일 → 해시 함수 → 해시값 A
변조 파일 → 해시 함수 → 해시값 B
A와 B가 다르면 파일이 변경된 것으로 판단해시 함수의 주요 특징
해시 함수의 시험 포인트는 네 가지입니다.
일방향성
고정 길이 출력
충돌 저항성
눈사태 효과| 특징 | 의미 |
|---|---|
| 일방향성 | 해시값으로 원문을 알아내기 어려움 |
| 고정 길이 출력 | 입력 길이와 관계없이 일정한 길이의 해시값 생성 |
| 충돌 저항성 | 서로 다른 입력이 같은 해시값을 갖기 어려움 |
| 눈사태 효과 | 입력이 조금만 바뀌어도 해시값이 크게 달라짐 |
실기형 답안에서는 이렇게 쓰면 됩니다.
해시 함수는 임의 길이의 데이터를 고정 길이 해시값으로 변환하는 일방향 함수이다. 원문이 조금만 변경되어도 해시값이 달라지므로 데이터 무결성 검증에 활용되며, 안전한 해시 함수는 원문 추정과 충돌 생성이 어려워야 한다.해시 함수의 보안 성질
해시 함수의 보안 성질은 조금 더 정확하게 세 가지로 볼 수 있습니다.
| 보안 성질 | 의미 |
|---|---|
| 역상 저항성 | 해시값이 주어졌을 때 원문을 찾기 어려움 |
| 제2역상 저항성 | 특정 원문과 같은 해시값을 갖는 다른 원문을 찾기 어려움 |
| 충돌 저항성 | 서로 다른 두 입력이 같은 해시값을 갖도록 찾기 어려움 |
정보보안기사에서는 보통 “충돌 저항성”을 가장 많이 봅니다.
충돌 = 서로 다른 입력값이 같은 해시값을 갖는 상황충돌이 쉽게 만들어지면 문제가 됩니다.
공격자가 정상 파일과 같은 해시값을 갖는 악성 파일을 만들 수 있기 때문입니다.
해시 함수의 용도
해시 함수는 여러 곳에 사용됩니다.
| 용도 | 설명 |
|---|---|
| 파일 무결성 검증 | 다운로드 파일이 변조되었는지 확인 |
| 비밀번호 저장 | 원문 비밀번호 대신 해시값 저장 |
| 전자서명 | 메시지 전체 대신 해시값에 서명 |
| MAC/HMAC | 메시지 무결성과 인증 |
| 블록체인 | 데이터 연결과 위변조 확인 |
| 인증서 지문 | 인증서 식별과 검증 보조 |
중요한 구분은 다음입니다.
해시 단독 = 무결성 확인
HMAC = 무결성 + 메시지 인증
전자서명 = 무결성 + 인증 + 부인방지MD5, SHA-1, SHA-2, SHA-3
MD5
MD5는 과거에 많이 사용된 해시 함수입니다.
하지만 현재는 충돌 취약성이 알려져 보안 목적으로 사용하면 안 됩니다.
MD5는 충돌 취약성이 알려진 오래된 해시 함수로, 무결성 검증이나 전자서명 등 보안 목적에는 사용하지 않는 것이 바람직하다.SHA-1
SHA-1도 과거에 널리 사용되었지만, 현재는 충돌 취약성 때문에 안전한 해시로 보지 않습니다.
SHA-1은 과거 널리 사용되었으나 충돌 공격 위험으로 인해 전자서명이나 인증서 등 보안 목적에는 사용을 지양해야 한다.SHA-2
SHA-2는 현재 널리 사용되는 안전한 해시 계열입니다.
대표 예시는 다음입니다.
SHA-224
SHA-256
SHA-384
SHA-512시험에서는 특히 SHA-256을 자주 봅니다.
SHA-256 = SHA-2 계열의 대표적인 해시 함수SHA-3
SHA-3는 SHA-2와 다른 구조를 가진 해시 표준 계열입니다.
시험 수준에서는 이렇게 기억하면 됩니다.
SHA-3는 SHA-2와 함께 사용 가능한 안전한 해시 함수 계열이다.해시 알고리즘 정리
| 알고리즘 | 상태 | 시험 포인트 |
|---|---|---|
| MD5 | 안전하지 않음 | 충돌 취약성 |
| SHA-1 | 안전하지 않음 | 충돌 취약성 |
| SHA-2 | 사용 가능 | SHA-256, SHA-512 등 |
| SHA-3 | 사용 가능 | SHA-2와 다른 구조의 안전한 해시 계열 |
시험에서 가장 중요한 문장은 다음입니다.
MD5와 SHA-1은 충돌 취약성이 있어 보안 목적 사용을 지양하고, SHA-2 또는 SHA-3 계열을 사용하는 것이 바람직하다.암호화와 해시의 차이
이 부분은 반복해서 중요합니다.
| 구분 | 암호화 | 해시 |
|---|---|---|
| 목적 | 기밀성 보호 | 무결성 검증, 비밀번호 저장 |
| 복원 가능성 | 키가 있으면 복호화 가능 | 원칙적으로 원문 복원 불가 |
| 키 사용 | 일반적으로 키 사용 | 일반 해시는 키 없음 |
| 결과 | 암호문 | 해시값 |
| 예시 | AES, RSA | SHA-256, SHA-3 |
암호화는 기밀성 보호를 위해 평문을 암호문으로 변환하고 올바른 키로 복호화할 수 있는 방식이다. 반면 해시는 임의 길이 데이터를 고정 길이 해시값으로 변환하는 일방향 함수로, 원칙적으로 원문 복원이 불가능하며 무결성 검증과 비밀번호 저장에 활용된다.비밀번호 저장과 해시
비밀번호를 암호화하지 않고 해시하는 이유
비밀번호는 원문을 복구할 필요가 없습니다.
로그인할 때는 사용자가 입력한 비밀번호를 다시 해시해서 저장된 해시값과 비교하면 됩니다.
회원가입 시:
비밀번호 + 솔트 → 해시값 저장
로그인 시:
입력 비밀번호 + 동일 솔트 → 해시값 계산
저장된 해시값과 비교따라서 비밀번호는 복호화 가능한 암호화보다 일방향 해시 저장이 더 적절합니다.
비밀번호는 서버가 원문을 복원할 필요가 없으므로 평문이나 복호화 가능한 암호문으로 저장하지 않고, 솔트를 적용한 일방향 해시값으로 저장해야 한다. 로그인 시 입력 비밀번호를 동일한 방식으로 해시하여 저장된 해시값과 비교하면 된다.솔트
솔트란?
솔트는 비밀번호 해시 계산 시 함께 사용하는 임의의 값입니다.
솔트는 비밀번호 해시 계산 시 함께 사용하는 사용자별 임의 값으로, 동일한 비밀번호라도 서로 다른 해시값이 생성되도록 한다.user01: password123 + saltA → hashA
user02: password123 + saltB → hashB두 사용자가 같은 비밀번호를 사용해도 해시값이 달라집니다.
솔트의 효과
| 효과 | 설명 |
|---|---|
| 동일 비밀번호 식별 방지 | 같은 비밀번호라도 다른 해시값 생성 |
| 레인보우 테이블 공격 완화 | 미리 계산된 해시 테이블 사용 어려움 |
| 사전 공격 비용 증가 | 사용자별 솔트 때문에 다시 계산 필요 |
| 대량 유출 피해 완화 | 같은 비밀번호 사용자 식별 어려움 |
솔트는 비밀일 필요는 없지만 사용자별로 고유하고 충분히 무작위여야 한다.비밀번호 해시에 단순 SHA-256만 쓰면 충분한가?
비밀번호 저장에서는 일반 해시 함수만으로는 부족할 수 있습니다.
이유는 일반 해시 함수가 너무 빠르기 때문입니다.
공격자가 해시값을 탈취하면, 빠른 해시 계산으로 많은 비밀번호 후보를 대입할 수 있습니다.
따라서 비밀번호 저장에는 다음과 같은 느린 비밀번호 해시 또는 키 유도 함수를 사용합니다.
PBKDF2
bcrypt
scrypt
Argon2시험 수준에서는 이름을 모두 깊게 외우기보다 다음 개념을 기억하면 됩니다.
비밀번호 저장에는 솔트와 함께 반복 연산 또는 느린 해시 방식을 사용하여 오프라인 추측 공격 비용을 높이는 것이 바람직하다.비밀번호 저장 시 단순 해시만 사용하면 공격자가 탈취한 해시값에 대해 빠르게 사전 공격이나 무차별 대입을 수행할 수 있다. 따라서 사용자별 솔트와 PBKDF2, bcrypt, scrypt, Argon2 같은 느린 비밀번호 해시 방식을 사용하여 오프라인 추측 공격 비용을 높여야 한다.MAC
MAC이란?
MAC은 Message Authentication Code입니다.
한국어로는 메시지 인증 코드입니다.
시험식 정의는 다음입니다.
MAC은 메시지와 송수신자가 공유한 비밀키를 이용해 생성하는 값으로, 메시지의 무결성과 송신자 인증을 확인하는 데 사용된다.MAC = 비밀키를 아는 사람이 만든 메시지 검증값MAC은 메시지가 변조되지 않았고, 같은 비밀키를 가진 주체가 만든 것임을 확인할 수 있습니다.
MAC의 제공 속성
| 속성 | 제공 여부 |
|---|---|
| 무결성 | 제공 |
| 메시지 인증 | 제공 |
| 부인방지 | 일반적으로 제공하지 않음 |
| 기밀성 | 제공하지 않음 |
MAC은 메시지를 숨기지는 않습니다.
내용을 숨기려면 별도 암호화가 필요합니다.
HMAC
HMAC이란?
HMAC은 Hash-based Message Authentication Code입니다.
HMAC은 해시 함수와 공유 비밀키를 결합하여 메시지의 무결성과 인증을 제공하는 MAC 방식이다.메시지 + 비밀키 → HMAC 값수신자는 같은 비밀키로 HMAC 값을 다시 계산해 비교합니다.
HMAC 값 일치 → 메시지 변조 없음, 같은 키를 가진 주체가 생성
HMAC 값 불일치 → 변조 또는 인증 실패HMAC 사용 예
HMAC은 API 요청 검증에서 자주 사용됩니다.
예를 들어 API 요청에 다음을 포함할 수 있습니다.
요청 파라미터
Timestamp
Nonce
HMAC 서명값서버는 같은 비밀키로 HMAC을 계산해 요청이 변조되지 않았는지 확인합니다.
HMAC은 메시지와 공유 비밀키를 해시 함수와 결합하여 생성하는 메시지 인증 코드로, 메시지 무결성과 송신자 인증을 제공한다. API 요청 검증에서는 요청 파라미터, Timestamp, Nonce 등에 대해 HMAC 값을 생성하고 서버가 이를 검증하여 위변조와 재전송 공격을 줄일 수 있다.MAC/HMAC과 전자서명의 차이
MAC과 전자서명은 둘 다 무결성과 인증을 제공할 수 있어 헷갈립니다.
| 구분 | MAC/HMAC | 전자서명 |
|---|---|---|
| 키 구조 | 공유 비밀키 | 개인키·공개키 |
| 생성자 | 같은 비밀키를 가진 주체 | 개인키 소유자 |
| 검증자 | 같은 비밀키를 가진 주체 | 공개키를 가진 누구나 |
| 무결성 | 제공 | 제공 |
| 인증 | 제공 | 제공 |
| 부인방지 | 일반적으로 어려움 | 제공 |
| 속도 | 빠름 | 상대적으로 느림 |
왜 MAC은 부인방지가 약할까요?
MAC은 송신자와 수신자가 같은 비밀키를 공유한다.
따라서 둘 중 누가 MAC을 만들었는지 제3자에게 증명하기 어렵다.전자서명은 개인키 소유자만 서명할 수 있으므로 부인방지를 제공합니다.
MAC/HMAC은 송수신자가 공유한 비밀키로 메시지 인증값을 생성하여 무결성과 인증을 제공하지만, 같은 키를 공유하므로 제3자에게 누가 생성했는지 증명하기 어려워 부인방지를 제공하기 어렵다. 전자서명은 송신자의 개인키로 서명하고 공개키로 검증하므로 인증, 무결성, 부인방지를 제공한다.전자서명
전자서명이란?
전자서명은 송신자의 개인키로 서명하고, 송신자의 공개키로 검증하는 기술입니다.
전자서명은 송신자가 자신의 개인키로 메시지 또는 메시지 해시값에 서명하고, 수신자가 송신자의 공개키로 이를 검증하여 서명자 인증, 데이터 무결성, 부인방지를 제공하는 기술이다.전자서명 = 누가 보냈고, 바뀌지 않았고, 나중에 부인할 수 없음을 증명전자서명의 제공 속성
전자서명은 세 가지가 핵심입니다.
인증
무결성
부인방지| 속성 | 의미 |
|---|---|
| 인증 | 서명자가 누구인지 확인 |
| 무결성 | 서명 후 데이터가 변경되지 않았는지 확인 |
| 부인방지 | 서명자가 나중에 서명 사실을 부인하지 못함 |
시험에서 매우 중요합니다.
전자서명 = 인증 + 무결성 + 부인방지전자서명 과정
전자서명은 보통 메시지 전체가 아니라 메시지의 해시값에 서명합니다.
흐름은 다음과 같습니다.
1. 송신자가 메시지를 작성한다.
2. 메시지의 해시값을 계산한다.
3. 송신자의 개인키로 해시값에 서명한다.
4. 메시지와 서명값을 수신자에게 보낸다.
5. 수신자는 메시지의 해시값을 다시 계산한다.
6. 송신자의 공개키로 서명값을 검증한다.
7. 두 해시값이 일치하면 무결성과 서명자 인증이 확인된다.개인키로 서명
공개키로 검증전자서명과 암호화의 차이
전자서명과 공개키 암호화를 헷갈리면 안 됩니다.
| 구분 | 공개키 암호화 | 전자서명 |
|---|---|---|
| 목적 | 기밀성 | 인증, 무결성, 부인방지 |
| 처리 | 수신자의 공개키로 암호화 | 송신자의 개인키로 서명 |
| 복원·검증 | 수신자의 개인키로 복호화 | 송신자의 공개키로 검증 |
| 질문 | 누가 볼 수 있는가? | 누가 보냈고 바뀌지 않았는가? |
공개키 암호화는 수신자의 공개키로 암호화하고 수신자의 개인키로 복호화하여 기밀성을 제공한다. 전자서명은 송신자의 개인키로 서명하고 송신자의 공개키로 검증하여 인증, 무결성, 부인방지를 제공한다.인증서
인증서란?
인증서는 공개키와 소유자 신원 정보를 인증기관이 보증한 전자 문서입니다.
인증서는 공개키와 소유자의 신원 정보를 인증기관이 전자서명하여 보증한 전자 문서이다.인증서 = 이 공개키가 정말 이 사람 또는 이 서버의 것이라고 보증하는 문서인증서에 포함되는 정보
인증서에는 보통 다음 정보가 포함됩니다.
| 항목 | 의미 |
|---|---|
| Subject | 인증서 소유자 정보 |
| Issuer | 인증서 발급자, 즉 CA |
| Public Key | 소유자의 공개키 |
| Serial Number | 인증서 일련번호 |
| Validity | 유효기간 |
| Signature Algorithm | 서명 알고리즘 |
| CA Signature | CA의 전자서명 |
| SAN | 도메인 이름 등 대체 이름 |
| Key Usage | 인증서 사용 목적 |
| Extended Key Usage | 서버 인증, 클라이언트 인증 등 세부 용도 |
HTTPS 인증서에서는 특히 도메인 이름이 중요합니다.
접속한 도메인과 인증서의 도메인이 일치해야 한다.CA
CA란?
CA는 Certificate Authority입니다.
한국어로는 인증기관입니다.
CA는 사용자나 서버의 신원을 확인하고, 공개키와 신원 정보를 포함한 인증서를 발급·서명·관리하는 신뢰 기관이다.CA의 주요 역할은 다음입니다.
| 역할 | 설명 |
|---|---|
| 인증서 발급 | 공개키와 신원 정보를 인증서로 발급 |
| 인증서 서명 | CA 개인키로 인증서에 전자서명 |
| 인증서 폐지 | 유출·오발급 등 문제 인증서 폐지 |
| CRL 발급 | 폐지된 인증서 목록 제공 |
| OCSP 응답 | 인증서 폐지 여부 실시간 확인 지원 |
| 신뢰 체계 유지 | 공개키와 신원 연결 보증 |
CA는 공개키가 누구의 것인지 신뢰할 수 있게 보증한다.RA
RA란?
RA는 Registration Authority입니다.
한국어로는 등록기관입니다.
RA는 인증서 발급 전 신청자의 신원 확인과 등록 업무를 수행하고, 그 결과를 CA에 전달하는 기관이다.RA = 신원 확인 담당
CA = 인증서 발급·서명 담당CA와 RA 비교
| 구분 | CA | RA |
|---|---|---|
| 이름 | 인증기관 | 등록기관 |
| 핵심 역할 | 인증서 발급·서명·폐지 관리 | 신청자 신원 확인·등록 |
| 키 사용 | CA 개인키로 인증서 서명 | 보통 인증서 서명은 하지 않음 |
| 시험 포인트 | 신뢰의 중심 | 등록과 검증 업무 |
CA는 공개키와 신원 정보를 포함한 인증서를 발급하고 자신의 개인키로 서명하여 신뢰를 보증하는 인증기관이다. RA는 인증서 발급 전 신청자의 신원 확인과 등록 업무를 수행하고, 확인 결과를 CA에 전달하는 등록기관이다.PKI
PKI란?
PKI는 Public Key Infrastructure입니다.
한국어로는 공개키 기반 구조입니다.
PKI는 공개키 암호를 안전하게 사용하기 위해 인증기관, 등록기관, 인증서, 인증서 저장소, 폐지 확인 체계 등을 통해 공개키와 사용자 신원을 관리하는 기반 구조이다.PKI = 공개키를 믿을 수 있게 만드는 신뢰 체계PKI 구성요소
| 구성요소 | 역할 |
|---|---|
| CA | 인증서 발급·서명·폐지 관리 |
| RA | 인증서 신청자 신원 확인 |
| 인증서 | 공개키와 신원 정보를 보증 |
| 인증서 저장소 | 인증서와 폐지 정보 저장·배포 |
| CRL | 폐지된 인증서 목록 |
| OCSP | 인증서 폐지 여부 실시간 질의 |
| 가입자 | 인증서를 발급받는 주체 |
| 검증자 | 인증서를 신뢰하고 검증하는 주체 |
| 정책 | 인증서 발급·사용·폐지 기준 |
PKI가 필요한 이유
공개키 암호에서는 공개키가 진짜 누구의 것인지 확인해야 합니다.
공격자가 자신의 공개키를 은행 서버의 공개키라고 속이면 중간자 공격이 가능합니다.
PKI는 이를 막기 위해 다음을 제공합니다.
공개키와 신원 정보 연결
CA의 전자서명
인증서 신뢰 체인
폐지 여부 확인
인증서 정책 관리PKI는 공개키가 실제 소유자의 것인지 신뢰할 수 있도록 CA, RA, 인증서, CRL, OCSP 등을 통해 공개키와 신원 정보를 관리하는 체계이다. 이를 통해 공개키 위조와 중간자 공격 위험을 줄이고, 전자서명과 HTTPS 같은 공개키 기반 서비스를 안전하게 사용할 수 있다.인증서 체인
인증서 체인이란?
인증서 체인은 최종 서버 인증서부터 루트 CA 인증서까지 이어지는 신뢰 경로입니다.
일반적인 구조는 다음입니다.
루트 CA 인증서
→ 중간 CA 인증서
→ 서버 인증서브라우저는 서버 인증서를 바로 믿는 것이 아니라, 해당 인증서가 신뢰된 CA로 이어지는지 확인합니다.
루트 CA와 중간 CA
| 구분 | 설명 |
|---|---|
| 루트 CA | 최상위 신뢰 기관, 브라우저나 OS에 신뢰 앵커로 저장 |
| 중간 CA | 루트 CA가 서명한 하위 인증기관 |
| 서버 인증서 | 실제 웹사이트에 발급된 인증서 |
왜 중간 CA를 사용할까요?
루트 CA 개인키를 직접 자주 사용하면 위험하기 때문에 중간 CA를 통해 운영 위험을 줄인다.인증서 검증 절차
HTTPS 접속 시 브라우저는 인증서를 검증합니다.
검증 항목은 다음과 같습니다.
| 검증 항목 | 설명 |
|---|---|
| 신뢰 체인 | 신뢰된 루트 CA까지 연결되는지 확인 |
| 전자서명 | 인증서가 발급자의 공개키로 검증되는지 확인 |
| 유효기간 | 인증서가 만료되지 않았는지 확인 |
| 도메인 일치 | 접속 도메인과 인증서 SAN/CN이 일치하는지 확인 |
| 폐지 여부 | CRL 또는 OCSP로 폐지 여부 확인 |
| 사용 목적 | 서버 인증 용도로 사용 가능한지 확인 |
| 알고리즘 안전성 | 취약한 서명 알고리즘 사용 여부 확인 |
| 인증서 정책 | 필요한 정책 조건 충족 여부 확인 |
인증서 검증 시 신뢰된 루트 CA까지 인증서 체인이 연결되는지 확인하고, 각 인증서의 전자서명을 검증해야 한다. 또한 유효기간, 접속 도메인과 인증서의 도메인 일치 여부, CRL 또는 OCSP를 통한 폐지 여부, 인증서 사용 목적과 알고리즘 안전성을 확인해야 한다.인증서 폐지
인증서 폐지가 필요한 경우
인증서는 유효기간이 남아 있어도 폐지될 수 있습니다.
폐지 사유는 다음과 같습니다.
| 폐지 사유 | 설명 |
|---|---|
| 개인키 유출 | 인증서 신뢰 불가 |
| 인증서 오발급 | 잘못된 대상에게 발급 |
| 소유자 정보 변경 | 조직명, 도메인 등 변경 |
| 인증서 사용 중단 | 서비스 종료 |
| CA 정책 위반 | 발급 조건 위반 |
| 알고리즘 취약 | 더 이상 안전하지 않은 알고리즘 사용 |
폐지된 인증서를 계속 신뢰하면 공격자가 악용할 수 있습니다.
CRL
CRL이란?
CRL은 Certificate Revocation List입니다.
한국어로는 인증서 폐지 목록입니다.
CRL은 CA가 발급한 인증서 중 폐지된 인증서의 일련번호를 목록 형태로 제공하는 인증서 폐지 확인 방식이다.CRL = 폐지된 인증서 목록 파일CRL의 특징
| 특징 | 설명 |
|---|---|
| 방식 | 폐지된 인증서 목록 다운로드 |
| 장점 | 한 번 받아 여러 인증서 확인 가능 |
| 단점 | 목록이 커질 수 있음 |
| 단점 | 최신성 문제가 있을 수 있음 |
| 용도 | 인증서 폐지 여부 확인 |
OCSP
OCSP란?
OCSP는 Online Certificate Status Protocol입니다.
OCSP는 특정 인증서의 폐지 여부를 OCSP 서버에 실시간으로 질의하여 확인하는 프로토콜이다.OCSP = 이 인증서 아직 유효한가요? 라고 실시간으로 물어보는 방식OCSP의 특징
| 특징 | 설명 |
|---|---|
| 방식 | 특정 인증서 상태를 실시간 질의 |
| 장점 | CRL보다 필요한 정보만 확인 가능 |
| 장점 | 상대적으로 최신 상태 확인 가능 |
| 단점 | OCSP 서버 장애 시 확인 어려움 |
| 단점 | 접속 지연이나 개인정보 이슈 가능 |
CRL과 OCSP 비교
| 구분 | CRL | OCSP |
|---|---|---|
| 방식 | 폐지 목록 다운로드 | 특정 인증서 상태 실시간 질의 |
| 단위 | 여러 폐지 인증서 목록 | 개별 인증서 |
| 장점 | 오프라인 확인 가능성 | 필요한 인증서만 확인 |
| 단점 | 목록 크기 증가, 최신성 문제 | 서버 의존, 지연 가능 |
| 목적 | 인증서 폐지 여부 확인 | 인증서 폐지 여부 확인 |
CRL은 CA가 폐지된 인증서 목록을 배포하고 검증자가 이를 다운로드하여 확인하는 방식이다. OCSP는 특정 인증서의 폐지 여부를 OCSP 서버에 실시간으로 질의하는 방식으로, 필요한 인증서 상태만 확인할 수 있지만 OCSP 서버 가용성과 응답 지연 문제가 있을 수 있다.OCSP Stapling
OCSP Stapling은 서버가 미리 받은 OCSP 응답을 TLS 연결 시 클라이언트에게 함께 제공하는 방식입니다.
시험에서 깊게 다루는 비중은 낮지만, 기본 개념으로 정리한다.
OCSP Stapling = 서버가 OCSP 응답을 대신 첨부하여 클라이언트의 직접 OCSP 질의를 줄이는 방식효과는 다음과 같습니다.
| 효과 | 설명 |
|---|---|
| 성능 향상 | 클라이언트가 OCSP 서버에 직접 질의하지 않아도 됨 |
| 개인정보 보호 | 사용자가 어떤 사이트에 접속했는지 OCSP 서버가 알기 어려움 |
| 가용성 보완 | OCSP 응답을 미리 준비 |
HTTPS 인증서 신뢰 구조
HTTPS에서 인증서는 서버 신원을 확인하는 핵심 역할을 합니다.
흐름은 다음과 같습니다.
1. 사용자가 https://example.com에 접속한다.
2. 서버가 인증서를 제시한다.
3. 브라우저는 인증서의 도메인이 example.com과 일치하는지 확인한다.
4. 인증서가 신뢰된 CA 체인으로 이어지는지 확인한다.
5. 인증서 유효기간과 폐지 여부를 확인한다.
6. 인증서 서명을 검증한다.
7. 검증에 성공하면 서버를 신뢰하고 TLS 통신을 진행한다.HTTPS의 자물쇠 표시는 통신 구간이 암호화되고 인증서 검증이 성공했다는 의미이지, 해당 사이트의 모든 내용이 안전하다는 뜻은 아니다.예를 들어 HTTPS를 사용하는 피싱 사이트도 있을 수 있습니다.
따라서 도메인 신뢰와 서비스 자체의 신뢰를 구분해야 합니다.
HTTPS에서 브라우저는 서버 인증서가 신뢰된 CA로 이어지는지, 접속 도메인과 인증서 도메인이 일치하는지, 유효기간이 지나지 않았는지, 폐지되지 않았는지, 전자서명이 유효한지 확인한다. 검증에 성공하면 TLS를 통해 서버 인증과 암호화 통신을 수행할 수 있다.인증서 오류와 위험
인증서 검증 중 오류가 발생하면 사용자는 경고를 볼 수 있습니다.
대표 오류는 다음입니다.
| 오류 | 의미 |
|---|---|
| 만료된 인증서 | 유효기간이 지남 |
| 도메인 불일치 | 접속 도메인과 인증서 도메인이 다름 |
| 신뢰되지 않은 CA | 브라우저가 신뢰하지 않는 CA가 발급 |
| 자체 서명 인증서 | 공인된 신뢰 체인 없음 |
| 폐지된 인증서 | CRL/OCSP에서 폐지 확인 |
| 취약한 알고리즘 | 안전하지 않은 서명 알고리즘 사용 |
인증서 경고를 무시하면 중간자 공격이나 피싱 사이트에 노출될 수 있다.개인키 보호
PKI에서 가장 중요한 보안 요소 중 하나는 개인키 보호입니다.
개인키가 유출되면 심각한 문제가 발생합니다.
| 유출 대상 | 위험 |
|---|---|
| 서버 인증서 개인키 | 서버 위장, MITM 가능성 |
| 전자서명 개인키 | 서명 위조, 부인방지 훼손 |
| CA 개인키 | 대규모 인증서 신뢰 붕괴 |
| 사용자 인증서 개인키 | 사용자 신원 도용 |
개인키 보호 대책은 다음입니다.
암호화 저장
접근권한 제한
HSM 사용
백업 보호
키 사용 로그 기록
주기적 교체
유출 시 인증서 즉시 폐지개인키가 유출되면 전자서명 위조, 서버 위장, 중간자 공격 등이 가능하므로 안전하게 보호해야 한다. 이를 위해 개인키 암호화 저장, 접근권한 제한, HSM 사용, 백업 보호, 키 사용 로그 기록, 유출 시 인증서 폐지와 재발급을 수행해야 한다.자체 서명 인증서
자체 서명 인증서는 자신이 자신의 인증서에 서명한 인증서입니다.
자체 서명 인증서는 인증기관이 아닌 인증서 소유자가 자신의 개인키로 직접 서명한 인증서이다.자체 서명 인증서는 테스트나 내부 환경에서는 사용할 수 있지만, 외부 사용자가 신뢰하기 어렵습니다.
왜냐하면 제3자인 CA가 신원을 보증하지 않기 때문입니다.
자체 서명 인증서 = 암호화는 가능할 수 있지만, 신뢰된 신원 보증이 부족내용 연결 정리
사용자가 HTTPS 웹사이트에 접속한다고 가정해봅시다.
1. 서버는 인증서를 제시한다.
2. 인증서에는 서버 공개키와 도메인 정보가 들어 있다.
3. CA는 인증서에 전자서명하여 이 공개키가 해당 도메인의 것임을 보증한다.
4. 브라우저는 인증서 체인을 따라 신뢰된 루트 CA까지 검증한다.
5. 인증서 유효기간, 도메인 일치, 폐지 여부를 확인한다.
6. 검증이 성공하면 서버 공개키 또는 키 교환으로 안전한 세션키를 만든다.
7. 실제 데이터는 대칭키로 암호화되고, 무결성도 함께 검증된다.이 흐름에 이번 절에서 다룬 내용이 모두 들어 있습니다.
| 단계 | 관련 기술 |
|---|---|
| 데이터 지문 | 해시 |
| 인증서 서명 | 전자서명 |
| 공개키 신뢰 | PKI |
| 신원 보증 | CA |
| 폐지 확인 | CRL, OCSP |
| HTTPS 신뢰 | 인증서 체인 검증 |
| 개인키 보호 | 서버·CA 개인키 보호 |
시험에 나오는 포인트
| 주제 | 시험 포인트 |
|---|---|
| 해시 함수 | 일방향, 고정 길이, 무결성 |
| 충돌 | 서로 다른 입력이 같은 해시값 |
| MD5 | 충돌 취약, 보안 목적 지양 |
| SHA-1 | 충돌 취약, 보안 목적 지양 |
| SHA-2 | SHA-256 등 안전한 해시 계열 |
| SHA-3 | 안전한 해시 계열 |
| 비밀번호 저장 | 솔트 적용 해시, 느린 해시 방식 |
| 솔트 | 같은 비밀번호라도 다른 해시값 생성 |
| MAC | 비밀키 기반 무결성·인증 |
| HMAC | 해시와 비밀키 기반 MAC |
| MAC과 전자서명 | MAC은 부인방지 어려움, 전자서명은 부인방지 제공 |
| 전자서명 | 개인키로 서명, 공개키로 검증 |
| 전자서명 속성 | 인증, 무결성, 부인방지 |
| 인증서 | 공개키와 신원 정보를 CA가 보증 |
| CA | 인증서 발급·서명·폐지 관리 |
| RA | 신원 확인·등록 |
| PKI | 공개키 신뢰 관리 체계 |
| 인증서 체인 | 루트 CA, 중간 CA, 서버 인증서 |
| CRL | 폐지 목록 다운로드 |
| OCSP | 개별 인증서 상태 실시간 질의 |
| 인증서 검증 | 체인, 서명, 유효기간, 도메인, 폐지 여부 |
| 개인키 보호 | 유출 시 서명 위조, 서버 위장 가능 |
필기형 문제풀이
문제 1
해시 함수의 특징으로 가장 적절한 것은?
A. 임의 길이 데이터를 고정 길이 해시값으로 변환한다
B. 반드시 복호화가 가능하다
C. 공개키와 개인키를 사용한다
D. 네트워크 접근을 차단한다
해시 함수는 임의 길이 입력을 고정 길이 출력으로 변환하는 일방향 함수입니다.
정답 이유: 해시는 입력 길이와 관계없이 고정 길이 해시값을 만들며, 일반적인 암호화처럼 복호화하지 않는다. 오답 이유: B는 암호화의 복호화 가능성과 혼동한 설명이고, C는 공개키 암호의 키 구조이다. 해시는 기밀성 제공보다 무결성 확인에 주로 쓰인다.
문제 2
해시 함수의 주요 용도로 적절한 것은?
A. 서버 장애 시 서비스 가용성 보장
B. 데이터 무결성 검증
C. 네트워크 포트 번호 변경
D. 계정 권한 자동 승인
해시는 데이터 변경 여부를 확인하는 무결성 검증에 사용됩니다.
문제 3
MD5와 SHA-1에 대한 설명으로 적절한 것은?
A. 현재 전자서명용으로 가장 권장되는 해시이다
B. 대칭키 암호 알고리즘에 해당한다
C. 충돌 취약성이 있어 보안 목적 사용을 지양해야 한다
D. 인증서의 개인키를 의미한다
MD5와 SHA-1은 충돌 취약성이 알려져 보안 목적 사용을 지양해야 합니다.
문제 4
비밀번호 저장 방식으로 가장 적절한 것은?
A. 평문 저장
B. Base64 인코딩 저장
C. 사용자별 솔트를 적용한 비밀번호 해시 저장
D. URL Query String에 저장
비밀번호는 솔트와 느린 해시 방식을 적용해 저장하는 것이 바람직합니다.
정답 이유: 비밀번호는 원문 복원이 필요하지 않으므로 사용자별 솔트와 비밀번호 해시를 적용해 노출 피해를 줄인다. 오답 이유: Base64는 인코딩일 뿐 보안 저장 방식이 아니며, 평문과 URL 저장은 유출 시 즉시 악용될 수 있다. 해시 저장과 암호화 저장을 구분해야 한다.
문제 5
솔트의 효과로 적절한 것은?
A. 해시값을 원문 비밀번호로 복호화할 수 있게 한다
B. 인증서 폐지 여부를 실시간으로 확인한다
C. 공개키와 개인키를 한 쌍으로 생성한다
D. 동일한 비밀번호라도 서로 다른 해시값이 생성되도록 한다
솔트는 같은 비밀번호라도 사용자별 해시값이 달라지도록 합니다.
문제 6
HMAC의 설명으로 적절한 것은?
A. 해시 함수와 공유 비밀키를 이용해 메시지 무결성과 인증을 제공한다
B. 공개키와 개인키로 인증서를 발급한다
C. 파일을 압축한다
D. 사용자 화면을 디자인한다
HMAC은 비밀키와 해시 함수를 결합한 메시지 인증 코드입니다.
정답 이유: HMAC은 공유 비밀키와 해시 함수를 사용해 메시지 무결성과 송신자 인증을 확인한다. 오답 이유: B는 PKI와 인증서 발급의 설명이고, 단순 해시와 달리 HMAC은 비밀키가 필요하다. 전자서명처럼 공개키 기반 부인방지를 제공하는 방식은 아니다.
문제 7
MAC/HMAC이 전자서명과 다른 점으로 적절한 것은?
A. MAC/HMAC은 공개키 인증서만으로 생성된다
B. MAC/HMAC은 공유 비밀키를 사용하므로 부인방지를 제공하기 어렵다
C. MAC/HMAC은 메시지 무결성을 확인할 수 없다
D. MAC/HMAC은 암호문 압축을 주된 목적으로 한다
MAC/HMAC은 같은 비밀키를 공유하므로 제3자에게 누가 생성했는지 증명하기 어렵습니다.
정답 이유: MAC/HMAC은 송수신자가 같은 비밀키를 공유하므로 둘 중 누가 값을 만들었는지 외부 제3자에게 명확히 증명하기 어렵다. 오답 이유: 전자서명은 개인키로 서명하고 공개키로 검증하므로 부인방지에 적합하다. MAC/HMAC과 전자서명은 사용하는 키 구조와 법적 증명성에서 구분한다.
문제 8
전자서명의 제공 속성으로 올바른 것은?
A. 기밀성과 가용성만 제공
B. 압축, 인코딩, 라우팅
C. 인증, 무결성, 부인방지
D. IP 주소 변환과 포트 변경
전자서명은 인증, 무결성, 부인방지를 제공합니다.
문제 9
전자서명에서 서명 생성에 사용하는 키는?
A. 송신자의 공개키
B. 수신자의 공개키
C. CA의 루트 공개키
D. 송신자의 개인키
전자서명은 송신자의 개인키로 생성하고 송신자의 공개키로 검증합니다.
문제 10
인증서의 설명으로 적절한 것은?
A. 공개키와 소유자 신원 정보를 CA가 전자서명하여 보증한 전자 문서
B. 비밀번호를 평문으로 저장한 파일
C. 파일 업로드 검증 방식
D. 네트워크 장비의 MAC 주소
인증서는 공개키와 신원 정보를 신뢰할 수 있게 연결합니다.
문제 11
CA의 역할로 적절한 것은?
A. 해시값을 평문으로 복호화한다
B. 인증서를 발급하고 서명하며 폐지 정보를 관리한다
C. 서버 포트 번호를 자동으로 변경한다
D. 사용자 비밀번호를 평문으로 보관한다
CA는 인증서 신뢰 체계의 핵심입니다.
문제 12
RA의 역할로 적절한 것은?
A. 인증서를 직접 전자서명하는 최상위 기관이다
B. 폐지 인증서 목록만 배포한다
C. 인증서 발급 전 신청자의 신원 확인과 등록 업무를 수행한다
D. 해시값을 원문으로 복원한다
RA는 인증서 신청자의 신원 확인과 등록을 담당합니다.
정답 이유: RA는 인증서 발급 전 신청자의 신원과 등록 정보를 확인해 CA의 발급 업무를 보조한다. 오답 이유: 인증서에 최종 서명하고 폐지 정보를 관리하는 핵심 주체는 CA이다. RA와 CA는 등록 심사와 인증서 서명 권한으로 구분한다.
문제 13
CRL의 설명으로 적절한 것은?
A. 특정 인증서 상태를 온라인으로 질의하는 응답 프로토콜
B. 대칭키 블록암호의 운영모드
C. 인증서 신청자 신원을 등록하는 기관
D. 폐지된 인증서 목록
CRL은 Certificate Revocation List, 즉 폐지 인증서 목록입니다.
문제 14
OCSP의 설명으로 적절한 것은?
A. 특정 인증서의 폐지 여부를 실시간으로 질의하는 프로토콜
B. 블록암호 운영모드
C. 비밀번호 해시 함수
D. 웹서버 파일 업로드 기능
OCSP는 특정 인증서의 상태를 온라인으로 확인합니다.
정답 이유: OCSP는 검증자가 특정 인증서의 폐지 여부를 온라인으로 질의해 상태 응답을 받는 방식이다. 오답 이유: CRL은 폐지된 인증서 목록을 내려받아 확인하는 방식이다. OCSP는 특정 인증서 단위의 최신 상태 확인에 초점이 있다.
문제 15
HTTPS 인증서 검증 항목으로 적절하지 않은 것은?
A. 인증서 유효기간
B. 도메인 일치 여부
C. 신뢰된 CA 체인
D. 사용자 비밀번호의 복잡도
비밀번호 복잡도는 인증서 검증 항목이 아닙니다.
실기형 답안 훈련
실기 예제 1
문제: 해시 함수의 특징과 용도를 설명하시오.
좋은 답안
해시 함수는 임의 길이의 데이터를 고정 길이 해시값으로 변환하는 일방향 함수이다. 원문이 조금만 변경되어도 해시값이 달라지므로 데이터 무결성 검증에 활용되며, 비밀번호 저장 시에는 원문 대신 사용자별 솔트를 적용한 해시값을 저장하는 데 사용된다.채점 포인트
| 요소 | 포함 여부 |
|---|---|
| 임의 길이 입력 | 필요 |
| 고정 길이 출력 | 필수 |
| 일방향성 | 필수 |
| 무결성 검증 | 중요 |
| 비밀번호 저장 | 좋음 |
| 솔트 | 좋음 |
실기 예제 2
문제: 비밀번호 저장 시 솔트가 필요한 이유를 설명하시오.
좋은 답안
솔트는 비밀번호 해시 계산 시 함께 사용하는 사용자별 임의 값으로, 동일한 비밀번호라도 서로 다른 해시값이 생성되도록 한다. 이를 통해 레인보우 테이블 공격과 동일 비밀번호 사용자 식별을 어렵게 하고, 공격자가 사용자별로 해시를 다시 계산해야 하므로 사전 공격 비용을 증가시킬 수 있다.채점 포인트
| 요소 | 포함 여부 |
|---|---|
| 사용자별 임의 값 | 필수 |
| 같은 비밀번호도 다른 해시 | 필수 |
| 레인보우 테이블 완화 | 중요 |
| 사전 공격 비용 증가 | 중요 |
실기 예제 3
문제: MAC/HMAC과 전자서명의 차이를 설명하시오.
좋은 답안
MAC/HMAC은 송수신자가 공유한 비밀키를 이용해 메시지 인증값을 생성하여 무결성과 메시지 인증을 제공한다. 그러나 같은 비밀키를 양측이 공유하므로 제3자에게 누가 생성했는지 증명하기 어려워 부인방지를 제공하기 어렵고, 전자서명은 송신자의 개인키로 서명하고 공개키로 검증하므로 인증, 무결성, 부인방지를 제공한다.채점 포인트
| 요소 | 포함 여부 |
|---|---|
| MAC/HMAC = 공유 비밀키 | 필수 |
| 무결성·인증 | 필수 |
| 부인방지 어려움 | 중요 |
| 전자서명 = 개인키·공개키 | 필수 |
| 전자서명 = 부인방지 제공 | 중요 |
실기 예제 4
문제: 전자서명의 개념과 제공하는 보안 속성을 설명하시오.
좋은 답안
전자서명은 송신자가 자신의 개인키로 메시지 또는 메시지 해시값에 서명하고, 수신자가 송신자의 공개키로 이를 검증하는 기술이다. 이를 통해 서명자 인증, 데이터 무결성, 부인방지를 제공할 수 있다.채점 포인트
| 요소 | 포함 여부 |
|---|---|
| 개인키로 서명 | 필수 |
| 공개키로 검증 | 필수 |
| 인증 | 필수 |
| 무결성 | 필수 |
| 부인방지 | 필수 |
실기 예제 5
문제: PKI의 개념과 구성요소를 설명하시오.
좋은 답안
PKI는 공개키 암호를 안전하게 사용하기 위해 공개키와 사용자 신원을 인증서로 연결하고 이를 발급·검증·폐지하는 공개키 기반 구조이다. 주요 구성요소로는 인증서를 발급·서명하는 CA, 신청자 신원을 확인하는 RA, 인증서, 인증서 저장소, 폐지 목록인 CRL, 인증서 상태를 실시간 확인하는 OCSP 등이 있다.채점 포인트
| 요소 | 포함 여부 |
|---|---|
| 공개키와 신원 연결 | 필수 |
| 인증서 발급·검증·폐지 | 필수 |
| CA | 필수 |
| RA | 중요 |
| CRL·OCSP | 중요 |
| 인증서 저장소 | 좋음 |
실기 예제 6
문제: CRL과 OCSP의 차이를 설명하시오.
좋은 답안
CRL은 CA가 폐지된 인증서 목록을 배포하고 검증자가 이를 다운로드하여 인증서 폐지 여부를 확인하는 방식이다. OCSP는 특정 인증서의 폐지 여부를 OCSP 서버에 실시간으로 질의하는 방식으로, 필요한 인증서 상태만 확인할 수 있지만 OCSP 서버 가용성과 응답 지연 문제가 있을 수 있다.채점 포인트
| 요소 | 포함 여부 |
|---|---|
| CRL = 폐지 목록 | 필수 |
| OCSP = 실시간 질의 | 필수 |
| CRL 목록 크기·최신성 | 좋음 |
| OCSP 서버 의존성 | 좋음 |
실기 예제 7
문제: HTTPS 인증서 검증 절차를 설명하시오.
좋은 답안
HTTPS 접속 시 브라우저는 서버 인증서가 신뢰된 루트 CA까지 이어지는 인증서 체인을 갖는지 확인하고, 각 인증서의 전자서명을 검증한다. 또한 인증서 유효기간, 접속 도메인과 인증서 도메인의 일치 여부, CRL 또는 OCSP를 통한 폐지 여부, 인증서 사용 목적과 서명 알고리즘의 안전성을 확인한다.채점 포인트
| 요소 | 포함 여부 |
|---|---|
| 신뢰 체인 | 필수 |
| 전자서명 검증 | 필수 |
| 유효기간 | 중요 |
| 도메인 일치 | 중요 |
| 폐지 여부 | 중요 |
| 사용 목적·알고리즘 | 좋음 |
핵심 요약
| 개념 | 한 줄 요약 |
|---|---|
| 해시 함수 | 임의 길이 데이터를 고정 길이 해시값으로 변환 |
| 일방향성 | 해시값에서 원문을 찾기 어려움 |
| 충돌 저항성 | 서로 다른 입력의 같은 해시값을 찾기 어려움 |
| MD5 | 충돌 취약, 보안 목적 부적절 |
| SHA-1 | 충돌 취약, 보안 목적 지양 |
| SHA-2 | SHA-256 등 안전한 해시 계열 |
| SHA-3 | SHA-2와 다른 구조의 안전한 해시 계열 |
| 솔트 | 비밀번호 해시에 추가하는 사용자별 임의 값 |
| 비밀번호 해시 | 솔트와 느린 해시 방식 사용 |
| MAC | 비밀키 기반 메시지 인증 코드 |
| HMAC | 해시 함수와 비밀키 기반 MAC |
| 전자서명 | 개인키로 서명, 공개키로 검증 |
| 전자서명 속성 | 인증, 무결성, 부인방지 |
| 인증서 | 공개키와 신원 정보를 CA가 보증 |
| CA | 인증서 발급·서명·폐지 관리 |
| RA | 인증서 신청자 신원 확인 |
| PKI | 공개키 신뢰 관리 체계 |
| 인증서 체인 | 루트 CA, 중간 CA, 서버 인증서의 신뢰 경로 |
| CRL | 폐지된 인증서 목록 |
| OCSP | 특정 인증서 폐지 상태 실시간 질의 |
| 개인키 보호 | 유출 시 서명 위조, 서버 위장 가능 |
필수 암기 문장
아래 문장들은 필기와 실기 모두 중요합니다.
해시 함수는 임의 길이 데이터를 고정 길이 해시값으로 변환하는 일방향 함수로, 무결성 검증과 비밀번호 저장에 사용된다.
MD5와 SHA-1은 충돌 취약성이 있어 보안 목적 사용을 지양하고, SHA-2 또는 SHA-3 계열을 사용하는 것이 바람직하다.
비밀번호는 평문이나 단순 인코딩으로 저장하지 않고, 사용자별 솔트와 느린 비밀번호 해시 방식을 적용해 저장해야 한다.
솔트는 동일한 비밀번호라도 사용자마다 다른 해시값이 생성되도록 하여 레인보우 테이블 공격과 동일 비밀번호 식별을 어렵게 한다.
MAC/HMAC은 공유 비밀키를 이용해 메시지의 무결성과 인증을 제공하지만, 같은 키를 공유하므로 전자서명처럼 강한 부인방지를 제공하기는 어렵다.
전자서명은 송신자의 개인키로 서명하고 송신자의 공개키로 검증하며, 인증·무결성·부인방지를 제공한다.
공개키 암호화는 수신자의 공개키로 암호화하고 수신자의 개인키로 복호화하여 기밀성을 제공한다.
인증서는 공개키와 소유자의 신원 정보를 인증기관이 전자서명하여 보증한 전자 문서이다.
CA는 인증서를 발급·서명·폐지 관리하는 인증기관이고, RA는 인증서 신청자의 신원 확인과 등록 업무를 수행하는 기관이다.
PKI는 CA, RA, 인증서, CRL, OCSP 등을 통해 공개키와 신원 정보를 신뢰할 수 있게 관리하는 기반 구조이다.
CRL은 폐지된 인증서 목록을 다운로드해 확인하는 방식이고, OCSP는 특정 인증서의 상태를 실시간 질의하는 방식이다.
HTTPS 인증서 검증 시 신뢰 체인, 전자서명, 유효기간, 도메인 일치, 폐지 여부, 사용 목적을 확인해야 한다.
개인키가 유출되면 전자서명 위조, 서버 위장, 중간자 공격이 가능하므로 암호화 저장, 접근통제, HSM 사용 등으로 보호해야 한다.연습 과제
다음 문제를 풀고 정답 및 해설과 대조한다.
A. 단답형
1. 해시 함수란 무엇인가?
2. 해시 함수의 주요 특징 4가지를 쓰시오.
3. 충돌이란 무엇인가?
4. MD5와 SHA-1을 보안 목적에 사용하면 안 되는 이유는 무엇인가?
5. SHA-2 계열 해시 함수 예시 2가지를 쓰시오.
6. 암호화와 해시의 차이를 쓰시오.
7. 비밀번호 저장 시 해시를 사용하는 이유는 무엇인가?
8. 솔트란 무엇인가?
9. 솔트가 레인보우 테이블 공격 완화에 도움이 되는 이유는 무엇인가?
10. 단순 SHA-256만으로 비밀번호 저장이 충분하지 않을 수 있는 이유는 무엇인가?
11. MAC이란 무엇인가?
12. HMAC이란 무엇인가?
13. MAC/HMAC이 제공하는 보안 속성은 무엇인가?
14. MAC/HMAC이 전자서명처럼 부인방지를 제공하기 어려운 이유는 무엇인가?
15. 전자서명이란 무엇인가?
16. 전자서명이 제공하는 보안 속성 3가지를 쓰시오.
17. 전자서명에서 개인키와 공개키는 각각 어떻게 사용되는가?
18. 공개키 암호화와 전자서명의 차이를 쓰시오.
19. 인증서란 무엇인가?
20. 인증서에 포함되는 주요 정보 5가지를 쓰시오.
21. CA란 무엇인가?
22. RA란 무엇인가?
23. CA와 RA의 차이를 쓰시오.
24. PKI란 무엇인가?
25. PKI 구성요소 5가지를 쓰시오.
26. 인증서 체인이란 무엇인가?
27. CRL이란 무엇인가?
28. OCSP란 무엇인가?
29. CRL과 OCSP의 차이를 쓰시오.
30. HTTPS 인증서 검증 항목 5가지를 쓰시오.
31. 인증서 폐지가 필요한 경우 3가지를 쓰시오.
32. 개인키 보호가 중요한 이유는 무엇인가?B. 상황 매칭 문제
아래 상황에 적합한 암호 기술이나 개념을 쓴다.
33. 파일이 다운로드 중 변조되었는지 확인하고 싶다.
34. 서로 다른 두 파일이 같은 해시값을 갖도록 만들 수 있다면 문제가 된다.
35. 비밀번호 원문을 저장하지 않고 로그인 검증을 하고 싶다.
36. 같은 비밀번호를 쓰는 사용자들의 해시값이 모두 같게 나타난다.
37. API 요청 파라미터가 중간에서 변조되지 않았는지 비밀키로 검증하고 싶다.
38. 계약서 작성자가 나중에 서명 사실을 부인하지 못하게 하고 싶다.
39. 송신자의 개인키로 서명하고 공개키로 검증한다.
40. 공개키가 실제 서버의 것인지 신뢰할 수 있게 보증하고 싶다.
41. 인증서 신청자의 신원을 확인하는 기관이 필요하다.
42. 폐지된 인증서 목록을 내려받아 확인한다.
43. 특정 인증서가 폐지되었는지 실시간으로 확인한다.
44. 브라우저가 서버 인증서의 도메인과 접속 도메인이 일치하는지 확인한다.
45. 서버 인증서 개인키가 유출되어 더 이상 인증서를 신뢰할 수 없다.C. 실기형 답안 작성
다음 7문제는 2~3문장으로 답안을 작성한다.
46. 해시 함수의 특징과 용도를 설명하시오.
47. 비밀번호 저장 시 솔트가 필요한 이유를 설명하시오.
48. MAC/HMAC과 전자서명의 차이를 설명하시오.
49. 전자서명의 개념과 제공하는 보안 속성을 설명하시오.
50. PKI의 개념과 구성요소를 설명하시오.
51. CRL과 OCSP의 차이를 설명하시오.
52. HTTPS 인증서 검증 절차를 설명하시오.보완 학습 및 연습 과제 정답
인증서 검증 단계
HTTPS 인증서 검증은 다음 순서로 정리한다.
- 서버가 제시한 인증서 체인이 신뢰할 수 있는 루트 CA까지 이어지는지 확인한다.
- 각 인증서의 전자서명을 상위 CA 공개키로 검증한다.
- 인증서 유효기간이 현재 시점에 유효한지 확인한다.
- 접속 도메인이 SAN의 DNS 이름과 일치하는지 확인한다. CN만 보지 않는다.
- EKU에 서버 인증 등 사용 목적이 적절한지 확인한다.
- CRL 또는 OCSP로 폐지 여부를 확인한다. OCSP Stapling은 서버가 OCSP 응답을 함께 제공해 지연과 프라이버시 문제를 줄이는 방식이다.
- 알고리즘과 키 길이가 최신 기준에 적합한지 확인한다.
정답 및 해설
A. 단답형 예시 정답: 해시는 일방향 고정 길이 값이고 충돌 저항성이 중요하다. MD5와 SHA-1은 충돌 취약성 때문에 보안 목적 사용을 지양한다. 비밀번호 저장은 사용자별 솔트와 느린 해시를 적용한다. MAC/HMAC은 공유키 기반 무결성·인증이고 전자서명은 개인키 기반 인증·무결성·부인방지를 제공한다. 인증서는 공개키와 신원을 CA가 보증한 문서이며 PKI는 CA, RA, 인증서, 저장소, CRL, OCSP로 구성된다.
B. 상황 매칭 정답: 33 해시, 34 충돌, 35 비밀번호 해시, 36 솔트 누락, 37 HMAC, 38 전자서명, 39 전자서명 검증, 40 인증서, 41 RA, 42 CRL, 43 OCSP, 44 SAN 도메인 검증, 45 인증서 폐지와 재발급.
C. 실기형 채점 기준: 핵심 키워드는 충돌 저항성, 솔트, 느린 해시, MAC/HMAC, 전자서명, CA·RA, 체인 검증, SAN, EKU, 폐지 확인, OCSP Stapling이다. 부분점은 개념 30%, 절차 40%, 위험·주의점 20%, 최신 기준 확인 10%로 부여한다. 인증서 검증에서 도메인 일치나 폐지 확인을 빠뜨리면 감점한다.