'opiekey'에 해당되는 글 3건

  1. 2010.01.09 As old as good: One Time Passwords (1)
  2. 2010.01.08 OTP and OPIE (2)
  3. 2010.01.08 OpenSSH, OTP and gnome-terminal (1)
2010.01.09 09:05

As old as good: One Time Passwords

People frequently ask me what I am doing typing on my Palm right before logging in one of my remote systems. The answer is quite simple: “generating my next password”. People always seem puzzled by that answer… Maybe I am just too old to have had only telnet sessions available to remote connections (that was the time before SSH took over)... or maybe I am just too paranoid regarding the access to my systems… Anyway, I like One Time Passwords, and here is an article I can refer to when I get asked again ;-)

One Time Passwords are just that: passwords that are good for one time use. They never repeat and once used you can throw it away securely. They were quite common when the authentication was done in clear text (so that any man-in-the-middle could steal your passwords), back in the r-tools age (rcp, rsh, rlogin, rexec, etc). After the SSH-related tools took over, providing easy tunneling and remote access, MITM attacks were of much concern, so OTPs became less relevant. What a shame, for they even have a couple of standards for those!

But there’s still room for OTPs… Question: Is it easier to deploy a MITM attack or a keylogger? That’s right… We are always connecting to our remote systems in public terminals (well… at least I am – right now typing from the hospital computer), and a keylogger is so easily installed in one of those terminals, even remotely, that no one would ever get close to deploy a refined MITM attack just to steal someone’s password. One would just install a keylogger! All the security SSH provides would just be gone by then. That’s why I use SSH to connect to my remote machines, but use OTPs to authenticate myself.

It’s so easy to deploy it. In Debian you’ll find packages opie-server and libpam-opie and those are the only things you’ll need on the server side (besides SSH, obviously). OPIE means “One-time Passwords In Everything”, and combined with PAM, one can really use it everywhere.

After installing it, you’ll have to generate the password file for your account:

spectra@home:~$ opiepasswd -c
Adding spectra:
Only use this method from the console; NEVER from remote. If you are using
telnet, xterm, or a dial-in, type ^C now or exit with no password.
Then run opiepasswd without the -c parameter.
Using MD5 to compute responses.
Enter new secret pass phrase:
Again new secret pass phrase:

ID spectra OTP key is 499 ho6484

The pass phrase will be used to generate the passwords in a step before your login. Please, try not to forget it (specially if you’re following this article and playing with some remote system at the same time). Now you can edit /etc/pam.d/ssh file (or its equivalent in non-Debian systems) to require that kind of authentication. Mine just looks like this:

# /etc/pam.d/ssh
auth       required     pam_env.so
auth       required     pam_env.so envfile=/etc/default/locale
auth       required     pam_opie.so

First two lines are unrelated and just load the environment variables. Last line is where the fun is. Please, note two things: (1) I removed references to pam_unix.so, which is what would ask for my “real” password, that I want to disable (no login is allowed with that password). And (2), I declared it as required, meaning that failing it will keep one out of the system.

We are not ready yet! SSH will work by now, but will not present you the OTP challenge. Probably you could still login, but you’d have to remember which is the current password (Trust me, you would not!). To get the challenge you’ll need to enable it – in /etc/ssh/sshd_config change the following line:

ChallengeResponseAuthentication yes

That’s it. Now to login to your remote machine, that’s what will usually happen:

spectra@hospital:~$ ssh home
otp-md5 498 ho6484 ext, Response:

Voilà! It asks for password #498. By default, it starts with 500 passwords and goes down from that. Password #498 were asked, so the next will be #497. After that, #498 is not useable anymore, and #496 is not useable yet. You can generate a list of those passwords (let’s say 10), print it and keep it in your pocket. This is the command you’d use for that:

spectra@home:~$ opiekey -n 10 498 ho6484
Using the MD5 algorithm to compute response.
Reminder: Don't use opiekey from telnet or dial-in sessions.
Sorry, but you don't seem to be on the console or a secure terminal.
Warning: Continuing could disclose your secret pass phrase to an attacker!
Enter secret pass phrase:

That is not so secure, since you can loose the paper and be doomed… Luckily there are lots of small softwares that does this generation for you. Some you can use from your Palm or from some J2ME-enabled phone (such as N95). Some your can use from another (trusted) computer. Some are even online, written in javascript!

There are at least one other side-benefit of using OPIE as above: You can give away your user password (even root password – OK, probably not a Good ThingTM), that the system would still be secure, since it only allows SSH authentications via OPIE! If the session is started with a username whose opiepasswd was not activated (first step… scroll back to the beginning of the article), SSH will greet you with a bogus challenge… only “opie-activated users” will be allowed to login with the above configuration.

Easy enough, isn’t it? Now, next time you see me typing on my Palm before opening an SSH connection you’ll know what I am doing… ;-)

출처 : http://www.nardol.org

Trackback 0 Comment 1
  1. Using OPIE on Fedora 7 2010.01.13 19:23 address edit & del reply


2010.01.08 19:46


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

  • 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:

        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/

    Trackback 0 Comment 2
    1. FreeBSD Handbook 2010.01.08 19:54 address edit & del reply


    2. OPIE 2010.01.08 19:56 address edit & del reply

      How to setup OPIE with pam On Linux

      jsotp: JavaScript OTP Calculator

    2010.01.08 14:46

    OpenSSH, OTP and gnome-terminal

    Posted by Michele Baldessari

    Last year I reimplemented the S/Key support in gnome-terminal (#305126), and since I couldn’t find the notes I took last time, I decided to setup a quick S/KEY Environment. I do recall the documentation in order to set it up was extremely scarce, so I’ll try to fill in the void.

    Note: I tried going down the “recompile openssh with openbsd’s skey libs”, but it’s too much effort to beat those libs into shape and in a way that no licenses are broken, so I’ll just describe the approach using OPIE on Debian/Ubuntu.
    On the server, just run:
    # apt-get install libpam-opie opie-server
    Then make sure that /etc/pam.d/ssh has the following in the auth section:

    auth required pam_env.so # [1]
    auth required pam_env.so envfile=/etc/default/locale
    auth sufficient pam_unix.so nullok_secure
    auth sufficient pam_opie.so
    auth required pam_deny.so

    Also make sure that /etc/ssh/sshd_config has the setting: ChallengeResponseAuthentication yes
    At this point, on the server, all is left to do is to “initialize” OTP. As the user wanting to take advantage of One-Time-Passwords, just run opiepasswd -c:
    Adding pippo:
    Using MD5 to compute responses.
    Enter new secret pass phrase:
    Again new secret pass phrase:
    ID pippo OTP key is 499 co9843

    Now OTP is correctly configured and we can focus on the client, where we’ll need to install the client OTP calculator: # apt-get install opie-client, now when connecting to the just configured ssh server (leaving the first password request blank) we get our OTP challenge:

    conrad:~$ ssh localhost
    otp-md5 456 co2636 ext, Response:

    We can calculate the response to the challenge with the $ opiekey 456 co2636 command:

    Using the MD5 algorithm to compute response.
    Reminder: Don’t use opiekey from telnet or dial-in sessions.
    Enter secret pass phrase:

    By typing DASH IRA GWEN WAVE JUNE KEEN” at the ssh password prompt we can login and not be subject to Replay Attacks . Now, this is all very nice and dandy, but it surely is rather complicated…but..enter gnome-terminal

    Make sure the gconf setting /apps/gnome-terminal/profiles/Default/use_skey is ON, login to the OTP ssh server and notice how the otp challenge is underlined when going over it with the cursor :

    Press Ctrl-Left Mouse Button on the underlined challenge text and you’ll get the following OTP calculator prompt:

    Type in your password, it will generate the correct response to the challenge and you’re in

    No other OTP calculators needed

    출처 : michele.pupazzo.org

    Trackback 0 Comment 1
    1. fedora core 4 2010.02.09 18:02 address edit & del reply

      fedora core 4 에 opie 일회용 패스워드 (OTP) 시스템 로그인 PAM 적용

      일단 opie공식 사이트의 소스를 빌드하는데 실패해서
      rpmfind.net의 opie를 검색하여


      SuSE용 바이너리를 받아 설치했다.

      그리고 나서

      edit /etc/pam.d/ssh를 추가-수정했다.
      auth sufficient pam_stack.so service=system-auth
      auth sufficient pam_opie.so
      auth required pam_deny.so

      마지막으로 /etc/ssh/sshd_config 의

      ChallengeResponseAuthentication yes
      를 활성화 해서 일반암호를 입력받지 않으면 ChallengeResponse 메시지를
      나타나게 해주도록 만들었다.

      그리고 sshd를 재시작하면 완성~

      opie의 키를 계산하기 위해서 아래의 각 플랫폼에 맞는 계산기를 이용하면 되겠다~
      Win NT : http://www.inner.net/pub/opie/contrib/
      JAVA OPIE CALCULATOR for your CELL PHONE http://www.ii.uib.no/~janfrode/jotp/
      JAVA 장혜식님의 http://openlook.org/blog/1108
      WINCE https://www.awe.com/mark/dev/otp.html

      참고 사이트 http://sparcs.kaist.ac.kr/~vici/lec/com/secure/otp.html