On Tue, Aug 4, 2015 at 8:57 AM, Jakub Zelenka <bu...@php.net> wrote:
> Hi,
>
> On Mon, Aug 3, 2015 at 9:54 PM, Scott Arciszewski <sc...@paragonie.com>
> wrote:
>>
>> Hi,
>>
>> I would like to make it easier for PHP developers to implement
>> cryptography features in their applications. I intend to work on some
>> of these ideas and submit them for inclusion in PHP 7.1.
>>
>> Some of these might be familiar to some of you.
>>
>> 1. Pluggable Cryptography Frontend
>>
>> Work is currently underway for a PHP prototype for this idea
>> originally suggested by ircmaxell, that will basically be like PDO for
>> cryptography. Our current project name, subject to change, is PHP
>> Crypto Objects (PCO).
>>
>> The idea is that you could write code like this to add secure
>> authenticated encryption to your application without having to worry
>> about the details.
>>
>>     $AES = new \PCO\Symmetric('openssl:cipher=AES-128');
>>     $ciphertext = $AES->encrypt($plaintext, $someKey);
>>
>>     $PKC = new \PCO\Asymmetric('libsodium');
>>     $offlineDecryptable = $PKC->seal($plaintext, $someX25519PublicKey);
>>
>> When it's finished, I'd like to turn it into a PECL extension so users
>> can play with it in PHP 7.0 and submit it for inclusion in 7.1.
>>
>> 2. Cache-timing-safe character encoding functions
>>
>> Alternatives for existing functions that should function like their
>> unsafe counterparts, but without branches or data-based index lookups.
>>
>> * hex2bin() -> hex2bin_ts()
>> * bin2hex() -> bin2hex_ts()
>> * base64_encode() -> base64_encode_ts()
>> * base64_decode() -> base64_decode_ts()
>>
>> Other formats are out of scope, unless someone can make the case that
>> we need to support RFC 4648 base32 encoding (e.g. for Tor Hidden
>> Service integration).
>>
>> 3. Other ideas (not yet committed to at all, but might be of interest
>> to others):
>>
>> * Improving the OpenSSL API, or at least the documentation
>> * Adding streaming encryption/decryption support to OpenSSL
>> * Adding AE and AEAD interfaces to OpenSSL
>> * Aliasing MCRYPT_AES -> MCRYPT_RIJNDAEL_128, adding MCYPT_MODE_CTR
>>
>> What I need from you is guidance on what features or changes you want
>> to see in 7.1 and which can be put off until later (or never proposed
>> as an RFC at all).
>>
>> Seriously, all I need is your opinion and whether or not you'd like to
>> see any of these happen. If you have specific implementation details
>> you'd like to discuss or requests, of course those are welcome too. :D
>>
>
> I have been actually working on something similar for some time. It's
> already on PECL and it's called php-crypto:
>
> https://github.com/bukka/php-crypto
>
> I have been doing lots of changes and fixes including support for PHP 7 (it
> also supports PHP 5 using https://github.com/bukka/phpc wrapper) and php
> streams. The internal part has been almost completely rewritten since
> version 0.1.0 and I plan to release soon 0.2.0 so I will send some update
> then.
>
> I'm currently working on fixing some issues, improving tests and mainly
> documentation that is still very incomplete (just hash is partially
> documented in the main readme) so probably the best doc at the moment is
> generated api doc:
>
> https://github.com/bukka/php-crypto/blob/master/docs/Crypto.php
>
> There also are some examples in
> https://github.com/bukka/php-crypto/blob/master/examples and even more
> examples in tests where is about 70 tests:
> https://github.com/bukka/php-crypto/blob/master/tests
>
> In case you are interested in what I plan to do in the near future, it's all
> in my TODO list: https://github.com/bukka/php-crypto/blob/master/TODO.md
>
> In the long term I would like to add support for asymmetric encryption. I
> actually wrote an extension called php-rsa (
> https://github.com/bukka/php-rsa ) just to play with OpenSSL rsa.h (there is
> no doc but you can look to the tests if you are interested). However the way
> how it should be done in crypto is more about using PKEY which is much more
> flexible but it will be supported only for OpenSSL 1.0.0+.
>
> The providers (pluggable api) is a nice thing but it will require quite a
> bit of thinking to make it right from the internal PoV (address all needs of
> particular libs - especially OpenSSL) and it's quite a bit of work as well
> :) But it would be definitely nice to have and I have been thinking about it
> for some time. But the priority is a creating of a good wrapper for OpenSSL
> first and then split it to more layers.
>
> Cheers
>
> Jakub

This does not appear to authenticate ciphertexts, nor does it serve as
a gateway to Libsodium / OpenSSL.

We are, in fact, working on different projects with different goals.

> In the long term I would like to add support for asymmetric encryption. I
> actually wrote an extension called php-rsa (
> https://github.com/bukka/php-rsa ) just to play with OpenSSL rsa.h (there is
> no doc but you can look to the tests if you are interested). However the way
> how it should be done in crypto is more about using PKEY which is much more
> flexible but it will be supported only for OpenSSL 1.0.0+.

Strictly personally speaking, I'm far more interested in EdDSA and
ECDH than I am in RSA.

Scott Arciszewski
Chief Development Officer
Paragon Initiative Enterprises <https://paragonie.com>

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to