[
https://issues.apache.org/jira/browse/PIRK-23?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Ellison Anne Williams closed PIRK-23.
-------------------------------------
Resolution: Fixed
> Provide integrity and verification of serialized objects
> ---------------------------------------------------------
>
> Key: PIRK-23
> URL: https://issues.apache.org/jira/browse/PIRK-23
> Project: PIRK
> Issue Type: New Feature
> Components: Querier, Responder
> Reporter: Jacob WIlder
> Assignee: Jacob WIlder
> Fix For: 0.1.0
>
>
> Provide a way to sign and verify serialized output using OpenPGP through
> BouncyCastle's OpenPGP API. BouncyCastle is licensed under the MIT license.
> Mailing list message:
> Given that [deserialization attacks are a ripe attack
> surface|https://www.owasp.org/index.php/Deserialization_of_untrusted_data]
> it's a good idea to make it possible to authenticate serialized objects
> whenever possible. In the case of Pirk—where systems which hold sensitive
> data will be deserializing objects received from other entities—offering
> users the option to sign/verify objects before loading them is valuable. If
> our users were not dealing with sensitive information of some sort, they
> wouldn't be using Pirk.
> I have written some code that uses BouncyCastle to OpenPGP clearsign base64
> encoded Java objects. I'm going to see how cleanly I can integrate it with
> Tim's new Serialization code so that it's automatically available to anything
> that uses the serialization tools.
> Where things get complicated is in how to expose it to users. Below is my
> current thinking. I'd appreciate any feedback.
> By default, all InputStreams used to read data will be checked to see if they
> start with the line "-----BEGIN PGP SIGNED MESSAGE-----". If it does, we'll
> pull the PGP public keyring from a path specified by property
> serialization.openPGPPublicKeyRing and verify the signature. Failed signature
> verifications result in an exit.
> Property serialization.requireSignedInput will reject any input that is not
> signed with a valid signature.
> Property serialization.signOutgoingObjects will sign all outgoing Serialized
> Java objects.
> Properties serialization.openPGPPrivateKey,
> serialization.openPGPPrivateKeyPassword, and
> serialization.openPGPPublicKeyRing will indicate the location of the private
> key, the password used to decrypt it, and the location of the public key ring
> respectively.
> I had considered using SignedObjects but decided to give OpenPGP a shot
> because it's easier to hand-verify signatures or integrate verification of
> signed data into automated data flow (say, between two distinct entities
> sharing data using Pirk).
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)