본문 바로가기
정보보호 (Security)

OTP and OPIE

by 날으는물고기 2010. 1. 8.

OTP and OPIE

by Hye Jin Youn & Security KAIST
Sponsored by Initech.


Copyright (C) Jan 2000, Hye Jin Youn and Security KAIST

You may freely redistribute or republish this article, provided the following conditions are met as long as it is for non-commercial purposes. Otherwise permissions should be granted:

1. This article is left intact.

2. Proper credit is given to its authors; Hye Jin Youn and the Security KAIST

Contents
  • I. Background of OTP
  • II. Introduction is OTP
    • OTP란?
    • OTP의 여러가지 이용
    • 국내 기술 동향

  • III. S/Key 란?
  • IV. Let's Use OPIE!
    • How to install an OPIE server
    • How to login to an OPIE system
    • OPIE Command and man pages

  • V. References
  • VI. Down load( opie )
  • Whatis?


Background of OTP


  • 현재의 userid , password를 인증기반으로 하고 있는 unix system 은 password를 누출 시키는 경우 위험함

  • TCP/IP protocol은 desine당시 보안 문제는 고려하지 않았기 때문에 sniffing과 IP spoofing 등을 이용한 해킹이 많이 이용되고 있다.

  • 국내에서 발생된 대부분의 해킹 사례는 ID와 password도용 사례가 주류를 이루고 있다.


Introduction to OTP


  1. OTP란?

      OTP( one time password )란 말 그대로 한번 쓰고 password를 버리는 일회용 password이므로 기존의 password가 sniffing 등으로 가로채여도 새로 생성된 password를 사용하므로 안전할 수 있다. 이러한 otp를 구현하기 위한 방법으로는 다음과 같은 것들이 있다.
    • 동기화된 시간을 유지하여 Time-Stamp를 사용
    • server와 client의 임의의 패스워드 리스트 내의 위치이용
    • Challenge-Response Schemes이용

  2. OTP의 여러가지 사용

    1. S/Key 방식
      S/Key 인증 시스템은 passive attack에 대해 사용자의 패스워드를 보호하기 위한 간단한 스킴이다.

      더 자세한 것은 뒤에 설명하도록 할것이다.

    2. Challenge-Response 방식
      user가 login하면, server는 Challenge message를 보낸다.
      user는 PIN( Personal Identification Number )와 Challenge 를 이용하여, OTP를 생성하여 Response를 한다.
      서버는 동일한 Challenge와 등록된 사용자의 정보을 이용해 OTP를 생성한 후 user의 Response와 비교하여 사용자 인증을 해주는 방식이다

    3. Time-Synchoronous 방식
      난수생성 알고리즘은 관리가가 정한 시간(t)마다 64bit의 비밀키가 생성되어 진다.
      각각의 사용자에게는 특정키가 할당되어지고, 지능형 토큰과 인증서버 데이터 베이스에 이것들이 저장되어진다.
      사용자가 login을 할때 PIN과 6개의 숫자로 된 난수를 전달하면, (이 난수는 토큰으로 생성되어 짐)

      난수는 토큰안에 저장되어 있던 비밀키와 t를 초기값으로 하여 토큰안의 알고리즘을 통해 만들어진다.

      이렇게 만들어진 10개의 숫자가 서버로 가면 서버는 PIN을 인덱스로 하여 해당 비밀키를 찾고, 생성된 6개의 랜덤 숫자들을 수신 것과 일치하는 지를 확인한다.

  3. 국내의 기술 동향.

    • 반도체 장비 전문업체인 미래 상업은 사용때마다 결과치가 다른 해쉬함수를 기반으로 구현되어 추론및 재현 공격을 봉쇄할 수 있고 발생기에 고유 ID 를 부여, 분실시 오용되는 것을 원천적으로 방지할 수 있는 공중망 인증 시스템을 개발 ('97.3)

    • 케신 시스템에서 미국 브이원사의 SmartGate제품을 수입하여 판매중

    • internet security korea secure card, secure server, securid ( Time-Synchoronous 방식 )을 개발 판매중임

    • 한국 엑시스

    • 그외의 여러 단체에서 연구중임

    • ( 자신의 회사에서 연구중인 분은 저에게 연락을 주세요 :) )


III. S/Key 란?


  • 특징

    • 기본 otp의 특징을 가지고 있다.
    • 사용하기에 간단하다.
    • 비밀 패스워드를 기억하도록 한다.
    • 자동화가 되어질수 있다.
    • 알고리즘이 공개되어 있다.
      - MD4 또는 MD5 one-way hash 함수를 사용한다.
      ( 8byte 입력 8byte 출력 )
    • 어떤 비밀 정보도 호스트에 보관되어지지 않는다.

  • 알고리즘

    • 기본적인 알고리즘은 one-way hash 함수를 여러번 적용함으로 계속해서 생성되어진다.

    • 착안 : f(x) = y 에서 x를 알고 y 를 알면 구해질수 있으나 y를 알고 x를 알아내기란, 즉 x = f~(y) 는 거의 불가능하다.
      ( * MD4와 MD5참고 )

    • 첫 번째 OTP는 user의 비밀 패스워드(S)를 정해진 특정수 (N) 만큼의 one-way hash 함수를 수행함으로 생성되어진다.

      P(1) = f(f(f(f(S))))

      다음번에는 n-1번을 수행함으로 생성되어지는 P를 쓸것이다.

      P(2) = f(f(f(S)))

      그렇기 때문에 도청자가 P(i)를 알게 되더라도, 다음 password, P(i+1)을 알아낸다는 것이 불가능하게 된다.

    • 처음에 호스트 컴퓨터는 OTP의 복사본을 저장한다. 그리고 그것을 one-way hash 함수로 계산하여, 복사본과 비교한다.
      만약 일치하게 된다면, system password file의 사용자의 엔트리는 OTP의 복사본으로 갱신되어진다.

  • 사용자에 의해 one-way hash 함수의 수가 하나씩 줄어들게 되므로 어느 시점에 다다르면 초기화를 시켜주어야 한다.

  • user의 OTP는 노트북이나 palm-top등을 포함하는 다양한 기종의 pc에서 수행되어진다. 또는 플로피 디스크에 저장되어지고 수행되어질수 있다. 또는 미리 계산을 하여 프린트를 하여 사용할수 있다.

    예를 들어 이런 token card가 있을수 있다.

    IV. Let's Use opie!

    • What is OPIE( OneTime Password in Everything ) ?
        OPIE 버전 2.32을 기반으로 구현했다.
        OPIE 원타임 패스워드 시스템은 공개버전으로 Bellcore S/Key 시스템과 상호 운용성이 있으며, RFC 1938에서 기술하고 있는 원타임 패스워드 시스템을 구현한 것이다.

    • 이문서의 기준은 OPIE Software Distribution, Release 2.32의 버전을 가지고 다루었습니다.
      test server는 linux 6.0입니다.

    • How to 'Install' an OPIE server

        1. Read the OPIE README file

        2. OPIE system requirement

        • A UNIX-like operating system
        • An ANSI C compiler and run-time library
        • POSIX.1- and X/Open XPG-compliance(including termios)
        • The BSD sockets API
        • Approximately five megabytes of free disk space

        3. download the OPIE

        4. Unpack the software( 압축풀기 )

          %> gunzip opie-2.32.tar.gz
          %> tar xfv opie-2.32.tar

        5. Read INSTALL readme file( 제 나름대로 요약하면 )

          i) configure을 실행시킴
          ii) Makefile을 나름대로 필요한 것을 고칩니다. ( 사실 안고쳐도 대충됨 )
          iii) make라고 치면됩니다( client만 깔기위해서는 make client, 서버만 깔기위해서는 make server 라고 치세요 ) iv) make install( client는 make client-install )

        6. file 확인 

        7. Install test

        여기서 otp-md5는 md5를 쓴다는 이야기고, key는 497이고, seed는 en3197이다

        8. 지우기 위해서

          %>make uninstall

    • How to login to an OPIE system

        1. 처음에는 admin에게 passphrase를 물어봐야한다.

        2. passphrase 만들고, 바꾸기

          %>INSTALLDIR/opiepasswd -f -c

          INSTALLDIR 은 opiepasswd 라는 명령어가 있는 모든 경로를 말한다.
          예를 들면, 보통 /usr/local/bin 가 되겠다.

          -f : 강제적으로 만듬을 의미한다.
          -c : console mode로 만들어서 secure한 접속이게끔 만든다.
           

    • Key generator

      • In Linux

        'opiekey' 명령어가 해준다.  

      • In Windows  

    • OPIE Command and man pages

      • In Linux

        opiegen :

          passphrase를 가지고 key를 generate시켜줌
          vici%> opiegen otp-md5 495 wi01309
          Secret Pass Phrase:
          GILL HUED GOES CHUM LIEU VAIN
          vici%>

        opieinfo :
          다음의 sequence number와 seed 값을 출력

          %> opieinfo
          495 wi01309

          보통,
          %> opiekey -n 42 `opieinfo`
          이런 식으로 이용하면 좋다.

          정보는 /etc/opiekeys에서 얻어오는 것들이다.

        opiesu :
          su 명령어 대신을 하는 것이다.

          %> opiesu vici
          otp-md5 498 wi910502
          (OTP response required)
          vici's password: (echo on)
          vici's password: RARE GLEN HUGH BOYD NECK MOLL
          # ( root shell )

      • In Windows

    V. Reference


    VI. Download


    What is ?


    • Sniffing
        TCP/IP desine 이 보안을 고려하지 않았기 때문에 network상의 packet을 모아 재배열시키면 원래의 data를 복제할수 있다.
    • Spoofing
        network상에서는 상대방을 어떻게 인증할 것인가가 중요하다. 보통 password나 IP , hostname등에 의해 인증을 하는데 전자는 sniffing에 의해 노출이 가능하며 후자는 spoofing에 의해 공격이 가능하다.
      • IP Spoofing : 해커의 host가 target host가 trust하는 host인척하기
      • DNS spoofing : rlogin , rsh을 사용하고 DNS server에 많은 packet을 보낸다. 그럼 host는 잠시 마비가 되며 그틈을 타서 target host로 하여금 자신의 host를 믿는 정보를 보낸다.
      • IP hijacking : 일단 connection이 일어난 두 host간에 connection을 변조하는 것을 말함

    출처 : http://sparcs.kaist.ac.kr/~vici/
    728x90

    댓글