[sword-devel] Open book unlocking system (was Re: Module verification, was Re: [sword-devel] DoctrinalStatement)

Paul Gear sword-devel@crosswire.org
Sun, 30 Jul 2000 12:53:58 +1000


This is a multi-part message in MIME format.
--------------F290AAC5648E29F744688794
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

Chris Little wrote:
>...
> I think some kind of signing system is needed, possibly built into the
> module format itself.  It may be time to update the sword module format to
> include some new features.  Perhaps all modules should be encrypted such
> that they are only properly readable if they are unaltered, something like
> using their own checksum as an encryption key.
> 
> We might also add a message to the various frontends that would popup if
> non-Crosswire-sanctioned modules were loaded in, similar to Larry P's
> popups in OLB.  Or we could warn that possibly tampered-with files are
> being loaded.
> ...

Jerry Hastings wrote:
> 
> At 06:23 PM 7/28/2000 +1000, Paul Gear wrote:
> >Jerry Hastings wrote:
> > > ...
> > > I would like to see a program for identifying, comparing and certifying
> > > texts.  A site could list data about texts, such as, CRCs, file sizes,
> > > number of words, etc.. A program could check a local text against the
> > > online stats for a "certified" file. That could help people to also know if
> > > they have the latest and most correct version. I would also like to take
> > > files of different formats, but claiming to be the same text and compare
> > > any differences. One software publisher may have found and corrected
> > > errors, even typos and OCR errors, that others do not know about.
> >
> >All of that should be built into the module format, not a manual
> >process.
> 
> All of that? I would like to see some security features built into the
> modules, too. But, I don't have complete confidence in built in security.
> Also, I am not interested in just the Sword. I would like to compare texts
> from different programs and see if there are differences. I would like to
> also see people publishing any such info as it is discovered. Such as
> errors in texts and how to tell if you have a version with the errors and
> is there an update/correction. Not just for Sword's sake.
> 
> I am interested in the specifics of what you were thinking. Can you do all
> that in the module format?

Glad you asked, Jerry.  :-)  I've been thinking about this issue for
some time.  I started to prepare a long and involved message about how i
envisaged it working, but i realised that it would probably prove
incomprehensible to just about everyone but me.  So let me give a brief
overview, and we can go into more detail later.


It seems to me that there are several problems we could solve with one
piece of technology:
  1.  Encrypted modules.
  2.  Verification of modules.
  3.  Point-of-sale type unlocking with which commercial publishers
would be happy.
The technology i'm thinking of here is OpenSSL, the free software
library for implementing X.509 PKI functionality.


Here is an overview of the components of my proposed solution:

1.  Modules are encrypted using a single key, by a symmetric cipher (as
they are now), preferably with a fairly small key length, for
performance reasons.  (What length do we use at the moment?)

2.  Modules are signed with the distributor's digital signature.  This
allows module verification with cryptographic checksums.  A root
certificate authority key would need to be embedded in the software
distributions (like Netscape and IE do).  More detailed verification
parameters (as suggested above by Jerry) could be added to the
certificate to verify the text if the checksum verification fails.

3.  Unlocking a book involves creating an SSL connection to an unlock
server, generating a one-time asymmetric key at the client, and the
server encrypting the module's symmetric key to that asymmetric key. 
The application stores this asymmetrically encrypted version of the
module key.

4.  Reading a locked book involves decrypting the module key and using
it to decrypt the book.


What this would require of application software:

1.  Embedded keys for the root certificate authorities.  We could use
existing ones on the Internet, or create our own, which would be cheaper
(i.e. free :-).

2.  Linking with OpenSSL to do module checksumming and decryption.

3.  Code to generate, save, and restore unlock keys.

4.  User interface hooks for: viewing certificates, verifying modules,
and unlocking books.

5.  Client-server code for talking to the server during module
unlocking.  There would need to be a way of allowing manual web or phone
unlocks as well.


There are some problems with this proposal, one being that there is no
obscurity, so anybody with the know-how would be able to write a program
to decrypt the modules using OpenSSL.  I have a few ideas for overcoming
this, but it needs to be something which does not compromise our
commitment to GPL-ed code.

The other problem is who is going to do it?  This would be a rather
large undertaking.  I would love to do it, but i don't have the time.  I
would jump at the chance to quit my job to work on this sort of stuff,
but who would pay for it?  Know anyone who'd like to invest a bit of
venture capital?  8^)


I've copied this to Bob@Logos (although hopefully your mail filters
would have flagged this message anyway, Bob :-) and Bible-Linux, hoping
that others might be interested in working on a standard that we could
all use.  Are there others who we could get together with on this? 
Maybe the guys at Theophilos?

I know Logos already has a system to do all of this, Bob, but it is a
possible solution for working together with us (as we discussed some
time ago on the Bible-Linux list), and it would allow you to upgrade to
a system using real encryption.  (Of course, you could do that anyway,
but it would be nice if we could do something together. ;-)


Well, what think ye?


Paul
---------
"He must become greater; i must become less." - John 3:30
http://www.bigfoot.com/~paulgear
--------------F290AAC5648E29F744688794
Content-Type: image/png;
 name="test.png"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
 filename="test.png"

iVBORw0KGgoAAAANSUhEUgAAAxMAAAJjCAMAAABA0bwXAAADAFBMVEUAAAAAAD8AAH8AAMAA
AP8AKgAAKj8AKn8AKsAAKv8AVQAAVT8AVX8AVcAAVf8AfwAAfz8Af38Af8AAf/8AqgAAqj8A
qn8AqsAAqv8A1QAA1T8A1X8A1cAA1f8A/wAA/z8A/38A/8AA//8qAAAqAD8qAH8qAMAqAP8q
KgAqKj8qKn8qKsAqKv8qVQAqVT8qVX8qVcAqVf8qfwAqfz8qf38qf8Aqf/8qqgAqqj8qqn8q
qsAqqv8q1QAq1T8q1X8q1cAq1f8q/wAq/z8q/38q/8Aq//9VAABVAD9VAH9VAMBVAP9VKgBV
Kj9VKn9VKsBVKv9VVQBVVT9VVX9VVcBVVf9VfwBVfz9Vf39Vf8BVf/9VqgBVqj9Vqn9VqsBV
qv9V1QBV1T9V1X9V1cBV1f9V/wBV/z9V/39V/8BV//9/AAB/AD9/AH9/AMB/AP9/KgB/Kj9/
Kn9/KsB/Kv9/VQB/VT9/VX9/VcB/Vf9/fwB/fz9/f39/f8B/f/9/qgB/qj9/qn9/qsB/qv9/
1QB/1T9/1X9/1cB/1f9//wB//z9//39//8B///+qAACqAD+qAH+qAMCqAP+qKgCqKj+qKn+q
KsCqKv+qVQCqVT+qVX+qVcCqVf+qfwCqfz+qf3+qf8Cqf/+qqgCqqj+qqn+qqsCqqv+q1QCq
1T+q1X+q1cCq1f+q/wCq/z+q/3+q/8Cq///VAADVAD/VAH/VAMDVAP/VKgDVKj/VKn/VKsDV
Kv/VVQDVVT/VVX/VVcDVVf/VfwDVfz/Vf3/Vf8DVf//VqgDVqj/Vqn/VqsDVqv/V1QDV1T/V
1X/V1cDV1f/V/wDV/z/V/3/V/8DV////AAD/AD//AH//AMD/AP//KgD/Kj//Kn//KsD/Kv//
VQD/VT//VX//VcD/Vf//fwD/fz//f3//f8D/f///qgD/qj//qn//qsD/qv//1QD/1T//1X//
1cD/1f///wD//z///3///8D/////AAD/AD//AH//AMAAAAAqKipVVVV/f3+qqqrV1dX////b
393zAAAACXBIWXMAAAxNAAAMTQHSzq1OAAAAHXRFWHRTb2Z0d2FyZQBHTlUgR2hvc3RzY3Jp
cHQgNS4xMIGXTpAAABvnSURBVHic7Z3Rdqs6EgXn//9YT8zMiUG9JQFOByPcXbXuzbFBgDao
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
--------------F290AAC5648E29F744688794--