[16678] in Kerberos_V5_Development

home help back first fref pref prev next nref lref last post

FAST-OTP project proposal

daemon@ATHENA.MIT.EDU (Linus Nordberg)
Mon Mar 14 16:12:07 2011

From: Linus Nordberg <linus@nordu.net>
To: krbdev@mit.edu
Date: Sat, 12 Mar 2011 17:47:07 +0100
Message-ID: <87aah0xp4k.fsf@nordberg.se>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
Errors-To: krbdev-bounces@mit.edu

--=-=-=

Hi,

I'd like to implement FAST-OTP as described in
draft-ietf-krb-wg-otp-preauth, see attached proposal.

In an attempt to make porting to Heimdal as painless as possible I'll
seek feedback from the Heimdal list too in a short while.

Grateful for any input from you.  I should add that I haven't hacked on
any Kerberos implementation before.  No explanation or question is too
stupid for me so please bring them on.


--=-=-=
Content-Disposition: inline; filename=proj-proposal-2.txt
Content-Description: FAST-OTP project proposal

- Summary

  The FAST-OTP project proposes the implementation of a FAST factor
  for one-time password pre-authentication as described in
  [draft-ietf-krb-wg-otp-preauth].  In short, a user will be able to
  use an OTP to get a ticket.

  Project URL:
  https://portal.nordu.net/display/KRBFASTOTP/Passwords+should+not+be+reused


- Functionality

  A plugin framework will provide for deployment and configuration of
  different OTP systems both for clients (like kinit) and the KDC.

  The goal is to support time-based, event-based and challenge-based
  OTP schemes.

  Three FAST facilities will be provided, namely
  client-authentication, replacing-reply-key and, for some OTP
  schemes, KDC-authentication.

  Both the 4-pass and the 2-pass version of the protocol will be
  implemented.

  Support for connected OTP tokens will not be implemented.

  Support for OTP systems using PIN in the generating of the OTP will
  [XXX probably] not be implemented.

  Support for change of PIN will [XXX probably] not be implemented.


- Preconditions

  A functional FAST framework with debug and trace.


- Design

  The design of parts specific to the FAST framework is described in
  [draft-ietf-krb-wg-otp-preauth].

  A preauth plugin module will be implemented for use by clients and
  the KDC.  This module will itself implement a plugin framework for
  different kind of OTP systems.

  The client plugin will be responsible for [XXX].

  The server plugin will be responsible of contacting an external OTP
  authentication service for retrieving an authentication decision
  (yes/no) based on a user id, a one-time password and possibly more
  depending on the OTP authentication service.  Specification of the
  protocol between the KDC server side plugin and the OTP
  authentication service is outside the scope of this document.

  The KDC will have to be able to decide whether a given principal in
  the KDC database should be able to (or even _have_to_) authenticate
  using a one-time password.  [To extend the kdb or to not, that's the
  fine question.]  The information stored regarding OTP for a
  principal will include i) OTP mechanism [like vendor or "OATH"], ii)
  OTP authentication server endpoint and iii) mapping between a
  Kerberos principal and some token used to identify a user with the
  OTP authentication server.

  In order to avoid certain replay attacks, availability of the 2-pass
  version of the protocol can be disabled.


- Tasks

  - implement an OTP plugin framework, client side

  - implement an OTP plugin framework, server side (KDC)

  - extend the KDC database to accommodate the new OTP policy section

  - protocol, common to client and server

    - construct otp-preauth client and reply keys
      [draft-ietf-krb-wg-otp-preauth sect. 3.6]

  - protocol, client side

    - handle a KRB-ERROR with a PA-FX-FAST-REPLY containing a
      PA-OTP-CHALLENGE

    - send a PA-OTP-REQUEST in an AS-REQ

  - protocol, server side

    - construct otp-keyInfo element to indicate to client which token
      should be used

    - send a PA-OTP-CHALLENGE in a KrbFastResponse

  - implement a dummy OTP plugin using a static password
    
  - implement an OATH OTP plugin


- UI

  kinit -X ATTRIBUTE=VALUE [XXX name valid ATTRIBUTE's]

  
- Documentation

  XXX


- Dependencies

  draft-ietf-krb-wg-otp-preauth stability.


- Testing

  XXX


- Integration and relase

  XXX

--=-=-=


-- 
Linus Nordberg
NORDUnet A/S

--=-=-=
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
krbdev mailing list             krbdev@mit.edu
https://mailman.mit.edu/mailman/listinfo/krbdev

--=-=-=--

home help back first fref pref prev next nref lref last post