Bug 2739 - smart card PKI/X.509 authentication
Summary: smart card PKI/X.509 authentication
Status: ASSIGNED
Alias: None
Product: ThinLinc
Classification: Unclassified
Component: Smart card (show other bugs)
Version: pre-1.0
Hardware: PC All
: P2 Enhancement
Target Milestone: MediumPrio
Assignee: Pierre Ossman
URL:
Keywords:
Depends on: 3183
Blocks:
  Show dependency treegraph
 
Reported: 2008-03-26 09:23 CET by Pierre Ossman
Modified: 2023-10-20 09:28 CEST (History)
0 users

See Also:
Acceptance Criteria:


Attachments

Description Pierre Ossman cendio 2008-03-26 09:23:14 CET
Currently we do smart card authentication using SSH's normal public key authentication, but keeping the private key on the smart card. This is not how smart cards are meant to be used as it completely ignores the certificate.

The "correct" way is to use a PKI scheme. In that scheme, the client sends over the certificate instead of the user name and authenticates by proving it has the matching private key (i.e. the same way SSH's public key auth. works). The server must then figure out which user the certificate maps to, and that the certificate is valid for this server.

The validity is done by verifying the issuer (CA) signature on the certificate. The server must have a list of issuer keys it trusts. It usually also checks with some central database that the certificate hasn't been revoked.

Mapping to a user is implementation defined. Microsoft requires the certificate to include the user name, and Novell stores the mapping in eDirectory.


OpenSSH doesn't currently have any support for PKI. There is a hackish patch floating around, but it is very crude and doesn't use public interfaces like PKCS#11, so it is not suited for our needs. We would most likely have to implement everything ourselves.

To aid us, Mozilla's NSS library contains all the certificate handling we need. It can check signatures, revocation lists and all such menial tasks. There is also a draft RFC for how the PKI handshake should be done over SSH. It is an expired draft, but it is still better than inventing something new ourselves.
Comment 1 Peter Åstrand cendio 2008-07-15 16:28:37 CEST
http://roumenpetrov.info/openssh/ might be useful. 
Comment 2 Pierre Ossman cendio 2009-09-09 11:28:36 CEST
Time est. is just a wild guess. This project has too many unknowns to make a proper estimate.

We also need to replace Putty with OpenSSH as it would be really wasteful making this gigantic effort on both implementations.
Comment 3 Pierre Ossman cendio 2010-10-29 14:23:09 CEST
This effort has now been resurrected at the IETF and it seems to be very close to be properly standardised:

http://datatracker.ietf.org/doc/draft-igoe-secsh-x509v3/
Comment 4 Pierre Ossman cendio 2011-08-15 16:43:49 CEST
It's now a formal RFC!

http://tools.ietf.org/html/rfc6187
Comment 5 Pierre Ossman cendio 2012-10-18 13:29:56 CEST
Somewhat related, red hat is pushing a patch to be able to put authorized_keys in more dynamic places:

https://bugzilla.mindrot.org/show_bug.cgi?id=1663

Note You need to log in before you can comment on or make changes to this bug.