Процедура send_finger_print займається відсиланням на сервер Extra Systems Cypher Net файлу fingerprint, що потрібно для того, щоб наш центральний сервер упізнав у Вас нашого легітимного клієнта, а також отримав інформацію про те, до якого режиму (input або output) та з яким абонентом Ви бажаєте зв'язатися.
Ця процедура викликається у потрібний момент приймачем та передавачем і виконує свою роботу за допомогою такого алгоритму:
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; }
Слід зазначити, що сам механізм fingerprint, винайдений нами в цій системі шифрозв'язку, є одним з механізмів захисту центрального сервера Extra Systems Cypher Net від хакерських атак. Отримуючи від абстрактного клієнта (який може бути зловмисником) запит на з'єднання, сервер очікує відразу отримати від нього правильний fingerprint. Якщо цього немає, сервер не веде з таким клієнтом ніяких подальших розмов, і негайно розриває з'єднання. Нагадаємо, що оскільки файли fingerprint зашифровані через RSA відкритим (тільки за назвою) ключем сервера, який насправді ніде не публікується, підробити їх неможливо.
Таким чином, за допомогою такого простого механізму ми і тут маємо захист, який неможливо зламати.
Контент цієї сторінки доступний також англійською, французькою, німецькою та російською мовами.
© Extra Systems, 2024 |