Extra Systems

CYPHERNET

consegna del prodotto al consumatore


Per creare un kit di consegna per il cliente del software di comunicazione crittografata Extra Systems Cypher Net, abbiamo creato diversi script per la shell bash che automatizzano completamente questo processo (ed eliminano gli errori). Il primo di questi script, make_client.sh, pensato per creare un nuovo client (dotato di chiavi di comunicazione personali crittografate RSA) ha il seguente testo:

#!/bin/bash

RSA_KEY_SIZE=1024
PRIME_SIZE=$(($RSA_KEY_SIZE / 2))

CLIENT_NUMBER=$1

[ -d $CLIENT_NUMBER ] || mkdir $CLIENT_NUMBER

echo "Создаем ключи RSA длиной $RSA_KEY_SIZE бит для клиента №$CLIENT_NUMBER"

PR1=$(openssl prime $(openssl prime -generate -bits $PRIME_SIZE) | cut -f1 -d ' ')
PR2=$(openssl prime $(openssl prime -generate -bits $PRIME_SIZE) | cut -f1 -d ' ')
PR3=$(openssl prime $(openssl prime -generate -bits $PRIME_SIZE) | cut -f1 -d ' ')

./keygen $PR1 $PR2 $PR3 > all.txt
head -n 1 all.txt > public_$CLIENT_NUMBER
tail -n 1 all.txt > private_$CLIENT_NUMBER
rm all.txt

./rsa_key_bin public_$CLIENT_NUMBER
rm public_$CLIENT_NUMBER
./rsa_key_bin private_$CLIENT_NUMBER
rm private_$CLIENT_NUMBER

mv private_$CLIENT_NUMBER.bin $CLIENT_NUMBER
mv public_$CLIENT_NUMBER.bin $CLIENT_NUMBER

cp input $CLIENT_NUMBER
cp output $CLIENT_NUMBER

Come si può vedere dal testo, in questo script riceviamo tre numeri primi della larghezza richiesta (512 bit) da openssl e li passiamo alla procedura keygen, che crea sulla base di essi una chiave RSA pubblica e privata (1024 bit) per un dato client (i primi due numeri primi vengono moltiplicati fino ad ottenere la base di entrambe le chiavi, ed il terzo viene utilizzato come esponente della chiave pubblica; l'esponente della chiave privata, come previsto dagli standard RSA, viene calcolato dal keygen utilità utilizzando quella estesa. Algoritmo euclideo). Insieme alle utilità di input e output, queste chiavi (pubbliche e private) vengono spostate da questo script nella directory creata per trasferire tutti questi materiali al cliente.

La procedura rsa_key_bin viene utilizzata per convertire le chiavi RSA da testo a binario (la generazione iniziale di chiavi RSA in forma di testo in Extra Systems Cypher Net era storica; in linea di principio, questo non disturba nessuno).

Il secondo script, make_link.sh, progettato per creare una connessione tra una coppia di client, ha il seguente testo:

#!/bin/bash

TMP_DIR_LIST="fingerprints"

for NEED_TMP_DIR in $TMP_DIR_LIST
do
	[ -d $NEED_TMP_DIR ] || mkdir $NEED_TMP_DIR
done

for CLIENT_NUMBER in $1 $2
do
	[ -d $CLIENT_NUMBER ] || mkdir $CLIENT_NUMBER
done

cp $1/public_$1.bin $2
cp $2/public_$2.bin $1

./fingerprint $1 $2 || exit
./fingerprint $2 $1 || exit

mv ./fingerprints/fingerprint_i_$1_$2 ./$1
mv ./fingerprints/fingerprint_o_$1_$2 ./$1

mv ./fingerprints/fingerprint_i_$2_$1 ./$2
mv ./fingerprints/fingerprint_o_$2_$1 ./$2

for NEED_TMP_DIR in $TMP_DIR_LIST
do
	[ -d $NEED_TMP_DIR ] && rmdir $NEED_TMP_DIR
done

Questo script copia la chiave pubblica RSA nella directory del partner e crea i file di impronte digitali necessari per questa coppia, che inserisce anche nelle directory utente corrispondenti. Solo dopo diventa possibile la comunicazione tra questi client tramite il nostro server.

Con l'aiuto di questi due script, in linea di principio, sarebbe possibile completare qualsiasi lavoro di commissionamento, ma per la massima comodità abbiamo creato anche un terzo script, che consente di fare tutto in un unico movimento. Questo script si chiama make_product.sh e permette di creare non solo una coppia, ma anche un'intera rete di comunicazione:

#!/bin/bash

for CLIENT_NUMBER in $@
do
	./make_client.sh $CLIENT_NUMBER
done

COUNER_1=1
for CLIENT_NUMBER_1 in $@
do
	COUNER_2=1
	for CLIENT_NUMBER_2 in $@
	do
		[ "$COUNER_2" -gt "$COUNER_1" ] && ./make_link.sh $CLIENT_NUMBER_1 $CLIENT_NUMBER_2
		COUNER_2=$(( $COUNER_2 + 1 ))
	done
	COUNER_1=$(( $COUNER_1 + 1 ))
done

Come parametri della riga di comando, a questo script viene passato un numero qualsiasi (almeno due) di identificatori client per i quali è necessario garantire ulteriormente la comunicazione reciproca crittografata attraverso il nostro server.

Il contenuto di questa pagina è disponibile anche in inglese, francese, tedesco, portoghese, spagnolo, ucraino e russo.


© Extra Systems, 2024 Extra Web Top