[croquet] MC passwords in images?
Bert Freudenberg
bert at impara.de
Mon Nov 7 19:18:54 CET 2005
You may have missed Cees De Groot posting an RC4 / SHA-1 vault for
Squeak:
http://lists.squeakfoundation.org/pipermail/squeak-dev/2005-November/
096897.html
Or me posting access code to Mac OS X's system-wide Keychain:
http://lists.squeakfoundation.org/pipermail/squeak-dev/2005-November/
096837.html
And Andreas actually patching Monticello to store passwords outside
the image:
http://lists.squeakfoundation.org/pipermail/squeak-dev/2005-November/
096909.html
Regarding zeroing out passwords: the snapshot primitive always does a
full GC, so niling out the entry is sufficient. If you are paranoid,
make the former password string #becomeForward: nil, which nils out
not only this reference, but every reference to it in the system.
- Bert -
Am 07.11.2005 um 18:57 schrieb Matthew S. Hamrick:
> Hi Andreas, et al,
>
> Sorry for cross posting on every Squeak-related list I read, but it
> seems like everyone has been talking about security lately.
>
> I think the problem is more than just plain-text passwords for
> repositories. If you dig around a stock 3.8 image (with not too
> many packages loaded) you find a lot of places where the user is
> prompted for passwords. The short list includes Celeste POP3 login,
> Scamper HTTP basic/digest authentication, not to mention various
> SqueakMap, Project serverDirectories, and MC usages.
>
> There are, in short, many reasons why one would want something like
> this for application code as well as simply holding a password for MC.
>
> Most OSes and application environments I know of that deal with
> this problem implement a "vault". This is what Chris Muller was
> talking about with KryptOn. Vaults tend to put a bunch of "secrets"
> in a file somewhere with the secrets encrypted with a symmetric key
> derived from a user supplied pass-phrase. The application itself
> doesn't really have the secret (in this case a password for a MC
> server), but rather a reference to the secret. The first time any
> application needs a secret in the secrets file, the application
> queries the user for the master passphrase used to encrypt the
> secrets file. The passphrase is used along with an algorithm from
> something like PKCS#5 or PKCS#12 to generate the secret key used to
> encrypt the master secrets file. Before saving the image, the
> master pass phrase and any "unshrouded" secrets are expunged from
> memory to prevent enquiring minds from sifting through the image to
> recover them.
>
> You could use such a facility to store all your MC repository
> passwords as "secrets" in the "secrets" file, encrypted with some
> master, easy to remember, yet hard to guess passphrase. (rules for
> proper selection of passwords can be found at http://
> www.netfunny.com/rhf/jokes/92q3/selpass.html )
>
> It sounds like you're asking for something similar, but not exactly
> the same. It sounds like you're simply asking for a vault with no
> master password where secrets are simply stored outside the image.
> That way when the image is transferred, the passwords for the
> various servers stay on your machine.
>
> Personally, this seems a little reckless to me, but then again I'm
> a little paranoid. I think what would make me happy is to provide
> you with a facility that could be used safely (like with a master
> password,) but if you're cool with your current security position
> and don't think you need a master password, it shouldn't get in
> your way. (i.e. - it should be legal to specify a null password.)
>
> PKCS#5, SHA256, and ARC4 are supported in the existing msh-crypto
> codebase (at http://www.cryptonomicon.net/msh/squeak/msh-
> crypto.html ), so in theory it should only take a bit of glue code
> to figure out when to query the user for the master passphrase and
> when to expunge master passphrases and shrouded secrets from the
> image. My goal with msh-crypto was to eventually support PKCS#11
> (Cryptoki) or PC/SC (aka MUSCLE) to ensure that your secrets remain
> with a hardware key token (like a smart card) instead of on your
> hard drive. In some attack scenarios, this makes your complete
> system (not just your image) more secure.
>
> Chances of me getting to this for Squeak are virtually nil. Chris
> Mueller's idea of putting your list of secrets on a JumpDrive is a
> good one. In fact, my GPG and PGP keys reside on a jump drive (as
> does the MacOS-X keychain with all my important stuff.)
>
> Here are a few other things to consider...
>
> 1. I think I saw Chris mention that he invalidates his password
> cache in response to a message previously registered with
> SystemDictionary>>addToShutDownList:. I was pleased (from a
> security standpoint) to see that SmalltalkImage>>saveSession sends
> #shutDown to all classes in the shutdown list even if it's just
> saving. This is sub-optimal from a usage perspective as it requires
> users to re-authenticate after saving, which could cause some
> people to feel the system is randomly forgetting passwords. I don't
> know of a simple way to avoid this, and I don't think the current
> behavior should be changed.
>
> 2. If you look at the current implementation of Password (do we
> really use this class, btw?) you'll see that the thing it does in
> response to #shutDown is to equate it's password cache with nil.
> WRONG. Just because you don't have a reference to it doesn't mean
> it has been GC'd. A bad guy can run the unix command "strings" on
> the image to see if they can find the password in non-GC'd memory.
> SecurityManager is a little smarter about the whole affair,
> zeroizing bits of memory which may have contained sensitive keys.
> If you think you're safe because you're storing a secret or private
> key in memory and there's no way that strings would detect that, I
> remind you that there are several entropy scanners that do a bang-
> up job of finding keys in arbitrary runs of executable code and data.
>
> 3. Licensing. uhg; licensing. My code comes with a BSD (rather than
> Squeak-L or MIT license)
>
> So to summarize...
>
> a. you might want to have something like a Password or a
> SharedSecret class to provide services to all consumers of password-
> based authentication services.
>
> b. a simple, albeit not especially well tested one for Spoon is
> about to appear at http://
>
> c. the code is licensed under a BSD style license, so it's unlikely
> to be directly integrated into Squeak. However... I think we're
> making progress on the licensing front, so who knows. Both BSD and
> Squeak-L are "open" licenses, so feel free to look at my code and
> draw whatever benefit you can from it save removing my name or
> suing me because it didn't produce julienne fries for you.
>
> On 4 Nov 2005, at 11:08, Andreas Raab wrote:
>
>> Hi Folks,
>>
>> I just noticed that I handed out a whole bunch of images with
>> plain-text passwords for various of the more sensitive
>> repositories, thanks a lot (and no, if you have one of those it
>> won't work any longer - I changed them). So for those of you who
>> use MC and at times pass images around it is probably useful to
>> check who's been in those repositories recently.
>>
>> Oh, and is anyone out there interested in implementing a password
>> manager that stores passwords *outside* of an image in a
>> reasonably secure location?
>>
>> Cheers,
>> - Andreas
>>
>>
>
More information about the Spoon
mailing list