주식회사 누리아이티

정보자산의 보안강화를 위한 3단계 인증 보안SW(BaroPAM) 전문기업인 누리아이티

▶ BaroSolution/기술문서

정보자산의 보안강화를 위하여 3단계 인증을 위한 Windows용 BaroPAM 솔루션의 기술적 설명

누리아이티 2018. 11. 27. 05:59

BaroPAM 솔루션은 Windows 로그온 시 Username/Password 이외에 일회용 인증키를 사용하여 2차 인증하는 운영체제 레벨(OS Level)의 솔루션이다.

 

 

BaroPAMWindows의 새로운 CP(Credential Provider)가 하나 추가된 개념으로, Windows에서 서비스를 재컴파일하지 않고, 다양한 인증 기술을 시스템 항목 서비스에 접목할 수 있도록 해주는 프레임워크으로 중앙 집중적인 인증 매커니즘을 지원하는 것이다. 게다가 시스템의 기본적인 인증 기법을 제공하여 이것을 사용하면 응용 프로그램 개발자 뿐만 아니라 시스템 관리자들이 인증을 유연성 있게 관리할 수 있도록 도와 준다.

 

 

전통적으로 시스템 자원에 대한 접근을 관리하는 프로그램들은 내장된 메커니즘에 의해 사용자 인증 과정을 수행한다. 이러한 방식은 오랫동안 이루어졌지만 이러한 접근 방식은 확장성이 부족하고 매우 복잡합니다. 그렇기 때문인지 이러한 인증 매커니즘을 끌어내기 위한 수많은 해킹 시도가 있었다.

 

 

BaroPAM의 아키텍처는 기존의 Windows CP 정책에 BaroPAM일회용 인증키 검증모듈을 추가한구조로 다음과 같다.

 

 

 

(1) User enters credentials

(2) Credentials

(3) one-Time authentication key verification request

(4) one-Time authentication key verification result

(5) Result and Credentials

(6) Credentials Returned from Service

 

Windows Credential ProviderWindows 로그온 화면을 커스터마이징 할 때, Windows XP까지는 GINA(Graphical Identification and Authentication) DLL이 사용되었는데, 인터페이스가 어렵고 복잡하며, 디버깅도 매우 어려워서 소수 일부 전문가들만 사용한다.

 

Windows 7(Vista 이상)부터는 CP(Credential Provider)라는 개념으로 비교적 쉽게 수정할 수 있는 API 인터페이스를 제공하고 있다.

 

Credential Provider Plugin처럼 여러 개 병렬로 등록 가능하며, 각각 한 가지 인증 처리를 할 수 있는데, 이와 같이 추가 Credential Provider를 만들어 할 수 있는 일은,

 

-로그온 화면에 TextBox ComboBox 등을 추가한 뒤 추가 입력값(일회용 인증키)을 받아 검증

-기본 Password 로그온 이외에 다른 처리(비밀번호 초기화 등)를 함

 

이상의 두 가지 정도가 대부분이라 할 수 있겠다.

 

비밀번호 인증을 사용하지 않고 스마트카드 인증을 한다거나 지문 인식 인증을 한다거나 등은 OS 및 하드웨어 수준에서 지원이 될 때만 가능한 것이지, 무턱대고 Credential Provider를 만든다고 새로운 인증 방식이 적용되는 것은 아니다.

 

, Credential Provider를 통해 인증을 성공하는 유일한 방법은 Username/Password를 제대로 입력했을 때 뿐이다.

 

여러 사이트에서 선택 받은 인증 매커니즘은 아직도 password 파일이다. 왜 그럴까? 우리가 원하는 것을 해주기 때문입니다. 대부분의 사용자는 password 파일이 필요한 것이 무엇인지 이미 알고 있다. 그리고 원하는 작업을 수행하는데 있어 이미 그 기능이 검증되었기 때문일 것이다.

 

BaroPAM의 인증 절차는 기존의 Windows 인증 절차에 2차 인증으로 일회용 인증키 검증모듈이 추가 하여 그 인증 절차는 다음과 같다.

 

 

 

BaroPAM일회용 인증키(One Time Authentication key)는 고정된 비밀번호 대신 무작위로 생성한 인증키로 사용자를 인증하는 방법으로, 보안을 강화하려고 도입한 시스템이다. 로그온 할 때마다 일회성 인증키를 생성한다. 동일한 인증키가 사용되지 않아 보안을 강화할 수 있다.

 

BaroPAM일회용 인증키"인터넷 보안 표준인 IETF RFC 6283"에 전세계적을 인정된 "512bit 최신 표준 해쉬 함수 (HMAC-SHA512)" 사용하여 "금융감독원에서 권장하는 시간 동기화(Time-Sync) 방식"을 채택하고 있다.

 

일회용 인증키를 생성하기 위해 사용하는 입력 값으로 시각을 사용하는 방식이다. 클라이언트는 현재 시각을 입력값으로 일회용 인증키를 생성해 서버로 전송하고, 서버 역시 같은 방식으로 인증키를 생성하여 클라이언트가 전송한 값의 유효성을 검사한다.

 

임의의 입력값이 필요하지 않다는 점에서 사용하기 간편하고, 클라이언트가 서버와 통신해야 하는 횟수가 비교적 적다. 또 서버에서 클라이언트에 입력값을 보내는 방식이 아니므로, 여타 인증키 생성 방식에 비해 피싱에 안전하다. 한편 클라이언트에서 시각 정보를 이용해 인증키를 생성하므로, 스마트폰 등의 모바일 기기도 클라이언트로 사용되기 적합하다는 점 역시 비용 절감 측면에서 장점이다.

 

인증키는 사용자 인증에 사용되므로, 기본적으로 서버와 클라이언트 사이에 통신 및 전달 수단이 필요하다. 이러한 수단으로는, 아래와 같은 것들이 있다.

 

(1) 인증키 토큰

 

인증키 토큰이라 불리는 별도의 하드웨어를 클라이언트로 사용하는 방식이다. 기기 자체에서 해킹이 이루어지기는 힘들지만, 토큰을 구입해야 하므로 추가 비용이 필요하며 휴대하기에 불편하다는 단점이 있다.

 

(2) 카드형 인증키 토큰

 

 

기존의 토큰의 불편한 휴대성을 개선하기 위해, 얇은 두께로 휴대하기에 편리한 카드형 토큰도 출시된 바 있다. 일반 카드에 비해 별로 두껍지 않아 지갑에도 휴대가 가능하지만, 처리 속도가 느려 인증키 생성에 시간이 더 걸리고 수명이 짧으며 가격도 비싸다는 단점이 있다.

 

(3) 스마트폰 앱

 

별도의 하드웨어 장비를 필요로 하지 않아서 추가 비용 없이도 인증키 서비스를 이용할 수 있는 방식이다. 해당 스마트폰에 맞게 제공되는 앱을 설치함으로써 이용할 수 있다.

 

(4) SMS

 

SMS로 인증키를 전달하는 방식이다. 스마트폰이 아닌 어떤 종류의 휴대전화만 있어도 이용 가능하다는 장점이 있지만, SMS 자체의 해킹 위험성에 의해 현재는 거의 사용되지 않고 있다.

 

BaroPAM일회용 인증키에 암호화 알고리즘이 아닌 해쉬 기반 메시지 인증코드(Hash-based Message Authentication Code)를 사용한다.

 

해시 함수(hash function)는 임의의 길이를 갖는 메시지를 입력 받아 고정된 길이의 해쉬값을 출력하는 함수이다. 암호 알고리즘은 암호화할 때 암호화 키가 반드시 필요하다. 왜냐하면, 암호화된 것을 복호화할 때 암호화할 때 사용한 키를 사용하여 복호화 하기 때문이다.

 

그러나, 해쉬 함수는 키를 사용하지 않고 시각(시간의 어느 한 순간의 시간)을 사용하는 방식이다. 해쉬 함수를 사용할 경우 동일한 시각에 동일한 값을 발생시킴으로써 스마트폰에서 생성된 해쉬값이 Windows의 검증모듈에서 생성된 해쉬값과 비교하여 메시지의 오류나 변조를 탐지할 수 있는 무결성을 제공하는 목적으로 주로 사용된다.

 

해쉬 함수는 전자 서명과 함께 사용되어 효율적인 서명 생성을 가능하게 한다. 긴 메시지에 대해 서명을 하는 경우, 전체 메시지에 대해 직접 서명을 하는 것이 아니고 짧은 해쉬값을 계산해 이것에  대해 서명을 하게 된다. 공개키 연산은 많은 계산량을 필요로 하기 때문에 전체 메시지를 공개키 길이의 블록 단위로 나누어 모든 블록에 대해 서명을 하는 것은 매우 비효율적이다. 그러므로 먼저 메시지를 입력 받아 짧은 해쉬값을 계산하고, 이것에 대해 한 번의 서명 연산을 하는 것이다. 이 계산값은 원래의 메시지에 대한 서명으로 인정된다.

 

해쉬값에 대한 서명이 원 메시지에 대한 서명으로 인정되기 위해서는 같은 해쉬값을 갖는 또 다른 메시지를 찾아내기가 계산적으로 어려워야 한다. 해쉬 함수는 임의의 길이의 입력으로부터 짧은 길이의 해쉬값을 출력하므로 입력은 서로 다르지만 같은 출력을 내는 충돌이 반드시 존재한다. 만일 같은 해쉬값을 갖는 다른 메시지를 찾아내기가 쉽다면, 서명자는 자신의 서명에 대해 다른 메시지에 대한 서명이라고 우길 수 있을 것이기 때문이다. 이것이 가능하다면, 전자 서명에 대한 신뢰가 불가능하고 전자 거래에 사용할 수 없게 될 것이다. 그러므로 안전한 해쉬 함수로 사용될 수 있기 위해서는 충돌을 찾아내기 어렵다는 특성을 가져야 한다.

 

한편, 해쉬 함수는 전자 서명에 사용된다고 했는데, 이것은 서명자가 특정 문서에 자신의 개인키를 이용하여 연산함으로서 데이터의 무결성과 서명자의 인증성을 함께 제공하는 방식이다. 메시지 전체에 대해 직접 서명하는 것은 공개키 연산을 모든 메시지 블록마다 반복해야 하기 때문에 매우 비효율적이다. 따라서 메시지에 대한 해쉬값을 계산한 후, 이것에 대해 서명함으로서 매우 효율적으로 전자 서명을 생성할 수 있다. 서명자는 메시지 자체가 아니라 해쉬값에 대해 서명을 하였지만 같은 해쉬값을 갖는 다른 메시지를 찾아내는 것이 어렵기 때문에, 이 서명은 메시지에 대한 서명이라고 인정된다.

 

송신자의 신분에 대한 인증이 필요 없고, 데이터가 통신 중 변조되지 않았다는 무결성만이 필요한 경우에는 해쉬 함수를 메시지인증코드(MAC, Message Authentication Code)라는 형태로 사용할 수 있다. 송신자와 수신자가 비밀키를 공유하고 있는 경우, 송신자는 메시지와 공유된 비밀키를 입력으로 하여 해쉬값을 계산하면 메시지 인증코드가 된다. 메시지와 함께 메시지 인증코드를 함께 보내면 수신자는 메시지가 통신 도중 변조되지 않았다는 확신을 가질 수 있다.

 

대표적인 해쉬 함수는 다음과 같다.

 

최조의 알고리즘은 1993년 미국 국가 안전 보장국(NSA)이 설계하였으며, 미국 표준 기술 연구소(NIST)에 의해 SHS(Secure Hash Standard, FIPS PUB 180)으로 출판되었으며, 다른 함수들과 구별하기 위해 보통 SHA-0으로 불린다. 2년 후 SHA-0의 압축 함수에 비트 회전 연산을 하나 추가한 SHA-1(FIPS PUB 180-1)이 발표되었으며, 그 후에 4종류의 변형, SHA-224, SHA-256, SHA-384, SHA-512(FIPS PUB 180-2)가 추가로 발표되었다. 이들을 통칭해서 SHA-2라고 하기도 한다. SHA-1 SHA 함수들 중 가장 많이 쓰이며, TLS, SSL, PGP, SSH, IPSec 등 많은 보안 프로토콜과 프로그램에서 사용되고 있다. 하지만 최근 SHA-0 SHA-1에 대한 분석 결과가 발표됨에 따라 SHA-2를 사용할 것이 권장되고 있다.

 

국내에서 개발된 대표적인 해쉬 함수인 HAS-160[28] 2000 12월 국내 해쉬 함수 표준(TTAS.KO-12.0011/R1)으로 채택되었다. HAS-160의 설계 원리는 SHA-1의 설계 사상이 유사하지만, 메시지 확장 과정이 기존의 MD계열 해쉬 함수와는 차이가 있어, 최근 제안된 다양한 해쉬 함수 분석 기법에 대하여 아직까지는 안전성을 가지고 있다.

 

한마디로 HMAC Key를 조합하여 Hash 함수를 구하는 방식으로 송신자와 수신자만이 공유하고 있는 Key와 메시지를 혼합하여 Hash 값을 만드는 방식이며, 채널을 통해 보낸 메시지가 훼손되었는지 여부를 확인하는데 사용할 수 있으며, MAC 특성상 역산이 불가능하므로, 수신된 메시지와 Hash 값을 다시 계산하여, 계산된 HMAC과 전송된 HMAC이 일치하는지를 확인하는 방식이다.

 

HMAC은 단방향 해시 함수를 이용해서 메시지 인증 코드를 구성하는 방법인데, HMAC에서는 사용하는 단방향 해시 함수를 단 한 종류로 정해 놓고 있는 것은 아니다.
② 강한 단방향 해시 함수라면 뭐든지 HMAC에 이용할 수 있다.
③ 장래 새로운 단방향 해시 함수가 고안된다면 그것을 사용할 수도 있다.
④ 이와 같은 형태로 만들어진 알고리즘을 모듈형 알고리즘이라고 한다.

 

BaroPAM은 별도의 하드웨어 장비(토큰, 카드)를 필요로 하지 않아서 추가 비용 없이도 인증키 서비스를 이용할 수 있는 방식이다. 스마트폰의 앱(안드로이드, 애플)에 맞게 제공되는 앱을 설치함으로써 이용할 수 있으며, 스마트폰 앱은 일회용 일증키만 생성할 뿐 네트워크를 통한 Windows와의 통신은 발생하지 않으며, 처리 순서는 다음과 같다.  

 

 

결론적으로 BaroPAM은 "인터넷 보안 표준인 IETF RFC 6283"에 암호화 알고리즘이 아닌 전세계적으로 인정된 "512bit 최신 표준 해쉬 함수 (HMAC-SHA512)" 사용하여 "금융감독원에서 권장하는 시간 동기화(Time-Sync) 방식"을 채택하고 있다.

 

"아무 것도 신뢰하지 않는다" = "아무도 믿지 마라" = "계속 검증하라"

 

앞으로 정보 보안의 흐름은 보안은 강화하고 사용자의 불편함을 최소화하는 방향으로, 기억할 필요가 없는 비밀번호! BaroPAM이 함께 하겠습니다.