Does Your Company Use a PKI Solution?
punkrokk asks: "I am doing an Independent study of the feasibility of a Microsoft Certificate Services PKI in a distributed company. So far, it appears from my research that MS has the best supported implementation of a X.509 based PKI solution, for the Windows environment. While there are a few major weaknesses in a X.509 Public Key Infrastructure, one of which being Certificate Revocation Lists, using one is better than nothing. You do get a tangible security benefit, in addition to doing switch port authentication, and VPN quarantines. The problem is the cost of implementation is pretty steep, from the planning side. What do you guys do for dual factor authentication? Has anyone had Verisign sign their Certificate Authority? If you have implemented a MS Certificate Service infrastructure, I would appreciate your comments."
The University of Wisconsin - Madison has deployed a campuswide PKI solution based on GeoTrust.
. asp
More information, with presentations and descriptions of our deployment:
http://doit.wisc.edu/middleware/pki/
UW/GeoTrust/EDUCAUSE joint press release:
http://doit.wisc.edu/middleware/pki/geotrustuwpki
For more information about UW-Madison's PKI deployment, contact Nick Davis
We have been using MS' Certificate Services for a couple of years - primarily for WPA-RADIUS authentication. It has worked fine. You can set group policy to automatically request user and machine certificates so there isn't a lot of touches to the desktop. Only thing I haven't figured out is how to get our company's root CA to be a trusted root certificate within the WPA config.
Don't forget to look at OpenSSL (you'll have to write some scripts and use a RDBMS with this), Entrust, and RSA.
Also, don't hardcode your CRL URL into your certificates. If that web server goes down, your entire PKI could break. It is better to leave revocation out of certificates and get all of your important PKI clients to use OSPF.
For the root node of your PKI:
Take a laptop, scratch off all networking-type thingks (modem jack, ethernet jack), generated your root CA key, use it to sign your intermediate CA certificates, then lock the laptop in a safe.
A slashdotter who didn't build his own computer is like a Jedi who didn't build his own lightsaber.
Dunno if this will get modded out of AC-land, but here goes:
For the newbs, CRLs or Certificate Revocation Lists are nothing more than lists of which certs have been revoked. If you're going to deal in non-physical access tokens (as opposed to, say, metal keys and RFID badges) you're eventually going to want to deal with the eventuality that people's lifespans are generally longer than the amount of time that they have access to your stuff. PKI is excellent for mathematically proving that noone that can't factor huge primes can get your secrets just by looking at bits on the wire, but you can't really demand that your recently fired employees surrender their keys since they could very well have made copies in advance. Now that I think about it I suppose the same is true of keys, so consider CRLs the digital equivalent of changing locks.
A CRL is a list of all they key IDs of keys that have been revoked. If you get terminated, you go on the list, and when you subsequently try to use your key, even though mathematically it works great, if you're on the CRL you get a 403 (or big guys with guns or whatever your model for Access Denied happens to be).
CRLs are as dead end as it gets. Especially if you're working with a lot of end-devices or end-users, your CRL situation is going to get fantastically out of control very quickly. Picture, if you will, the DoD. How many people do you think had keys last year who aren't entitled to them now? Sure, the really old keys expire, but the new keys that were revoked all have to be downloaded *every time* a user makes a query, or else you risk race conditions of varying severity. (One could easily imagine the race to get home and log in over the VPN to copy the Secret Plans after being fired; the amount of time a user would need to do this is about the longest you'd want to go between CRL updates. If a CRL was many megabytes large and if the authenticating device got many hundreds of requests per second you might have a problem.
OCSP , or Online Certificate Status Protocol, is a huge step in the right direction; instead of downloading the entire CRL to the authenticating device, the device instead makes a quick call to a OCSP responder, querying the status of the cert. The OCSP has a store of CRLs which it obtains from the CA/VA, and can create a signed response containing the status of the certificate: good or revoked (or, I suppose, unrecognized or otherwise munged). Now you only have to distribute CRLs to one/several devices, instead of every one in the infrastructure.
Some groups (Corestreet, among others) have created distributed versions of OCSP which use precomputed proof lists in order to avoid the problem of distributing private keys to a network of distributed OCSP responders for use in signing OCSP responses. This D-OCSP is vastly more powerful and flexible than CRLs (and proportionally expensive).
PKI is a pretty daunting challenge to implement correctly, and its even harder to make the other links in the chain nearly as strong as the crypto. Best of luck.
vvj
You seem to be asking several questions, or confusing several solutions, or both.
.1X schtuff up.
If you're looking for port-level authentication on your networks, wired or wireless, then IEEE 802.1X is the answer.
(dot)1X uses EAP (Extensible Authentication Protocol) Methods. MS gives you two big methods out of the box w/ the XP client: PEAP-MS-CHAPv2 (think: login/passwd) and EAP-TLS (think: digital certs), and provides the server level support in the form of certificate services, IAS (internet authentication server) and integration of both into the AD. Other methods are around, typically from other vendors (at additional cost). To impliment one not supported by MS out of the box, you need client-side and server side support.
IF (BIG IF) you have an MS infrastructure, your client machine logins are probably hanging off the domain controller, and use one of the above methods, or, can easily (and transparently to your users) move to one.
NOW, once either one is in place, implimenting port level auth is straightforward.... unless you do not have 100% XP clients. Nobody does in my experience (think: Printservers, other headless network clients). Then you get to get REALLY inventive with firewalls, vlans, switches, etc. and you can "get there". Taint gonna be easy....
There are open solutions on the client side, even in an MS infrastructure. Google for "wpa_supplicant".
NOW, back to your question: The MS PKI will prolly scale as well as AD itself. No better, worse.
This answer is deceptively simple. You have to overlay it on YOUR network, YOUR security policy, YOUR needs, YOUR level of expertise, etc.
MS does eat their own dawgf00d in this area, and I personally know some of the architects and implementors.
I AM NOT A MS FAN. That being said, they have (mostly) gotten this right.
There is a book from MS Press: Deploying Secure 802.11 Wireless Networks with Microsoft® Windows, ISBN: 0-7356-1939-5, which is obviously oriented on wireless nets, but which steps you through setting all of the
Recommended....
I sincerely hope this helps..
-RED
Fashioning it in Windows is quite simple, as Windows domain participants will automatically enroll for the types of certificates that you want, for example, allowing the machines to authenticate into the domain silently. I've written several detailed implementation how-tos on these subjects (kafkaATtelusDOTnet, if you're interested).
As soon as you leave the Windows world, then all these things become a bit trickier. No longer can you simply let the the Windows Certificate Services generate your certificates silently, since you'll need to intercede to generate the type of certificates that want. Controlling how these certificates are constructed becomes somewhat difficult (not impossible, just tricky). How and what you want will totally depend on the applications that you're using. You're probably far better off getting a PKI solution based on OpenSSL in that case, especially if you need to interoperate with non-Windows applications and devices (such as CISCO routers). If you don't have time to write any code, look into RSA Security. They're wayyyy cheaper than Verisign, and you don't have to deal with the hassle of outsourcing.
Another poster recommended using OCSP - thats fine, but I don't believe there is a native OCSP client built in to Windows. You either have to roll your own, or obtain one (RSA, for example, has one. As well as Computer Associates OCSPro). In fact, there is no reason why you can't implement both redundantly. Use both the CRL distributionpoints (CRLdP) extension *and* the AIA extension to get this done.
Another citation, I believe, referred to Peter Guttmans (very old) document on various PKI implementations, X.509 Style Guide. This document is horrendously outdated, as the tools and apps are far more widespread than they were wayyyy back in 2000.
Anyways, for what its worth, if you know what you're doing PKI has distinct advantages to add to your electronic security (although a blind reliance on it won't help you at all).
If you don't know what you're doing, then you'd better go with a vendor that will support you.