Cryptographic Requirements
This document is meant to list the cryptographic requirements of Chandler in the Canoga timeframe. Some of this is obvious, much is special requirements for a 3rd party cryptographic library we would need to adopt. Most of these requirements arise from secure sharing, but cryptography will be used elsewhere as well, for example connecting to mail servers over SSL.
- Must denotes items that seem mandatory and non-negotiable
- Should denotes items that are important, but where there might be room for negotiation
-
denotes items that have already been implemented
-
denotes items that are no longer relevant due to changed plans
- Must be implementable in Canoga timeframe
- Must first and foremost support Canoga, and not some other project or later version of Chandler
- Where possible, consideration for other projects and later Chandler versions can be made but this must not cause Canoga schedule to slip
-
Must use standards and de facto practices where possible
-
Must avoid patented technologies
-
Must reuse existing open source cryptographic libraries
-
Changes should be made in such a manner that they can be integrated into the external crypto project in order to avoid forking
-
Solutions must be cross platform, i.e. work on the major platforms on which Chandler is to be released.
-
Must be about as easy to use as username/password
-
Must be at least as secure as username/password
-
Should be about as easy for Chandler developers as username/password
-
Should have minimal Python API for Chandler developers
- Must have adequate performance
-
Should standardize on a single crypto library that is suitable for all cryptographic needs in Chandler
- Strong identity
-
SSL with server and client authentication
-
Encrypted and signed messaging for sharing
- When direct SSL conection is not available due to firewalls or other party not being online at the same time, Chandler must encrypt and sign the message and send it over XMPP or email, and be able to receive such a message. Note that it is specifically not a requirement to be able to send and receive arbitrary S/MIME messages or secure arbitrary XMPP messages.
-
Should be able to support the suggestions from Practical Cryptography for key lengths, ciphers etc.
- Should enable signed parcels
- Note that signed parcels are not a Canoga requirement, but the chosen cryptographic library should be able to support them so that once we implement this we do not need a second library.
-
Must be able to create and use self signed X.509 certificates
-
Should be able to use certificates signed by "standard trusted CAs"
-
Users should be able to revoke certificates
-
Users must be able to stop trusting certificates
-
Must use the Chandler repository instead of normal files.
- Private key must be protected by password
- Chandler repository must not allow sharing of certain data, like private keys and passwords
- Exception? Chandler should automatically replicate the "me" contact along with "me" certificate(s) and private key(s) when the user has several computers.
-
User must be able to create new keys and certificates
- For example if they loose the password to their private key
-
Creation of new keys and certificates must be easy, ideally single click and automatically at install time
-
Must be able to verify thumbprints of certificates
- Must document the used cryptographic APIs
- Note: It is expected that most APIs are already documented, and they may not require additional documentation.
- Must create HOWTO documents for all the cryptographic operations that Chandler will do
- For example, how to create an X.509 certificate, how to use the cryptographic APIs to make an SSL server and client, and so forth.
- Even when the crypto libraries have API documentation, they often lack documentation on how to do certain things using the APIs, like in what order to call functions and what would be acceptable values.
-
Chandler repository should have a new data type for X.509 certificates
- Chandler repository contact items should have a new property that links it to certificate(s)
-
Must support secure communication with a WebDAV server
- Should support Chandler to act as a secure WebDAV server
-
Must ship same list of root certificates as Mozilla (or as close as possible)
- May ship with additional higher education root certificates
- Must be possible for users to install/deinstall root certificates
Specifically NOT Canoga Requirements (may be Westwood requirements - need clarifications):
- Generic S/MIME support
- Generic encrypted XMPP messaging
- Multiple identities (=multiple certificates per contact)
- Smart card support (which specifically, and for what purpose?)
- Shibboleth
- Kerberos
- PGP
- Bridge CA support
- CRL support
- OSCP support
- Use of platform certificate store instead of, or in addition to, Chandler certificate store
- SASL