[Cryptography] DIME // Pending Questions // Seeking Your Input

ianG iang at iang.org
Sun Mar 1 11:16:56 EST 2015

On 1/03/2015 05:47 am, Phillip Hallam-Baker wrote:
> On Fri, Feb 27, 2015 at 5:57 PM, ianG <iang at iang.org
> <mailto:iang at iang.org>> wrote:
>     On 27/02/2015 16:08 pm, Ladar Levison wrote:
>         Hi,
>         1. While I’ve identified the majority of the functionality
>         associated
>         with the access protocol (DMAP), my attempts to document the
>         specifics
>         keep getting sidelined by a single question: */should DMAP be a line
>         based protocol, like IMAP (and POP, and SMTP), or should it be
>         designed
>         as a JSON-RPC protocol, like the Magma camelface, or JMAP?/* See:
>         https://github.com/lavabit/__magma.classic/raw/master/docs/__magma.web.api.pdf
>         <https://github.com/lavabit/magma.classic/raw/master/docs/magma.web.api.pdf>
>     For my money, binary.  Line-based or JSON are good if you are
>     working with lots of random implementations of low quality, but for
>     security work, it is easier to work in binary.  Be precise about
>     sodding everything.
> +1
> BUT!
> Pretty much the whole Web Services world is going to JSON because it is
> a simple data model that is widely supported. Unlike XML there is pretty
> much only one way to serialize a data stream on the wire rather than fifty.

Sure, JSON might beat XML, and JSON in binary would be a good thing.

But, they are both *general* data formats and one thing we know from 
security is that we don't want general, we want specific.  Close off 
stuff not open it up.

> Which is why some of us suggested that we would like a binary encoding
> for the JSON data model so that an encoder could emit either and a
> decoder could read either.
> I wrote this up as:
> https://datatracker.ietf.org/doc/draft-hallambaker-jsonbcd/
> JSON only uses 7 bit ASCII code points for control data. That leaves
> 128+ data points for tagging binary data types which is more than enough.
> All that is really essential to encode crypto data nicely is an option
> to encode text strings and data blobs as length-data items.

Right, we need numbers, length-data items and everything can be 
constructed from that.

If one wants to use JSON in binary as a starting point, sure, do that. 
But call it MySON for My Security Object Notation :)  The point being 
that you can save on a bit of software if you want to, but there isn't 
that much software involved, and being lazy and secure at the same time 
isn't a happy mix.

Another possible way to go -- if your religion is "JSON saves" -- is to 
look at ProtocolBuffers or the other forms out there (I forget the names 
of the others but I guess they are equally good.   The reason for 
looking at these is that if you are trying to save effort, you are far 
better off if you can get a leg-up on the parsing of objects by 
generating classes for multiple languages using the tools.

(I've never actually worked with these things...)


More information about the cryptography mailing list