Skip to content
This repository has been archived by the owner on Jan 3, 2019. It is now read-only.

Add basic wallet encryption #30

Closed
hivewallet opened this issue Oct 4, 2013 · 8 comments
Closed

Add basic wallet encryption #30

hivewallet opened this issue Oct 4, 2013 · 8 comments

Comments

@hivewallet
Copy link
Collaborator

No description provided.

nschum added a commit that referenced this issue Dec 15, 2013
@nschum
Copy link
Contributor

nschum commented Dec 15, 2013

TODO:

  • Actually create an encrypted wallet (once we have a password from First run wizard #47)
  • Create a way of changing the password.
  • Verify everything is wiped by looking a the memory
  • See if we can migrate unprotected wallets easily.
  • Decrypt when encrypting (to make sure everything works)

nschum added a commit that referenced this issue Dec 18, 2013
@nschum
Copy link
Contributor

nschum commented Dec 18, 2013

https://github.com/zorgiepoo/Bit-Slicer confirms the password stays in memory, though. I'll have to track it down.

@nschum
Copy link
Contributor

nschum commented Dec 20, 2013

Hmm... it looks like just typing in the NSTextField sometimes leaves the password somewhere in memory. :( Not even 1Password seems to manago to wipe the master password from memory.

@mackuba
Copy link
Member

mackuba commented Dec 20, 2013

Not even 1Password seems to manago to wipe the master password from memory.

Lol, seriously?... Ok, that's a bit unexpected...

Would it be much work to write some kind of delegate to the NSTextField that intercepts all key presses, writes them to a clearable storage and makes sure they don't end up in the NSTextField (or send them there as asterisks or something, so that the dots still appear in the UI)?

@mackuba
Copy link
Member

mackuba commented Dec 20, 2013

FYI, you can make todo lists in issues/comments like this :)

  • foo
  • bar

@nschum
Copy link
Contributor

nschum commented Dec 21, 2013

I've tried some more tricks like sending fake input events to the field, but I definitely can't deterministically overwrite all copies.

Hacking around with the text field might work, but it comes with an huge risk: If the user does something we didn't think of and don't handle correctly (like typing a composed character or using the cursor keys), we could encrypt the wallet with a wrong password. I don't think that's a risk we should take.

I think the only way to go would be to create a text input field from scratch. Given the limited protection we get from this (anybody who can read memory probably can do everything else), I don't think that should be a priority. But it's curious that apparently nobody else has done that.

@ghost ghost assigned nschum Jan 8, 2014
@nschum
Copy link
Contributor

nschum commented Jan 9, 2014

As discussed, closing this for now, since this seems to be the best we can do at the moment.

@nschum nschum closed this as completed Jan 9, 2014
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

2 participants