La procédure send_finger_print envoie un fichier d'empreintes digitales au serveur Extra Systems Cypher Net, ce qui est nécessaire pour que notre serveur central vous reconnaisse comme notre client légitime, et reçoive également des informations sur le mode (entrée ou sortie) et avec quel abonné vous souhaitez contacter.
Cette procédure est appelée au bon moment par le récepteur et l'émetteur et fait son travail selon l'algorithme suivant:
int send_finger_print(int socket, unsigned int client_id, unsigned int server_id, int client_mode) { int file_handle; char file_name[64]; unsigned char client_finger_print[PACKED_VALUE_LENTH]; if (client_mode == CLIENT_MODE_INPUT) sprintf(file_name, "fingerprint_i_%d_%d", client_id, server_id); else sprintf(file_name, "fingerprint_o_%d_%d", client_id, server_id); if((file_handle = open(file_name, O_RDONLY)) == -1) return 0; read(file_handle, client_finger_print, PACKED_VALUE_LENTH); close(file_handle); socket_send_buffer(socket, client_finger_print, PACKED_VALUE_LENTH); return 1; }
Il convient de noter que le mécanisme d'empreinte digitale lui-même, que nous avons inventé dans ce système de communication crypté, constitue l'un des mécanismes de protection du serveur central Extra Systems Cypher Net contre les attaques de pirates. Lorsqu'il reçoit une demande de connexion d'un client abstrait (qui peut être un attaquant), le serveur s'attend à recevoir immédiatement la bonne empreinte digitale de sa part. Si cela ne se produit pas, le serveur n'engage plus de conversation avec un tel client et met immédiatement fin à la connexion. Rappelons que les fichiers d'empreintes digitales étant cryptés via RSA avec la clé du serveur publique (en nom uniquement), qui n'est en réalité publiée nulle part, il est absolument impossible de les falsifier.
Ainsi, avec l'aide d'un mécanisme aussi simple, nous disposons ici aussi d'une protection qui ne peut pas être piratée.
Le contenu de cette page est également disponible en anglais, allemand, ukrainien et en russe.
© Extra Systems, 2024 |