-
Notifications
You must be signed in to change notification settings - Fork 232
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Keystore Review #3
Comments
Also:
|
Also where does trust come in? You could |
yep, @cryptix you're right. we'll also need a way to:
|
Agreed on the split between ipfs key and ipfs crypt. re: ipfs key send. My aim was to keep the interface simple and functional for our users. Adding further complexity lowers security by scaring users away from using it. I think we could keep the @jbenet im confused about what you mean by "wrapping |
May I suggest My assumptions are:
When NSK or USK are compromised — how could they be revoked? How to send a revocation certificate to the distributed and decentralized network? Automatic UPK/NPK finding for signed-only objects looks good and useful, but for encrypted objects — why would IPFS give Eve a possibility to determine owner of the encrypted object? It's none of her business. Key exchange may be done in private and public key exists only on Alice's and Bob's nodes, hidden from IPFS lookups. |
@jbenet I have to say that i disagree with this. |
Add: |
Have you considered using parts or all of JOSE? There's a significant amount of solid standards work there that seems applicable :) |
@quartzjer thanks for pointing out that spec-- will take a look. probably a lot of good ideas we can use. (note: cannot use it directly as json doesn't come into the keyspec, as we'll be supporting the most popular key encodings. if this one becomes (or threatens to be) popular can also add it) |
I was looking at the WIP spec, and things like:
make me feel skittish ;). Personally, I'd rather outsource at least human-initiated signing and private key storage to something with a few decades of history (like GnuPG). JSON Web Keys look reasonable standards for public key objects, private keys objects without passphrases, and automated signing. The more we can borrow from an existing implemenation (like GnuPG) or spec (like JWK), the less of the wheel we have to reinvent here ;). And if you're offloading human-initiated encryption/decryption to GnuPG you don't need to touch the passphrase at all, because it's acquired out-of-band via a pin-entry program. For automated node signing that's more transactional (e.g. signing a list of IPFS objects you can provide), I think passphrase-encrypting the secret key is more trouble than its worth. Passphrase-protection (at least in the standard node implementation) should be reserved for things like |
Why require an ephemeral symmetric key? If a particular encryption algorithm would benefit from such a key, I expect it would be part of the usual encryption/decryption algorithm and could be transmitted as part of the encrypted payload. Although the JOSE folks know a lot more about this than I do, and they mention wrapped symmetric keys in their encryption spec. But they also talk about asymmetric encryption, and I haven't read carefully enough to figure out how they handle occasionally-needed fields. |
Agreed. I want to use agents as much as possible. ideally we wouldn't even touch the keys. There is a UX tradeoff, and cases where ephemeral nodes and permanent nodes differ-- meaning, nodes whose keys got generated for a temporary session, and nodes whose identity matters in the long run. In the latter case we want to delegate to agents, but it should just work. We'll follow an upgrading principle where user settings dictate what we do-- i.e. generate a key for this run or use a private key in a file or delegate to an agent. |
No
|
We should have an The keys sent will be a private key of type |
Have you looked at Keybase.io? It is invite only currently, but it is basically a really user friendly website to do the user interfacing aspect. They say of themselves a public, publicly-auditable directory of keys and identity proofs https://github.com/keybase/kbpgp for their BSD licensed JS and node powered pgptools. They have you verify you have access to your social accounts by post a signature message showing you have access to an account. I have a few invites if someone wants to look. |
Hey @BillDStrong I appreciate the intent to help out, but please look more carefully through the repositories. this one in particular is for the specs, and not a good place to post when you don't yet know much about IPFS. See https://github.com/ipfs/specs#collaborating Please also search github and the IRC logs, or you'll just be adding noise. While well intentioned, this post is just noise: we are well aware of keybase, and already plan to use it some ways. |
For an automated system, LetsEncrypt.org is a free certificate authority that is creating automated tooling around sign SSL certificates for an encrypted web. The automated nature of the tools could be a good fit for this project, as well as take the responsibility off of IPFS on storing the Certs. https://github.com/letsencrypt/acme-spec In case you can't tell, I am a strong fan of using standardized security tools to help prevent unintended bugs. And if you don't have to roll your own, you can work on the problems that really need to be solved. |
@BillDStrong please stop and read more before posting -- these comments are not actually related with the precise functionality the keystore has. For example, if you did, you'd know that today IPFS does not use TLS or CA certs. I again suggest you search github, IRC. I'd recommend posting in https://github.com/ipfs/faq or https://github.com/ipfs/notes while you're learning about the project. |
Thanks for the response. FYI, while I have seen the IRC channel posted, nowhere had I seen and IRC log, and most users would not no to look. |
Any news around |
@illya13 Its slated to be implemented Q3 of this year. (so, by october at the latest) |
@whyrusleeping any updates please ? |
@illya13 The most interesting progress so far is that we're working on adding support for ed25519 keys into go-libp2p-crypto. I was really planning on getting to the keystore stuff sooner, but its been unfortunately pushed back. Stay tuned, and please do keep pinging us about this. My new estimate for the beginning of this functionality is sometime in november. It will likely just entail the ability to create and store multiple keys, with no signing or encryption commands in the first release. Multiple keys will allow nodes to manage multiple ipns entries. |
@whyrusleeping any new updates ? |
Would love a way to export/import keys so that i can have shared access to an ipns key. Is this what this ticket addresses? |
The ipfs key send part seems strange to me: when each user has a keypair (private & public key) all you need is the public key of the user to encrypt the key you want to send and store it somewhere where it can be retrieved. The simplest way is to keep those files with the data that was encrypted. |
(We probably should do review with PRs?)
I think this is two separate things: key management, and performing cryptographic operations. Instead of all in
ipfs key
, let's split it into:Key management:
ipfs key gen
LGTM
ipfs key send
otherwise LGTM.
Crypto ops:
ipfs crypt encrypt/decrypt
-i, --input
for input ?We need to model this after common systems. in fact, i'd love to be able to make these tools non-ipfs specific, and do
cat foo | crypt <args> | ipfs add
.ipfs add -r <file>
support encryption, we wrapipfs add
to doipfs encrypt <opts> | ipfs add <other opts>
.Structures
these are only for the
ipfs crypt
part, not theipfs key
Signed DAG:
(
@type
is json-LD style)Encypted DAG:
The text was updated successfully, but these errors were encountered: