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 |
|