Unique Certificate Authentication and REST Service

I am collecting information to implement a certificate authentication scheme for a system that requires mobile device clients to be authenticated with a certificate before they are granted access to the services used by the system. I am looking for possible solutions that will allow me to issue unique certificates to trusted users of the system so that they can be used with their mobile device in addition to other credentials.

In particular, there is a WCF REST service that will be consumed by a mobile application on a client device, for example, an Android application, and it will need to check whether the client has the correct certificate and if the user has valid user credentials by the user. In addition, security is key in this case and is of great concern.

My questions are: in a scenario like the one described, is it possible to implement unique certificate authentication and with high respect for security? If not, what are the different alternatives or the best way to achieve this?

Also, for the individual certificates that are used for PIV / CAC cards, is there a way to use these certificates for authentication using mobile devices?

+4
source share
1 answer

This kind of security is always a difficult problem to solve. One of the main methods for something of this kind would be to use a headman key exchange for the first creation of a key system. Each user will have their own unique key, and only the initial handshake will be an intensive process. Then, at this point, you can run any number of cryptographic algorithms to verify the keys every time you authenticate.

So, this asks the question of how to install the key first of all before sending and what unique information you can use to create the key on the mobile client side. This leads us along the gray path, because there are many different ways to do this, and everyone has their own thoughts. For example, you can use your own Android OS architecture to get a unique phone ID or Google user account ID to use as a hash in the original key. However, keep in mind that diffie hellman is anonymous, so you need to authenticate the user first before you exchange keys with them. Subsequently, although you can just use signed requests.

In principle, this delves into the area of ​​security, which should be well thought out using these resources and knowing that you are on a mobile platform, you need to maintain low processor cycles, which means the absence of intensive cryptoalgos. The method above is one such solution that you can implement.

In addition, if you are developing an application for Android, this authentication can be easily performed through the application interface by clicking. You can basically click cert for an application that either calls or revokes access, so this should be the easiest route. If you want to use this on Symbian OS, you will have to do more work as described above. In addition, since you are mostly asking for login, not full encryption, the overhead for a key signing system should not be too complicated, but it can be difficult to implement a cross platform.

Hopefully this will give you a starting point for further research and ideas.

+1
source

Source: https://habr.com/ru/post/1416436/


All Articles