Can you please tell me how to remove my email address from this thread? I have already modified the settings on my manage group memberships to no email and I am still receiving email, any help would be awesome thanks.
On Jul 10, 2010 1:16 PM, "Raj" <[email protected]> wrote: thanks for the replies people.. but i'm afraid none of the above solutions work for my scenario. I thought i could spare all your time by not bothering you with a lengthy post, but i guess in this case i will have to explain a bit more to find the answer to my question. Please bear with my lengthy post....I would really appreciate your thoughts on some of the problems/questions I have. I'm trying to develop a password store application which can store the username/password (u/p) of the user for the different applications installed on the phone. So far, most of the password stores I have seen for Android (including Google's "Secrets for Android" application) are simple password stores where the user stores the u/p per application and can transfer it to the respective applications by copying it to the clipboard. I'm aiming for a solution where the applications themselves can store the u/p at the password store and retrieve them automatically when needed. This calls for IPC. The OI Safe project (http://www.openintents.org/en/safe) attempts something similar but they send the u/p in clear text in the intents to the store and there is no authentication of the applications that are communicating with each other. So I need some way of ensuring that 1)applications on both ends of the communication link are talking with the correct partner. 2)data transported between applications in the Intents are safe. i.e. no other application can intercept and get the intent For (1) if I read the documentation correctly, Android offers the following methods: i)Signature based permission: This means that only applications signed with the same private key can communicate with each other. This method falls short if applications developed by different developers need to talk with each other. ii)custom permissions defined by the application developer: In this method any application can request this custom permission and if allowed by the user during install time, can send intents to the permission declaring application. The only thing the intent receiving application can do afaik, is to check if the application that sent the intent was indeed granted this custom permission by the user. There is no way of checking the "identity" of the application sending the intent. Another problem is that any application can set an intent filter for receiving intents directed at this custom permission and intercept the intent. (I'm assuming that the custom permissions cannot be kept secret within a group of applications - is this). Even assuming that the custom permissions can be kept secret, if we want open access to our application, then the permissions should be published. iii) we can use certificate based authentication, but this means that the applications have to store the private key in a keystore protected by a password. The user should supply this password, since fixing the password in code is not secure. But then, this won't help much for what i want to achieve. The user will have remember the keystore passwords for all the applications which in turn will store the u/p in my password store. On the other hand if Android itself offers a keystore to which access is granted based on a unique identity of the application, then the private key can be stored securely. But this obviates the need for my password store since the applications themselves can securely store the u/p in the keystore. :-( Afaik, Android does not offer such a keystore to the installed applications. For (2), sending data in clear text can be solved by encrypting the data in the intent. Doing a Diffie–Hellman (DH) between the apps can solve this problem, but DH is prone to MIM attacks, so we are back to (1). If we dont do encryption, a malicious application having the GET_TASKS permission will be able to get the base intent (ref: security whitepaper from Jesse Burns: https://www.isecpartners.com/files/iSEC_Securing_Android_Apps.pdf) My current setup is as follows: 1. I use DH for transporting data between the client and the server in the intents for the first time. I also get a symmetric key in the DH channel and store it at the client side for future communication with the server. I dont know how to protect this key without getting another password from the user (this will defeat the entire purpose of the password store!). I'm currently relying on the protection offered by Android i.e. data is private to the application that created it. But i guess this is not foolproof security.(How to tackle this?) 2. The data at the server side is stored encrypted with a master key which in turn is encrypted using a password derived from the one the user enters at the server side. 3. I use nonces to ensure that no replay attacks are possible between the client and the store. One way an attacker could break the security is to play MIM during the DH run, which i think is a bit hard. Another way is to get hold of the symmetric key stored inside the client application and use it to get the stored u/p from the store. This is where I think a method that would help the server to get the "identity" of the application sending the intent from the Android OS will greatly help. The server can check this against the one received when the original application save the u/ p. This "identity" needs to be something unique that the application cannot fake and that can be reliably reported by Android. I thought the applications' "package name" would be a good candidate since I'm under the impression that no two applications will have the same package name. Hence my original question in this thread to know how to get hold of this info. Or is there any other way to solve the problem of client authentication? Thanks for reading! Any help is greatly appreciated. :-) On Jul 10, 9:13 pm, Dianne Hackborn <[email protected]> wrote: > On Sat, Jul 10, 2010 at 4:47 AM, Raj <[email protected]> wrote: > > So I need to know the ... > [email protected] > > Note: please don't send private questions to me, as I don't have time to > provide private suppo...
