is there any way to both sides share a secret key and then generates key pairs using it
Puoi ricavare ulteriori chiavi da una chiave condivisa iniziale, ci sono vari meccanismi di derivazione chiave che ti permettono di farlo, ma hai ancora il problema di distribuire la chiave iniziale. Chiunque intercetta questa chiave potrebbe replicare il processo di derivazione e ricavare le stesse chiavi successive, quindi è ancora necessario trasferire in modo sicuro questa chiave iniziale e si ha lo stesso problema con cui si è iniziato. Questo vale anche per la tua soluzione suggerita; avvolgere le chiavi con un segreto condiviso è una buona idea, ma hai ancora bisogno di un modo per condividere in sicurezza quel segreto.
La distribuzione delle chiavi è probabilmente la parte più difficile dell'implementazione di un sistema crittografico. La distribuzione di chiavi simmetriche / segrete, come sarebbe necessario nella soluzione menzionata, è particolarmente difficile, motivo per cui sono spesso negoziate con chiavi asimmetriche, come nel caso di SSL e simili, poiché la crittografia viene eseguita utilizzando il pubblico metà della chiave del ricevente che non è riservata, ma si ha ancora il problema di distribuire e verificare le chiavi pubbliche che si stanno utilizzando per crittografare le chiavi simmetriche, che viene spesso risolto implementando un intero sistema PKI (infrastruttura a chiave pubblica), che include CA (autorità di certificazione).
Si menziona l'utilizzo di una CA, ma quello che si sta descrivendo non sembra essere il modo in cui una CA di solito opera, il che di solito implica la generazione della coppia di chiavi pubblica / privata del client e l'invio della metà pubblica alla CA per essere firmato e ricevere un certificato in cambio. Questi certificati possono essere verificati da altri client a causa di essi, incluso il certificato della CA radice nel loro archivio di certificati radice affidabili. Hai descritto nei commenti perché lo stai facendo in modo diverso, ma non sono ancora sicuro di seguire davvero il tuo ragionamento ...
Mi sorprende anche che il sovraccarico di una semplice crittografia simmetrica sia troppo alto per te. Avete effettivamente testato le prestazioni di questo e considerato inaccettabile il successo in termini di prestazioni? Questo mi dà un po 'di ottimismo prematuro, poiché la crittografia simmetrica non è particolarmente dispendiosa dal punto di vista computazionale (a differenza dell'asimmetria, motivo per cui asimmetrico viene solitamente utilizzato solo per negoziare una chiave simmetrica condivisa che viene utilizzata per qualsiasi successiva crittografia dei dati). Se il sovraccarico di un singolo avvolgimento di chiavi simmetriche è troppo intenso, sarei sorpreso se possiedi il potere computazionale di utilizzare la crittografia e forse dovresti riconsiderare il tuo approccio a ciò che stai tentando di fare.