Skip to content
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

Client send salt along with the registration #180

Open
vqhuy opened this issue Aug 4, 2017 · 5 comments
Open

Client send salt along with the registration #180

vqhuy opened this issue Aug 4, 2017 · 5 comments

Comments

@vqhuy
Copy link
Member

vqhuy commented Aug 4, 2017

During our last meeting, we discussed how should the server/the client compute the commitment:

  • Main concern: server is using a static salt which would allow an attacker to test whether keys exist in the tree
    => client sends salt along with the registration
    => need secure PRNG

  • How to ensure the server is using the right commitment scheme? Client should verify with the scheme specified in the STR policy.

@vqhuy vqhuy added this to the 0.2.2 milestone Aug 4, 2017
@chesnokovilya
Copy link

Is crypto/Rand library [https://golang.org/pkg/crypto/rand/] secure enough for salt implementation?

@masomel
Copy link
Member

masomel commented Nov 16, 2017

We currently use Go's crypto/rand package for salt generation (see https://github.com/coniks-sys/coniks-go/blob/master/crypto/util.go#L61), so it should be fine to continue using crypto/rand to generate a salt on the client side.

@chesnokovilya
Copy link

chesnokovilya commented Nov 19, 2017

Where should client store salt?

@vqhuy
Copy link
Member Author

vqhuy commented Nov 20, 2017

Sorry for the late response. As you mentioned in your email, we could store the salt (and other things) in a json-encoded file. OTOH, as we discussed in #193 (comment), we'll eventually do some sort of abstract API for persistent storage.

@chesnokovilya
Copy link

chesnokovilya commented Nov 20, 2017

Fine, so It will goes like this (in simple terms):
When client register he creates salt and save it on hard drive and send it to server. Server take salt and calculate commitment with it and key:value. When client audit the system he reads salt from the disk and check server commitment and STR of merkle tree.

It means there are required changes to client, protocol, server, pam, merkletree, and util folders.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants