Extra Systems

CYPHERNET

Lieferung des Produkts an den Verbraucher


Um ein Lieferpaket für den Kunden der verschlüsselten Kommunikationssoftware Cypher Net von Extra Systems zu erstellen, haben wir mehrere Skripte für die Bash-Shell erstellt, die diesen Prozess vollständig automatisieren (und Fehler beseitigen). Das erste dieser Skripte, make_client.sh, das zum Erstellen eines neuen Clients (ausgestattet mit persönlichen RSA-verschlüsselten Kommunikationsschlüsseln) entwickelt wurde, hat den folgenden Text:

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

Wie aus dem Text hervorgeht, erhalten wir in diesem Skript drei Primzahlen der erforderlichen Breite (512 Bit) von OpenSSL und übergeben sie an die Prozedur keygen, die auf ihrer Grundlage einen öffentlichen und privaten RSA-Schlüssel (1024 Bit) für erstellt eines bestimmten Clients (die ersten beiden Primzahlen werden multipliziert, um die Basis beider Schlüssel zu erhalten, und die dritte wird als Exponent für den öffentlichen Schlüssel verwendet; der Exponent des privaten Schlüssels wird, wie von den RSA-Standards gefordert, vom Keygen berechnet Dienstprogramm mit dem erweiterten Dienstprogramm. Euklidischer Algorithmus). Zusammen mit den Eingabe- und Ausgabedienstprogrammen werden diese Schlüssel (öffentliche und private) von diesem Skript in das Verzeichnis verschoben, das erstellt wurde, um alle diese Materialien an den Kunden zu übertragen.

Die Prozedur rsa_key_bin wird verwendet, um RSA-Schlüssel von Text in Binärform umzuwandeln (die anfängliche Generierung von RSA-Schlüsseln in Textform in Extra Systems Cypher Net war historisch; im Prinzip stört dies niemanden).

Das zweite Skript, make_link.sh, das zum Herstellen einer Verbindung zwischen zwei Clients entwickelt wurde, enthält den folgenden Text:

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

Dieses Skript kopiert den öffentlichen RSA-Schlüssel in das Verzeichnis des Partners und erstellt die notwendigen Fingerabdruckdateien für dieses Paar, die es auch in den entsprechenden Benutzerverzeichnissen ablegt. Erst danach ist die Kommunikation zwischen diesen Clients über unseren Server möglich.

Mit Hilfe dieser beiden Skripte wäre es im Prinzip möglich, alle Arbeiten zur Kommissionierung zu erledigen, aber der Einfachheit halber haben wir auch ein drittes Skript erstellt, mit dem Sie alles in einer Bewegung erledigen können. Dieses Skript heißt make_product.sh und ermöglicht es Ihnen, nicht nur ein Paar, sondern ein ganzes Kommunikationsnetzwerk zu erstellen:

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

Als Befehlszeilenparameter werden diesem Skript eine beliebige (mindestens zwei) Anzahl von Client-IDs übergeben, für die es erforderlich ist, um die gegenseitige verschlüsselte Kommunikation über unseren Server weiter sicherzustellen.

Der Inhalt dieser Seite ist auch in Englisch, Französisch, Portugiesisch, Spanisch, Italienisch, Ukrainisch und Russisch verfügbar.


© Extra Systems, 2024 Extra Web Top