컴퓨터활용능력시험 1급 필기 - 2과목 스프레드시트 (2018개정)
TCP/IP를 이용한 OTP 로그인 방식의 메신저 프로그램 I. 서 론 일반적인 로그인 방식으로는 해킹 프로그램을 통해서 아이디(ID), 패스워드(Password) 등을 알아낼 수 있어 보안에 취약하다. 그래서 새로운 패스워드 방식의 OTP (One Time Password)를 도입하여 해킹 범죄를 줄 이도록 노력하고 있다. OTP 프로그램은 실제로 시스템을 사용하는 사 람을 판단하는 수단으로 아이디(ID)/패스워드와 는 다르게 사용자의 핸드폰이나 OTP 토큰 등을 이용하여 일회성 패스워드로 사용자 인증을 하는 방법이다. 본 논문에서는 JAVA를 사용 하여 다른 프로그 램 보다 네트워크 구현이 쉽고, 서버(sever)와 클라이언트(Client), 스레드(thead) 관련 정보를 얻기가 쉽다는 점이다. 본 논문에서 구현하는 OTP 프로그램을 이해하도록 설계 하는데 목적 을 두고 있으며, 이벤트 발생 후 생성되는 메신 저 프로그램은 어느 한 기관에서 서버 관리 및 제어가 가능하다. II. 관련 연구 클라이언트와 서버는 둘 다 컴퓨터이거나 컴퓨 터의 일부일 수 있고, 통신망은 LAN이나 WAN 혹은 두 가지 경우가 혼합되어 있을 수 있으며, 자료처리도 클라이언트와 서버가 상호작용하여 처리하거나 다른 것들과의 연계 없이 처리할 수 도 있다. 여기서 서버(Sever)는 서비스를 제공하 는 컴퓨터(Service provider)이고, 클라이언트 (Client)는 서비스를 사용하는 컴퓨터(Service user)가 된다. - 27 - 2010학년도 졸업논문 < 그림 2 > 서버 및 클라이언트 알고리즘 < 그림 1 > 서버와 클라이언트 서버에서 서비스를 열어두게 되면 클라이언트 사용자가 서버에 접속하여 OTP 프로그램 및 메 신저 프로그램에 접속 하는 방법이다. 이때, 로그인할 때마다 그 세션에서만 사용할 수 있는 1회성 패스워드를 생성하는 보안 시스 템. 동일한 패스워드가 반복해서 사용됨으로써 발생할 수 있는 패스워드 도난 문제를 예방하는 것이 목적이다. 일반 패스워드와는 달리 단방향 암호 기반의 해시(hash)라는 패스워드를 사용하 며, 그 세션이 끝나면 폐기되기 때문에 재사용이 불가능한 안전한 기능이다. OTP 생성 원리는 서버에서 해당 아이디(ID) 텍스트 파일에 영문 대소문자를 랜덤 생성 하고 사용자는 아이디(ID)가 일치 할 때에 이벤트 발 생으로 OTP를 전송 받게 된다. 아이디와 OTP가 일치 되는지 유무를 판단하기 위해 메신저 프로그램을 이용하여 로그인 단계 를 만들고 로그인 단계에는 아이디와 OTP를 입 력하여 일치하게 되면 이벤트 발생으로 메신저 프로그램이 실행하도록 한다. III. OTP 프로그램 Processor OTP(one time password)프로그램은 사용자 인증을 통해 확인 시 OTP를 전송하고, OTP프 로그램에서 얻은 OTP를 통하여 메신저 프로그 램에 접속하는 방식을 사용하도록 한다. < 그림 2 > 는 두 개의 서버와 두 개의 클라이언트로 이루어 져 있고 두 서버는 정보 공유가 되며 서버가 계속 켜있다는 전제하에 알고리즘이며, ID-Check클라 이언트에서 아이디 확인과 OTP 전송 요청을 동시에 하게 되고 OTP서버에서 확인 작업 여부에 따라 OTP 를 전송하게 된다. OTP 프로그램의 확인 작업으로 Log-in Check 클라 이언트에 아이디와 전송 받은 OTP를 입력하여 Chat 서버에 아이디/OTP 확인 여부와 이벤트 발생을 요청 하게 되며 서버는 일치와 불일치를 판단하여 이벤 트를 발생 시킨다. 불일치 시 다시 Log-in 클라이언트가 뜨게 되고 일치하게 되면 이벤트로 메신저가 발생하게 된다. 이벤트로 메신저 프로그램이 실행되면, 사용자는 서버와 사용자 간에 귓속말 기능이 있고, 서버에서는 사용자가 할 수 있는 기능과 제어 권한이 주어지는데 제어 권한으로는 강제퇴장 기능이 있다. Ⅳ. 실 험 4.1 시스템 개발 환경 Intel (R)Core(TM) i5CPU750 @2.67GHz(4 CPUs), ~2.7GHz Memory 4096MB RAM OS Win7 Ultimate K (32/64bit) < 표 1 > 시스템 개발 환경 4.2 JavaSE(JDK 6) 자바를 다른 컴파일언어와 구분짓는 가장 큰 - 28 - 2010학년도 졸업논문 특징은 컴파일된 코드가 플랫폼 독립적이라는 점이다. 자바 컴파일러는 자바 언어로 작성된 프로그램을 바이트코드라는 특수한 바이너리 형태로 변환한다. 바이트코드를 실행하기 위해서는 JVM(자바 가상 머신, Java Virtual Machine)이라는 특수한 가상 머신이 필요한데, 이 가상 머신은 자바 바이트코드를 어느 플랫폼에서나 동일한 형태로 실행시킨다. 때문에 자바로 개발된 프로그램은 CPU나 운영체제의 종류에 관계없이 JVM을 설치할 수 있는 시스템에서는 어디서나 실행할 수 있다. 장점 단점 플랫폼의 독립성 JVM 필요 바이트코드 실행의 안전성 높은 코드의 밀도 낮은 대역폭을 갖는 환경에서 유리 JVM 설치를 위한 여 분의 기억공간 JVM 실행을 위해 CPU자원 일부가 소모 실행속도의 저하 < 표 2 > JVM의 장/단점 4.3 Eclipse IDE for Java Developers 이클립스(Eclipse)는 다양한 플랫폼에서 쓸 수 있으며, 자바를 비롯한 다양한 언어를 지원하는 프로그래밍 통합 개발 환경을 목적으로 시작하였으나, 현재는 OSGi를 도입하여, 범용 응용 소프트웨어 플랫폼으로 진화하였다. 자바로 작성되어 있으며, 자유 프트웨어이지만 막강한 기능을 자랑한다. 자바 프로그래밍 개발이 용이하다. 다양한 플러그인을 통한 확장이 가능합니다. 자바에 대해 강력한 리팩토링 기능을 제공. 많은 언어들을 위한 많은 공개/상용 플러그 인이 개발되고 있다. 자바 기반으로 VM 위에서 어떤 플랫폼에서 든 실행 가능합니다. 훌륭한 CVS 클라이언트의 기능을 수행. 강력한 diff 까지 수행합니다. 플러그인을 통해 C/C++(CDT),PHP,HTML 등 여러 언어의 개발이 가능. < 표 3 > Eclipse의 특징 및 주요 기능 실험 방법은 서버 컴퓨터 한대로 OTP서버와 Chat서버를 실행하게 되고, 컴퓨터 두대로 < 그림 3 > 실행 화면 실행화면은 < 그림 3 > 과 같다. 사용자는 그림 (a)클라이언트에서 아이디를 입력 하여 Log-in 버튼을 누르면 서버에 아이디 확인과 OTP 생성 을 요청하게 되고 그림(b)OTP서버에서 요청을 받게 된다. 그림 (b)서버에서는 아이디가 있는지 유무를 보게 되고 아이디가 서버에 등록된 사용 자가 아니면 서버에 경고 메시지와 사용자 클라 이언트에 이벤트 발생이 안되고 서버에 등록된 사용자가 맞으면 서버는 IP주소를 얻게 되고 사 용자는 그림(c)이벤트 화면과 같이 랜덤한 영문 대소문자(OTP)가 생성된다. 그림(c)까지가 OTP 생성되는 프로그램이며, OTP 생성 프로그램의 확인 작업으로 그림 (d)Log-in클라이언트를 실행한다. 그림(d)Log-in클라이언트에서 아이디와 OTP를 입력 하여 그림(e)Chat서버에 확인 여부와 이벤 트 요청을 한다. 그림(e)서버에서는 아이디와 OTP가 일치하는지를 판단하게 된다. 아이디와 OTP가 불일치하게 되면 그림(d)Log-in클라이언 트 화면(textarea)에 경고 메시지를 보내게 되 며, 일치하게 되면 사용자는 이벤트가 발생하게 되고 이벤트 화면은 그림(f)와 같이 메신저 프로 그램이다. 그 밖에 그림(f)에서 보면 서버와 사용자 접속 자를 볼 수 있으며 사용자는 귓속말을 할 수 있 도록 기능이 되어 있고, 그림(e)Chat서버에서는 사용자와 대화를 할 수 있도록 설계되어 그림 (b)OTP서버와는 다르게 메신저 안에서 사용자 가 할 수 있는 기능과 사용자 제어로 강제 퇴장 사용자가 되어 클라이언트를 실행하여 총 컴퓨터 세대로 한다. - 29 - 2010학년도 졸업논문 기능을 가지고 있다. Ⅴ. 결론 및 향후 연구 방향 본 논문에서 OTP에 대해 기본적으로 구현 할 수 있는 방법으로 구현해 봤다. 기본적으로 아이디 텍스트 파일 안에 임의의 무 작위 영문 대소문자를 발생 시키고 그것을 바탕 으로 텍스트 찾고 불러오면서 OTP 구현을 한 다. 지금의 경우 보안에서도 문제점으로 구현 할 당시 텍스트 파일을 숨기거나 파일을 불러오고 나서 텍스트 파일을 삭제 할 시 로그인 클라이 언트에서 적용이 안 되는 문제점이 있다. 이를 보안하기 위해 텍스트 파일 방식 말고 다 른 방법을 생각해야 된다. 게다가 같은 아이디를 입력할 시 실제로 사용 하는 사용자가 아닌 누구나 OTP를 전송해 주고 오히려 패스워드를 입력하는 것 보다 보안이 허 술하다는 점에서 문제점이 많다. 향후에는 OTP프로그램의 중점인 실제로 사용 하는 사용자만이 로그인 할 수 있도록 보안이 되어야 하며 안드로이드 Application으로 구현하 여 보다 현실적인 OTP로 개선해야 된다.