Italian community of Lazarus and Free Pascal

Programmazione => Generale => Topic aperto da: xinyiman - Marzo 31, 2019, 06:14:48 pm

Titolo: lazsecuretcptunnel
Inserito da: xinyiman - Marzo 31, 2019, 06:14:48 pm
Ciao ragazzi, è qualche tempo che mi frulla l'idea di creare un tunnel tcp cifrato tutto in puro pascal. Procedo per gradi ma procedo:

1. ho creato il tunnel tcp non cifrato - fatto e sembra funzionare sempre
2. ho cifrato la connessione con un aes a 256 bit (cifratura militare) - fatto ma non funziona sempre
3. scambio della password aes con una cifratura a chiave asimmetrica - da fare ma so come

Vi allego il lavoro fatto fino ad adesso. Il mio problema è che questo software l'ho creato principalmente per mettere in sicurezza le transazioni per firebird. Se il software viene avviato senza cifratura funziona tutto (interrogate un qualsiasi database con flamerobin ad esempio) e vedrete che non si manifestano problemi. Se avviate il tunnel con la cifratura dopo un po smette di funzionare. Chi mi spiega il perchè? Io non lo capisco proprio.
Ora vi spiego come farlo funzionare. Compilare il progetto. L'eseguibile duplicatelo anche in un altra cartella. Poi vedrete che c'è il file config1.ini e config2.ini

Copiate config1.ini dentro una cartella con l'eseguibile e rinominatelo in config.ini
Copiate config2.ini dentro l'altra cartella con l'eseguibile e rinominatelo in config.ini

config1.ini ha i seguenti parametri
Codice: [Seleziona]
local_port=2411
remote_ip=localhost
remote_port=2418
crypt_enabled=true
is_local_node=true

config2.ini ha i seguenti paramteri
Codice: [Seleziona]
local_port=2418
remote_ip=localhost
remote_port=3050
crypt_enabled=true
is_local_node=false
debug_b=true

Il config1.ini è quello che avvia la parte del tunnel al quale deve collegarsi flamerobin sulla porta 2411 e che crea la connessione cifrata verso la porta 2418  del server remoto (io ho tutto in localhost)

Il config2.ini è quello che si occupa di chiudere il tunnel e instaurare la connessione cifrata per poi ridirigere il contenuto sulla porta 3050 (in questo caso è firebird)

Ora vi chiederei di darmi una mano a risolvere quello che non va del punto 2. Flamerobin deve funzionare senza interruzioni con la connessione cifrata. Fatto questo io finisco il progetto e lo metto a disposizione di tutti sottoforma di progetto open source.

Uso synapse per l'uso dei socket.