Utilizzando le chiavi RSA, gli abbonati di Extra Systems Cypher Net nella fase iniziale (procedura get_common_key) generano sequenze di byte casuali e le scambiano in forma crittografata. Questo scambio si chiama prologo (ulteriore, già significativo, collegamento). Nella procedura get_common_key menzionata sopra, queste righe sono rilevanti per questo processo (prologo):
make_local_key(); get_hash(local_key.packed, PACKED_VALUE_LENTH / 2, local_hash); encrypt_local_key(); memcpy(socket_buffer, crypted_local_key, PACKED_VALUE_LENTH); memcpy(socket_buffer + PACKED_VALUE_LENTH, local_hash, HASH_SIZE); socket_send_buffer(socket, socket_buffer, PACKED_VALUE_LENTH + HASH_SIZE);
La dimensione del prologo, come puoi facilmente vedere, è PACKED_VALUE_LENTH + HASH_SIZE, cioè dipende dalla profondità di bit delle chiavi RSA utilizzate (parametro PACKED_VALUE_LENTH) e dall'algoritmo di hashing utilizzato in questa particolare consegna (parametro HASH_SIZE). Pertanto può cambiare, il che creerebbe problemi al server centrale nella procedura connect_server se gli abbonati non gli avessero comunicato anticipatamente, durante la procedura check_finger_print, attraverso l'impronta digitale inviata, il valore della loro prolog_size.
È facile vedere che il prologo è composto da due parti: una sequenza casuale local_key generata dal client (nella procedura make_local_key) e un hash di questa sequenza local_hash. Allo stesso tempo, l'hash viene calcolato prima di crittografare local_key, il che garantisce l'affidabilità della connessione, poiché solo un partner di comunicazione che dispone di una chiave RSA privata può decrittografare questo pacchetto e solo un abbonato a cui questo partner ha fornito personalmente la chiave la chiave pubblica per questo può crittografarla. In questo caso non è quindi possibile alcun attacco man-in-the-middle.
Il contenuto di questa pagina è disponibile anche in inglese, francese, tedesco, portoghese, spagnolo, ucraino e russo.
© Extra Systems, 2024 |
|