Ask Slashdot: Open Hardware/Software-Based Security Token?
Qbertino (265505) writes I've been musing about a security setup to allow my coworkers/users access to files from the outside. I want security to be a little safer than pure key- or password-based SSH access, and some super-expensive RSA Token setup is out of question. I've been wondering whether there are any feasible and working FOSS and open hardware-based security token generator projects out there. It'd be best with ready-made server-side scripts/daemons. Perhaps something Arduino or Raspberry Pi based? Has anybody tried something like this? What are your experiences? What do you use? How would you attempt an open hardware FOSS solution to this problem?
www.yubico.com ... not quite FOSS but its your ticket....
You can set up 2nd factor using SMS pretty easily, and have it text you a second password that's good for five minutes.
Definitely the cheapest option.
If you make your own token with an arduino and an LCD and a real time clock and a battery you've already paid for the RSA tokens.
=Rich
Yubikey is a USB OTP generator, it can be integrated quite easily and it has ssh and a little fast dig up I found this link about yubikey and openvpn..
http://www.yubico.com/applicat...
http://forum.yubico.com/viewto...
Â_Â
My organization uses 2FA with a standard that's compatible with Google Authenticator and a Yubikey (OATH: http://en.wikipedia.org/wiki/I... and http://www.nongnu.org/oath-too...). People with smartphones could use Google Authenticator to obtain auth tokens; an inexpensive ($25 per person) yubikey provides a very easy way to enter tokens without much hassle; and the open-source oathtool can generate tokens for other uses (i.e. add a "paper" authentication device with a long list of sequential tokens).
I had some good experience with the reasonable cheap Yubikey a few years ago. Though not a token that is usable without a computer, as it works as a usb key. Its not open hardware as far as i know.
SSH keys on read only SD Card?
- http://www.milkme.co.uk
Assuming most of your user-base has some sort of smartphone I'd look at using that to save trying to manage a slew of custom hardware. I don't know if you could register the phone's ID (if there is such a thing - what do I know?) and implement a simple challenge-response.
A self-selling token...
For software tokens, Google Authenticator has apps for Android, iOS, and BlackBerry. They implement the TOTP standard, so any compatible code-generating software (such as the J2ME app I have on my non-smartphone) will work with it.
They also have a PAM module that works with SSH (or anything else that uses PAM). I've used it before, and it works great.
For reference, neither the apps nor the PAM module depend in any way on Google services, they don't send any data to Google, and will work perfectly happily in a totally offline environment (assuming all the servers and client apps have synchronized clocks).
A secnod for Yubikeys. We love them. You can load your own key onto them so there is no worries when a third party (like RSA) gets hacked. There are open souce tools to configure them and run authentication servers. Integrated with PAM, and can be used with radius servers. And they are about $25 each, with no expiry date.
I'd include links - but there are a lot of them depending on what you want (Linux, PAM, Apache, Andoird, iOS, etc) - So, "Just Google it!"
FreeOTP and/or Google Authenticator may be exactly what you want from the client side.
I made a server-side implemention to get started with a little while ago:
https://github.com/adsllc/PHPO...
I'd like something like this for a mixed Windows/Mac/Linux network but the costs are just prohibitive.
Yubikeys are $25 each for the hardware, and $45 PER USER. That's just ridiculous when you scale up, and there's an awful lot of manually faffing about to get to the point that it works.
To be honest, in my scenario (primary/secondary schools), I'm not looking for 2-factor as much as "I don't have to remember my password" login. If someone has the key, they have access (but only to another pupils account, which is nothing), and leave 2-factor as only a consideration for the staff (so then you could buy Yubi just for the staff, etc.). But anything software-licensed per-user is just ludicrously expensive when you start adding it up, on top of the "per-user" device costs to start with.
To be honest, I'd pay £10 each for a set of USB tokens that - when you press the button - just types in a username/password for you. Yubikey doesn't solve that problem on Windows, it just makes existing logins much more complicated (and, as pointed out in their manuals, when you get into mobile access they are useless anyway).
If someone could come up with a £10 USB keyboard-emulating device that types in a given string (I can code it so it presses tab / Return in all the right places, etc.), I'd probably buy it.
But on Windows, Yubikey is just too expensive for the software. I can't believe, given how little it does and how "third-party" it still feels after you've installed, that it costs that much to develop the Windows side of the software.
https://github.com/stolendata/...
You can create a token with anything that will be able to hold a key, increment a counter, encrypt it at each increment, and display results.
However, if you putthis on a network (e.g., by making a cellphone application of it), it is vulnerable to malware on the device. Keep
it electrically isolated (and disallow anything that'll read out the key once it is set up) and it can be safe. (You have to track
the output to deduce internal counter state, so authenticator must know the unique key in each token.)
The problem with software tokens is that anything that can read their memory can in principle figure out all about it and
forge results.
Note each token must have a unique key (and it better not be possible to deduce the key on any token from its
token number, nor from the key(s) on any other token(s).
For fans of software scheme: you must tell how your soft tokens resist attack by malware.
Remember that to get pay-tv signals, folks were willing and able to design special ICs. Do not underestimate
the energy, resources, or cleverness of attackers.
I have had a smart card setup for a little while. I use it for both OpenVPN and SSH access. I created the card by making my own CA and then using OpenSC to write to the card itself. There are some other cool things you can do like us it for PGP signing. I got a whole kit for about $100 bucks that came with a reader/writer, 2 cards and one USB thing. https://www.opensc-project.org...
If you only want a semipublic file share, just stand up a free AWS Linux instance and lock it down to SSH/SFTP. You get a few GB of free cloud storage (I don't actually know the limit, but I have 8 online now and have never paid a dime), and can sleep well knowing that a breach just means standing up a new instance rather than the end of your career.
You only really need to let people get onto your corporate network if you want to set up "real" remote access such as VPN or, as you mention, one of those crazy-expensive RSA Citrix gateways. And no offense, but the very fact that you have asked Slashdot how to do this on the cheap suggests that you really shouldn't do it at all (aside from my "safe" suggestion above).
See tiqr.org
It has apps for all major platforms, and is open source.
It's not a two factor authentication, it's actually a means of generating one time passwords. In a nutshell, you can have a local device calculate the password based upon a challenge sent from the system you wish to log onto, or you can preprint a list of passwords that you can use to log onto the system.
See http://en.wikipedia.org/wiki/O... for a general description of the method. You ought to be able to find out more using that page as a starting point.
How about OpenOTP: http://www.rcdevs.com/products/openotp/
FreeOTP is a open mobile app that works just like Google Authenticator. For hardware, check out the Gemalto tokens. I don't know about the "open"ness of the tokens, however.
I'm surprised no one has mentioned Mobile-OTP (http://motp.sourceforge.net/). Perhaps it's a bit older, but it's absolutely free assuming your users have a mobile phone. (It doesn't even necessarily have to be a smart phone). We use this to secure our SSH gateways and it's not bad to set up -- it uses PAM.
See:- https://www.grc.com/sqrl/sqrl....
Using a smartphone as your token, and if that is not secure enough for you, I am for my sins presently building an HSM that will interface over NFC with the smartphone to keep all the cryptography parts and master key outside of the potentially vulnerable computing platform. Further I promise as do many of us working on this project to make everything we can public domain or at the least open licensed.
Before making comment on this please do read and digest all the reference material, TL;DR; does not cut it in crypto.
How about OpenOTP:
Before retiring I helped implement a system using X.509/PKS11 and PKCS15. Tokens are available from several sources and require no special software on the server side for ssh access. Standard OpenSSH also supports PKCS11 in the client. We used OpenSC and OpenCt to integrate the cards into Linux and FreeBSD. We could have done the same on Mac an Windows, but chose commercial software instead.
Advantages include no central database, standards based, open source support available. Works with unmodified SSH. IIRC, the USD tokens we used were about $30 each.
Also, I am not an AC. I am Kevmeister, but when I try to post, slashdot decides I am not logged in for some reason.
Not gpl / freeware but worth a look.
http://www.passwindow.com/
S
https://www.authy.com/
Its the easy button for 2FA
Using anything other that the mobile phones people already ha e is idiocy. Check out smspasscode or get CM telecom's security app to distribute codes via push messaging and SMS for you.
RSA did implement their scheme as an iPhone app. If you're willing to consider something that might work as a smart-phone app, think about S/Key. It's supported as a PAM module for the *nixes. (Of course, that assumes you're willing to trust the smart-phone apps.)
I recall using S/key ages ago (1990s) back in the days of Telnet (before ssh.) Back then, if you didn't have an S/key calculator, you could also use a paper list of one-time passwords. Ever so often, we had to re-seed our s/key (because we limited the number of passwords per. seeding.) S/key can be a bit annoying, but it ought to be cheap to implement.
If you want to go with a hand-held device, I'm sure you could implement an S/Key end-user calculator on an Arduino or Raspberry Pi - but how much can you afford to spend? I wouldn't be surprised if a Arduino-like solution cost more than RSA tokens.
S/Key is focused on a single server. If you require your users to connect through a bastion host, it might be workable - but the model breaks down if you want multiple servers, unless they share a filesystem.
Do you consider the TPM acceptable? I have sort-of-working but woefully incomplete code for this. There's also the work-in-progress OpenCryptoChip.
I print out a list of 100 passwords, fold it up, and keep it in my wallet. Each time I use one, I cross it out. It is small, flat, easy to carry, and always with me. :)
Just don't let your users write the name of the server and their username on it.
I agree with OATH. Google authenticator is great. You can get the code to set up two factor on linux server using PAM by going to https://code.google.com/p/google-authenticator/. I was able to use it to get my SSH server with two factor time based authentication, and I finally feel secure having an SSH server on my home box.
This wireless login device is supersecure since it doesn't reveal the password to the computer, and also manages all the passwords for avoiding remembering. All using a standard and unmodified browser (just its configuration), and compatible with all your favourite websites right now.
See it in action here: www.identivasecurity.com
TOTP (time-based one time keys), HOTP (hmac? one time keys), and RFC6238 are todays friendly search terms.
TOTP is what the traditional RSA tokens use, in which the time is a component of the encryption used so the code generated from the private key changes (usually every 30 or 60 seconds)
HOTP is the latest in one time pads, where each code generated is good until used but only once.
It differs from true OTPs in that the data is procedurally generated from a private key instead of all the keys/data being generated in bulk ahead of time. One hopes the private key is smaller than a crap-ton of bulk keys or binary data needed for a true OTP.
Google Authenticator is one pre-made generic solution, and you don't need to use Google to utilize it.
The encryption it uses is open and has an RFC, and their own software lets you input the private key via QR code for the user if you wish, and utilize multiple profiles/keys.
Google released an open source PAM module for all your Linux authentication needs, including SSH.
I use this myself for access to my home network (ssh + port forwards)
There are also tons of programs that run the identical encryption methods, lots being open source.
I've seen them available for every OS commonly used (and then some) plus every smartphone out there.
I've also recently purchased a Yubico key, which is a hardware version of the RSA token.
The basic model runs $25 each if you buy single keys, and they can be loaded with up to two profiles using various encryption methods and keys.
Instead of an LCD display with a rolling code, they are USB devices that show up as USB keyboard HIDs. You plug it in and once the OS has it powered and ready, there is a touch-sensitive "button" you touch and the dongle types in the code valid for that 30 second period.
It also takes into account how long it needs to type the codes (sha256 with serial can be 158 characters and takes ~3-4 seconds to type in at the default key rate)
It will always type the key that will be valid at the time its about to hit enter.
Yubico is RFC6238 compatible, and also can utilize OpenRADIUS which then makes it compatible with pretty much everything.
A third option, though more for Windows login / Active Directory, and definitely not open source, is EIDVirtual.
It basically lets you reformat a USB flash drive to contain a 4k private key and special header so along with its smartcard driver extension, the keys show up as smart cards and USB flash (technically you can still store data on the drive if you want)
The software is very cheap (7 euro if I recall), works flawlessly in AD setups (tested on XP, 7, and 8), and uses any old flash drive with 1mb of storage.
The downside of course is you don't get any of the fancy (or even required) hardware protection of the private key. I believe it uses the USB drives serial and model/make as part of its formula so blind copying isn't trivial, but the hardware exists to easily fake that info for anyone intent on doing so.
Not nearly as secure as the other options, but it is at least priced accordingly, and doesn't try to add 2-3 zeros to the pricetag for the "enterprise" label.
Have a look at http://www.yubico.com/ hardware tokens (one-time password generators) and cloud based verification, open API, low cost, and if you are lucky, you can even get a VeriSign logo on it...
If you need *real* security as opposed to "colored-glass-bead-android"-class security*, use the approach German banking industry has used for a long time with great success:
Simply print one-time keys of 6 random numbers each on a sheet of paper. Use one number (Transaction Authorization Number) per login process. Lock the account if more than three bad TANs have been used against an account.
Have security officers (whose primary job can be anything else PC-related) issue said TAN lists.
Generating the random number sheets from a crypto-strong PRNG (e.g. 3DES in counter-mode) seeded from the Linux /dev/random source should be rather trivial.
Users can carry the TAN List inside their wallet.
It is more difficult to protect the key material generation machine and key material distribution. Disconnect the key material generation PC from the net and physically remove/destroy all unecessary USB and network connections. Keep said machine and the printer in a properly secured room/safe.
Regarding "RSA Security" - they are a big-time fraud because they ignored almost every established rule regarding cyptographic security. And NSA is corrupt, too, because they did not stop this corrupt company from selling their snake oil to U.S. defence contractors. This fraud enabled Chinese intelligence to clean out the clock of Lockheed-Martin and thereby the U.S. air force and their F-22 fighter. Neither NSA nor DISA leadership was punished. All the fun of a corrupt government and corrupt intelligence/security.
*With a nice assortment of backdoors (also called "programming errors") for "anti-terror" intel ops. Ready to be used by the Russkie Mafia, too.
...works by coding PAMs (Pluggable Authenticatiob Module) for all the relevant systems. A competent systems programmer should be able to implement this without too much effort.
You need to devise a way to bring the TAN Lists to the relevant server systems. Secure Copy (scp) is your friend. Or GNUpg.
on windows platforms we've been using SMS2 (www.wrightccs.com) for free two factor auth for ages. we use google authenticator with it but there is also text message.
This is exactly the proper approach. Much more secure than much more expensive snake oil security "solutions". Including from that corrupt three-letter company and those based on some ridiculously insecure smart phones.
By the time you roll your own solution, you could have deployed RSA SecurID - soft tokens, or hard, or ODA (SMS) authentication. Virtual appliance on VMWare. Yeah, it costs some money - what's your time worth? It's not as expensive as you seem to think.
http://www.linotp.org/
https://www.crypto-stick.com/
Open source hardware and software.
Otherwise, Yubikey is quite good alternative.
There are smart cards at affordable price. The biggest problem is to find some that can run without a binary blob driver (would you trust it?).
http://hackaday.io/project/86-Mooltipass
Offline password keeper project created by and for the Hackaday community
The mooltipass is an offline password keeper.
The concept behind this product is to minimize the number of ways your passwords can be compromised, while generating and storing long and complex random passwords for the different websites you use daily. It is designed to be as small as possible so it can fit in your pocket. Simply visit a website and the device will ask for confirmation to enter your credentials when you need to login.
FWIW, not free, but reasonably priced is Duo Security (www.duosecurity.com). Ten accounts free, $1 per user per month. Integrates simply with a wide variety of security devices. Tech support is outstanding. I have 50 users -- RSA wanted $15,000 -- Duo Security is $480/yr. Second factor auth thru smartphone, SMS, landline.
LinOTP is an enterprise level solution for strong authentication, developed and maintained by LSE Leading Security Experts GmbH, scaling from small individual installations through middle sized company scenarios to Cloud-Provider requirements.
http://www.linotp.org/features.html
Getting open hardware is not that easy. The only real open hardware I know is the crypto stick. http://shop.crypto-stick.com/e... Of course you can buy it but all plans are open. But it is relativle expensive. You can use this as a smartcard to do certificate/public-private-Keypair authentication. You could however use the Yubikey. Please note, that the Yubkey Neo (wich is about 50€) can also work as a smartcard. If you want to use one time passwords you can use the standard yubikey (~25€). Yubico is rather open but it is no open hardware! The good thing about the yubikey is that it can be initialized, i.e. your secret key, that is used to generated the OTP is not know to the hardware vendor. Recently I saw another authentication device, the "authentiKator" (http://www.authentikator.com), which similar to the yubikey but will cost only ~8€. Anyway, if you can not make up your mind at the moment, that is no problem. There is an open authentication service, which is derived from OTP authentication which supports HOTP tokens, TOTP tokens, smartphones apps, OTP via SMS or Email, the old mOTP token (which can be used on your old feature phone - maybe you want to use a crappy old nokia phone in Offline mode). You can also use cool smartdisplayer cards, in the form factor of a credit card with an eInk display! But also the yubikey can be enrolled. New token types can be added by writing a small new python module. Take a look at http://www.privacyidea.org/ which is also hosted at github. You receive a whole bunch of answers and I am curious for your decision. Kind regards Cornelius
If your users are being equipped with 2FA client devices (or apps), an easy way to apply this security to a website is with the mod-authn-otp Apache module (disclaimer, I wrote it).
Check out LinOTP which works with just about any soft tokens like Google Authenticator and the Red Hat FreeOTP token app. Also works with the awesome Yubikey. I like how the tokens are user managed which drastically eases support.
Crypto Stick is exactly what you are looking for. Its 100% open source, enables encryption, secure login, one time passwords and more. See www.crypto-stick.com