[Tails-dev] Goldfish the ephemeral password manager.

2014-05-12 Thread Rémi
Hey!

I wrote an ephemeral password manager, for privacy and anonymity.
The idea is that you use a root password to deterministically generate
credentials, so no need to store the credentials.

Based on a keyword (e.g. 'twitter', 'truecrypt' or 'yandex') it
generates a normal looking username, password for service providers and
a much longer encryption password.

https://github.com/RemideZ/Goldfish

Any feedback or questions are welcome. I'm also curious if this might be
useful for tails.

-RemideZ.
___
Tails-dev mailing list
Tails-dev@boum.org
https://mailman.boum.org/listinfo/tails-dev
To unsubscribe from this list, send an empty email to 
tails-dev-unsubscr...@boum.org.


Re: [Tails-dev] Goldfish the ephemeral password manager.

2014-05-13 Thread intrigeri
Hi Rémi,

Rémi wrote (12 May 2014 09:48:13 GMT) :
> I wrote an ephemeral password manager, for privacy and anonymity.
> The idea is that you use a root password to deterministically generate
> credentials, so no need to store the credentials.

Thanks for this suggestion.

Just curious: is there any threat model description, and security
analysis of the underlying password generation algorithm, to be
found somewhere?

Cheers,
-- 
  intrigeri
  | GnuPG key @ https://gaffer.ptitcanardnoir.org/intrigeri/intrigeri.asc
  | OTR fingerprint @ https://gaffer.ptitcanardnoir.org/intrigeri/otr.asc
___
Tails-dev mailing list
Tails-dev@boum.org
https://mailman.boum.org/listinfo/tails-dev
To unsubscribe from this list, send an empty email to 
tails-dev-unsubscr...@boum.org.

Re: [Tails-dev] Goldfish the ephemeral password manager.

2014-05-13 Thread Rémi
Good suggestion.

I added the following text to the repository:

Goldfish is unlocked using 1.000.000 rounds of sha512, which takes ~1.5
seconds in python. The hash rounds are not meant to replace an actual
strong password, so the password should be about as strong as your
truecrypt password.
A danger is that the root password would be guessed. It is also not
obvious how to change a password. If a service provider has the
username/password pair this does not give away anything about other
credentials.

Obfuscation.
The usernames are designed to 'look real'. They are derived from common
western names with an added suffix. The service passwords and username
suffixes vary in length to further obfuscate that Goldfish is used.
If someone really wants to they could figure out that a set of
credentials was likely generated using Goldfish. This should not
directly be obvious, certainly not by just looking at the username.

R.


On 13/05/14 12:09, intrigeri wrote:
> Hi Rémi,
> 
> Rémi wrote (12 May 2014 09:48:13 GMT) :
>> I wrote an ephemeral password manager, for privacy and anonymity.
>> The idea is that you use a root password to deterministically generate
>> credentials, so no need to store the credentials.
> 
> Thanks for this suggestion.
> 
> Just curious: is there any threat model description, and security
> analysis of the underlying password generation algorithm, to be
> found somewhere?
> 
> Cheers,
> 
___
Tails-dev mailing list
Tails-dev@boum.org
https://mailman.boum.org/listinfo/tails-dev
To unsubscribe from this list, send an empty email to 
tails-dev-unsubscr...@boum.org.

Re: [Tails-dev] Goldfish the ephemeral password manager.

2014-05-13 Thread jvoisin
On 05/13/2014 03:17 PM, Rémi wrote:
> Good suggestion.
> 
> I added the following text to the repository:
> 
> Goldfish is unlocked using 1.000.000 rounds of sha512, which takes ~1.5
> seconds in python. The hash rounds are not meant to replace an actual
> strong password, so the password should be about as strong as your
> truecrypt password.
> A danger is that the root password would be guessed. It is also not
> obvious how to change a password. If a service provider has the
> username/password pair this does not give away anything about other
> credentials.
> 
> Obfuscation.
> The usernames are designed to 'look real'. They are derived from common
> western names with an added suffix. The service passwords and username
> suffixes vary in length to further obfuscate that Goldfish is used.
> If someone really wants to they could figure out that a set of
> credentials was likely generated using Goldfish. This should not
> directly be obvious, certainly not by just looking at the username.
> 
> R.

A quick glance at your code tells me that I don't want to use this
software at all.

- "My own implementation of a slow hash function." : Why are you
inventing your own crypto ?

- "# Pop the first number because it is probably less random." :
Probably less random ?!

- "# Yes, I know how this affects the name distribution." : Why
admitting that your distribution is flawed instead of fixing it ?!

-  Given some information it looks up the correct username and
appends some random data  : This is wrong, the appended data is not
random at all.

- Your lock/unlock system has no control over the memory of the process.

- ...

You may want to read some papers about cryptography before creating this
kind of softwares.
> 
> 
> On 13/05/14 12:09, intrigeri wrote:
>> Hi Rémi,
>>
>> Rémi wrote (12 May 2014 09:48:13 GMT) :
>>> I wrote an ephemeral password manager, for privacy and anonymity.
>>> The idea is that you use a root password to deterministically generate
>>> credentials, so no need to store the credentials.
>>
>> Thanks for this suggestion.
>>
>> Just curious: is there any threat model description, and security
>> analysis of the underlying password generation algorithm, to be
>> found somewhere?
>>
>> Cheers,
>>
> ___
> Tails-dev mailing list
> Tails-dev@boum.org
> https://mailman.boum.org/listinfo/tails-dev
> To unsubscribe from this list, send an empty email to 
> tails-dev-unsubscr...@boum.org.
> 

___
Tails-dev mailing list
Tails-dev@boum.org
https://mailman.boum.org/listinfo/tails-dev
To unsubscribe from this list, send an empty email to 
tails-dev-unsubscr...@boum.org.

Re: [Tails-dev] Goldfish the ephemeral password manager.

2014-05-13 Thread intrigeri
Hi Julien,

You didn't Cc Rémi, so I doubt your email reached him. Which might be
just as well, as I personally find the tone of your answer out of
line, and inappropriate. I don't want to take part in a community
where we bully newbies. Let's try to be excellent to each other :)

Note that I trust your technical points are probably correct (without
checking myself), so it's only a matter of how one expresses criticism
about technical issues.

jvoisin wrote (13 May 2014 13:28:11 GMT) :
> You may want to read some papers about cryptography before creating this
> kind of softwares.

I'm not sure if academic papers would be the best way to learn this
stuff for someone with Rémi's starting point: they are generally full
of good theory, but hard to relate to when one tries to implement
something actually useful, and lacks the academic background.

I think I would instead recommend texts that link more strongly
theoretical cryptography knowledge to practical implementation
requirements, such as Applied Cryptography, or the Secure Programming
Howto. I'd love to hear more suggestions of such readings, by the way.

Cheers!
___
Tails-dev mailing list
Tails-dev@boum.org
https://mailman.boum.org/listinfo/tails-dev
To unsubscribe from this list, send an empty email to 
tails-dev-unsubscr...@boum.org.

Re: [Tails-dev] Goldfish the ephemeral password manager.

2014-05-13 Thread Rémi
Going over your points:

- Yes, I should select some other slow hash function. Do you have a
suggestion for a secure function available in python?

- It is less random. That is why it is popped.

- It really doesn't matter if some names have a tiny bit lower
probability of getting selected. Much more useful would be to add more
names.

- Now you're just trolling. The username suffix is indeed not random,
but derived like the rest of the credentials.

- Yes, in python you do not have control over memory like you have in C.

Maybe the comments should have been formulated to look less scary? As I
pointed out in the code, I indeed need another slow hash function. I'm
on it.

R.


On 13/05/14 15:28, jvoisin wrote:
> On 05/13/2014 03:17 PM, Rémi wrote:
>> Good suggestion.
>>
>> I added the following text to the repository:
>>
>> Goldfish is unlocked using 1.000.000 rounds of sha512, which takes ~1.5
>> seconds in python. The hash rounds are not meant to replace an actual
>> strong password, so the password should be about as strong as your
>> truecrypt password.
>> A danger is that the root password would be guessed. It is also not
>> obvious how to change a password. If a service provider has the
>> username/password pair this does not give away anything about other
>> credentials.
>>
>> Obfuscation.
>> The usernames are designed to 'look real'. They are derived from common
>> western names with an added suffix. The service passwords and username
>> suffixes vary in length to further obfuscate that Goldfish is used.
>> If someone really wants to they could figure out that a set of
>> credentials was likely generated using Goldfish. This should not
>> directly be obvious, certainly not by just looking at the username.
>>
>> R.
> 
> A quick glance at your code tells me that I don't want to use this
> software at all.
> 
> - "My own implementation of a slow hash function." : Why are you
> inventing your own crypto ?
> 
> - "# Pop the first number because it is probably less random." :
> Probably less random ?!
> 
> - "# Yes, I know how this affects the name distribution." : Why
> admitting that your distribution is flawed instead of fixing it ?!
> 
> -  Given some information it looks up the correct username and
> appends some random data  : This is wrong, the appended data is not
> random at all.
> 
> - Your lock/unlock system has no control over the memory of the process.
> 
> - ...
> 
> You may want to read some papers about cryptography before creating this
> kind of softwares.
>>
>>
>> On 13/05/14 12:09, intrigeri wrote:
>>> Hi Rémi,
>>>
>>> Rémi wrote (12 May 2014 09:48:13 GMT) :
 I wrote an ephemeral password manager, for privacy and anonymity.
 The idea is that you use a root password to deterministically generate
 credentials, so no need to store the credentials.
>>>
>>> Thanks for this suggestion.
>>>
>>> Just curious: is there any threat model description, and security
>>> analysis of the underlying password generation algorithm, to be
>>> found somewhere?
>>>
>>> Cheers,
>>>
>> ___
>> Tails-dev mailing list
>> Tails-dev@boum.org
>> https://mailman.boum.org/listinfo/tails-dev
>> To unsubscribe from this list, send an empty email to 
>> tails-dev-unsubscr...@boum.org.
>>
> 
> ___
> Tails-dev mailing list
> Tails-dev@boum.org
> https://mailman.boum.org/listinfo/tails-dev
> To unsubscribe from this list, send an empty email to 
> tails-dev-unsubscr...@boum.org.
> 
___
Tails-dev mailing list
Tails-dev@boum.org
https://mailman.boum.org/listinfo/tails-dev
To unsubscribe from this list, send an empty email to 
tails-dev-unsubscr...@boum.org.

Re: [Tails-dev] Goldfish the ephemeral password manager.

2014-05-13 Thread Rémi
By that I mean the comments in my own code.

On 13/05/14 15:58, Rémi wrote:
> Maybe the comments should have been formulated to look less scary?
___
Tails-dev mailing list
Tails-dev@boum.org
https://mailman.boum.org/listinfo/tails-dev
To unsubscribe from this list, send an empty email to 
tails-dev-unsubscr...@boum.org.

Re: [Tails-dev] Goldfish the ephemeral password manager.

2014-05-13 Thread jvoisin
On 05/13/2014 03:58 PM, Rémi wrote:
> Going over your points:
> 
> - Yes, I should select some other slow hash function. Do you have a
> suggestion for a secure function available in python?
Currently, Python doesn't come with those kind of function.
> 
> - It is less random. That is why it is popped.
Then you should update the comment :)
> 
> - It really doesn't matter if some names have a tiny bit lower
> probability of getting selected. Much more useful would be to add more
> names.
> 
> - Now you're just trolling. The username suffix is indeed not random,
> but derived like the rest of the credentials.
Then it shouldn't be described as random :)
> 
> - Yes, in python you do not have control over memory like you have in C.
This is why those kind of tools should not be written in Python:
- You don't have control over memory
- You can't guarantee that your code can run in constant time.
> 
> Maybe the comments should have been formulated to look less scary? As I
> pointed out in the code, I indeed need another slow hash function. I'm
> on it.
Yes. Sorry for the harsh tone :|

The idea of deriving passwords from a master is not knew.
What about using something like HMAC for this ?
> 
> R.
> 
> 
> On 13/05/14 15:28, jvoisin wrote:
>> On 05/13/2014 03:17 PM, Rémi wrote:
>>> Good suggestion.
>>>
>>> I added the following text to the repository:
>>>
>>> Goldfish is unlocked using 1.000.000 rounds of sha512, which takes ~1.5
>>> seconds in python. The hash rounds are not meant to replace an actual
>>> strong password, so the password should be about as strong as your
>>> truecrypt password.
>>> A danger is that the root password would be guessed. It is also not
>>> obvious how to change a password. If a service provider has the
>>> username/password pair this does not give away anything about other
>>> credentials.
>>>
>>> Obfuscation.
>>> The usernames are designed to 'look real'. They are derived from common
>>> western names with an added suffix. The service passwords and username
>>> suffixes vary in length to further obfuscate that Goldfish is used.
>>> If someone really wants to they could figure out that a set of
>>> credentials was likely generated using Goldfish. This should not
>>> directly be obvious, certainly not by just looking at the username.
>>>
>>> R.
>>
>> A quick glance at your code tells me that I don't want to use this
>> software at all.
>>
>> - "My own implementation of a slow hash function." : Why are you
>> inventing your own crypto ?
>>
>> - "# Pop the first number because it is probably less random." :
>> Probably less random ?!
>>
>> - "# Yes, I know how this affects the name distribution." : Why
>> admitting that your distribution is flawed instead of fixing it ?!
>>
>> -  Given some information it looks up the correct username and
>> appends some random data  : This is wrong, the appended data is not
>> random at all.
>>
>> - Your lock/unlock system has no control over the memory of the process.
>>
>> - ...
>>
>> You may want to read some papers about cryptography before creating this
>> kind of softwares.
>>>
>>>
>>> On 13/05/14 12:09, intrigeri wrote:
 Hi Rémi,

 Rémi wrote (12 May 2014 09:48:13 GMT) :
> I wrote an ephemeral password manager, for privacy and anonymity.
> The idea is that you use a root password to deterministically generate
> credentials, so no need to store the credentials.

 Thanks for this suggestion.

 Just curious: is there any threat model description, and security
 analysis of the underlying password generation algorithm, to be
 found somewhere?

 Cheers,

>>> ___
>>> Tails-dev mailing list
>>> Tails-dev@boum.org
>>> https://mailman.boum.org/listinfo/tails-dev
>>> To unsubscribe from this list, send an empty email to 
>>> tails-dev-unsubscr...@boum.org.
>>>
>>
>> ___
>> Tails-dev mailing list
>> Tails-dev@boum.org
>> https://mailman.boum.org/listinfo/tails-dev
>> To unsubscribe from this list, send an empty email to 
>> tails-dev-unsubscr...@boum.org.
>>
> ___
> Tails-dev mailing list
> Tails-dev@boum.org
> https://mailman.boum.org/listinfo/tails-dev
> To unsubscribe from this list, send an empty email to 
> tails-dev-unsubscr...@boum.org.
> 

___
Tails-dev mailing list
Tails-dev@boum.org
https://mailman.boum.org/listinfo/tails-dev
To unsubscribe from this list, send an empty email to 
tails-dev-unsubscr...@boum.org.