인증과 전자서명
인증기술
인증 (Authentication)
- 특정 시스템 또는 사용자의 신원을 증명하는 (확인하는) 과정
인증시스템
- 인증을 하고자 하는 주체에 대해 식별을 수행하고
이에 대한 인증(Authentication & Authorization) 서비스를 부여하는 시스템
사용자 인증기술
-
정당한 사용자를 확인하는 과정
-
패스워드 기반
- 사용자 신원정보(이름, ID)와 함께 패스워드를 사용하여 서버에 저장된 값과 일치 여부를 판단하여 인증하는 방법
-
시도-응답
- 자기 자신만이 소유하고 있는 어떤 비밀 정보를 자신이 알고 있다는 사실을 간접적으로 보여주는 프로토콜
-
영지식 (Zero - Knowledge)
- 비밀정보를 실제로 알고 있다는 사실만을 상대방이나 서버에 확신시켜주는 방법
-
메시지 인증기술
-
송신자가 전송한 내용이 수신자에게 정보의 변경없이 전송되었는지를 상호 확인하는 과정
-
MAC (Message Authentication Code)
- 메시지 데이터와 무결성을 동시에 보증하는 것
-
MDC (Message Detection Code)
- 충돌성과 강한 충돌성을 동시에 만족하는 메시지의 대표적인 해시값을 제공하는 것 (조정탐지코드)
-
전자서명(Digital Signature)
- 문서 인증도구인 도장(인감도장)이나 수기 서명등과 같은 효력을 갖도록 디지털 정보로 구현한 것
-
인증 방법 - 사용자가 알고 있는 것 (What You Know)
- 패스워드, 개인식별번호(PIN), Pass Phrase
- 장점 : 원거리 신원 확인 가능, 비용 저렴
- 단점 : 망각, 추측 가능, 남에게 알려줌
인증 방법 - 사용자가 소유 하고 것 (What You Have)
- 열쇠, 카드, 신분증, 스마트카드, 공인인증서
- 장점 : 기억할 수 없을 만큼 긴 암호키 저장
- 단점 : 분실, 도난, 복제
인증 방법 - 사용자만의 고유한 특성 (What You Are)
- 지문, 망막, DNA, 목소리, 서명 (바이오 서명)
- 장점 : 분실 및 대여의 우려가 없음
- 단점 : 오류 발생 가능, 높은 가격
기타 인증 방법
-
사용자의 위치 기반 (Where You Are)
- 콜백
-
행위기반 인증
- 걸음걸이 모양, 습관이나 행위 등을 기반으로 한 인증
패스워드 기반 인증
: 사용자 -> 패스워드 : 신원정보 -> 서버
-
서버의 서비스를 제공받을 수 있는 가장 전통적인 개인 인증 방법
-
문제점
- 불법적인 도청
- 공격자의 쉬운 추측
- 패스워드를 보관하는 시스템 서버 파일 관리의 어려움
-
해결방법
- 암호화
- 보안 강화된 패스워드 사용 및 주기적으로 패스워드 변경
- 해시함수를 사용하여 보관
좋은 패스워드란?
- 기억하기 쉬움
- 공격자의 추측을 막을 수 있음
패스워드 설정 정책
-
최소 길이 규정
- 패스워드는 일반적으로 사용하는 문자의 길이가 길면 길수록 보안강도는 높아짐
- 반복되는 문자로 만드는 건 지양함
-
대문자, 숫자, 특수문자를 조합하여 사용함
- 추측해야만 하는 경우의 수를 많게 하여 보안강도를 높이는 방법
- 특수문자 + 대문자 + 숫자
-
추측하기 어려운 비밀번호
- 개인정보 일부가 들어가는 경우는 공격자가 추측하기 쉽기 때문에 지양함
- ID, 주민등록번호, 생일 등..
-
패스워드를 주기적으로 변경함
- 아무리 안전한 패스워드도 자주 사용하면 패스워드 노출에 대한 위험도가 증가함
- 패스워드 사용 빈도가 높을수록 주기적으로 패스워드를 변경해야함
-
동일 비밀번호 사용제한
- 2개의 비밀번호를 교대로 사용하지 않음
패스워드 추측 공격시 방어법
-
패스워드 기반 인증시스템에 개인의 패스워드를 추측하여 접속하려는 공격을 막는 효율적인 방법
-
패스워드 입력 시 정해진 횟수 이상 오류가 일어나면 자동으로 봉쇄하는 방법
- 패스워드의 특성상 본인의 망각 및 착오의 경우 불편할 수 있음 (ATM기 같은 경우)
-
정해진 횟수 이상 잘못된 패스워드를 사용시 일정 시간 봉쇄하거나 속도를 지연시키는 방법
- 3번의 잘못된 패스워드를 누른 경우 자동으로 봉쇄 후 일정시간 경과 후 다시 시도할 수 있는 기회를 줌 (핸드폰 잠금)
패스워드 기반 인증 기술 종류
고정 패스워드 기법
- 가장 일반적인 방법으로 고정된 패스워드를 사용하여 로그인하는 방법
- 사용자의 고정된 패스워드를 정해진 해시함수를 사용하여 해시값을 구하여 서버에 저장함
- 시스템에 로그온 시 입력된 ID와 패스워드의 해시값과 저장된 해당 ID의 해시값을 비교하여 인증 수행
일회용 패스워드 기법
- OTP (One Time Passwords)
- 통신 때마다 새로운 세션 패스워드를 생성하여 도청, 재전송 공격 등으로부터 안전하세 사용자를 인증하는 기법
- S/Key 일회용 패스워드 기법등..
- 유효기간이 없이 매 세션마다 서로 상이한 패스워드를 사용할 수 있음
- 특별 세션의 개인 식별 과정에서 해당 패스워드가 노출되어도 다음 세션에 사용될 패스워드를 예측할 수 없음
OTP 생성 방식
비동기화 방식
- OTP 토큰과 OTP 인증 서버 사이에 동기화되는 기준값이 없으며,
사용자가 직접 임의의 난수값을 OTP 토큰 값에 입력함으로써 OTP 값이 생성되는 방식
- 로그인 정보 전달 (사용자)
- 로그인 정보 확인 (서버)
- 질의값 전달 (서버 -> 사용자)
- 질의값을 토큰에 입력하여 OTP 생성 (사용자)
- 응답값 (사용자 -> 서버)
- 응닶갑과 비교하여 사용자 인증 (서버)
동기화 방식
- OTP 토큰과 OTP 인증 서버 사이에 동기화 되는 기준값에 따라 OTP값이 생성됨
- 시간동기화, 이벤트동기화, 시간-이벤트 조합방식이 있음
- 로그인 정보 전달 (사용자)
- 로그인 정보 확인 (서버)
- 동기화방식에 따라 OTP 생성 후 OTP 값 전달 (사용자 -> 서버)
- 응닶갑과 비교하여 사용자 인증 (서버)
Challenge-Response 기법
-
자기 자신만이 소유하고 있는 어떤 비밀 정보를 자신이 알고 있다는 사실을 간접적으로 보여주는
프로토콜을 사용하여 인증하는 기법 -
신분 증명을 요청하는 서버가 신분을 밝히라는 시도를 클라이언트에 보내면 클라이언트는
그 비밀 정보를 이용하여 적당하게 응답함으로써 서버에게 자신을 증명하여 인증 -
구체적으로 서버는 난수를 생성하여 Challenge 값을 클라이언트에게 보내고
Challenge 값을 암호화하여 Response로 대답함 -
서버는 이전에 암호화한 난수와 수신한 Response를 비교하여 클라이언트를 인증함
-
통신때마다 새로운 패스워드를 생성하여 사용하게 됨
- 로그인 정보 전달 (사용자)
- 로그인 정보 확인 후 난수 r를 선택 (서버)
- 난수 r (Challenge) 전달 (서버 -> 사용자)
- 비밀키 k를 사용하여 암호문 C = Ek(r) 생성 (사용자)
- 암호문 C (Response) 전달 (사용자 -> 서버)
- Dk(C) = r을 확인하여 인증함
E는 인코딩, D는 디코딩
전자서명
- 종래의 인감도장 또는 서명(Sign)처럼 개인의 고유성을 주장하고 인정 받기 위해 전자적 문서에 서명하는 방법
- 전자문서에 첨부되거나 논리적으로 결합되어 서명자를 확인하고 당해 전자문자의 내용에 대한
서명자의 승인을 나타내는데 이용될 수 있는 전자적인 형태의 정보 - 인증, 내용의 무결성, 서명을 만족해야함
- 전자 서명의 중요성 확대 (상업용 계약문서, 군사 분야의 지휘 서명, 전자 문서 결재)
- 전자 서명 = 사용자 인증 + 메시지 인증
인감과 전자 서명 차이
인감 : 종이문서 + 인감도장 날인
- 인감등록
- 인감증명서 발급
- 육안으로 인감증명서와 종이문서 비교확인
전자 서명 : 전자문서 + 전자 서명
- 전자 서명 검증키 등록
- 공인인증기관 전자 인증서 발급
- 전자 서명 알고리즘
- 해시 알고리즘
- 확인 검증
전자서명 특성
-
위조불가 (Unforgeable)
- 서명은 성명자 이외의 다른 사람이 생성할 수 없어야 함
-
사용자인증 (Authentic)
- 서명은 서명자의 의도에 따라 서명된 것임을 확인할 수 있어야 함
-
부인 방지 (Non-repudiation)
- 서명자가 자신이 서명한 사실을 부인할 수 없어야 함
-
변경 불가 (Unalterable)
- 서명한 문서의 내용을 변경할 수 없어야 함
-
재사용 불가 (Not Reusable)
- 하나의 문서의 서명을 다른 문서의 서명으로 사용할 수 없어야 함
전자 서명의 종류
-
간접 서명
- 제 3자를 통해 서명을 생성 및 검증
-
직접 서명
-
공개키 암호 시스템을 사용하여 직접 서명 및 검증
-
메시지 복원형
- RSA와 같이 공개키로 암,복호화 할 때 본래의 메시지가 환원되는 경우
- 서명의 검증과정에서 본래의 메시지가 복원되는 방식임
- 기존의 암호시스템을 이용하기 때문에 별도의 전자 서명 프로토콜이 필요하지 않음
- 메시지를 이정한 크기의 블록으로 나누어 그 각각의 블록에 대해서 서명을 해야 하므로
서명생성, 서명검증 시간이 많이 소요됨
-
부가형
- 메시지를 해시함수로 사용하여 일정한 길이로 압축하고 그 해시 알고리즘의 결과와
서명자의 비밀키를 이용하여 비밀키를 이용하여 전자 서명을 생성해서 메시지에 덧붙임 - 메시지 이외에 서명을 따로 전송해야 하므로 전송량이 조금 늘어남
- 메시지가 아무리 길더라도 단 한번의 서명생성 과정만 필요함
- 해시함수의 특성상 서명의 위조나 서명된 메시지의 변조를 막음
- 상대적으로 부가형 전자 서명의 장점이 크기 때문에 선호함
- DSA, ECDSA, KCDSA, ECKCDSA
- 메시지를 해시함수로 사용하여 일정한 길이로 압축하고 그 해시 알고리즘의 결과와
-
전자서명 | 안전성 근거 | 비고 |
---|---|---|
RSA | 소인수분해문제 | 가장 많이 사용 |
DSA | 이산대수문제 | 미국 연방 표준 |
ECDSA | 타원곡선, 이산대수문제 | 가장 효율적임 |
KCDSA | 이산대수문제 | 국내 표준 |
전자서명의 응용
-
은닉 서명 (Blind Signature)
- 서명자가 메시지의 내용을 모르면서 메시지가 유효하다는 것을 증명하도록 서명하는 것
- 전자화폐, 전자투표
-
부인방지 서명 (Undeniable Signature)
- 자체 인증 방식을 배제시켜 서명의 검증과정에 서명자가 참가하도록 하는 서명 방식
- 서명자의 프라이버시 보호
-
위임 서명 (Proxy Signature)
- 위임 서명자로 하여금 서명자를 대신해서 대리로 서명
-
다중 서명 (Multi Signature)
- 하나의 문서에 여러 사용자가 서명
-
그룹 서명 (Group Signature)
- 그룹의 소속원이 그룹을 대표해서 서명할 수 있는 방식
- 서명의 검증자는 그룹의 서명임을 확인가능하나 서명자의 신원은 알 수 없음
공개키 기반 구조 (PKI : Public Key Infrastructure)
-
공개키 전자 서명 인증 기술을 활용하여 기업, 산업 또는 국가 내의 정보를 안전하게 교환하는
인프라를 구축하기 위한 정책 및 기술을 통틀어 말함 -
공개키를 이용한 정보보호를 수행하기 위해서 인증기관을 통한 사용자 인증서 발급
-
공개키의 소유자가 합접적인 사용자임을 인증하며 그에 해당하는 개인키를 가지고 있음을 증명함 (무결성)
-
공인인증서(Certificate) : 인증기관(CA)이 사용자의 공개키에 대해 보증하는 전자 문서
-
인증기관(CA)은 자신의 서명키(Private Key)로 사용자의 공인인증서를 전자 서명함
- 사용자 인증서의 무결성 및 진정성을 보장함
-
전자거래의 안전한 정보교환을 가능하게 하는 종합적인 공개키 관리시스템(체계)
-
사용자의 공개키 + 사용자의 공개키에 대한 인증기관(CA)의 전자서명 = 사용자의 A의 인증서 (사용자의 공개키와 CA 전자 서명 포함)
공개키 기반 구조 (KPI) 구성 요소
분류 | 설명 |
---|---|
인증기관 (CA: Certification Authority) | * 역할과 기능에 따라 계층적으로 구성 * 인증 정책 수립 및 인증서 발행 및 관리 |
등록기관 (RA: Registration Authority) | * 인증 기관과 사용자 사이에 등록 기관을 두어 인증기관 대신 사용자들의 신분확인 등을 대행 |
디렉토리 (Directory Service) | * 인증서와 사용자 관련 정보들을 저장, 검색을 위한 장소 |
사용자 (Subject) | * 일반적인 사람뿐 아니라 이용하는 시스템 포함 |
공인인증서 (Certificate)
- 사용자의 공개키와 사용자의 ID(계좌정보 및 ID..s)를 결합하여 신뢰성 있는 제 3자인 인증기관(CA)이 서명한 전자문서
- 현재 인증서와 관련한 국제 표준으로는 X.509 v3이 있음
- SPKI (Simple Public Key Infrastructure)인증서 PGP(Pretty Good Privacy) 인증서가 있음
- 인증서에는 발행자의 전자 서명이 들어있음
공인인증서에 포함된 내용
분류 | 설명 |
---|---|
버젼 (Version) | * 인증서의 버전을 기술함 * 인증서 확장 영역을 이용할 때, X.509의 버젼번호는 V3을 이용함 |
일련번호 (Serial Number)* 인증기관에 의해 각 인증서에 유일하게 부여되는 번호임 | |
서명 알고리즘 (Signature Algorithm ID) | * 인증기관이 인증서를 서명하기 위한 알고리즘과 알고리즘 식별자를 포함함 |
발행자 (Issuer Name) | * 인증서를 발행하고 표시하는 CA의 이름을 명기함 |
유효기간 (Validity Period) | * 인증서 유효 기간이 시작하는 날짜와 인증서 유효 기간이 종료하는 날짜로 구성됨 |
주체 (Subject Name) | * 이 인증서에 대한 사용자(피발급자)의 이름을 나타냄 |
사용자 공개키 정보(Subject Public-key Information) | * 사용자의 공개키에 대한 정보(공개키 및 관련 알고리즘)가 들어 있음 |
발행고유식별자 (Issuer Unique Identifier) | * 인증서를 발급한 CA의 부가정보를 제공함 |
사용자고유식별자(Subject Unique Indetifier) | * 인증서를 주체에 대한 부가정보를 제공함 |
확장영역 (Extensions) | * 이 필드는 버젼 3인 경우에만 나타날 수 있음 * X.509 v3 인증서를 위해 정의된 확장은 사용자의 공개키 정보와 연관된 추가적인 정보를 제공하며, 인증서 계층 구조를 관리할 수 있는 방법을 제공함 |
서명문 (Signed by Issuer(CA)) | * CA의 개인키로 서명된 서명문을 제공함 |