<div dir="ltr"><div><span style="font-size:12.8px">*** Correcting one, somewhat important, word ***</span></div><span style="font-size:12.8px"><div><span style="font-size:12.8px"><br></span></div>Hi Dirk & Ken,</span><br style="font-size:12.8px"><br style="font-size:12.8px"><span style="font-size:12.8px">I'm working on a similar problem... automated decryption "in the field" and</span><br style="font-size:12.8px"><span style="font-size:12.8px">what I have come to is this:</span><br style="font-size:12.8px"><br style="font-size:12.8px"><span style="font-size:12.8px">Encrypt the message with a symmetric algorithm, adding salt and a</span><br style="font-size:12.8px"><span style="font-size:12.8px">hash/checksum to ensure validity.  Then, taking that result and signing</span><br style="font-size:12.8px"><span style="font-size:12.8px">with a private key.</span><br style="font-size:12.8px"><br style="font-size:12.8px"><span style="font-size:12.8px">In the field - the signature is validated with the matching public key,</span><br style="font-size:12.8px"><span style="font-size:12.8px">then the symmetric algorithm decrypts the message.  While it is possible</span><br style="font-size:12.8px"><span style="font-size:12.8px">that an attacker might unravel the shared keys used in the symmetric</span><br style="font-size:12.8px"><span style="font-size:12.8px">encryption, this is not so much our concern as is the authenticity of the</span><br style="font-size:12.8px"><span style="font-size:12.8px">message when received.  The combination of private key signature plus hash</span><br style="font-size:12.8px"><span style="font-size:12.8px">checksum should do that.</span><br style="font-size:12.8px"><br style="font-size:12.8px"><span style="font-size:12.8px">Our solution needs to be "hands off" automated, which basically precludes</span><br style="font-size:12.8px"><span style="font-size:12.8px">the idea of using passphrases (which would not stay secure in our</span><br style="font-size:12.8px"><span style="font-size:12.8px">organization anyway.)  A determined attacker could get into the source code</span><br style="font-size:12.8px"><span style="font-size:12.8px">and tease out the symmetric key, but that would only show them the contents</span><br style="font-size:12.8px"><span style="font-size:12.8px">of the message, which, if they have the hardware, they can get anyway by</span><br style="font-size:12.8px"><span style="font-size:12.8px">copying the hard drive after the message is decrypted - and as stated</span><br style="font-size:12.8px"><span style="font-size:12.8px">above, this is of much less concern than a spoofed message getting</span><br style="font-size:12.8px"><span style="font-size:12.8px">automatically accepted.</span><br style="font-size:12.8px"><br style="font-size:12.8px"><span style="font-size:12.8px">When I studied cryptography at Uni in the 1980s, they taught that</span><br style="font-size:12.8px"><span style="font-size:12.8px">private/public key encryption was a more or less interchangeable affair -</span><br style="font-size:12.8px"><span style="font-size:12.8px">the only difference between a private key and a public key is the manner in</span><br style="font-size:12.8px"><span style="font-size:12.8px">which they are handled.  As such, I am a little disappointed in the GnuPGP</span><br style="font-size:12.8px"><span style="font-size:12.8px">implementation that doesn't allow encryption with the private key to serve</span><br style="font-size:12.8px"><span style="font-size:12.8px">as authentication and obscurity of the message - our </span><div><span style="font-size:12.8px">*** not private, but public *** key will be</span><br style="font-size:12.8px"><span style="font-size:12.8px">obscured, but obviously not secured since attackers may have control of the</span><br style="font-size:12.8px"><span style="font-size:12.8px">standard computer system it is contained in.  As things are, I am left to</span><br style="font-size:12.8px"><span style="font-size:12.8px">use a layer of symmetric encryption to obscure the message, no more secure</span><br style="font-size:12.8px"><span style="font-size:12.8px">in the end than using the private key to encrypt (since the symmetric key</span><br style="font-size:12.8px"><span style="font-size:12.8px">is in the devices in the wild), but much more hassle.</span><br style="font-size:12.8px"><br style="font-size:12.8px"><span style="font-size:12.8px">Unless I'm missing something?</span><br style="font-size:12.8px"><br style="font-size:12.8px"><span style="font-size:12.8px">Also, thus far I have decided that it's easier to do symmetric encryption</span><br style="font-size:12.8px"><span style="font-size:12.8px">with libgcrypt rather than mess with pgp... next week I'll be looking into</span><br style="font-size:12.8px"><span style="font-size:12.8px">how to implement the signature with the private key - maybe that's also</span><br style="font-size:12.8px"><span style="font-size:12.8px">practical to do in libgcrypt instead of gpgme?</span><br></div></div>