Extra Systems

CYPHERNET

entrega del producto al consumidor


Para crear un kit de entrega para el cliente del software de comunicación cifrada Cypher Net de Extra Systems, hemos creado varios scripts para el shell bash que automatizan completamente este proceso (y eliminan errores). El primero de estos scripts, make_client.sh, diseñado para crear un nuevo cliente (equipado con claves de comunicación cifradas RSA personales) tiene el siguiente texto:

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

Como puede verse en el texto, en este script recibimos tres números primos del ancho requerido (512 bits) de openssl y los pasamos al procedimiento keygen, que crea en base a ellos una clave RSA pública y privada (1024 bits) para un cliente determinado (los dos primeros números primos se multiplican para obtener la base de ambas claves, y el tercero se utiliza como exponente de la clave pública; el exponente de la clave privada, como lo exigen los estándares RSA, lo calcula el keygen utilidad usando la extendida. algoritmo euclidiano). Junto con las utilidades de entrada y salida, este script mueve estas claves (públicas y privadas) al directorio creado para transferir todos estos materiales al cliente.

El procedimiento rsa_key_bin se utiliza para convertir claves RSA de texto a binario (la generación inicial de claves RSA en forma de texto en Extra Systems Cypher Net fue histórica; en principio, esto no molesta a nadie).

El segundo script, make_link.sh, diseñado para crear una conexión entre un par de clientes, tiene el siguiente texto:

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

Este script copia la clave pública RSA en el directorio del socio y crea los archivos de huellas digitales necesarios para este par, que también coloca en los directorios de usuario correspondientes. Sólo después de esto es posible la comunicación entre estos clientes a través de nuestro servidor.

Con la ayuda de estos dos scripts, en principio, sería posible completar cualquier trabajo de preparación de pedidos, pero para mayor comodidad, también creamos un tercer script que le permite hacer todo con un solo movimiento. Este script se llama make_product.sh y le permite crear no solo un par, sino también una red de comunicación completa:

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

Como parámetros de la línea de comando, a este script se le pasa cualquier número (al menos dos) de identificadores de cliente para los cuales es necesario garantizar aún más la comunicación cifrada mutua a través de nuestro servidor.

El contenido de esta página también está disponible en inglés, francés, alemán, portugués, ucraniano y ruso.


© Extra Systems, 2024 Extra Web Top