Extra Systems

CYPHERNET

livraison du produit au consommateur


Pour créer un kit de livraison pour le client du logiciel de communication crypté Extra Systems Cypher Net, nous avons créé plusieurs scripts pour le shell bash qui automatisent complètement ce processus (et éliminent les erreurs). Le premier de ces scripts, make_client.sh, conçu pour créer un nouveau client (équipé de clés de communication personnelles cryptées RSA) comporte le texte suivant:

#!/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

Comme le montre le texte, dans ce script, nous recevons trois nombres premiers de la largeur requise (512 bits) d'openssl et les transmettons à la procédure keygen, qui crée sur leur base une clé RSA publique et privée (1024 bits) pour un client donné (les deux premiers nombres premiers sont multipliés pour obtenir la base des deux clés, et le troisième est utilisé comme exposant pour la clé publique; l'exposant de la clé privée, comme l'exige les normes RSA, est calculé par le keygen utilitaire utilisant celui étendu. Algorithme euclidien). Avec les utilitaires d'entrée et de sortie, ces clés (publiques et privées) sont déplacées par ce script vers le répertoire créé pour transférer tous ces matériaux au client.

La procédure rsa_key_bin est utilisée pour convertir les clés RSA du texte en binaire (la génération initiale des clés RSA sous forme de texte dans Extra Systems Cypher Net était historique; en principe, cela ne dérange personne).

Le deuxième script, make_link.sh, conçu pour créer une connexion entre une paire de clients, contient le texte suivant:

#!/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

Ce script copie la clé publique RSA dans le répertoire du partenaire et crée les fichiers d'empreintes digitales nécessaires à ce couple (fingerprint), qu'il place également dans les répertoires utilisateurs correspondants. Ce n'est qu'après cela que la communication entre ces clients via notre serveur devient possible.

Avec l'aide de ces deux scripts, en principe, il serait possible d'effectuer n'importe quel travail de préparation de commandes, mais pour plus de commodité, nous avons également créé un troisième script qui vous permet de tout faire en un seul mouvement. Ce script s'appelle make_product.sh et permet de créer non seulement un couple, mais aussi tout un réseau de communication:

#!/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

En tant que paramètres de ligne de commande, ce script reçoit n'importe quel (au moins deux) nombres d'identifiants client pour lesquels il est nécessaire d'assurer davantage une communication cryptée mutuelle via notre serveur.

Le contenu de cette page est également disponible en anglais, allemand, ukrainien et en russe.


© Extra Systems, 2024 Extra Web Top