
Compartir nombre y foto en iMessage de forma segura
La opción de compartir nombre y foto en iMessage permite al usuario compartir un nombre y una foto mediante iMessage. El usuario puede seleccionar la información de “Mi tarjeta” o personalizar el nombre e incluir la imagen que quiera. La opción de compartir nombre y foto en iMessage utiliza un sistema de dos etapas para distribuir el nombre y la foto.
Los datos están subdivididos en campos y cada uno de ellos se encripta y autentica por separado, además de autenticarse juntos con el siguiente proceso. Hay tres campos:
Nombre
Foto
Nombre de archivo de la foto
Uno de los primeros pasos en la creación de datos es generar aleatoriamente en el dispositivo el registro de una clave de 128 bits. A continuación, esta clave de registro deriva con HKDF-HMAC-SHA256 para crear tres subclaves: Clave 1:Clave 2:Clave 3 = HKDF(clave de registro, “alias”). Para cada campo, se genera una vector de inicialización (IV) de 96 bits aleatorio y los datos se encriptan usando AES-CTR y la Clave 1. A continuación, se calcula un código de autenticación de mensaje (MAC) con HMAC-SHA256 mediante la Clave 2, abarcando el nombre del campo, el campo IV y el texto cifrado del campo. Por último, el conjunto de valores MAC del campo individual se concatenan y su MAC se calcula con HMAC-SHA256 mediante la Clave 3. La MAC de 256 bits se almacena junto con los datos encriptados. Los primeros 128 bits de esta MAC se usan como RecordID.
A continuación, este registro encriptado se almacena en la base de datos pública CloudKit bajo RecordID. Este registro nunca se cambia y cada vez que un usuario decide cambiar su nombre y foto, se vuelve a generar un nuevo registro encriptado. Cuando el usuario 1 elige compartir su nombre y foto con el usuario 2, envía la clave de registro junto con el recordID dentro de la carga útil de su iMessage, que está encriptada.
Cuando el dispositivo del usuario 2 recibe esta carga útil de iMessage, detecta que la carga útil contiene un recordID de Alias y Foto, y una clave. A continuación, el dispositivo del usuario 2 accede a la base de datos pública CloudKit para recuperar el nombre y la foto encriptados de recordID y lo envía en el iMessage.
Una vez recuperado el mensaje, el dispositivo del usuario 2 desencripta la carga útil y verifica la firma mediante el propio recordID. Si esto se aprueba, al usuario 2 se le muestra el nombre y la foto y puede añadir esta información a sus contactos o usarla para Mensajes.