H Jaroslav

Thanks for your comments. I was very eager to read your comments and had my own thoughts about it. Please read below.

Am 03.06.2010 15:26, schrieb Jaroslav Imrich:
Hello Martin,

I am not OpenSSL developer so this message will contain only my own opinions.

Security provided by the default CSP in Windows (I think its name is
"Microsoft Enhanced Cryptographic Provider" or something like that) is
same as security provided encrypted PEM file. Default CSP stores your
private keys in your home folder - yes they are "transportable" - and
your password is used to protect them. If you don't believe me try
reseting, not changing, your password then use your key to sign data -
it will not work - then reset your password back to its original value
and sign data - it will work.
Yup - This works as long as you use the standard provider. However there are more sensible providers professionally offered (eg. by entrust) which do it better.
I am not sure if I understand you correctly but I think that you are
missing ONE standardized API that could be used by all or most of  the
applications available for linux/unix platform.
Basically this is correct. I am not missing the API but the capability to centralize to a certain extend certificates and I am not liking the fact that certificates (as an identity) are transportable. In the company I work certificates are widely used. While transportability on the windows clients is only a minor issue (Due to entrust and the use of smartcards) it is a mayor issue on the unix servers. Since smartcards are not an option there I tried to transfer the CSP approach in such a way that i would fit UNIX and LINUX.
There have been several attempts to create such API like QCA (Qt
Cryptographic Architecture) from KDE project -
http://api.kde.org/kdesupport-api/kdesupport-apidocs/qca/html/ - that
IMHO tries to achieve similar functionality like MS Crypto API on
Windows platform. There is also multi-platform JCA (Java Cryptography
Architecture) -
http://java.sun.com/j2se/1.4.2/docs/guide/security/CryptoSpec.html -
but that is available only for Java applications. PKCS#11 -
http://www.rsa.com/rsalabs/node.asp?id=2133 - has to be also mentioned
when speaking of cryptographic API. It was designed as API for
accessing cryptographic hardware but there are also implementations
for pure software tokens. PKCS#11 is supported by Mozilla applications
(Firefox, Thunderbird, ...).
True - OpenSSL has one big advantage over those APIs. It is there and commonly used (yes there are other libraries but you have to start somewhere. If OpenSSL would be modified in the way I described it the App is not aware that it deals with a CSP. It still passes a "certificate" to OpenSSL and trys to get services (eg. encryption) with the created objects not knowing that its "certificate" was in fact a "config file for a CSP".
OpenSSL provides ENGINE API that allows developers to extend library
with support for cryptographic hardware and it also allows them to
leverage good things from other software implementations. For example
one can write engine that uses GnuTLS implementation of cryptographic
algorithms through standard OpenSSL calls. When speaking of CSP there
is already CAPI engine available (engines/e_capi.c) that can be used
to access objects in certificate store of MS Windows.

I am aware of that API which (to my knowledge) has been itroduced recently (I think it was 0.9.8 or so). And it is very likely that some of the modifications I am proposing are khooked in there. Most likely this will be a myor part but not all of it.
As you can see there are many "crypto APIs" available and every
developer can choose his own path. So my question is: How would you
convince 3rd party developers to use your implementation with "CSP
server" ?
As said: I don't. I simply make them believe that they are still dealing with OpenSSL and certificates exactly as they did in the past. All changes should be transparent (meaning: no obvious change) to the API of OpenSSL.

Regards
Martin
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Development Mailing List                       [email protected]
Automated List Manager                           [email protected]

Reply via email to