I'm the head of IT and development in a small group of enthusiasts spending their free time with a bit of hobby development. We don't have an office yet, but maybe consider to rent some small office rooms and set up a small set of systems so we can work together while also be physical together in one room instead of only communicating over the net (which we use many different ways from classic mailing-list style over some sort of bulletin board to voice conferences). It's just: When sitting near each other it's easier to interact with each other.
As we all are technophiles I thought about to come up with some "geek way" of user management based on public key crypto and some sort of hardware token like smart cards.
My idea goes like this: Instead of having the normal way with usernames and passwords entered into a logon shell one just inserts the smart card into a reader (or maybe a usb drive contain a certificate) and the running system logon and unlocks itself without the user have to supply some credentials other than the token. To make this work on each machine all is centralized on the server so on one day I can sit on the window enjoy the view, on the other day group together with some others to active brainstorm while sitting back to back.
I know: Never roll your own crypto, but a professional / enterprise solution would be overkill and as this is only a hobbyist project we would like to save the cost.
So, here're my questions:
- Does someone know how to implement such auto-logon-when-insert-smart-card? I'm sure this should be easy on unix, but is such also possible on Windows?
- In addition to auto-logon it would be cool to auto-logoff (or at least screen lock) when the smart card is removed so you could safely go away for a break by just take the card with you.
- As the idea is mostly based on some sort of hardware token - is public crypto the right way for this? Although I'm a fan of smart cards other solutions possible: plain usb thumbdrive which gets scanned on insert which just could have an certificate with its private key stored on it (maybe not the best idea as this defeats the purpose of hardware token when the private key could be read) or other stuff performing a basic auth based on stored secret credentials.
The main reason for this idea: When setting up something like a Windows domain you enforced to someone change the passwords (at least I don't know how to disable it at all so once set there's no need to change the password ever again). Also: it's not like protecting some secret personal data. As anything gets stored on the server (the clients are basically thin-clients working remotely on a server instance) but just to authenticate whos using what machine and to make sure when a commit is done the system automatically knows who it was.
Currently it's a bit of "yeah, we have some repos anyone has every permission on it - and to figure out what files are from who and who made changes to it we rely on comments and a basic versioning system" - not very productive, but it gets the job done.