[zeromq-dev] "real" usage of curve algorithms with zeromq?
Laurent Alebarde
l.alebarde at free.fr
Thu Apr 3 10:57:58 CEST 2014
"keys have been pre-distributed "somehow"" may be performed with use of
the Diffie--Hellman key exchange algorithm:
http://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange
Le 03/04/2014 10:23, Lindley French a écrit :
> I don't know CURVE well, but in general, key management is a hard
> problem. Usually encryption assumes keys have been pre-distributed
> "somehow," and they are almost never baked into an executable (that
> isn't secure).
>
> Take ssh, for instance. The common use-case is to run ssh-keygen, and
> then put your public key "somehow" onto whatever server you want to
> log in to, while keeping your private key strictly off the network.
> The details of getting your public key onto the server are an exercise
> for the reader, and it's likely the same with this.
>
>
> On Wed, Apr 2, 2014 at 7:50 PM, Steve Murphy <murf at parsetree.com
> <mailto:murf at parsetree.com>> wrote:
>
> OK, I've read the man pages for zcert, zcertstore, and zauth.
> I've read the tutorial about the wood, stone, and iron houses.
> I've compiled those examples, and run them, shoot, I even
> wiresharked the ports and captured the conversations to see
> the unencrypted vs. encryped communication. Cool.
>
> But now, it's time to actually write up some code and use this
> stuff in a real set of distributed applications, and I find the
> docs very frustrating.
>
> Firstly, little to no explanation in zauth about curve parameters
> "domain" and "location", and how to use them.
>
> Nextly, zcert gives us zcert_new_from(..) which takes byte* args,
> but no zcert_new_from_txt(...) with char* args.
>
> The zcertstore manpage says "To actually create certificates on disk,
> use the zcert_class in code, or the tools/makecert.c command line
> tool, or any text editor." That's nice, but the only tool in
> zeromq-4.0.x is tools/curve_keygen, and it doesn't create a file,
> it just prints out the keys with some explanatory text, not even
> in cert file format.
>
> The zmq_curve_keypair example code shows a call to
> "crypto_box_keypair" instead of zmq_curve_keypair, which I assume is
> a typo, probably left over from "legacy" versions of the
> document prototype.
>
> All the examples use zcert_new(), and provide public keys up front
> to the clients, with
> no examples of actually doing a certificate store of just public
> keys, and no in-program storage of secret keys. It's almost as if one
> is forced to create and distribute secret key files. (there's load
> and save options in czmq).
>
> Let's say I want to store all my public keys in /etc/something/store.
> I can distribute that pretty easily to hundreds of machines.
> I want to compile a secret key into my servers and clients, for their
> respective usage. Clients can fetch the public keys from the disk
> store dir. So can the servers. But, the feeling I get from actually
> looking over the API's, is that the above is not the intended
> usage case. There are no public functions to convert to/from binary
> and string key representations. Well, OK, that's entirely fair,
> therre is zmq_z85_decode and encode, but I have to wrap that
> in a fair amount of code to yield something like
> byte secret_key[] = { 0xaf, 0x39, 0x45, 0xc3, .... };
> that I could compile into a program... if that is even the intended
> best way to handle keys (shrug).
>
> Don't get me wrong. I realize this stuff is brand-spanking-shiny-new
> and hot-off-the-press, and usage cases are in their infancy. I'd just
> like to NOT charge off in a wildly different direction than what you
> guys envision, and be left with code I may have to rewrite someday.
>
> Please, can someone with a higher level view give me some idea of how
> I best attack this situation? What's the best way to use this in
> production environments, where the server and client are not in
> the same executable?
>
> Pieter, up to writing a "part 3" tutorial outlining separate
> servers and clients, using disked public keys, etc?
>
> One or two variants of suggested "best practice" for clients and
> servers will answer all my questions and get me up and running full
> speed!
>
> Many thanks!
>
> murf
>
>
> --
>
> Steve Murphy
> ParseTree Corporation
> 57 Lane 17
> Cody, WY 82414
> ? murf at parsetree dot com
> ? 307-899-5535 <tel:307-899-5535>
>
>
>
> _______________________________________________
> zeromq-dev mailing list
> zeromq-dev at lists.zeromq.org <mailto:zeromq-dev at lists.zeromq.org>
> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>
>
>
>
> _______________________________________________
> zeromq-dev mailing list
> zeromq-dev at lists.zeromq.org
> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.zeromq.org/pipermail/zeromq-dev/attachments/20140403/c714f8e1/attachment.htm>
More information about the zeromq-dev
mailing list