Yasumasa

It's a tricky call. To be honest, as I said at the very beginning, I'm not sure 
whether
or not it's a good idea and worth the efffort to push this into the j.u.zip 
package to
support the "traditional PKWare encryption", which is known to be "seriously 
flawed,
and in particular is vulnerable to known-plaintext attacks" (from wiki), while 
I fully
understood it is not a concern in your "problem-free" use scenario. Just wonder
if there is anyone else on the list that has/had the need for such encryption 
feature
in the past. It would be preferred to have more input (agree, disagree) to make 
the
final decision.

Here are some comments regarding the proposed implementation,

(1) The changes in native code are probably no longer needed. The native path is
     left there for vm directly access.
(2) I'm concerned about the footprint increase for the ZipEntry class (the 
proposed
     change is adding 3 more fields into the entry class). Given this is 
something rarely
     needed/used, and we might have hundreds and thousands of zip/jar entries 
during
     startup/runtime, it might be desired to avoid adding these fields into 
ZipEntry class.
     A possible alternative to have a dedicated entry class extended from the 
ZipEntry
     to hold those extra fields and methods, EncryptionZipEntry for example. So 
the
     proposed encryption support code will not have any impact to the existing 
use of
     ZipInput/OutputStream/File.
(3) I'm also not comfortable to add the "encryption engine" logic into the 
in/deflater
     stream classes, while it might be convenient to do so from implementation 
point
     of view. Given the encryption is something between the raw bites in the 
zip file
     and the in/deflating layer, it might need an extra layer there, though I'm 
not sure
     if it's easy to do so.

The webrev below is what I think might be better for the ZipFile and 
ZipOutputStream
to have an extra layer in between to handle the encryption. Not try to test if 
it really
works, just throw in the idea for discussion.

http://cr.openjdk.java.net/~sherman/zencrypt/webrev/

No, I did not try the ZIS, the "pushback" stream there might be a little 
tricky:-)

-Sherman

On 03/28/2016 02:34 AM, Yasumasa Suenaga wrote:
PING: Could you review it?
We want to move forward this enhancement.

Thanks,

Yasumasa
2016/03/19 22:01 "Yasumasa Suenaga"<yasue...@gmail.com>:

Hi Alan,

I think the main issue here is to decide whether the API
should be extended for encryption or not.
We've discussed on the premise that we add the API for supporting ZIP
encryption.
In this context, Sherman tried to implement AES encryption extending
current API. [1]

IMHO, ZIP encryption should be implemented as extention of current ZIP API
because encryption/decryption will process for each ZIP entries.

According to Developers' Guide, guideline for adding new API is TBD. [2]
What should I do next?


Thanks,

Yasumsa


[1]
http://mail.openjdk.java.net/pipermail/core-libs-dev/2016-January/037903.html
[2] http://openjdk.java.net/guide/changePlanning.html#api


On 2016/03/19 0:25, Alan Bateman wrote:
On 18/03/2016 15:02, Yasumasa Suenaga wrote:
Hi all,

We (including me and Yuji Kubota (ykubota: OpenJDK jdk9 Author))
discussed
about this issue from Nov. 2015. [1]
We heard several comments and we applied them to our patch.

I have not heard new comment for our latest patch.
So I send review request for it. Could you review it?

    webrev:
      http://cr.openjdk.java.net/~ysuenaga/JDK-4347142/webrev.04/

    Usage of new API:

http://cr.openjdk.java.net/~ysuenaga/JDK-4347142/webrev.04/Test.java
Yasumasa - I think the main issue here is to decide whether the API
should be extended for encryption or not. If exposing it in the API make
sense then I assume that alternative names to java.util.zip.ZipCryption
needs to be explored.

-Alan.


Reply via email to