3.1 전자 사용자 인증 원리
IEFT RFC 4949
사용자 인증: 시스템 엔터티에 의해 제기된, 혹은 시스템 엔터티를 위한 신원 식별 검증 절차
- 인증은 정보 보호의 기본적인 구성 요소이며 주된 방어선
- 접근 제어 및 사용자 책임(user accountability)을 위한 기본
RFC 4949 인증 절차
- 식별(identification) 단계
- 보안 시스템에 신원을 확인할 수 있는 식별자(id)를 제시함
- 검증(verification) 단계
- 각 시스템 개체(entity)와 식별자 간의 관계를 입증하는 인증 정보를 제시하거나 생성함
전자 사용자 인증 구조적 모델
사용자 인증
사용자 id를 인증하는 4가지 수단
- 개인이 알고 있는 사실을 통한 인증
비밀번호, PIN, 미리 정한 질문에 대합 답변 등
- 개인의 소유물을 통한 인증(토큰)
스마트 카드, 전자 키 카드, 물리적 키 등
- 개인의 정적 생체 정보를 통한 인증
지문, 망막, 안면 인식 등
- 개인의 행동, 즉 동적 생체 정보를 통한 인증
음성 패턴, 필적, 타이핑 리듬 등
사용자 인증을 위한 위험 평가
세가지 개념: 보증 레벨 -> 잠재적 영향 -> 위험 영역
보증 레벨(Assurance Level)
ID 정보를 가리키는 신용장을 제시하는 사용자의 신원에 대한 조직의 확실성 정도
구체적인 정의:
1) 신용장(credential)이 발급된 개인의 신원에 대한 신뢰성 정도
2) 신용장을 사용하는 개인이 신용장을 발급받은 당사인지에 대한 신뢰성 정도
보증 레벨 네 단계
레벨 1: 확인된 사용자 ID(신원)의 유효성이 거의 없음
- 회사 웹사이트 토론 게시판에 소비자가 참여, 트랜잭션 당시 1회성 ID와 비밀번호 사용
레벨 2: 확인된 사용자 ID의 유효성이 조금 있음
- 일반 대중을 대상으로 하는 다양한 비즈니스에 적합(초기 식별 보증 필요), 하나의 인증 수단과 함께 인증 프로토콜이 필요
레벨 3: 높게 확인된 사용자 ID의 유효성
- 고객과 직원이 높은 가치의 서비스를 제한적으로 접근할 경우, 예로 변리사가 특허 정보를 특허국에 제출하는 경우 경쟁자에게 노출되면 안됨. 최소 둘 이상의 인증 기술의 사용을 요구
레벨 4: 매우 높게 확인된 사용자 ID의 유효성
- 법 집행자가 범죄 기록 정보에 접근하는 경우 불법 접근으로 개인정보침해나 범죄 조사를 무효화시킬 수 있음. 다수의 인증 기술의 사용과 당사자가 직접 등록하는 등의 요소를 요구
잠재적 영향
FIPS 199에서는 개인이나 기관의 보안 침해에 대한 잠재적 영향을 3 레벨로 정의
낮음(low) : 인증 오류가 기관 운영/자산, 혹은 개인에 제한된 역효과가 예상됨
- 운영에 어느 정도 지장을 줌. 자산 등의 사소한 손실
보통(moderate): 인증 오류가 심각한 역효과가 예상됨
- 운영은 되나 효율성이 심각하게 감소, 자산 등의 중대한 손실
높은(high): 인증 오류가 치명적인 역효과가 예상됨
표 3.1 잠재적 영향과 적절한 보증 레벨의 대응
3.2 비밀번호 기반 인증
비밀번호(password) 기반 인증
널리 사용되는 침입자 방어 수단
- 사용자는 이름 또는 로그인 id와 비밀번호를 제시함
- 제시된 로그인 id의 비밀번호와 시스템에 저장된 비밀번호를 비교
사용자 ID
- 사용자가 시스템에 접근이 허가 되었는가를 확인
- 시스템의 권한 결정
- 임의 접근 제어(discretionary access control)에 사용됨
비밀번호의 취약성
오프라인 사전(dictionary) 공격 -> 특정 계정 공격
-> 사용자들이 사용하는 잘 알려진 비밀번호 공격 -> 단일 사용자에 대한 비밀번호 추측 -> 워크스테이션 하이재킹(hijacking) -> 사용자의 실수 이용 -> 다수의 장치에서 단일 비밀번호를 사용 -> 네트워크 모니터링을 통한 비밀번호 도청
비밀번호 취약성 대응책
- 비밀번호 파일에 인가되지 않은 접근 통제
- 노출된 비밀번호에 대한 빠른 재발급 조치
- 계정 폐쇄 - 일정 시도 횟수(보통 5회) 실패 시 자동 폐쇄
- 단순한 비밀번호 사용 금지 정책
- 비밀번호 정책 훈련 및 강화
(비밀번호 최소 길이, 문자 집합, 비밀번호 사용 기간 등 제한)
- 워크스테이션 자동 로그아웃
- 사용자 훈련, 침임 탐지, 다른 인증 메커니즘과의 결합 등
- 네트워크 장치들에서 유사한 단일 비밀번호의 사용을 제한
UNIX에서의 비밀번호 구현
초창기 기법
- 8개 이내의 문자들로 구성 -> 56 비트를 구성하여 암호 알고리즘의 키로 사용
- 12비트 솔트(salt)를 사용하며, DES 알고리즘에 기반한 단방향 해시 함수 사용
- 0으로 구성된 64비트 블록 입력에 대해 반복적으로 25회 암호화 -> 의도적으로 속도를 느리게 함
- 최종 출력을 11자리 문자열로 변환
현재 적절하지 못한 방법으로 간주됨
- 수퍼컴퓨터로 5천만개의 비밀번호 추측을 80분만에 처리
- 여전히 현재의 계정 관리 소프트웨어나 멀티벤더(multivendor) 환경과의 호환성을 위해 필요
UNIX 비밀번호 구현 기법의 개선
훨씬 강력한 유닉스용 해시/솔트 기법 이용 가능(많은 Unix, Linux, Solaris, FreeBSD)
권장 해시 함수: MD5에 기반
- 48 비트까지의 솔트
- 패스워드 길이의 제한이 없음
- 128비트 해시 생성
- 해시 함수의 속도를 늦추기 위해 1000회 반복의 내부 루프(inner loop) 사용
OpenBSD는 Bcrypt라 불리는 Blowfish 블록 암호 기반의 해시 알고리즘을 사용
- 유닉스 해시/솔트 기법 중 가장 안전한 버전
- 192비트 해시 값을 생성하기 위해 128비트 솔트 사용
3.3 토큰 기반 인증
3.4 생체 인식 인증
3.5 원격 사용자 인증
3.6 사용자 인증 보안 이슈