Red de conocimiento informático - Problemas con los teléfonos móviles - Cómo autenticar servicios web de forma segura

Cómo autenticar servicios web de forma segura

Como todos sabemos, la API de acceso al WebService es pública y cualquiera que conozca su URL puede estudiarla y llamarla. Entonces, ¿cómo garantizar la seguridad del acceso y la comunicación API en una aplicación de servicio web que solo está permitida a usuarios registrados? La seguridad de acceso y comunicación a la que se hace referencia en este artículo incluye:

Seguridad de acceso: el visitante actual es un usuario legal registrado

Seguridad de comunicación: incluso si el mensaje entre el cliente y el servidor es interceptado por un tercero Incluso si es robado, no se puede descifrar

La seguridad de este artículo se basa en las siguientes ideas básicas:

Los usuarios registrados utilizan cifrado RSA para iniciar sesión en

Los parámetros de llamada de la API web utilizan cifrado DES (rápido)

La llamada de la API web contiene un ticket de identidad

El servidor web guarda la sesión del ticket actual, incluyendo el ticket, el vector de cifrado DES y la información básica del usuario registrado

1 autenticación de servicio web

Para garantizar la seguridad del acceso del usuario registrado, se deben seguir los siguientes pasos tomado: 1) Generar el ticket de la máquina cliente actual (Ticket); 2) Solicitar la clave pública RSA del servidor (RSAPublicKey); 3) Usar RSA para cifrar la contraseña de inicio de sesión y publicar el vector de cifrado DES (DESCipherVector);

1.1 Generar ticket de cliente

En términos generales, el cliente puede generar el ticket de cadena del ticket en función de su propio identificador único (como MAC, número de serie de CPU, etc.) Generado para identificar de forma única al cliente actual y evitar que otras máquinas imiten el comportamiento del cliente.

1.2 Solicitar la clave pública RSAPublicKey del servidor

El cliente lleva el Ticket Ticket al servidor y solicita la clave pública RSA RSAPublicKey. En el lado del servidor, normalmente se utiliza la siguiente estrategia para generar claves de cifrado RSA:

Application_Start Generar clave de cifrado RSA 1024 o un par de claves de cifrado RSA más largo. Si el servidor necesita funcionar durante mucho tiempo, el RSA generado por Application_Start puede descifrarse. La alternativa es generar un par de claves de cifrado RSA en el Session_Start actual.

Guarde el objeto de cuenta del cliente correspondiente al actual. ticket, es decir: Session[ Ticket] = AccountObject. Después de confirmar la identidad, complete los detalles del AccountObject: número de cuenta, par de claves de cifrado RSA, vector de cifrado DES

Después de completar los pasos anteriores, el servidor devolverá la RSAPublicKey al cliente.

1.3 Contraseña de inicio de sesión cifrada y vector de contraseña DES

Después de que el cliente obtenga la RSAPulbicKey, generará su propio vector de contraseña DES DESCipherVector (al menos 8 bits o más, porque es más rápido). que RSA, por lo que se utilizará para cifrar comunicaciones habituales en el futuro). A continuación, el cliente utiliza RSAPublicKey para cifrar la cuenta de inicio de sesión, la contraseña y DESCipherVector, y los envía al servidor junto con el Ticket para solicitar autenticación.

El formato de la API de inicio de sesión es el siguiente:

public void Login(string Ticket, string cipherLongID, string cipherPassword);

Si la autenticación es exitosa, el servidor enviará la información actual La información de la cuenta, la clave RSA, DESCipherVector, etc., se guardan en Session[Ticket].

2 Seguridad de la comunicación del WebService

2.1 Parámetros cifrados de la API del WebService

Una vez confirmada la identidad, la API del WebService llamada por el cliente debe contener el parámetro Ticket y todos los demás parámetros se cifrarán mediante DESCipherVector. La información devuelta por el servidor se maneja de manera similar. Por ejemplo, la función de correo electrónico para enviar modificaciones se define como:

public void ModifyEmail(string Ticket, string cipherEmai);

2.2 Descifrado de mensajes por parte del cliente

Después de recibir el mensaje del servidor, el cliente primero realiza la operación de descifrado. Si tiene éxito, continúa con el siguiente paso. De lo contrario, se generará una excepción de mensaje cifrado.

2.3 Mensaje de descifrado del lado del servidor

Después de recibir la solicitud de API del cliente, el servidor primero verificará la validez del ticket, es decir, averiguará si el ticket existe en la sesión. para verificar la identidad del cliente. Luego, descifre los parámetros de la llamada. Si tiene éxito, ingrese la siguiente operación sin operación; de lo contrario, devuelva un mensaje de excepción de operación al cliente.

Cabe señalar que si el tercero intercepta todos los mensajes de la sesión y retiene sus tickets, el servidor aún puede identificar el mensaje del tercero en este momento. Sin embargo, los terceros no pueden ver ni modificar el contenido de los parámetros de llamada a la API y se generará una excepción al descifrar los parámetros.

Lo anterior analiza un enfoque basado en cifrado para el acceso a servicios web y la seguridad de las comunicaciones. Incluso si un tercero obtiene el mensaje, no puede ver el contenido original ni modificarlo, lo que garantiza la seguridad de la API de WebService.