Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [dsdp-mtj-dev] RC4Engine issue

Hugo,

I took some time to look into what is going on here. Based on that, I have a few thoughts...

First, in terms of EclipseME -> MTJ project transition, I've always assumed we would need to create some simple migration tools to make that happen. I'm not terribly worried about it to be honest. I think we should just get the first MTJ release out the door and then we can look to address things like that.

In terms of the RC4Engine stuff... I think this should not be done as it is now. I think that this keystore password should actually live in the standard Eclipse keystore/keychain. I know there is work going on in Eclipse 3.4 around a new "secure storage" facility. That is really where this password for the keystore should live. The key to making this work correctly is making sure that it accounts for the fact that each project can have a different signing keystore and thus a different keystore password. Thus, I believe the RC4engine stuff should just get thrown away and the password moved into Eclipse secure storage.

Craig

Raniere Hugo-wha006 wrote:

Hi Craig,

We’ve removed the class RC4Engine that came from BouncyCastle as per Eclipse IP Team request.

The only class that references it is org.eclipse.mtj.core.model.impl.MetaData.java from org.eclipse.mtj.core plug-in. It is used to encrypt and decrypt keystore and key passwords in a project metadata file .mtj (formerly .eclipseme).

For a first solution I’ve commited the classes w/out Encryptation / decryptation, the data is only converted to base64.

Now, I’m working in a replacement for the RC4Engine class.

I was able to use the RC4 implementation that comes with default JCE providers through
javax.crypto.Cipher cipher = javax.crypto.Cipher.getInstance("RC4");
This algorithm is available since JDK 1.4.2.
However, the key scheme used by JCE is very different from the one you originally used.

According to the latest version in EclipseME SVN (http://eclipseme.svn.sourceforge.net/viewvc/eclipseme/trunk/eclipseme-src/plugins/eclipseme.core/src/eclipseme/core/model/impl/MetaData.java?view=markup) you’ve used the UTF-8 converted bytes from the string EclipseME as the key for RC4 algorithm.

Unfortunately I could not reproduce this same behavior using JCE. The only way I could get a valid RC4 key was through a KeyGenerator object, generating a key different from the one you used in EclipseME.

The bad side is that this will break the compatibility from MTJ and EclipseME (Projects created using EclipseME will not have their password retrieved correctly when moved to MTJ).

In fact, I’ve just realized that we haven’t thought about this compatibility, as we’ve changed the project metadata file name from .eclipseme to .mtj, what implies that after importing projects created with eclipseme into MTJ, users must convert their projects to J2ME projects via the J2ME option in projects popup menu. Do you think breaking this compatibility is a big issue, or are you ok with that, given that it is a new project? In the future we can implement a project migration wizard from EclipseME to MTJ if we think is necessary.

Given that this compatibility will be broken, do you have any hints of how can you handle the encryptation/decryptation of user password?

Looking forward to hear from you,

Hugo

PS. Sorry for this long e-mail, I was just trying to give you (and other mail-list members) as much information as I can about the problem. Feel free to contact me if you didn’t understand or need a better explanation on anything in this mail

------------------------------------------------------------------------

_______________________________________________
dsdp-mtj-dev mailing list
dsdp-mtj-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/dsdp-mtj-dev


Back to the top