[midPoint] REST - POSTing passwords in the clear
Radovan Semancik
radovan.semancik at evolveum.com
Tue Feb 9 17:51:03 CET 2016
Hi,
This is a bit complicated. Theoretically you should be able to send
encrypted password, but to do that you will need a key. The key is
symmetric and it is stored in midPoint keystore. If you take that key,
encrypt the data, provide proper key identifier midPoint should accept
that. We haven't tested that, but it theoretically should work.
... but ...
distributing the symmetric key from the midPoint keystore to the clients
may not be a good idea from a security perspective. The password key in
midPoint was designed to protect cleartext passwords in the database,
e.g. if the attacker manages to make a database dump or if he can get
database backups. The passwords stored there will be useless, because
the key is stored outside of the database (and as it is regular Java
keystore it can be stored even in HSM). By distributing this key over
the network the attack surface significantly increases. It is all about
the security trade-offs. However, there is one trick that you might be
able to use: midPoint supports several keys used at the same time. One
is (primary) encryption key that is used to store new password values.
But midPoint will be able to decrypt data encrypted by any key that is
in the keystore and that was properly identified in the ProtectedString
data structure. Therefore you can create a new key and pair-wise
distribute it between client and midPoint. MidPoint should be able to
accept data encrypted like this. The ProtectedString data structure is
based on (slightly simplified) XML Encryption standard, so you will find
all the necessary documentation there. We have never tested this use
case and therefore there may be some bugs. But any such bugs will be
easy to fix.
Anyway ... my personal recommendation would be to choose entirely
different solution: send the password in <clearValue> elements but
protect the channel using HTTPS. This is clearly the simplest solution.
It is not ideal, but it is used all over the cyberspace. Therefore if
you go this way your solution is unlikely to have lower security than
the rest of your system.
--
Radovan Semancik
Software Architect
evolveum.com
On 02/09/2016 08:01 AM, Roberto Casiano wrote:
>
> Hi,
>
> Using REST, we’re creating and modifying users, including setting
> passwords. However, the passwords are in cleartext. I noticed though
> that in the repository, the user passwords are encrypted.
>
> 1.Is it possible to send encrypted passwords (during both user
> creation and modification)?
>
> 2.Where can the REST client (which is our app) get the key that
> midPoint uses for the password?
>
> Thanks,
>
> Rob
>
>
>
> /This email, and any attachment, is confidential and also privileged.
> If you have received it in error, please notify me immediately and
> delete it from your system along with any attachments. You should not
> copy or use it for any purpose, nor disclose its contents to any other
> person. /
>
>
> _______________________________________________
> midPoint mailing list
> midPoint at lists.evolveum.com
> http://lists.evolveum.com/mailman/listinfo/midpoint
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.evolveum.com/pipermail/midpoint/attachments/20160209/31bdb0d5/attachment.htm>
More information about the midPoint
mailing list