목차
 
1. Winlogon Credential Provider
1.1 Credential Provider 개요
1.2 Winlogon 동작 원리
1.3 Credential Provider 추가/삭제/비활성화
1.4 NTP(Network Time Protocol) 설정
 
2. BaroPAM 소개
2.1 BaroPAM 개요
2.2 BaroPAM 아키텍처
2.3 BaroPAM 인증 절차
2.4 BaroPAM 특장점
2.5 BaroPAM의 3단계 인증 정책
2.6 BaroPAM의 3단계 보안 전략
2.7 BaroPAM 처리 Flow
 
3. BaroPAM 설치
3.1 BaroPAM 설치 전 준비사항
3.2 BaroPAM 설치 모듈 다운로드 및 설치
3.3 BaroPAM 환경 설정
3.4 Windows Logon 방법
3.5 BaroPAM 제거 및 재사용 방법
 
4. BaroPAM 어플
4.1 BaroPAM 어플 설치
4.2 BaroPAM 어플 사용
4.3 BaroKEY 연동 API
 
5. BaroPAM 웹 사이트
5.1 BaroPAM 웹 사용
 
6. About BaroPAM



1. Winlogon Credential Provider

1.1 Credential Provider 개요

 

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


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


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


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

-기본 Password 로그인 이외에 다른 처리(패스워드 초기화 등)를 함


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


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


예를 들어, user/password라는 Windows 계정이 있는데, password 대신에 OTP 코드로 123456이라는 값을 입력 받아 인증되게 하려면, 별도 사용자 DB user:password:OTP와 같은 매핑 테이블이 있어서 OTP 코드로부터 사용자의 password를 조회할 수 있도록 만들어 놓은 경우라면 몰라도, password를 입력하지 않고 그냥 인증할 수 있는 방법은 없다.


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


1.2 Winlogon 동작 원리



Winlogon Windows의 로그 관리자로써 Windows Vista 이전에는 Winlogon.exe Lsass.exe Services.exe를 실행 시키는데, Windows 7(Vista 이후)에는 Winlogon.exe Wininit.exe가 함께 실행되고, Wininit.exe Lsass.exe Services.exe를 실핼 시킨다.


Lsass.exe(Local Security Authority Subsystem Service)는 부팅 시 보안 인증을 담당하고 LSA라고도 부른다.


Services.exe(Service Control Manager)는 서비스를 관리하고 SCM이라고도 부른다.


Winlogon은 또한 사용자 로그인 동작을 수행하는 Credential Provider를 호출하고 로그온, 로그오프 관련 작업에 관여한다.


대기할 때 항시 SAS(Secure Attention Sequence : Alt + Ctrl + Del) 키 입력을 감시 하다가 SAS 키 입력이 들어오면 Credential Provider를 불러와 사용자가 로그온 작업을 할 수 있도록 한다.


이와 관련된 DLL %SystemRoot%\System32\authui.dll(여길 수정하면 로그온 테마 변경 가능), %SystemRoot%\System32\SmartcardCredentialProvider.dll이다.


이를 Credential Provider와 연결하여 Winlogon.exe와 상호 작용하면서 로그인, 인증 UI를 관리한다. 그리고, Winlogon은 자격 증명 제공 오류로 부터 자신을 보호하기 위하여 Logonui.exe(자격 증명 제공자)를 이용한다. 이것은 네트워크 제공자 로드, 로그온 인터페이스 노출, Winlogon 종료 방지 등의 기능을 한다.


Vista 이전 까지는 Winlogon이 종료되면 시스템 크래쉬가 발생했지만, 이후로는 Wininit.exe가 지켜줘서 로그오프만 된다.


또한 Winlogon은 고유한 SID를 할당하여 Desktop 인스턴스(키보드, 화면, 마우스 등)에 배정하게 되고, 이를 로그온 프로세스 토큰에 포함하여 보안을 담당하는 Lsass에 전달한 후 인증을 통과하면 할당했던 SID를 로그온 프로세스 토큰에 포함해 로그인 인증용도로 사용한다. 쉽게 말해서 컴퓨터 잠금, 로그온, 로그오프에 관여 한다.


1.3 Credential Provider 추가/삭제/비활성화


앞에서도 잠깐 언급했지만, Credential Provider를 새로 추가한다는 것은 기본 ID/Password 인증을 사용하지 않고 새로운 형태의 인증 방식을 추가하는 것이다.


따라서 ID/Password 인증 기본 Credential Provider(PasswordProvider)수정해서 화면 상에 뭔가 텍스트나 그림 등을 추가할 수 없을까 고민한다면, 그건 잘못된 생각이다.


기본 제공되는 Built-In Credential Provider들은 수정이 불가능하다. (소스 코드를 제공하지 않으니까)


다만, OOP 개념에 따라 새로운 Credential Provider를 만들고 Wrapping하여 Override할 수 있을 뿐이다.



아무튼, Windows 로그인에서 사용되는 Credential Provider들은 모두 위 레지스트리에 등록되어 있다.


HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\Credential Providers


여기서 테스트 목적 또는 필요 시 해당 레지스트리 키를 삭제하지 않고도 "비활성화"시키는 방법이 있는데,


-Group Policy로 비활성화 하는 방법: https://community.sophos.com/kb/en-us/114190

-레지스트리를 수정하여 개별 CLSID별로 Disabled 값을 추가하는 방법: https://social.technet.microsoft.com/Forums/windows/en-US/9c23976a-3e2b-4b71-9f19-83ee3df0848b/how-to-disable-additional-credential-providers?forum=w8itprosecurity

-Credential Provider Filter를 만들어 등록하는 방법: http://www.pagepinner.com/2013/12/how-to-hide-credential-providers-from.html


이상의 세 가지 방법이 있다.


1.4 NTP(Network Time Protocol) 설정


최근에는 서버/네트워크 장비에 대한 시간 동기화(타임서버 시간 동기화)하는 방법으로 NTP(Network Time Protocol)을 이용하여 관리자 계정에서 시스템의 시각을 현재 시각으로 설정할 수 있다.


1. NTP?


Network Time Protocol(네트워크 시간 프로토콜)의 약자로 네트워크 환경으로 구성된 장비(서버, PC, 통신장비, 방화벽 장비 등)의 시스템 시간을 동기화 하기 위한 규약이다.


윈도우에는

- 모든 윈도우서버는 NTP 서버가 될 수 있다.

- 모든 서버의 방화벽에서 UDP 123 번이 열려있어야 한다.

- NTP 서버와의 시간차이가 많이 날 경우(기본값: 15 시간) 동기화 되지 않는다.

  실제 시간과 근접한 시간으로 변경 후 동기화 할 수 있도록 한다.

- 데이터 일치를 위하여 동기화(Sync)요청을 하더라도 즉시 반영되는 것이 아니라, 조금씩 맞춰 간다.


  (예: Server#2 서버가 Server#1 서버 보다 시간이 빠를 경우, Server#1 번의 시간으로 Server#2 의 시스템시간을 동기화 할 경우, 동일한 시간대의 데이터가 생성되므로, 데이터 정합성에 오류가 발생한다. 이에 시간 동기화는 즉시 반영되는 것이 아니라, 조금씩 그 차이를 줄여나가는 방식이다. - 12 참조)


2. 시스템 환경


NTP 시간을 제공해주는 서버를 “NTP 서버”, NTP 서버로 시간 동기화를 요청하는 서버를 “Slave 서버”로 명명한다.


서버명 및 IP 주소



3. 내부 NTP 서버


1) 외부 NTP 서버와 시간 동기화


내부 NTP 서버 시스템 시간을 인터넷 표준시(:time.windows.com)으로 설정한다.


① 실행서버


Server#1(IP:10.10.10.1)


② 시나리오


내부 NTP 서버 역할로 운용할 서버의 시간 동기화 대상을 외부 NTP(:time.bora.net, time.kornet.net)으로 설정하고, 설정(레지스트리)값을 확인 후 동기화 작업을 수행한다.


③ 작업


첫번째, 외부 NTP 서버를 기준으로 시간동기화 설정을 한다.


* 시작 -> cmd -> w32tm /config /syncfromflags:manual /manualpeerlist:time.microsoft.com /update


1: 예상결과

C:\>w32tm /config /syncfromflags:manual /manualpeerlist:time.microsoft.com /update

명령이 성공적으로 완료되었습니다


두번째, Windows Time 서비스의 설정값(레지스트리) 확인


* 시작 -> cmd -> w32tm /dumpreg /subkey:Parameters


2: 예상 결과

C:\>w32tm /dumpreg /subkey:Parameters

값 이름        값 종류           값 데이터

-----------------------------------------------------------------------------

ServiceMain    REG_SZ            SvchostEntry_W32Time

ServiceDll     REG_EXPAND_SZ    C:\WINDOWS\system32\w32time.dll

NtpServer      REG_SZ            time.windows.com,0x9 <- 외부 NTP 서버주소

Type            REG_SZ            NTP                   <- 외부 NTP 서버 사용


세번째, Windows Time 서비스 재시작


* 시작 -> cmd -> net stop w32time

               -> net start w32time


3: 예상결과

C:\>net stop w32time

Windows Time 서비스를 멈춥니다..

Windows Time 서비스를 잘 멈추었습니다.

 

C:\>net start w32time

Windows Time 서비스를 시작합니다..

Windows Time 서비스가 잘 시작되었습니다.


네번째, 시간 동기화


* 시작 -> cmd -> w32tm /resync


4: 예상결과

[정상]

C:\>w32tm /resync

로컬 컴퓨터에 다시 동기화 명령을 보내는 중

명령이 성공적으로 완료되었습니다.

 

[오류] : 방화벽에서 외부 UDP 123 포트가 막혀 있을 경우 발생할 수 있다.

C:\>w32tm /resync

동기화 명령 전송 - local computer...

사용 가능한 시간 데이터가 없어 컴퓨터가 동기화하지 못했습니다.


2) NTP 서비스 제공을 위한 구성 확인


내부 NTP 서버가 외부 NTP 서버를 참조하는지 확인한다.


① 실행서버


Server#1(IP:10.10.10.1)


시나리오


내부 NTP 서버 역할로 운용할 서버의 서비스를 확인하여 Slave 서버에서 연결 할 수 있도록 구성 값을 확인한다.


작업


첫번째, Windows Time 서비스 구동 확인


* 시작 -> cmd -> sc query w32time


5: 예상 결과

C:\>sc query w32time

       SERVICE_NAME      : w32time

       TYPE              : 20 WIN32_SHARE_PROCESS

       STATE             : 4 RUNNING

                             (STOPPABLE,NOT_PAUSABLE,ACCEPTS_SHUTDOWN)

       WIN32_EXIT_CODE   : 0 (0x0)

       SERVICE_EXIT_CODE : 0 (0x0)

       CHECKPOINT        : 0x0

       WAIT_HINT         : 0x0


두번째, NTP 서비스 구동 확인


* 시작 -> cmd -> netstat -ano | findstr 123


6: 예상 결과

C:\>netstat -ano | findstr 123

 UDP    0.0.0.0:123      *:*    1128

 UDP    0.0.0.0:62123    *:*    1428

 UDP    [::]:123         *:*    1128


4. Slave 서버


1) Slave 서버 환경 구성


내부 NTP 서버(IP:10.10.10.1)를 기준으로 Slave 서버의 시스템 시간을 설정한다. 시간 차이가 너무 많을 경우 동기화가 되지 않으니, 수동으로 근접한 시간을 맞추고 동기화 할 수 있도록 한다.


① 실행서버


Server#2(IP:10.10.10.2)

Server#3(IP:10.10.10.3)

(각 서버별로 수행)


시나리오


시간 동기화 대상을 내부 NTP 서버(IP:10.10.10.1)로 설정하고, 동기화 작업을 수행한다.


작업


첫번째, 내부 NTP 서버(IP:10.10.10.1)를 기준으로 시간동기화 설정을 한다.


* 시작 -> cmd -> w32tm /config /syncfromflags:manual /manualpeerlist:10.10.10.1 /update


7: 예상결과

C:\>w32tm /config /syncfromflags:manual /manualpeerlist:10.10.10.1 /update

명령이 성공적으로 완료되었습니다.


두번째, Windows Time 서비스의 설정값(레지스트리) 확인


* 시작 -> cmd -> w32tm /dumpreg /subkey:Parameters


8: 예상 결과

C:\>w32tm /dumpreg /subkey:Parameters

값 이름        값 종류           값 데이터

-----------------------------------------------------------------------------

ServiceMain    REG_SZ           SvchostEntry_W32Time

ServiceDll     REG_EXPAND_SZ    C:\WINDOWS\system32\w32time.dll

NtpServer      REG_SZ           10.10.10.1 <- 외부 NTP 서버주소

Type            REG_SZ           NTP        <- 외부 NTP 서버 사용


세번째, Windows Time 서비스 재시작


* 시작 -> cmd -> net stop w32tm

               -> net start w32tm


9: 예상결과

C:\>net stop w32time

Windows Time 서비스를 멈춥니다..

Windows Time 서비스를 잘 멈추었습니다.

 

C:\>net start w32time

Windows Time 서비스를 시작합니다..

Windows Time 서비스가 잘 시작되었습니다.


세번째, 시간 동기화


* 시작 -> cmd -> w32tm /resync


10: 예상결과

C:\>w32tm /resync

로컬 컴퓨터에 다시 동기화 명령을 보내는 중

명령이 성공적으로 완료되었습니다.


2) NTP 서버와 시간차 확인 


특정 서버(ex.NTP 서버)와 실행한 서버와의 시간차이를 확인한다.


① 실행서버


Server#2(IP:10.10.10.2)

Server#3(IP:10.10.10.3)

(각 서버별로 수행하여 확인 할 수 있다.)


시나리오


특정서버(Master Server:10.10.10.1) Slave Server(10.10.10.2)시간 동기화 대상을 Master Server 설정하고, 동기화 작업을 수행한다.


작업


첫번째, Master Server 를 기준으로 시간동기화 설정을 한다.


* 시작 -> cmd -> w32tm /stripchart /dataonly /computer:10.10.10.1


  비교대상 서버와 시간이 일치한다면, 하기와 유사한 결과값을 볼 수 있다.


11: 예상결과

C:\> w32tm /stripchart /dataonly /computer:10.10.10.1

Tracking 10.10.10.1 [10.10.10.1].

The current time is 2012-04-18 오후 19:17:13 (local time).

19:17:13, +00.2676328s     -> 비교 대상 서버와 +00.2676328 초만큼 차이가 난다.

19:17:15, +00.2593851s

19:17:17, +00.2589499s

19:17:19, +00.2428931s

^C                         -> 중지하기 위해서는 “Ctrl + c”를 누르면 된다.

      +00.xxxxxxx(또는 -00.xxxxxxx)로 대상 NTP 서버와 차이나는 시간만큼 표기된다.

      ) +120.2428931s -> +120 초 차이가 남

 

5. NTP 설정 후 동기화 요청 및 동기화 확인


12: Slave 서버 동기화 설정

NTP 서버(IP:10.10.10.1) 서버를 시스템 시간으로 설정한다.

C:\>w32tm /config /syncfromflags:manual /manualpeerlist:10.10.10.1/update

명령이 성공적으로 완료되었습니다.

 

Windows Time 서비스를 재기동한다.

C:\>net stop w32time

Windows Time 서비스를 멈춥니다..

Windows Time 서비스를 잘 멈추었습니다.

 

C:\>net start w32time

Windows Time 서비스를 시작합니다..

Windows Time 서비스가 잘 시작되었습니다.

 

NTP 서버(IP:10.10.10.1)로 지정한 서버와 동기화를 요청한다.

C:\>w32tm /resync

로컬 컴퓨터에 다시 동기화 명령을 보내는 중

명령이 성공적으로 완료되었습니다.

 

NTP 서버(IP:10.10.10.1)와 실행 중인 서버와의 시간차이를 확인한다.

C:\>w32tm /stripchart /dataonly /computer:10.10.10.1

10.10.10.1[10.10.10.1:123] 추적 중

현재 시간은 2012-04-19 오후 22:47:25 입니다.

22:47:25, +23.2364090s

22:47:27, +22.7004942s    -> 조금씩이지만 차이가 줄어드는 것을 볼 수 있다.

22:47:30, +22.1639462s

22:47:32, +21.6430236s

^C                        -> 중지하기 위해서는 “Ctrl + c”를 누르면 된다.


6. 주기적인 시간 동기화


주기적으로 시간을 자동으로 동기화 하게 만드는데, 방법은 다음과 같다.


1) 시작 – 실행 – regedit (혹은 Winkey+R regedit)


2) HKEY_LOCAL_MACHINE\

   SYSTEM\

   CurrentControlSet\

   services\

   W32Time\

   TimeProviders\

   NtpClient


3) SpecialPollInterval 이름을 더블 클릭


4) 10진수로 바꿔서 본인이 원하는 숫자를 입력.


   60 = 60, 600 = 10, 3600 = 1시간, 86400 = 1


   초로 계산한다.


5) 시작 – 실행 – cmd (혹은 Winkey+R cmd)


6) Windows Time 서비스 재기동


net stop w32time 엔터

  net start w32time 엔터


2. BaroPAM 소개

2.1 BaroPAM 개요


Windows, 웹 서버, AP서버, DB서버, 네트워크 장비, 보안장비, 저장장치, 기타장비 등 수 십에서 수 백 대의 정보자산을 관리하는 IT 기업의 운영자들은 어플리케이션의 계정 이외에도 정보자산에 대한 운영체제에 존재하는 여러 계정들에 대한 비밀번호도 관리해야 한다.


개인 사용자들의 계정과 비밀번호와는 달리 정보자산에 대한 운영체제의 계정은 유출될 경우 보안 관점에서 매우 치명적인 문제가 발생할 수 있기 때문에 특별하게 관리되어야 한다.


비밀번호의 관리 문제로 인해 여러 비밀번호 관리 솔루션 들이 출시 되었지만 비밀번호가 복호화 가능한 암호화 기법으로 DB에 저장된다는 점에서 컴플라이언스 측면의 문제가 있다. 단지 비밀번호 관리의 편의성만을 강조한 솔루션들이기 때문이다.


때문에 2차 인증(2 Factor/2 Channel 인증)이 추가적으로 적용되어야 한다. 그래서 2013 12월 개정된 금융감독 규정에 정보처리시스템의 계정으로 접속 시 2차 인증 의무화가 명시 되어 있다.


하지만 법의 모호함은 SAC(System Access Control) 서버에 접속할 때 2차 인증을 정보자산에 대한 계정의 접속 시 2차 인증으로 인정할 것인가라는 논란 거리를 만들고 있다.


하지만 분명히 "정보자산에 대한 계정의 접속" 2차 인증 적용이기 때문에 SAC 접속할 때 2차 인증은 인정받지 못할 가능성이 높다.



2 Factor 인증은 기존의 "지식기반 인증" ID/Password 인증에 다른 요소 즉 소유기반 인증 및 생체인증 요소를 추가한 인증 기법을 말한다.


2 Factor 인증기법은 인증 과정이 추가하면 ID/Password를 알고 접속하려는 사용자에게 2차 인증 키(일회용 인증키)나 지문 등의 추가 인증을 요구함으로써 스니핑과 같은 ID/Password 유출에 의한 공격을 방어할 수 있다. 하지만 최근에는 APT 공격 등에 의해 단순한 2 Factor 인증(2차 인증) 기법이 무력화 되는 경우가 발생하기도 한다.


특히 웹 서비스나 스마트폰 기반의 서비스는 이러한 단순한 2차 인증(2 Factor 인증)만으로는 해킹을 방어하지 못하는 사례가 발생하기도 한다. 그 이유는 바로 메모리 해킹 때문이다. PC나 스마트폰에 설치된 악성코드가 사용자가 입력한 2차 인증 정보 혹은 인증 후 실 거래 발생 시 거래 정보를 암호화하여 네트워크로 전송하기 직전에 거래 정보를 가로채 변조하는 고도의 프로그래밍 기술을 적용한 악성코드를 사용하기 때문이다.



2 Channel 인증은 2 Factor 인증을 포함한다고 보는 것이 일반적이며 인증과 서비스를 수행하는 통신선로를 서비스 채널과 인증채널로 물리적으로 분리하는 것이 특징이다.


즉 서비스를 사용하는 PC/스마트폰의 통신 채널과 서비스에 모두 사용하는 것이 아니라 PC가 서비스 채널인 경우 ARS(전화) 혹은 스마트폰 앱 등을 통해 서비스를 사용하는 PC 와는 물리적으로 다른 채널을 형성하여 2차 인증을 수행하는 것이다. 이렇게 서비스 채널과 인증 채널을 물리적으로 분리함으로써 해커에 의해 PC 혹은 스마트폰이 장악 되더라도 해커가 서비스에 접근할 수 없게 된다.


여기서 한걸음 더 나아간다면 금융거래나 구매 거래 시 관련 데이터를 2 채널 인증에 의해 확립된 2개의 채널로 분리하여 전송한 뒤 결제 시스템에서 조합하여 거래를 완성 시키는 2 채널 서비스 구성도 검토해 볼 수 있겠다.


정보자산에 접근하는 사용자(여기서 사용자는 운영체제의 계정을 이용하여 정보자산에 telnet, ftp, ssh, sftp, rlogin 등을 통해 접근하는 사용자를 말한다)에 대한 통제를 "정보자산 접근 제어"라고 한다. 하지만 실제로는 정보자산에 웹 브라우저를 통하든, DB 클라이언트 툴을 통하든 정보자산에 접근하는 모든 접근을 포함하는 것이 더 적절하다고 하겠다.


정보자산에 대한 접근 제어를 수행할 수 있는 솔루션으로는 "게이트웨어 방식의 정보자산에 대한 접근 제어 솔루션" "정보자산에 대한 보안 S/W" 두 가지가 있다. 두 가지의 가장 큰 차이는 접근 제어를 위해 어떠한 기술적 방식을 채용 했느냐다.


게이트웨어 방식의 정보자산에 대한 접근제어 솔루션은 사용자들이 telnet 등을 통해 정보자산에 접근하기 위해서 정보자산에 대한 접근 통제 서버를 경유하여 정보자산에 로그인 형태로 구현된다. 때문에 접근 대상이 되는 정보자산들이 존재하는 네트워크의 네트워크 장비의 설정을 변경해 주어야 한다. 그 이유는 ssh, sftp 등의 명령어나 클라이언트 툴(Putty, SecureCRT, SecureFX, ALFTP, 파일질라 등)을 사용자 PC에서 직접 실행하여 정보자산에 로그온하지 못하도록 해야 하기 때문이다.



그리고 아래의 그림처럼 동일한 네트워크(서브넷)에 있는 정보자산들간의 ssh 등을 차단할 수 있는 대책이 강구되어야 한다. 만약 사용자1이 정보자산1에는 들어갈 권한이 있지만 이러한 기능이 지원되지 않는 장비에 물려 있다면 통제할 방법이 없게 된다.


게다가 정보자산에 대한 운영체제 입장에서는 모든 사용자 계정이 하나의 IP에서 접속하는 것으로 인식되기 때문에 TCP래퍼나 IPTables과 같은 정보자산 자체의 보안 도구를 이용해 2차 접근제어(안전을 위해)를 할 수가 없다.


또한 게이트웨어 방식의 경우 사용자가 정보자산에 로그온 한 뒤 주요 파일에 대한 접근제어나 su, 특정 포트의 바인딩을 수행할 수가 없다. 간혹 "명령어 통제"가 된다고 이야기하지만 명령어 실행을 단순히 키보드에 입력된 문자열 기반으로 통제하는 왕~초보적인 수준이기 때문에 실상 "파일접근통제(실행, 수정, 삭제 등~)"라고 할 수는 없다.


사용자 행위 감사 측면에서도 콘솔에서 작업한 내용과 접근통제 정보자산을 통하지 않은 접근에 대해서는 원천적으로 감사로 그 기록이 불가능하며 또한 중요 파일에 대한 접근 감사도 불가능하다.


아무래도 게이트웨어 방식의 네트워크 수준의 접근제어 솔루션이기 때문에 기능적으로 부족한 면이 많은 것이 사실이다. 하지만 정보자산에 "무언가"를 설치하지 않아도 된다는 장점 때문에 기타 부족한 점들이 많고 취약점도 많지만 많은 업체에서 게이트방식을 선호하기도 한다.


많은 보안 솔루션들 특히 정보자산에 대한 접근제어 솔루션(SAC, System Access Control)들이 2 Factor/2 Channel 인증을 제공하고 있다. 하지만 네트워크 수준에서 2 Factor/2 Channel 인증을 수행할 경우 제대로 된 2 Factor/2 Channel 인증을 수행할 수 없다.



위의 개념도에서 알 수 있듯 네트워크 수준에서 수행하는 정보자산에 대한 접근제어의 2차 인증은 사용자와 정보자산에 대한 접근 제어 장비까지의 구간만 2차 인증이 수행되고 실제 정보자산에 접근하는 접속 세션에서는 여전히 ID Password에 기반한 단순한 인증만이 수행된다.


게다가 비밀번호의 관리 편의성을 높이고 사용자가 정보자산의 계정에 대한 Password를 알지 못하게 하기 위해 정보자산에 대한 접근제어 정보자산에 "복호화가 가능한" 형태로 모든 정보자산의 계정에 대한 Password를 저장한다. 이는 "Password는 복호화가 불가능한 형태로 암호화" 해야 한다는 가장 기본적인 보안 규정을 어기는 중대한 보안 취약성이다. 개인정보보호법에는 사용자의 비밀번호는 복호화가 불가능한 단방향 암호화를 하도록 명시되어 있음을 유의해야 한다.


정보자산에 대한 2 Factor 인증 및 2 Channel 인증은 정보자산에 대한 운영체제의 자체 인증 과정에 추가하여 적용되어야만 우회 접속 및 여러 인증 취약성 공격 기법에서 자유로울 수 있다. 관리의 편의성 만을 생각한다면 모를까 제대로 된 정보자산에 대한 접근 통제를 하기 위해서는 필수적으로 운영체제에 추가적인 인증 모듈을 적용하여야 한다.


Unix/Linux의 경우 운영체제에서 PAM(Pluggable Authentication Module)이라는 2 Factor/2 Channel 인증을 적용할 수 있는 모듈을 제공하며, Windows의 경우 GINA(Graphical Identification and Authentication)/CP(Credential Provider)라는 추가 인증을 적용할 수 있는 모듈을 제공하고 있다. 그럼에도 불구하고 개발의 편의성, 관리의 편의성은 증대될지 모르나 실질적인 보안 강화 효과는 그다지 기대하기 어렵다고 볼 수 있다.


또한 수 많은 정보자산을 운용하며 Password 관리에 골치를 앓고 있는 기관과 기업의 어려움을 파고들어 제대로 된 보안 강화 솔루션이 아닌 보안 강화 효과도 별로 없는 솔루션을 공급하는 것은 상도덕에도 어긋난다고 할 수 있다.


사실 특정 보안 솔루션만으로 모든 보안 취약성을 커버할 수는 없는 것이 사실이다. 해킹은 지속적이고 지능적으로 변화하고 있으며 네트워크 기반의 보안 만으로는 더 이상 서버에 저장된 정보를 보호할 수 없다.


개인정보를 비롯한 기관과 기업의 중요 데이터는 "정보자산"에 저장되어 있다. 정보자산의 보안을 강화하지 않고 길목인 네트워크에서 어떻게든 보안을 강화해보려는 구태의연한 보안은 이제 더 이상의 효과를 볼 수 없는 현실을 직시해야 한다. 아울러 외부로부터의 해킹이 아닌 내부 관리자/운영자들에 대한 통제를 빠르고 안정적인 "서비스 개발과 운영"을 핑계로 계속 미룰 경우 지금과 같은 해킹 대란은 계속 발생하고 보안 예산의 낭비는 계속될 수 밖에 없다.


정보자산에 대한 보안S/W는 정보자산의 박스(H/W)에 접근하는 IP/Port의 물리적 접근은 물론 정보자산에 TCP 세션을 맺고 로그인하는 행위, 로그인한 뒤 수행하는 모든 행위에 대한 접근통제가 가능한 유일한 보안솔루션이다.


당연히 이 포스트의 핵심인 정보자산에 대한 접근제어 기능도 정보자산에 대한 보안S/W가 갖고 있는 기본 기능의 하나며 게이트웨어 방식의 정보자산에 대한 접근제어 솔루션이 등장하기 10여년 전부터 보급되고 있다. 그리고 정보자산에 대한 보안S/W가 갖고 있는 정보자산에 대한 접근제어 기능은 계속 진화하여 공인인증 기능이 추가되었고 공인인증을 받고 접속한 사용자에게만 특정 파일에 대한 접근(읽기/수정/삭제 등)을 허용할 수 있는 "자연인 기반의 파일접근 통제"까지도 가능하도록 진화되어 있다.


정보자산에 대한 보안S/W의 정보자산에 대한 접근제어 구성을 살펴보면 다음 그림과 같다.



정보자산에 대한 S/W의 정보자산에 대한 접근제어는 망구성이나 네트워크 장비의 설정 변경 등의 작업이 필요 없다. 게다가 정보자산에 설치된 정보자산에 대한 S/W가 직접통제를 수행하기 때문에 동일 네트워크상의 정보자산을 통해 수행할 수 있는 우회접근이 원천적으로 차단되며 부수적으로 콘솔에서의 행위도 모두 감사로그 기록이 가능하고 화면에는 보이지 않는 (예를 들면 스크립트를 실행할 때 화면에 표시되지 않고 내부적으로 실행되는) 명령어나 파일접근도 모두 로깅이 가능한 장점이 있다.


또한 게이트웨어 방식의 경우 정보자산에 대한 운영체제의 로그인 히스토리에 모두 게이트웨어 정보자산의 IP가 기록된다. 이는 정보자산에 로그인한 실제 사용자 PC IP를 정보자산에서는 정작 확인할 수 없다는 것을 뜻한다. 이는 정보자산에 대한 운영체제의 감사로그를 무용지물로 만드는 것이다.


게다가 게이트웨어 장비에 등록된 사용자의 접속ID가 탈취당할 경우 해당ID가 갖고 있는 정보자산의 접근 권한을 한꺼번에 탈취당하는 상황이 발생할 수도 있다. 실제로 게이트웨어 방식의 정보자산에 대한 접근제어 솔루션은 게이트웨어 서버에 로그인할 때 한번 인증을 받으면 실제 정보자산에 접근할 때는 IP/Password를 자동으로 인증하는 기능을 제공하고 있다. 이는 게이트웨어 방식의 정보자산에 대한 접근제어 솔루션이 보안에 더욱 취약할 수 있다는 것을 의미하기도 한다.


하지만 분명한 것은 정보자산에 대한 접근제어 기능 측면에서 정보자산에 대한 S/W가 게이트웨어 방식에 비해 훨씬 기술적인 장점이 많다는 점이다. 물론 네트워크 관점에서 바라볼 때 정보자산에 대한 접근제어 시스템을 구축하는 것은 게이트웨어 방식이 훨씬 쉽다는 장점이 있다. 정보자산마다 무언가를 설치하지 않아도 되기 때문이다.


하지만 논리적인 망구성의 변경이나 우회경로가 쉽게 뚫릴 수 있다는 점 그리고 자칫 게이트웨어 서버의 접근 계정이 유출되면 더 큰 문제가 발생할 수 있다는 점 게다가 게이트웨어 서버의 장애 발생 시 전체 정보자산에 접근이 불가능해지고 사용자들이 정보자산에 접근하기가 많이 불편해지는 점 등 네트워크 기반에서 정보자산에 대한 접근제어를 바라볼 때문에 발생할 수 있는 문제점에 대해 신중하게 검토하여야 한다.


BaroPAM 솔루션은 Windows/Mac/Linux/Unix의 운영체제에서 2차 인증으로 2세대 인증키(소프트 인증키)를 접목시켜 중앙 집중적 인증 메커니즘을 지원하는 단순하면서도 강력한 정보자산(Windows, 서버, 데이터베이스, 네트워크장비, 보안장비, 저장장치 등)의 접근제어 솔루션입니다.



2.2 BaroPAM 아키텍처


BaroPAM 솔루션은 새로운 Credential Provider가 하나 추가된 개념이고, 이는 ID/Password 기반의 기본 로그인 화면 UI는 건드리지 않고 내부 로직만 Plugin 확장을 통해 추가/수정할 수 있게 해 주는 Credential Provider로 아키텍처는 다음과 같다.

 


2.3 BaroPAM 인증 절차


BaroPAM 솔루션의 인증 절차는 Windows 인증 절차에 2차 인증으로 BaroKEY를 추가 하였다.



2.4 BaroPAM 특장점


BaroPAM의 특장점은 다음과 같다.


512bit 표준해쉬함수(HMAC-SHA512) 사용(인터넷 보안 표준인 IETF RFC 6283)

■ 금융감독원에서 권장하는 Time-sync 방식

■ 동적 HMAC Key 방식

■ 인증서버가 별도로 필요하지 않는 소프트웨어 방식(2세대 인증키, 소프트 인증키)

■ 정보자산별로 일회용 인증키 및 인증키 생성주기(3~60초) 개별 부여

■ 스마트 폰을 인증매체로 사용하므로 휴대성 및 편의성 극대화

■ 2차 인증의 인증키 지원

■ Hard 인증키와는 달리 Soft 인증키(2nd 인증키)로 영구적 사용가능

■ CP + 2차 인증(BaroKEY) 방식의 정보자산 접근 제어

■ 인증 키를 대신 사용할 수 있는 응급 스크래치 코드 제공

■ 다양한 응용프로그램 및 연동 개발의 편의성 제공(Java, C 언어로 된 API 연동)


2.5 BaroPAM의 3단계 보안 전략


BaroPAM 솔루션의 보안 전략은 3단계로 구성이 되며, 1단계는 Windows/NT-Server 부팅 시 CMOS 보안(Password), 2단계는 전형적인 기본 보안(ID/Password), 3단계는 일회용 인증 키(BaroKEY)를 적용한 보안의 전략적인 구성으로 되어 있다.



2.6 BaroPAM 처리 Flow


BaroPAM 솔루션의 정보자산 접근제어 2차 인증에 대한 시스템 Flow는 다음과 같이 처리된다. 만약, Windows/NT-Server의 암호를 해체하는 경우는 Windows/NT-Server Username에 대한 Password는 검증하지 않는다.



Windows/NT-Server 로그온 시 BaroPAM 앱에서 일회용 인증키를 생성한다. 생성한 일회용 인증키와 비밀번호를 입력한 후 로그온 버튼(->)을 클릭하여 Windows/NT-Server에 로그온 한다.



3. BaroPAM 설치

3.1 BaroPAM 설치 전 준비사항


BaroPAM을 사용할려고 하면 사용하는 Windows 로그온 계정에 대한 암호를 반드시 설정해야 하며, Windows 로그온 계정과 암호가 맞는지 반드시 확인해야 하며, Windows에 대한 최신 Update가 되어 있는지 확인 해야 한다.


3.2 BaroPAM 설치 모듈 다운로드 및 설치


BaroPAM 설치 모듈의 다운로드할 URL은 다음과 같다.


http://nuriapp.com/download/BaroPAM_Install_x32_v1.exe  è Windows 7, 32bit

http://nuriapp.com/download/BaroPAM_Install_x64_v1.exe  è Windows 7, 64bit

http://nuriapp.com/download/BaroPAM_Install_x64_v2.exe  è Windows 8, 10, 64bit


BaroPAM 설치는 BaroPAM 설치 모듈를 다운로드 받은 디렉토리로 이동하여 다음과 같은 순서로 BaroPAM을 설치한다.


첫번째, BaroPAM 설치 파일을 클릭하면 다음과 같은 "사용자 계정 컨트롤" 화면이 나타난다.



두번째, BaroPAM 설치는 반드시 관리자 계정으로 해야 되기 때문에 "사용자 계정 컨트롤" 화면의 내용을 확인한 후 "(Y)" 버튼을 클릭해야 한다. 그러면 다음 같이 "BaroPAM 1.0 설치" 화면이 나타난다.



세번째, "BaroPAM 1.0 설치" 화면의 내용을 확인한 후 "설치" 버튼을 클릭하면 다음과 같이 "Microsoft Visual C++ 2012 Redistributable" 설치 화면이 나타난다.



만약 이미 설치 되어 있는 경우에는 다음과 같은 "Microsoft Visual C++ 2012 Redistributable" 설치 수정 화면이 나타난다. 이런 경우 이미 설치되어 있기 때문에 "닫기(C)" 버튼을 클릭한다.



Visual Studio 2005 이후 Version으로 개발된 C++ 프로그램들은 Redistributable를 설치해야 제대로 실행되는 경우가 Windows 로그온 시 다음과 같은 오류 메시지가 발생하며 BaroPAM이 적용되지 않는다.



네번째, "Microsoft Visual C++ 2012 Redistributable" 설치 화면에서 "MICROSOFT 소프트웨어 사용 조건"을 확인 한 후 "동의함(A)"을 선택하고 "설치(I)" 버튼을 그러면 다음과 같이 "설치 진행률" 화면이 나타난다.


Install_08.jpg


다섯번째, "Microsoft Visual C++ 2012 Redistributable" "BaroPAM" 설치가 롼료 되면 다음과 같은 "BaroPAM 설치완료" 화면이 나타난다.




"BaroPAM" 설치가 완료되면 "C:\Windows\System32" 디렉토리로 다음과 같은 모듈이 설치된다.


- 설정파일 : pam_baro_auth.ini

- 인증화면 : pam_baro_auth_7.dll, pam_baro_auth_7.exp, pam_baro_auth_7.ilk, pam_baro_auth_7.lib

- 로고파일 : baropam_logo.bmp

- 인증키 검증모듈 : BaroOTPx.dll, BaroOTPx.lib

- 암복호 모듈 : BaroCRYPTx.dll, BaroCRYPTx.lib

- Open SSL 모듈 : libeay32MD.dll, ssleay32MD.dll

- Registry 파일 : Register.reg, Unregister.reg


3.3 BaroPAM 환경 설정


BaroPAM 환경 설정 파일은 "pam_baro_auth.ini" 파일로 "C:\Windows\System32" 디렉토리에 존재해야 한다.


만약 없는 경우에는 BaroPAM 모듈이 오작동할 수 있으므로 주의해야 한다. BaroPAM 환경 설정 파일의 정보는 다음과 같다.

 

[BaroPAM]

SECURE_KEY=Dv/6UIzIP3s5yKE/EfseZJ6z3JC+3Xqe

CYCLE_TIME=30

CORR_TIME=0

KEY_METHOD=app512

SCRATCH_CODE=12345678

LOG_SAVE=Y

BAROPAM_LOG=c:\pam_baro_auth.log

ACL_TYPE=allow

ACL_USER=baropam,baropam-pc

 

[STRING]

CAPTION_BUTTON=Certification

MESSAGE_FAIL=Certification failed. Please re-enter your verification code.

MESSAGE_CTIME=Cycle time does not exist.

MESSAGE_VCODE=Please enter Verification Code.

MESSAGE_SKEY=Secure key does not exist.

 

SECURE_KEY  : Windows 당 부여 받은 Secure key

CYCLE_TIME  : 인증키 생성주기(, 3~60)

CORR_TIME   : 인증키 보증오차시간() - 인증키 생성 방식이 카드인 경우에 사용(기본값 0)

KEY_METHOD  : 인증키 생성 방식(app1,app256,app512: 어플, card1,card256,card512: 인증카드)

SCRATCH_CODE: 응급 스크래치 코드(8자리) - 인증키 생성기를 가지고 오지 않았거나, 컴퓨터 시간 차이 등

               으로 인하여 컴퓨터를 접근하지 못할 때 인증키 대신 사용.

LOG_SAVE     : Windows 로그온에 다핸 인증로그 저장 여부(Y or N)

BAROPAM_LOG : Windows 로그온에 대한 디렉토리를 포함한 로깅 파일명

ACL_TYPE     : 2차 인증에서 허용(allow) 또는 제외(deny) 구분

ACL_USER     : 2차 인증에서 허용 또는 제외할 username을 콤마(Comma)로 구분

 

Windows의 로그온 시 로깅되는 인증로그의 사항과 형식은 다음과 같다.

 

1) 로그온 성공

 

① 응급 스크래치 코드 사용

2018.10.14 11:46:02-0537(UTC) : BAROPAM-PC : emergency scratch code : session opened for user root by (ip=1.234.83.169)

 

② 일회용 인증키 사용

2018.10.14 11:46:02-0537(UTC) : BAROPAM-PC : authentification key : session opened for user root by (ip=1.234.83.169)

 

 

2) 로그온 실패

 

① 검증 실패

2018.10.14 11:46:02-0537(UTC) : BAROPAM-PC : authentification key : User root authentication failed (ip = 1.234.83.169)

 

② 인증키 생성주기가 없음

2018.10.14 11:46:02-0537(UTC) : BAROPAM-PC : authentification key : There is no cycle time for user root (ip = 1.234.83.169)

 

③ 인증키를 입력하지 않음

2018.10.14 11:46:02-0537(UTC) : BAROPAM-PC : authentification key : There is no verification code for user root (ip = 1.234.83.169)

 

④ 인증키가 없음

2018.10.14 11:46:02-0537(UTC) : BAROPAM-PC : authentification key : There is no secure key for user root (ip = 1.234.83.169)


Windows 시간이 현재 시간과 다를 경우 인증키와 매칭이 되지 않아 일회용 인증키가 맞질 않으므로 시간을 같게 시간 동기화 해야 한다.


최근에는 서버/네트워크 장비에 대한 시간 동기화(타임서버 시간 동기화)하는 방법으로 NTP(Network Time Protocol)을 이용하여 관리자 계정에서 시스템의 시각을 현재 시각으로 설정할 수 있다. ("1.4 NTP(Network Time Protocol) 설정" 참조)


만약 Windows 로그온이 안되는 경우에는 다음과 같이 안전모드로 부팅한 후 "C:\Windows\System32" 디렉토리로 이동한 후 "Unregister.reg" 파일을 클릭하면 Windows registry에 추가된 BaroPAM 정보를 해제할 수 있다.


1. Windows 7인 경우


안전 모드는 운영 체제 진단을 위한 모드로 시스템을 최소한의 파일과 드라이버만 사용하는 등 기능적인 제약이 많다. 하지만 이 덕에 오히려 문제 해결에 도움을 줄 수 있다.


첫번째, 시작-실행을 누르든가 아니면 "윈도우 키+R"를 눌러 실행 창을 실행한다.



두번째, 열기 항목에 다음과 같이 "msconfig" 입력한 뒤 "확인" 버튼을 클릭한다.



세번째, "부팅" 탭을 선택한 후 "부팅 옵션"에서 "안정 부팅(R)"을 다음과 같이 선택한다.



기타 옵션은 바꿀 필요가 없다. 이제 재시작을 하면 안전 모드로 부팅된다. 하지만 안전 모드에서 사용이 끝난 후 다시 이 옵션을 선택 해제해야 한다.


2. Windows 10인 경우


Windows 10에서는 F8 키를 이용한 안전모드 부팅 방법이 원칙적으로 불가능 하게 되어서 다른 방법을 이용해야 한다.


첫번째, "시작" 메뉴에서 전원을 클릭한 후 "Shift+다시시작" 메뉴를 다음과 같이 선택한다.



두번째, "옵션 선택" 화면에서 PC 초기화 또는 고급 옵션을 표시하기 위해서 "문제 해결" 메뉴를 다음과 같이 클릭 한다.



세번째, "문제 해결" 화면에서 "고급 옵션" 메뉴를 다음과 같이 클릭한다.



네번째, "고급 옵션" 화면에서 Windows 시작 동작을 변경하기 위해서 "시작 설정" 메뉴를 다음과 같이 클릭한다.



다섯번째, "시작 설정" 화면에서 안전 모드로 부팅하기 위해서 "다시 시작" 버튼을 다음과 같이 클릭하여 Windows를 재부팅 한다.



여섯번째, "시작 설정" 화면에서 안전 모드로 부팅하기 위해서 숫자 키(4) 또는 기능 키(F4)를 누른다.



일곱번째, 로그인온 화면에서 로그온하게 되면 안전 모드로 전환 된다.



3.4 Windows Logon 방법


Windows를 전원을 켜면 다음과 같은 BaroPAM의 인증키와 Windows의 Password를 입력하는 BaroPAM의 로그인 화면이 나타난다.

 

1. Windows 7

 

 

2. Windows 10(Windows 7 이상)


스마트 폰에서 인증키를 생성한 후 "Verification code"에 생성한 인증키와 Windows "Password"를 입력한 후 "->" 버튼을 클릭하면 BaroPAM 모듈에 인증을 요청하여 검증이 성공하면 Windows OS의 로그인 인증 정책이 작동된다. (BaroPAM 어플에 대한 사항은 "4.BaroPAM 어플" 참조)

 

Windows에서는 입력한 인증키를 BaroPAM 검증모듈에서 인증에 실패하면 다음과 같은 "Error" 메시지 박스가 나타나며 BaroPAM의 로그인 화면에 머무른다.




3.5 BaroPAM 제거 및 재사용 방법


BaroPAM이 설치된 상태에서 BaroPAM 모듈을 사용하지 않을 경우 Windows registry에 추가된 정보를 해제하기 위하여 "C:\Windows\System32\Unregister.reg" 파일을 클릭한다. "Unregister.reg" 파일의 정보는 다음과 같다.


Windows Registry Editor Version 5.00

 

[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\Credential Provider Filters\{75A22DF0-B81D-46ed-B119-CD30507BD615}]

 

[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\Credential Providers\{75A22DF0-B81D-46ed-B119-CD30507BD615}]


BaroPAM이 설치된 상태에서 BaroPAM 모듈을 재사용하는 경우 Windows registry에 추가하기 위하여 "C:\Windows\System32\Register.reg" 파일을 클릭한다. "Register.reg" 파일의 정보는 다음과 같다.


Windows Registry Editor Version 5.00

 

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\Credential Provider Filters\{75A22DF0-B81D-46ed-B119-CD30507BD615}]

@="baroPAMLogon"

 

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\Credential Providers\{75A22DF0-B81D-46ed-B119-CD30507BD615}]

@="baroPAMLogon"

 

[HKEY_CLASSES_ROOT\CLSID\{75A22DF0-B81D-46ed-B119-CD30507BD615}]

@="baroPAMLogon"

 

[HKEY_CLASSES_ROOT\CLSID\{75A22DF0-B81D-46ed-B119-CD30507BD615}\InprocServer32]

@="pam_baro_auth_7.dll"

"ThreadingModel"="Apartment"

 

4. BaroPAM 어플

 

정보자산에 로그인 시 Verification code에 입력할 일회용 인증키 발생기인 BaroPAM 어플의 안드로이드 폰용 다운로드(https://play.google.com/store/apps/details?id=com.baro.pam)구글의 "Play 스토어"에서 아이폰 용은 애플의 "App store"에서 가능하며, 설치는 일반 어플의 설치와 동일하다.

 

4.1 BaroPAM 어플 설치

 

"BaroPAM"어플의 다운로드 및 설치는 다음과 같은 절차로 진행된다.

 

1. 스마트 폰에서 "Pay 스토어" 또는 "App Store" 아이콘을 클릭한다.

 

안드로이드 폰인 경우)

 

 


아이폰인 경우)

 


2. 구글 "Pay 스토어" 또는 애플 "App Store"가 다음과 같이 활성화 된다.

 

구글 "Pay 스토어"인 경우)

 


애플 "App Store"인 경우)

 

 


3. 상단의 검색어 란에 "baropam"을 다음과 같이 입력하면  "BaroPAM" 어플이 검색되어 나타난다.

 

구글 "Pay 스토어"인 경우)

 


애플 "App Store"인 경우)

 

 


4. "BaroPAM"어플의 정보를 확인한 후 "설치" 또는 "받기" 버튼을 클릭한다.

 

구글 "Pay 스토어"인 경우)

 


애플 "App Store"인 경우)

 

 

 


5. "BaroPAM"어플의 다운로드 후 설치가 다음과 같이 진행된다.

 

구글 "Pay 스토어"인 경우)

 


애플 "App Store"인 경우는 다음과 같이 본인을 완료한 후 설치가 진행된다.

 

 


6. "BaroPAM"어플의 설치가 정상적으로 완료 되면, 스마트 폰에 다음과 같은 "BaroPAM" 아이콘이 추가된다.

 

구글 "Pay 스토어"인 경우)

 


애플 "App Store"인 경우)

 


7. 안드로이드  폰인 경우 "BaroPAM"어플의 권한을 설정하기 위해서 다음과 같이 "설정" 아이콘을 클릭한다.(아이폰인 경우 8~11 단계는 진행할 필요가 없다.)

 

안드로이드 폰인 경우)

 

안드로이드 폰인 경우 권한을 설정하지 않으면 인증번호가 생성되지 않는다.

 


8. "설정" 화면의 아이콘 중에 다음과 같이 "애플리케이션 관리자" 아이콘을 클릭한다.

 

안드로이드 폰인 경우)

 


9. "애플리케이션 관리자" 화면에서 다음과 같이 "BaroPAM" 아이콘을 클릭한다.

 

안드로이드 폰인 경우)

 


10. "애플리케이션 정보" 화면에서 "권한"를 선택하면 "앱 권한"을 설정하는 화면이 나타난다.

 

안드로이드 폰인 경우)

 

 


11. "앱 권한" 화면에서 "저장공간" "전화" off 에서 on으로 다음과 같이 "앱 권한"을 변경한다.

 

안드로이드 폰인 경우)

 

 


 

4.2 BaroPAM 어플 사용

 

"BaroPAM"어플은 크게 Pin 정보, 서버 정보, 로그인 정보, 환경설정, 정보공유 등의 5가지로 구성되어 있다.

 

1. 스마트 폰에서 "BaroPAM" 어플의 아이콘을 클릭한다.

 

안드로이드 폰인 경우)

 


아이폰인 경우)

 

 

 


2. "BaroPAM"어플이 활성화 되면 "BaroPAM"의 인트로 화면이 2초간 활성화 되어 다음과 같이 지속된다.

 

2-01.jpg

 

"BaroPAM" 어플의 인트로 화면 지속시간(2)이 끝나면 스마트 폰 분실 및 어플에 등록된 정보를 보호하기 위해서 본인만 알 수 있는 임의의 8자리 숫자인 Pin 번호(Pin number)를 설정하는 화면이 나타된다.

 

Pin 번호(Pin number)가 존재한 경우는 Pin 번호(Pin number)를 확인하는 화면이 나타난다.

 


3. Pin 번호(Pin number)가 설정되어 있지 않은 경우("BaroPAM" 어플을 처음 사용하는 경우) 다음과 같이 Pin 번호(Pin number)를 등록하는 화면이 나타난다.

 

안드로이드 폰인 경우)

2-02.png

 


아이폰인 경우)

07.png

 

 


4. Pin 번호 8자리 숫자를 입력하고 "Save" 버튼을 클릭한다.

 

안드로이드 폰인 경우)

 

"Save" 버튼을 클릭하면 제일 먼저 입력 항목들의 유효성을 확인 한 후 Pin 번호(Pin number)를 저장하는 작업을 진행한다.

 

만약, Pin 번호(Pin number)8자리가 아닌 경우 "Pin 번호 8자리를 입력해주십시오."라는 메시지가 화면에 나타난다.

 

Pin 번호(Pin number) 저장이 정상적으로 완료되지 못하면 "Pin 번호 등록" 화면이 지속되며, 정상적으로 완료되면 위 2번의 인트로 화면이 나타난다.

 


아이폰인 경우)

 

"저장" 버튼을 클릭하면 제일 먼저 입력 항목들의 유효성을 확인 한 후 Pin 번호(Pin number)를 저장하는 작업을 진행한다.

 

만약, Pin 번호(Pin number)8자리가 아닌 경우 "Pin 번호 8자리를 입력해주십시오."라는 메시지가 화면에 나타난다.

 

Pin 번호(Pin number) 저장이 정상적으로 완료되지 못하면 "Pin 번호 등록" 화면이 지속되며, 정상적으로 완료되면 위 2번의 인트로 화면이 나타난다.

 

아이폰은 안드로이드 폰과 달리 아이폰의 폰번호를 반드시 입력해야 한다.

 

 


5. Pin 번호(Pin number) 저장이 정상적으로 완료되지 못하면 "Pin 번호" 등록 화면이 지속되며, 정상적으로 완료되면 다음과 같이 "로그인" 화면에 설정한 Pin 번호(Pin number)를 다음과 같이 입력한다.

 

 


6. 설정한 8자리 Pin 번호(Pin number)를 입력한 다음 "Login" 버튼을 클릭한다.

 

 

"Login" 버튼을 클릭하면 제일 먼저 입력 항목들의 유효성을 확인 한 후 Pin 번호(Pin number)가 맞는지 를 확인하는 작업을 진행한다.

 

만약, Pin 번호(Pin number)8자리가 아닌 경우 "Pin 번호 8자리를 입력해주십시오."라는 메시지가 화면에 나타난다.

 

설정된 Pin 번호(Pin number)와 틀린 경우 "Pin번호가 틀립니다. 다시 확인 후 입력해주십시오."라는 메시지가 화면에 나타난다.

 


7. 로그인이 확인 되면, 다음과 같이 "Verification code" "one Time Auth key"를 선택하는 화면이 나타난다.

 

 

"Verification code" Windows/서버/데이터베이스/네트워크 장비/저장장치 등을 접근할 때 사용하는 일회용 인증키를 생성하는 경우 사용되며, "One Time Auth key"은 어플리케이션의 로그인 화면에서 일회용 인증키를 생성하는 경우에 사용된다.

 

먼저, "Verification code" 버튼을 클릭한 경우 Windows/서버/데이터베이스/네트워크 장비/저장장치 정보가 존재한 경우는 "서버 정보 목록" 화면으로 Windows/서버/데이터베이스/네트워크 장비/저장장치에 대한 정보가 존재하지 않은 경우는 "서버 정보 등록" 화면이 나타난다.

 


8. Windows/서버/데이터베이스/네트워크 장비/저장장치에 대한 정보가 설정되어 있지 않은 경우("BaroPAM" 어플을 처음 사용하는 경우) 다음과 같이 Windows/서버/데이터베이스/네트워크 장비/저장장치에 대한 정보를  등록하는 화면이 나타난다.

 

 

Server name

 

BaroPAM이 운영될 Windows/서버/데이터베이스/네트워크 장비/저장장치 명(Server name)은 필수 입력 항목으로 최소 1자리 이상 최대 30자리까지 입력할 수 있다.

 

Hostname

 

BaroPAM이 운영될 컴퓨터명/데이터베이스명/호스트명(Hostname)은 필수 입력 항목으로 최소 1자리 이상 최대 30자리까지 입력할 수 있다.

 

호스트명(Hostname)은 다음과 같은 명령어(uname -n)을 실행하여 알 수 있다.


[root] /root > uname -n

nuriapp.com

 

Secure key

 

Windows/서버/데이터베이스/네트워크 장비/저장장치별 또는 계정별로 부여 되는 Secure key는 필수 입력 항목으로 벤더에 요청하여 부여 받은 것을 입력해야 한다.

 

벤더에서 부여 받지 않은 임의의 "Secure key"를 입력하는 경우 잘못된 일회용 인증키가 부여되어 Windows/서버/데이터베이스/네트워크 장비/저장장치에 로그인 할 수 없는 경우가 발생할 수 있다.

 

만약, Windows/서버/데이터베이스/네트워크 장비/저장장치에 설정한 Secure key와 어플에서 지정한 Secure key가 다른 경우 일회용 인증키가 서로 달라서 로그인 할 수 없는 경우가 발생할 수 있다.

 

Auth key cycle time(3~60 second)

 

인증키 생성주기(Auth key cycle time)는 필수 입력 항목으로 최소 3초 이상 최대 60초 까지 지정할 수 있다.

 

만약, Windows/서버/데이터베이스/네트워크 장비/저장장치에 설정한 인증키 생성주기(Auth key cycle time)와 어플에서 지정한 인증키 생성주기(Auth key cycle time)가 다른 경우 일회용 인증키가 서로 달라서 로그인 할 수 없는 경우가 발생할 수 있다.

 


9. Windows/서버/데이터베이스/네트워크 장비/저장장치에 대한 정보를 입력한 후 "Save" 버튼을 클릭한다.

 

 

"Save" 버튼을 클릭하면 제일 먼저 입력 항목들의 유효성을 확인 한 후 Windows/서버/데이터베이스/네트워크 장비/저장장치에 대한 정보를 저장하는 작업을 진행한다.

 

Windows/서버/데이터베이스/네트워크 장비/저장장치명(Server name)이 입력하지 않은 경우 "서버명을 입력해주십시오."라는 메시지가 화면에 나타난다.

 

컴퓨터명/데이터베이스명/호스트명(Host name)이 입력하지 않은 경우 "호스트명을 입력해주십시오."라는 메시지가 화면에 나타난다.

 

Secure key가 입력하지 않은 경우 "Secure key를 입력해주십시오."라는 메시지가 화면에 나타난다.

 

인증키 생성주기(Auth key cycle time)가 입력하지 않거나 범위를 벗어난 경우 "인증키 생성주기를 입력 또는 확인해주십시오."라는 메시지가 화면에 나타난다.

 


10. Windows/서버/데이터베이스/네트워크 장비/저장장치에 대한 정보 저장이 정상적으로 완료되지 못하면 "서버 정보 등록" 화면이 지속되며, 정상적으로 완료되면 다음과 같이 "서버 정보 목록" 화면이 나타난다.

 

 

Windows/서버/데이터베이스/네트워크 장비/저장장치에 대한 정보를 검색하고 싶은 경우 검색어를 입력한 다음 "Search" 버튼을 클릭하면 검색된 Windows/서버/데이터베이스/네트워크 장비/저장장치에 대한 정보가 화면에 나타난다.

 

Windows/서버/데이터베이스/네트워크 장비/저장장치에 대한 정보를 신규로 추가해야 할 경우 "New"버튼을 클릭하면 위 8번과 같은 Windows/서버/데이터베이스/네트워크 장비/저장장치에 대한 정보를 등록하는 화면이 나타난다.

 

 


11. 2차 인증 키(일회용 인증키)를 생성해야 하는 경우 서버 정보 목록에서 Windows/서버/데이터베이스/네트워크 장비/저장장치에 대한 정보 항목을 다음과 같이 클릭한다.

 

 


12. 그러면 다음과 같이 Windows/서버/데이터베이스/네트워크 장비/저장장치에 대한 정보를 바탕으로 2차 인증 키(일회용 인증키)를 생성하는 화면이 나타난다.

 

 

Windows/서버/데이터베이스/네트워크 장비/저장장치에 대한 정보의 수정/삭제를 진행 해야 하는 경우 "Update/Delete" 버튼을 클릭하면 된다.

 

"Reset" 버튼을 클릭하면 새로운 2차 인증 키(일회용 인증키)가 생성되는데, 인증키 생성주기(Auth key cycle time) 동안은 동일한 2차 인증 키(일회용 인증키)가 발생한다.

 


13. Windows/서버/데이터베이스/네트워크 장비/저장장치에 대한 정보를 수정(Update) 또는 삭제(Delete) 해야 할 경우 "Update/Delete" 버튼을 클릭하면 다음과 같은 화면이 나타난다.

 

 

Server name

 

BaroPAM이 운영될 Windows/서버/데이터베이스/네트워크 장비/저장장치명(Server name)은 필수 입력 항목으로 최소 1자리 이상 최대 30자리까지 입력할 수 있다.

 

Hostname

 

BaroPAM이 운영될 컴퓨터명/데이터베이스명/호스트명(Hostname)은 필수 입력 항목으로 최소 1자리 이상 최대 30자리까지 입력할 수 있다.

 

호스트명(Hostname)은 다음과 같은 명령어(uname -n)을 실행하여 알 수 있다.


[root] /root > uname -n

nuriapp.com

 

Secure key

 

Windows/서버/데이터베이스/네트워크 장비/저장장치별 또는 계정별로 부여 되는 Secure key는 필수 입력 항목으로 벤더에 요청하여 부여 받은 것을 입력해야 한다.

 

벤더에서 부여 받지 않은 임의의 "Secure key"를 입력하는 경우 잘못된 일회용 인증키가 부여되어 Windows/서버/데이터베이스/네트워크 장비/저장장치에 로그인 할 수 없는 경우가 발생할 수 있다.

 

만약, Windows/서버/데이터베이스/네트워크 장비/저장장치에 설정한 Secure key와 어플에서 지정한 Secure key가 다른 경우 일회용 인증키가 서로 달라서 로그인 할 수 없는 경우가 발생할 수 있다.

 

Auth key cycle time(3~60 second)

 

인증키 생성주기(Auth key cycle time)는 필수 입력 항목으로 최소 3초 이상 최대 60초 까지 지정할 수 있다.

 

만약, Windows/서버/데이터베이스/네트워크 장비/저장장치에 설정한 인증키 생성주기(Auth key cycle time)와 어플에서 지정한 인증키 생성주기(Auth key cycle time)가 다른 경우 일회용 인증키가 서로 달라서 로그인 할 수 없는 경우가 발생할 수 있다.

 

"Delete" 버튼을 클릭하면 해당 Windows/서버/데이터베이스/네트워크 장비/저장장치에 대한 정보를 삭제하는 작업을 진행한다.

 

"Update" 버튼을 클릭하면 제일 먼저 입력 항목들의 유효성을 확인 한 후 Windows/서버/데이터베이스/네트워크 장비/저장장치에 대한 정보를 수정하는 작업을 진행한다.

 

Windows/서버/데이터베이스/네트워크 장비/저장장치명(Server name)이 입력하지 않은 경우 "서버명을 입력해주십시오."라는 메시지가 화면에 나타난다.

 

컴퓨터명/데이터베이스명/호스트명(Hostname)이 입력하지 않은 경우 "호스트명을 입력해주십시오."라는 메시지가 화면에 나타난다.

 

Secure key가 입력하지 않은 경우 "Secure key를 입력해주십시오."라는 메시지가 화면에 나타난다.

 

인증키 생성주기(Auth key cycle time)가 입력하지 않거나 범위를 벗어난 경우 "인증키 생성주기를 입력 또는 확인해주십시오."라는 메시지가 화면에 나타난다.

 

Windows/서버/데이터베이스/네트워크 장비/저장장치에 대한 정보 수정(Update) 또는 삭제(Delete)가 정상적으로 완료되지 못하면 "서버 정보 수정/삭제" 화면이 지속되며, 정상적으로 완료되면 10번과 같은 "서버 정보 목록" 화면이 나타난다.

 

 

 

 


14. 7번의 "메뉴선택" 화면에 "one Time Auth key" 버튼을 클릭한 경우 로그인 정보가 존재한 경우는 "로그인 정보 목록" 화면으로 로그인 정보가 존재하지 않은 경우는 "로그인 정보 등록" 화면이 나타난다.

 

 

System name

 

로그인할 시스템명(System name)은 필수 입력 항목으로 최소 1자리 이상 최대 30자리까지 입력할 수 있다.

 

Login-ID

 

로그인-ID(Login-ID)는 필수 입력 항목으로 최소 1자리 이상 최대 50자리까지 입력할 수 있다.

 

Auth key cycle time(3~60 second)

 

인증키 생성주기(Auth key cycle time)는 필수 입력 항목으로 최소 3초 이상 최대 60초 까지 지정할 수 있다.

 

만약, BaroPAM 검증모듈의 인증키 생성주기(Auth key cycle time)와 어플에서 지정한 인증키 생성주기(Auth key cycle time)가 다른 경우 일회용 인증키가 서로 달라서 로그인 할 수 없는 경우가 발생할 수 있다.

 

15. 로그인 정보를 입력한 후 "Save" 버튼을 클릭한다.

 

 

"Save" 버튼을 클릭하면 제일 먼저 입력 항목들의 유효성을 확인 한 후 로그인 정보를 저장하는 작업을 진행한다.

 

시스템명(System name)이 입력하지 않은 경우 "시스템명을 입력해주십시오."라는 메시지가 화면에 나타난다.

 

로그인-ID(Login-ID)가 입력하지 않은 경우 "로그인-ID를 입력해주십시오."라는 메시지가 화면에 나타난다.

 

인증키 생성주기(Auth key cycle time)가 입력하지 않거나 범위를 벗어난 경우 "인증키 생성주기를 입력 또는 확인해주십시오."라는 메시지가 화면에 나타난다.

 


16. 로그인 정보 저장이 정상적으로 완료되지 못하면 "로그인 정보 등록" 화면이 지속되며, 정상적으로 완료되면 다음과 같이 "로그인 정보 목록" 화면이 나타난다.

 

 

로그인 정보를 검색하고 싶은 경우 검색어를 입력한 다음 "Search" 버튼을 클릭하면 검색된 로그인 정보가 화면에 나타난다.

 

로그인 정보를 신규로 추가해야 할 경우 "New" 버튼을 클릭하면 위 14번과 같은 로그인 정보를 등록하는 화면이 나타난다.

 

 


17. 2차 인증 키(일회용 인증키)를 생성해야 하는 경우 로그인 정보 목록에서 로그인 정보 항목을 다음과 같이 클릭한다.

 

 

 


18. 그러면 다음과 같이 로그인 정보를 바탕으로 2차 인증 키(일회용 인증키)를 생성하는 화면이 나타난다.

 

 

로그인 정보의 수정/삭제를 진행 해야 하는 경우 "Update/Delete" 버튼을 클릭하면 된다.

 

"Reset" 버튼을 클릭하면 새로운 2차 인증 키(일회용 인증키)가 생성되는데, 인증키 생성주기(Auth key cycle time) 동안은 동일한 2차 인증 키(일회용 인증키)가 발생한다.

 

 


19. 로그인 정보를 수정(Update) 또는 삭제(Delete) 해야 할 경우 "Update/Delete" 버튼을 클릭하면 다음과 같은 화면이 나타난다.

 

 

System name

 

로그인할 시스템명(System name)은 필수 입력 항목으로 최소 1자리 이상 최대 30자리까지 입력할 수 있다.

 

Login-ID

 

로그인-ID(Login-ID)는 필수 입력 항목으로 최소 1자리 이상 최대 50자리까지 입력할 수 있다.

 

Auth key cycle time(3~60 second)

 

인증키 생성주기(Auth key cycle time)는 필수 입력 항목으로 최소 3초 이상 최대 60초 까지 지정할 수 있다.

 

만약, BaroPAM 검증모듈의 인증키 생성주기(Auth key cycle time)와 어플에서 지정한 인증키 생성주기(Auth key cycle time)가 다른 경우 일회용 인증키가 서로 달라서 로그인 할 수 없는 경우가 발생할 수 있다.

 

"Delete" 버튼을 클릭하면 해당 로그인 정보를 삭제하는 작업을 진행한다.

 

"Update" 버튼을 클릭하면 제일 먼저 입력 항목들의 유효성을 확인 한 후 로그인 정보를 수정하는 작업을 진행한다.

 

시스템명(System name)이 입력하지 않은 경우 "시스템명을 입력해주십시오."라는 메시지가 화면에 나타난다.

 

로그인-ID(Login-ID)가 입력하지 않은 경우 "로그인-ID를 입력해주십시오."라는 메시지가 화면에 나타난다.

 

인증키 생성주기(Auth key cycle time)가 입력하지 않거나 범위를 벗어난 경우 "인증키 생성주기를 입력 또는 확인해주십시오."라는 메시지가 화면에 나타난다.

 

로그인 정보 수정(Update) 또는 삭제(Delete)가 정상적으로 완료되지 못하면 "로그인 정보 수정/삭제" 화면이 지속되며, 정상적으로 완료되면 17번과 같은 "로그인 정보 목록" 화면이 나타난다.

 

 


20. "BaroPAM" 어플의 환경설정은 다음과 같은 "환경설정" 아이콘을 클릭하면 된다.

 

 


21. 그러면 다음과 같이 "환경설정" 화면이 나타난다.

 

6-01.jpg

 


22. "BaroPAM 업데이트 하기" 항목을 클릭하면 다음과 같은 "Google Play Store" 화면이 나타난다.

 

 

"업데이트" 버튼을 클릭하면 "BaroPAM" 어플의 업데이트 작업 이 진행된다. "업데이트" 버튼이 없는 경우는 업데이트할 정보가 없는 경우을 의미한다.

 


23. "BaroPAM 별점주기" 항목을 클릭하면 다음과 같은 "Google Play Store"의 별점주기 화면이 나타난다.

 

 

"BaroPAM" 어플의 활성을 위해 별점 및 댓글을 작성하여 제출하면 어플 활성화에 도움이 된다.

 


24. "BaroPAM 소개서" 항목을 클릭하면 다음과 같은 "BaroPAM 솔루션 소개서" 화면이 나타난다.

 

 

"BaroPAM 솔루션 소개서"pdf 파일(baropam_intro_kr.pdf) 형태로 제공 된다.

 


25. "BaroPAM 가이드" 항목을 클릭하면 다음과 같은 "BaroPAM 어플 사용 설명서" 화면이 나타난다.

 

 

"BaroPAM 어플 사용 설명서" pdf 파일(baropam_guide_kr.pdf) 형태로 제공 된다.

 


26. "BaroPAM 영업문의" 항목을 클릭하면 다음과 같은 "전화걸기" 화면이 나타난다.

 

 

"전화걸기" 버튼을 클릭하여 "BaroPAM"에 대한 영업 및 전반적인 사항을 문의할 수 있다.

 


27. "Pin 번호 변경" 항목을 클릭하면 다음과 같은 "Pin 번호 변경" 화면이 나타난다.

 

6-10.jpg

 

▣현재 Pin번호 8자리를 입력해주십시오.

 

현재 설정된 Pin 번호(Pin number)를 입력한다.

 

▣새로운 Pin번호 8자리를 입력해주십시오.

 

새로운 설정할 Pin 번호(Pin number)를 입력한다.

 

"Save" 버튼을 클릭하면 제일 먼저 입력 항목들의 유효성을 확인 한 후 새로운 Pin 번호(Pin number)를 저장하는 작업을 진행한다.

 

만약, Pin 번호(Pin number)8자리가 아닌 경우 "Pin 번호 8자리를 입력해주십시오."라는 메시지가 화면에 나타난다.

 

 

 

현재 설정된 Pin 번호(Pin number)와 새로 입력한 Pin 번호(Pin number)가 다른 경우 "현재 Pin번호가 틀립니다. 다시 확인 후 입력해주십시오."라는 메시지가 화면에 나타난다.

 

현재 설정된 Pin 번호(Pin number)와 새로운 Pin 번호(Pin number)가 동일한 경우 "현재 Pin번호와 새로운 Pin번호가 동일합니다. 다시 확인 후 입력해주십시오."라는 메시지가 화면에 나타난다.

 

만약, 새로운 Pin 번호(Pin number)8자리가 아닌 경우 "새로운 Pin 번호 8자리를 입력해주십시오."라는 메시지가 화면에 나타난다.

 

새로운 Pin 번호(Pin number) 저장이 정상적으로 완료되지 못하면 "Pin 번호 변경" 화면이 지속되며, 정상적으로 완료되면 2번과 같은 인트로 화면이 나타난다.

 


30. "BaroPAM" 어플의 SNS를 이용한 공유는 다음과 같은 "BaroPAM 공유" 아이콘을 클릭하면 된다.

 

 

 

 

 

 


31. 그러면 다음과 같이 "BaroPAM 공유"할 수 있는 화면이 나타난다.

 

 


32. 트위터에 트윗을 하고자 할 경우 "트윗" 이아콘을 클릭하면 다음과 같은 화면이 나타난다.

 

 

"트윗" 아이콘을 클릭하면 기 설정된 트위터 계정으로 틔윗 작업이 진행된다.

 


 

4.3 BaroKEY 연동 API

 

BaroPAM 어플에서 서버 로그인 시 Verification code에 입력할 일회용 인증키를 생성하는 API "barokey.jar"로 제공되며, Eclipse을 사용하는 경우 libs 디렉토리에 "barokey.jar"를 위치 시켜야 한다.

 

 

 Verification code2차 인증키(일회용 인증키)를 생성하는 프로그램에 다음과 같은 코드를 삽입하면 된다.

 


...

import com.barokey.barokey;

...

String auth_key = barokey.generateKEYL(intent_login_id, PhoneNumber, intent_cycle_time);

...

 

secure_key는 벤더에 요청하여 제공 받은 키로 서버별, 계정별로 부여할 수 있으며, 반드시 BaroPAM 서버 환경 설정 시 지정한 키를 설정해야 한다.

 

cycle_time BaroPAM 서버 환경설정 시 지정한 인증키 생성 주기와 반드시 일치 해야 한다.

 

만약, BaroPAM 서버 환경설정 값과 다른 경우 Verification code인 인회용 인증키가 다르게 생성될 수 있다.

 

화면 예시)

 

 

프로그램 예시)

 


package com.baro.pam.info;

 

import com.baro.common.base.BaseActivity;

import com.baro.common.base.BaseInterface;

import com.baro.common.setting.SettingACT;

import com.baro.pam.info.PAMCreateACT;

import com.baro.pam.info.PAMUpdateACT;

import com.baro.pam.R;

 

import com.barokey.barokey;

import com.beardedhen.androidbootstrap.BootstrapProgressBar;

 

import android.content.Context;

import android.content.Intent;

import android.os.Bundle;

import android.os.Message;

import android.os.Vibrator;

import android.os.Handler;

import android.view.View;

import android.view.View.OnClickListener;

import android.view.inputmethod.InputMethodManager;

import android.widget.Button;

import android.widget.EditText;

import android.widget.ProgressBar;

import android.widget.TextView;

 

import java.util.Date;

 

public class PAMCreateACT extends BaseActivity implements BaseInterface, onClickListener {

    private Button btn_setting, btn_share, btn_close, btn_update, btn_reset;

    private TextView tv_auth_key;

    private TextView tv_server_name;

    private TextView tv_remainTime;

    private BootstrapProgressBar progressBar;

    private String intent_reg_dt = "", intent_server_name = "", intent_hostname = "", intent_secure_key = "", intent_cycle_time = "";

    Intent intent;

 

    private long createdMillis;

 

    private static final int MESSAGE_REFRESH_REMAINING_SECOND = 101;

    private static final int SENDMESSAGE_INTERVAL = 250;

 

    @Override

    public void onCreate(Bundle savedInstanceState) {

 

        try {

            super.onCreate(savedInstanceState);

            setContentView(R.layout.act_pamcreate);

 

            drawView();

            getIntentData();

        } catch (Exception e) {

            e.printStackTrace();

        }

    }

 

    @Override

    public void onPause() {

        super.onPause();

 

        if (null != m_handlerProc) {

            m_handlerProc.removeMessages(MESSAGE_REFRESH_REMAINING_SECOND);

        }

    }

 

    @Override

    public void onResume() {

        super.onResume();

 

        if (null != m_handlerProc) {

            m_handlerProc.sendEmptyMessageDelayed(MESSAGE_REFRESH_REMAINING_SECOND, SENDMESSAGE_INTERVAL);

        }

    }

 

    @Override

    public void drawView() {

        try {

            vibe = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);

 

            findViewById(R.id.body_frame).setOnClickListener(new onClickListener() {

                public void onClick(View v) {

                    InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);

                    imm.hideSoftInputFromWindow(v.getWindowToken(), 0);

                }

            });

 

            tv_server_name = (TextView) findViewById(R.id.tv_server_name);

            tv_server_name.setOnClickListener(this);

 

            tv_auth_key = (TextView) findViewById(R.id.tv_auth_key);

            tv_auth_key.setFocusable(true);

            tv_auth_key.setClickable(false);

 

            progressBar = (BootstrapProgressBar) findViewById(R.id.progressBar);

 

            tv_remainTime = (TextView) findViewById(R.id.tv_remainTime);

 

            btn_setting = (Button) findViewById(R.id.btn_setting);

            btn_setting.setOnClickListener(this);

 

            btn_share = (Button) findViewById(R.id.btn_share);

            btn_share.setOnClickListener(this);

 

            ((Button) findViewById(R.id.btn_go_back)).setOnClickListener(this);

 

            btn_close = (Button) findViewById(R.id.btn_close);

            btn_close.setOnClickListener(this);

 

            btn_update = (Button) findViewById(R.id.btn_update);

            btn_update.setOnClickListener(this);

 

            btn_reset = (Button) findViewById(R.id.btn_reset);

            btn_reset.setOnClickListener(this);

        } catch (Exception e) {

            e.printStackTrace();

        }

    }

 

    public void getIntentData() {

        try {

            Intent intent = getIntent();

            getDefaultIntent(intent);

 

            if (intent.getStringExtra("reg_dt") != null) {

                intent_reg_dt = intent.getStringExtra("reg_dt").trim();

                //et_reg_dt.setText(intent_reg_dt);

            }

            if (intent.getStringExtra("server_name") != null) {

                intent_server_name = intent.getStringExtra("server_name").trim();

                //et_server_name.setText(intent_server_name);

            }

            if (intent.getStringExtra("hostname") != null) {

                intent_hostname = intent.getStringExtra("hostname").trim();

                //et_hostname.setText(intent_hostname);

            }

            if (intent.getStringExtra("secure_key") != null) {

                intent_secure_key = intent.getStringExtra("secure_key").trim();

                //et_secure_key.setText(intent_secure_key);

            }

            if (intent.getStringExtra("cycle_time") != null) {

                intent_cycle_time = intent.getStringExtra("cycle_time").trim();

                //et_cycle_time.setText(intent_cycle_time);

            }

            if (!"".equals(intent_server_name) && (!"".equals(intent_hostname))) {

                tv_server_name.setText("[ " + intent_server_name + " / " + intent_hostname + " ]");

            }

            if (!"".equals(intent_secure_key) && (!"".equals(intent_cycle_time))) {

                tv_auth_key.setText("");

 

                createdMillis = estimateCreatedMillis(intent_cycle_time);

 

                tv_auth_key.setText(barokey.generateKEYP(intent_secure_key, intent_cycle_time));

 

                m_handlerProc.sendEmptyMessageDelayed(MESSAGE_REFRESH_REMAINING_SECOND, SENDMESSAGE_INTERVAL);

            }

        } catch (Exception e) {

            e.printStackTrace();

        }

    }

 

    @Override

    public void onClick(View v) {

        try {

            switch (v.getId()) {

                case R.id.btn_setting: // Setting

                    Intent intent = new Intent(this, SettingACT.class);

                    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);

                    startActivity(intent);

                    break;

 

                case R.id.btn_share:

                    intent = new Intent(Intent.ACTION_SEND);

                    intent.addCategory(Intent.CATEGORY_DEFAULT);

                    intent.putExtra(Intent.EXTRA_TEXT, getString(R.string.app_share_pam));

                    intent.putExtra(Intent.EXTRA_TITLE, getString(R.string.app_name));

                    intent.setType("text/plain");

                    startActivity(Intent.createChooser(intent, getString(R.string.share_text)));

                    break;

 

                case R.id.btn_go_back: // go back

                    finish();

                    break;

 

                case R.id.btn_close: // Close

                    moveTaskToBack(true);

                    finish();

                    android.os.Process.killProcess(android.os.Process.myPid());

                    break;

 

                case R.id.btn_update: // Update/Delete

                    intent = new Intent(PAMCreateACT.this, PAMUpdateACT.class);

                    intent.putExtra("reg_dt", intent_reg_dt);

                    intent.putExtra("server_name", intent_server_name);

                    intent.putExtra("hostname", intent_hostname);

                    intent.putExtra("secure_key", intent_secure_key);

                    intent.putExtra("cycle_time", intent_cycle_time);

                    startActivity(intent);

                    break;

 

                case R.id.btn_reset: // Reset

                    if (!"".equals(intent_secure_key) && (!"".equals(intent_cycle_time))) {

                        tv_auth_key.setText("");

 

                        createdMillis = estimateCreatedMillis(intent_cycle_time);

 

                        tv_auth_key.setText(barokey.generateKEYP(intent_secure_key, intent_cycle_time));

 

                        m_handlerProc.sendEmptyMessageDelayed(MESSAGE_REFRESH_REMAINING_SECOND, SENDMESSAGE_INTERVAL);

                    }

                    break;

            }

        } catch (Exception e) {

            e.printStackTrace();

        }

    }

 

    private final Handler m_handlerProc = new Handler() {

        @Override

        public void handleMessage(Message message) {

            switch (message.what) {

                case MESSAGE_REFRESH_REMAINING_SECOND: {

                    try {

                        long cycleMillis = (Long.parseLong(intent_cycle_time) * 1000L);

                        long remainingMillis = estimateRemainingMillis(intent_cycle_time, createdMillis);

                        long remainingSecond = remainingMillis != 0 ? (remainingMillis / 1000L) : 0;

 

                        if (0 < remainingMillis) {

                            m_handlerProc.sendEmptyMessageDelayed(MESSAGE_REFRESH_REMAINING_SECOND, SENDMESSAGE_INTERVAL);

 

                            btn_reset.setEnabled(false);

                        } else {

                            m_handlerProc.removeMessages(MESSAGE_REFRESH_REMAINING_SECOND);

 

                            btn_reset.setEnabled(true);

                        }

 

                        tv_remainTime.setText(remainingSecond + " " + getString(R.string.remain_time_suffix));

 

//                        progressBar.setMax((int) (Long.parseLong(intent_cycle_time) * 1000L));

//                        progressBar.setProgress((int) remainingMillis);

 

                        if (0 != cycleMillis) {

//                        progressBar.setMaxProgress((int) (Long.parseLong(intent_cycle_time) * 1000L));

                            progressBar.setProgress((int) (((float) remainingMillis / (float) cycleMillis) * 100.0F));

                        }

 

                    } catch (Exception e) {

                        e.printStackTrace();

                    }

                }

                break;

            }

        }

    };

 

    public long estimateCreatedMillis(String cycleSecondString) {

        long remainingMillis = (barokey.getRemainingTime(cycleSecondString) * 1000L) - 200;

 

        long cycleMillis = (Long.parseLong(cycleSecondString) * 1000L);

        long currentMillis = (new Date()).getTime();

        long elapsedMillis = cycleMillis - remainingMillis;

 

        long createdMillis = currentMillis - elapsedMillis;

 

        return createdMillis;

    }

 

    public long estimateRemainingMillis(String cycleSecondString, long createdTime) {

        long cycleMillis = (Long.parseLong(cycleSecondString) * 1000L);

        long currentMillis = (new Date()).getTime();

        long elapsedMillis = currentMillis - createdTime;

 

        long remainingMillis = barokey.getRemainingTime(cycleSecondString) * 1000L;

        remainingMillis = cycleMillis > elapsedMillis ? remainingMillis : 0;

        remainingMillis = remainingMillis >= cycleMillis ? 0 : remainingMillis;

 

        return remainingMillis;

    }

}

 

 

 

5. BaroPAM 웹 사이트

 

정보자산에 로그인 시 Verification code에 입력할 일회용 인증키 발생기인 BaroPAM 어플(안드로이드 폰용과 아이폰 용)에 문제가 발생 시 서비스의 중단이 발생하지 않토록 BaroPAM 웹 사이트(www.baropam.com)를 통해서도 서비스를 제공한다.

 

5.1 BaroPAM 사용

 

"BaroPAM"어플은 크게 Pin 정보, 서버 정보, 로그인 정보 등의 3가지로 구성되어 있다.

 

1. 스마트 폰에서 "웹 브라우저" 어플의 아이콘을 클릭하여 어플을 활성화 한 후 어플 상단의 검색어 또는 URL 입력란에 BaroPAM의 웹 사이트인 www.baropam.com URL을 입력한다.

 

안드로이드 폰인 경우)

 


아이폰인 경우)

 

 

 


2. BaroPAM 웹 사이트가 활성화 되면 다음과 같은 "BaroPAM"의 로그인 화면이 나타난다.

 

 

"BaroPAM" 웹 사이트를 처음 사용하는 경우는 “Pin 번호 등록버튼을 이미 사용한 경우는 Pin 번호 8자리를 입력한고 로그인버튼을 클릭한다.

 

 


3. Pin 번호(Pin number)가 설정되어 있지 않은 경우("BaroPAM" 웹 사이트를 처음 사용하는 경우) “Pin번호 등록버튼을 클릭하면 다음과 같이 Pin 번호(Pin number)를 등록하는 화면이 나타난다.

 

1.2 Pin번호 등록.jpg

 

Pin번호는 스마트 폰 분실 시 타인이 인증키 정보 유출을 방지하기 위해서 사용한다.

 

 


4. 사용하는 휴대전화 11자리 숫자와 Pin 번호 8자리 숫자를 입력하고 "Save" 버튼을 클릭한다.

 

 

"Save" 버튼을 클릭하면 제일 먼저 입력 항목들의 유효성을 확인 한 후 Pin 번호(Pin number)를 저장하는 작업을 진행한다.

 

휴대 번호가 11자리가 아닌 경우 휴대번호 11자리를 입력해주십시요.”라는 메시지기 화면에 나타난다. 마찬가지로, Pin 번호(Pin number)8자리가 아닌 경우 "Pin 번호 8자리를 입력해주십시오."라는 메시지가 화면에 나타난다.

 

Pin 번호(Pin number) 저장이 정상적으로 완료되지 못하면 "Pin 번호 등록" 화면이 지속되며, 정상적으로 완료되면 위 2번의 로그인 화면이 나타난다.

 

"Cancel" 버튼을 클릭하면 현재 화면을 종료하고 위 2번의 로그인 화면이 나타난다.


5. 로그인 화면에서 설정한 8자리 Pin 번호(Pin number)를 입력한 다음 "로그인" 버튼을 클릭한다.

 

1.4 로그인 화면.jpg

 

"로그인" 버튼을 클릭하면 제일 먼저 입력 항목들의 유효성을 확인 한 후 Pin 번호(Pin number)가 맞는지 를 확인하는 작업을 진행한다.

 

만약, Pin 번호(Pin number)8자리가 아닌 경우 "Pin 번호 8자리를 입력해주십시오."라는 메시지가 화면에 나타난다.

 

설정된 Pin 번호(Pin number)와 틀린 경우 "Pin번호가 틀립니다. 다시 확인 후 입력해주십시오."라는 메시지가 화면에 나타난다.

 


6. 로그인이 확인 되면, 다음과 같이 "서버 정보 관리화면이 나타난다.

 

 

"서버 정보 관리" Windows/서버/데이터베이스/네트워크 장비/저장장치 등을 접근할 때 사용하는 일회용 인증키를 생성하는 경우 사용되며, "로그인 정보 관리"는 어플리케이션의 로그인 화면에서 일회용 인증키를 생성하는 경우에 사용된다.

  

서버 정보 관리 화면은 Windows/서버/데이터베이스/네트워크 장비/저장장치의 접근제어 2차 인증을 하기 위하여 일회용 인증키를 생성하기 위한 정보를 관리한다.

 

① 메뉴 버튼을 클릭하면 우측 화면처럼 선택할 수 있는 상세 메뉴가 나타나며, Logout 버튼을 클릭하면 “BaroPAM” 웹 사이트 화면을 종료하고 위 2번의 로그인 화면이 나타난다.


7. 서버 정보 관리 화면에서 New 버튼을 클릭하면 다음과 같이 Windows/서버/데이터베이스/네트워크 장비/저장장치에 대한 정보를 등록하는 화면이 나타난다.

 

2.3 서버등록.jpg

 

▣서버명(Server name)

 

BaroPAM이 운영될 Windows/서버/데이터베이스/네트워크 장비/저장장치 명(Server name)은 필수 입력 항목으로 최소 1자리 이상 최대 30자리까지 입력할 수 있다.

 

▣호스트명(Hostname)

 

BaroPAM이 운영될 컴퓨터명/데이터베이스명/호스트명(Hostname)은 필수 입력 항목으로 최소 1자리 이상 최대 30자리까지 입력할 수 있다.

 

호스트명(Hostname)은 다음과 같은 명령어(uname -n)을 실행하여 알 수 있다.


[root] /root > uname -n

nuriapp.com

 

Secure key

 

Windows/서버/데이터베이스/네트워크 장비/저장장치별 또는 계정별로 부여 되는 Secure key는 필수 입력 항목으로 벤더에 요청하여 부여 받은 것을 입력해야 한다.

 

벤더에서 부여 받지 않은 임의의 "Secure key"를 입력하는 경우 잘못된 일회용 인증키가 부여되어 Windows/서버/데이터베이스/네트워크 장비/저장장치에 로그인 할 수 없는 경우가 발생할 수 있다.

 

만약, Windows/서버/데이터베이스/네트워크 장비/저장장치에 설정한 Secure key와 어플에서 지정한 Secure key가 다른 경우 일회용 인증키가 서로 달라서 로그인 할 수 없는 경우가 발생할 수 있다.

 

▣생성주기(Auth key cycle time , 3~60 second)

 

인증키 생성주기(Auth key cycle time)는 필수 입력 항목으로 최소 3초 이상 최대 60초 까지 지정할 수 있다.

 

만약, Windows/서버/데이터베이스/네트워크 장비/저장장치에 설정한 인증키 생성주기(Auth key cycle time)와 웹에서 지정한 인증키 생성주기(Auth key cycle time)가 다른 경우 일회용 인증키가 서로 달라서 로그인 할 수 없는 경우가 발생할 수 있다.

 


8. Windows/서버/데이터베이스/네트워크 장비/저장장치에 대한 정보를 입력한 후 "Save" 버튼을 클릭한다.

 

2.4 서버저장.jpg

 

"Save" 버튼을 클릭하면 제일 먼저 입력 항목들의 유효성을 확인 한 후 Windows/서버/데이터베이스/네트워크 장비/저장장치에 대한 정보를 저장하는 작업을 진행한다.

 

Windows/서버/데이터베이스/네트워크 장비/저장장치명(Server name)이 입력하지 않은 경우 "서버명을 입력해주십시오."라는 메시지가 화면에 나타난다.

 

컴퓨터명/데이터베이스명/호스트명(Host name)이 입력하지 않은 경우 "호스트명을 입력해주십시오."라는 메시지가 화면에 나타난다.

 

Secure key가 입력하지 않은 경우 "Secure key를 입력해주십시오."라는 메시지가 화면에 나타난다.

 

인증키 생성주기(Auth key cycle time)가 입력하지 않거나 범위를 벗어난 경우 "인증키 생성주기를 입력 또는 확인해주십시오."라는 메시지가 화면에 나타난다.

 

"List" 버튼을 클릭하면 현재 화면을 종료하고 위 6번의 서버 정보 관리 목록 화면이 나타난다.


9. Windows/서버/데이터베이스/네트워크 장비/저장장치에 대한 정보 저장이 정상적으로 완료되지 못하면 "서버 정보 등록" 화면이 지속되며, 정상적으로 완료되면 다음과 같이 "서버 정보 목록" 화면이 나타난다.

 

2.5 서버목록.jpg

 

Windows/서버/데이터베이스/네트워크 장비/저장장치에 대한 정보를 검색하고 싶은 경우 검색어를 입력한 다음 "Search" 버튼을 클릭하면 검색된 Windows/서버/데이터베이스/네트워크 장비/저장장치에 대한 정보가 화면에 나타난다.

 

Windows/서버/데이터베이스/네트워크 장비/저장장치에 대한 정보를 신규로 추가해야 할 경우 "New"버튼을 클릭하면 위 7번과 같은 Windows/서버/데이터베이스/네트워크 장비/저장장치에 대한 정보를 등록하는 화면이 나타난다.

 

 


10. 2차 인증 키(일회용 인증키)를 생성 및 서버 정보 변경/삭제 해야 하는 경우 서버 정보 목록에서 Windows/서버/데이터베이스/네트워크 장비/저장장치에 대한 정보 항목을 다음과 같이 클릭한다.

 

2.5 서버목록.jpg

 


11. 서버 정보 목록에서 "생성" 버튼을 클릭하면 새로운 2차 인증 키(일회용 인증키)가 생성되는데, 인증키 생성주기(Auth key cycle time) 동안은 동일한 2차 인증 키(일회용 인증키)가 발생하며, 새로 생성한 일회용 인증키를 다음과 같이 Message box로 화면상에 나타난다.

 

 

 


12. 그러면 다음과 같이 Windows/서버/데이터베이스/네트워크 장비/저장장치에 대한 정보를 바탕으로 2차 인증 키(일회용 인증키)를 생성 및 변경/삭제하는 화면이 나타난다.

 

2.7 서버변경.jpg

 

▣서버명(Server name)

 

BaroPAM이 운영될 Windows/서버/데이터베이스/네트워크 장비/저장장치명(Server name)은 필수 입력 항목으로 최소 1자리 이상 최대 30자리까지 입력할 수 있다.

 

▣호스트명(Hostname)

 

BaroPAM이 운영될 컴퓨터명/데이터베이스명/호스트명(Hostname)은 필수 입력 항목으로 최소 1자리 이상 최대 30자리까지 입력할 수 있다.

 

호스트명(Hostname)은 다음과 같은 명령어(uname -n)을 실행하여 알 수 있다.


[root] /root > uname -n

nuriapp.com

 

Secure key

 

Windows/서버/데이터베이스/네트워크 장비/저장장치별 또는 계정별로 부여 되는 Secure key는 필수 입력 항목으로 벤더에 요청하여 부여 받은 것을 입력해야 한다.

 

벤더에서 부여 받지 않은 임의의 "Secure key"를 입력하는 경우 잘못된 일회용 인증키가 부여되어 Windows/서버/데이터베이스/네트워크 장비/저장장치에 로그인 할 수 없는 경우가 발생할 수 있다.

 

만약, Windows/서버/데이터베이스/네트워크 장비/저장장치에 설정한 Secure key와 어플에서 지정한 Secure key가 다른 경우 일회용 인증키가 서로 달라서 로그인 할 수 없는 경우가 발생할 수 있다.

 

▣ 생성주기(Auth key cycle time, 3~60 second)

 

인증키 생성주기(Auth key cycle time)는 필수 입력 항목으로 최소 3초 이상 최대 60초 까지 지정할 수 있다.

 

만약, Windows/서버/데이터베이스/네트워크 장비/저장장치에 설정한 인증키 생성주기(Auth key cycle time)와 웹에서 지정한 인증키 생성주기(Auth key cycle time)가 다른 경우 일회용 인증키가 서로 달라서 로그인 할 수 없는 경우가 발생할 수 있다.

 

"Verification key" 버튼을 클릭하면 새로운 2차 인증 키(일회용 인증키)가 생성되는데, 인증키 생성주기(Auth key cycle time) 동안은 동일한 2차 인증 키(일회용 인증키)가 발생하며, 새로 생성한 일회용 인증키를 다음과 같이 Message box로 화면상에 나타난다.

 

 

"Update" 버튼을 클릭하면 제일 먼저 입력 항목들의 유효성을 확인 한 후 Windows/서버/데이터베이스/네트워크 장비/저장장치에 대한 정보를 수정하는 작업을 진행한다.

 

"Delete" 버튼을 클릭하면 "서버 정보를 삭제 하시겠습니까?"라는 Message box가 나타나며, "확인" 버튼을 클릭하면 해당 Windows/서버/데이터베이스/네트워크 장비/저장장치에 대한 정보를 삭제하는 작업을 진행되며, "취소" 버튼을 클릭하면 삭제 작업이 취소된다.

 

 

"List" 버튼을 클릭하면 현재 화면을 종료하고 위 6번의 서버 정보 관리 목록 화면이 나타난다.

 

Windows/서버/데이터베이스/네트워크 장비/저장장치명(Server name)이 입력하지 않은 경우 "서버명을 입력해주십시오."라는 메시지가 화면에 나타난다.

 

컴퓨터명/데이터베이스명/호스트명(Hostname)이 입력하지 않은 경우 "호스트명을 입력해주십시오."라는 메시지가 화면에 나타난다.

 

Secure key가 입력하지 않은 경우 "Secure key를 입력해주십시오."라는 메시지가 화면에 나타난다.

 

인증키 생성주기(Auth key cycle time)가 입력하지 않거나 범위를 벗어난 경우 "인증키 생성주기를 입력 또는 확인해주십시오."라는 메시지가 화면에 나타난다.

 

Windows/서버/데이터베이스/네트워크 장비/저장장치에 대한 정보 수정(Update) 또는 삭제(Delete)가 정상적으로 완료되지 못하면 "서버 정보 수정/삭제" 화면이 지속되며, 정상적으로 완료되면 10번과 같은 "서버 정보 목록" 화면이 나타난다.

 

Windows/서버/데이터베이스/네트워크 장비/저장장치에 대한 정보의 수정/삭제를 진행 해야 하는 경우 "Update/Delete" 버튼을 클릭하면 된다.

 

 

 


13. 오른쪽 상단에 있는 "메뉴" 버튼을 클릭한 후 상세메뉴에서 "로그인 정보 관리" 메뉴를  클릭하면 다음과 같이 "로그인 정보 관리화면이 나타난다.

 

3.2 로그인 목록.jpg

 

 


14. 로그인 정보 관리 화면에서 New 버튼을 클릭하면 다음과 같이 Application 로그인에 대한 정보를 등록하는 화면이 나타난다.

 

3.3 로그인 등록.jpg

 

▣시스템명(System name)

 

로그인할 시스템명(System name)은 필수 입력 항목으로 최소 1자리 이상 최대 60자리까지 입력할 수 있다.

 

▣로그인-ID(Login-ID)

 

로그인-ID(Login-ID)는 필수 입력 항목으로 최소 1자리 이상 최대 50자리까지 입력할 수 있다.

 

▣생성주기(Auth key cycle time, 3~60 second)

 

인증키 생성주기(Auth key cycle time)는 필수 입력 항목으로 최소 3초 이상 최대 60초 까지 지정할 수 있다.

 

만약, BaroPAM 검증모듈의 인증키 생성주기(Auth key cycle time)와 웹에서 지정한 인증키 생성주기(Auth key cycle time)가 다른 경우 일회용 인증키가 서로 달라서 로그인 할 수 없는 경우가 발생할 수 있다.

 

 


15. Application 로그인 정보를 입력한 후 "Save" 버튼을 클릭한다.

 

3.4 로그인저장.jpg

 

"Save" 버튼을 클릭하면 제일 먼저 입력 항목들의 유효성을 확인 한 후 로그인 정보를 저장하는 작업을 진행한다.

 

시스템명(System name)이 입력하지 않은 경우 "시스템명을 입력해주십시오."라는 메시지가 화면에 나타난다.

 

로그인-ID(Login-ID)가 입력하지 않은 경우 "로그인-ID를 입력해주십시오."라는 메시지가 화면에 나타난다.

 

인증키 생성주기(Auth key cycle time)가 입력하지 않거나 범위를 벗어난 경우 "인증키 생성주기를 입력 또는 확인해주십시오."라는 메시지가 화면에 나타난다.

 

 

"List" 버튼을 클릭하면 현재 화면을 종료하고 위 12번의 로그인 정보 관리 목록 화면이 나타난다.


16. Application 로그인에 대한 정보 저장이 정상적으로 완료되지 못하면 "로그인 정보 등록" 화면이 지속되며, 정상적으로 완료되면 다음과 같이 "로그인 정보 목록" 화면이 나타난다.

 

3.5 로그인목록.jpg

 

로그인 정보를 검색하고 싶은 경우 검색어를 입력한 다음 "Search" 버튼을 클릭하면 검색된 로그인 정보가 화면에 나타난다.

 

로그인 정보를 신규로 추가해야 할 경우 "New" 버튼을 클릭하면 위 14번과 같은 로그인 정보를 등록하는 화면이 나타난다.

 

 


17. 로그인 정보 목록에서 "생성" 버튼을 클릭하면 새로운 2차 인증 키(일회용 인증키)가 생성되는데, 인증키 생성주기(Auth key cycle time) 동안은 동일한 2차 인증 키(일회용 인증키)가 발생하며, 새로 생성한 일회용 인증키를 다음과 같이 Message box로 화면상에 나타난다.

 

 


18. 2차 인증 키(일회용 인증키)를 생성 및 로그인 정보 변경/삭제 해야 하는 경우 로그인 정보 목록에서 Applicat 로그인에 대한 정보 항목을 다음과 같이 클릭한다.

 

 

 


19. 그러면 다음과 같이 Applicat 로그인에 대한 정보를 바탕으로 2차 인증 키(일회용 인증키)를 생성 및변경/삭제하는 화면이 나타난다.

 

3.6 로그인변경.jpg

 

▣시스템명(System name)

 

로그인할 시스템명(System name)은 필수 입력 항목으로 최소 1자리 이상 최대 60자리까지 입력할 수 있다.

 

▣로그인-id(Login-ID)

 

로그인-ID(Login-ID)는 필수 입력 항목으로 최소 1자리 이상 최대 50자리까지 입력할 수 있다.

 

▣생성주기(Auth key cycle time, 3~60 second)

 

인증키 생성주기(Auth key cycle time)는 필수 입력 항목으로 최소 3초 이상 최대 60초 까지 지정할 수 있다.

 

만약, BaroPAM 검증모듈의 인증키 생성주기(Auth key cycle time)와 웹에서 지정한 인증키 생성주기(Auth key cycle time)가 다른 경우 일회용 인증키가 서로 달라서 로그인 할 수 없는 경우가 발생할 수 있다.

 

"One Time Auth key" 버튼을 클릭하면 새로운 2차 인증 키(일회용 인증키)가 생성되는데, 인증키 생성주기(Auth key cycle time) 동안은 동일한 2차 인증 키(일회용 인증키)가 발생하며, 새로 생성한 일회용 인증키를 다음과 같이 Message box로 화면상에 나타난다.

 

 

"Update" 버튼을 클릭하면 제일 먼저 입력 항목들의 유효성을 확인 한 후 Application 로그인에 대한 정보를 수정하는 작업을 진행한다.

 

"Delete" 버튼을 클릭하면 "로그인 정보를 삭제 하시겠습니까?"라는 Message box가 나타나며, "확인" 버튼을 클릭하면 해당 Application 로그인에 대한 정보를 삭제하는 작업을 진행되며, "취소" 버튼을 클릭하면 삭제 작업이 취소된다.

 

 

"List" 버튼을 클릭하면 현재 화면을 종료하고 위 12번의 로그인 정보 관리 목록 화면이 나타난다.

 

시스템명(System name)이 입력하지 않은 경우 "시스템명을 입력해주십시오."라는 메시지가 화면에 나타난다.

 

로그인-ID(Login-ID)가 입력하지 않은 경우 "로그인-ID를 입력해주십시오."라는 메시지가 화면에 나타난다.

 

인증키 생성주기(Auth key cycle time)가 입력하지 않거나 범위를 벗어난 경우 "인증키 생성주기를 입력 또는 확인해주십시오."라는 메시지가 화면에 나타난다.

 

로그인 정보 수정(Update) 또는 삭제(Delete)가 정상적으로 완료되지 못하면 "로그인 정보 수정/삭제" 화면이 지속되며, 정상적으로 완료되면 16번과 같은 "로그인 정보 목록" 화면이 나타난다.

 


20. 오른쪽 상단에 있는 "메뉴" 버튼을 클릭한 후 상세메뉴에서 "Pin 번호 관리" 메뉴를  클릭하면 다음과 같이 "Pin 번호 변경" 화면이 나타난다.

 

4.2 Pin번호 변경.jpg

 

▣현재 Pin 번호

 

현재 설정된 Pin 번호(Pin number) 8자리를 입력한다.

 

▣새로운 Pin 번호

 

새로운 설정할 Pin 번호(Pin number) 8자리를 입력한다.

▣휴대전화

 

사용하는 휴대폰 번호를 숫자 11자리를 입력한다.

 

"Update" 버튼을 클릭하면 제일 먼저 입력 항목들의 유효성을 확인 한 후 새로운 Pin 번호(Pin number)를 저장하는 작업을 진행한다.

 

만약, Pin 번호(Pin number)6자리가 아닌 경우 "Pin 번호 8자리를 입력해주십시오."라는 메시지가 화면에 나타난다.

 

 

 

현재 설정된 Pin 번호(Pin number)와 새로 입력한 Pin 번호(Pin number)가 다른 경우 "현재 Pin번호가 틀립니다. 다시 확인 후 입력해주십시오."라는 메시지가 화면에 나타난다.

 

현재 설정된 Pin 번호(Pin number)와 새로운 Pin 번호(Pin number)가 동일한 경우 "현재 Pin번호와 새로운 Pin번호가 동일합니다. 다시 확인 후 입력해주십시오."라는 메시지가 화면에 나타난다.

 

만약, 새로운 Pin 번호(Pin number)8자리가 아닌 경우 "새로운 Pin 번호 8자리를 입력해주십시오."라는 메시지가 화면에 나타난다.

 

새로운 Pin 번호(Pin number) 저장이 정상적으로 완료되지 못하면 "Pin 번호 변경" 화면이 지속되며, 정상적으로 완료되면 2번과 같은 로그인 화면이 나타난다.

 

 

 

6. About BaroPAM

 

Version 1.0 - Official Release - 2016.12.1

Copyright ⓒ Nurit corp. All rights reserved.

http://www.nurit.co.kr

 

상호 : 주식회사 누리아이티

등록번호 : 258-87-00901

대표이사 : 이종일

대표전화 : 010-2771-4076(기술지원, 영업문의)

이메일 : mc529@nurit.co.kr

주소 : 서울시 강서구 공항대로 186, 617(마곡동, 로뎀타워)