Fund]を選択してhttps://do.co/w4do-ctaの一部として寄付を受け取りました[寄付のために書く]プログラム。前書きGnuPGパッケージは、暗号化キーを生成および保存するための完全なソリューションを提供します。データと通信を暗号化して署名することができます。3を使用する一連のスクリプトを作成します。これらのスクリプトを使用すると、複数のファイルに署名して暗号化し、実行する前にスクリプトの整合性を検証できます。前提条件このチュートリアルを続ける前に、次の前提条件を完了してください。16.04サーバーをセットアップします。このチュートリアルを実行した後、ルート以外のsudoユーザーアカウントにアクセスできるようになります。*という名前を付けます。3をインストールしてローカルプログラミング環境をセットアップする方法]。このhttps://www.digitalocean.com/community/tutorials/how-to-use-gpg-to-encrypt-and-sign-messages[GnuPGチュートリアル]に従って、GnuPGキーペアを作成します。`にキーペアが保存されます。GnuPGは、キーペアの識別に役立つユーザー名と電子メールでキーを保存します。以下のコマンドを実行して、使用可能なキーのリストを取得します。+`行に表示される電子メールアドレスを書き留めます。後でキーを識別するために必要になります。+`モジュールをインストールできます。3の間の相互作用を可能にするGnuPGのラッパーとして機能します。このモジュールを使用すると、次のことを行うPythonスクリプトを作成できます。ファイルの分離された署名を作成し、署名をファイルから分離することで署名プロセスにセキュリティの層を追加します。ファイルを暗号化します。ファイルを解読します。分離された署名とスクリプトを確認します。これらのファイルでスクリプトをテストする前に、いくつかのテストファイルと共にスクリプトを最初に作成します。」モジュールをインストールしましょう。+`でこれらのパッケージをインストールします。fsこれらのパッケージを配置したら、スクリプトとテストファイルの作成に進むことができます。+」というフォルダーを作成します。python-testこのディレクトリに移動します。python-test/次に、3つのテストファイルを作成します。signdetached.py」というスクリプトを作成します。署名はタイムスタンプとして機能し、ドキュメントの信頼性を証明します。+」と呼ばれる新しいフォルダーに保存され、スクリプトの実行時に作成されます。+`という新しいファイルを開きます。signdetach.py最初に、スクリプトに必要なすべてのモジュールをインポートしましょう。gnupgGnuPGが暗号化キーを見つけるディレクトリを設定しましょう。+`に保存するので、ユーザー名でこれを設定しましょう。+`変数を作成して、現在のディレクトリの場所をファイルオブジェクトとして保存します。これにより、スクリプトが実行されたディレクトリ内で動作できるようになります。open_fs(".")これで、スクリプトは次のようになります。open_fs(".")この構成ブロックは、このチュートリアルを進めるときにスクリプトで使用する基本的なテンプレートです。+`という名前のフォルダーがあるかどうかを確認するコードを追加し、存在しない場合は作成します。+`配列に追加します。files_dir.append(f)スクリプトが次に行うことは、ファイルの分離された署名を生成することです。`配列をループすると、キーリングの最初の秘密キーを使用して各ファイルの署名が作成されます。秘密鍵にアクセスするには、設定したパスフレーズで秘密鍵をロック解除する必要があります。「+」を、前提条件でキーペアを生成したときに使用したパスフレーズに置き換えます。+`フォルダーに移動します。完成したスクリプトは次のようになります。stream.status)これで、ファイルの暗号化に進むことができます。+」と呼ばれる新しいフォルダー内でコピーおよび暗号化されます。ファイルの暗号化に使用される公開鍵は、鍵ペアの構成で指定した電子メールに対応するものです。encryptfiles.pyまず、必要なモジュールをすべてインポートし、GnuPGのホームディレクトリを設定して、現在の作業ディレクトリ変数を作成します。+」というフォルダーがあるかどうかを確認し、存在しない場合は作成するコードを追加します。directory")暗号化するファイルを検索する前に、空の配列を作成してファイル名を保存しましょう。[]次に、フォルダーをスキャンしてファイルを探し、それらを配列に追加するループを作成します。files_dir.append(f)最後に、フォルダー内のすべてのファイルを暗号化するループを作成します。`フォルダーに転送されます。この例では、「+」は暗号化中に使用するキーの電子メールIDです。これを必ず手順1でメモした電子メールアドレスに置き換えてください。+`配列を変更する必要があります。files.py`スクリプトファイルは次のようになります。".gpg")次に、プロセスの2番目の部分、つまり複数のファイルを一度に復号化して検証する方法を見てみましょう。」ディレクトリ内で実行されることを除いて、暗号化スクリプトとほぼ同じように機能します。`フォルダーで対応する秘密鍵を検索してファイルを復号化します。+」という新しいフォルダに保存されます。decryptfiles.py構成設定を挿入することから始めます。open_fs(".")次に、2つの空の配列を作成して、スクリプトの実行中にデータを保存します。[]ここでの目標は、スクリプトが復号化されたファイルを独自のフォルダーに配置することです。しないと、暗号化されたファイルと復号化されたファイルが混在し、特定の復号化されたファイルを見つけることが難しくなります。+`フォルダーが存在するかどうかを確認し、存在しない場合は作成するコードを追加します。+`配列に追加します。+」拡張子が追加されており、暗号化されていることを示します。暗号化を解除するときは、暗号化されていないため、この拡張子なしで保存します。+`拡張子を削除します。+`配列内に保存されます。次に、ファイルをループして解読します。「++」をパスフレーズに置き換えて、秘密鍵のロックを解除します。files_dir_clean[files_dir.index(x)])終了すると、スクリプトファイルは次のようになります。files_dir_clean[files_dir.index(x)])復号化スクリプトを配置したら、複数のファイルの分離された署名の検証に進むことができます。`スクリプトを記述しましょう。+」フォルダーを検索し、各ファイルとその署名を検証します。+`配列を作成します。[]次に、確認するファイルが含まれるフォルダーをスキャンします。+」フォルダー内の各ファイルの分離された署名を検索する、独自の分離された署名を持つ各ファイルを検証しましょう。分離された署名を見つけると、それを含むファイルを検証します。最後の行は、各ファイルの検証のステータスを出力します。verify.status)終了すると、スクリプトは次のようになります。verify.status)次に、サーバーで実行される前にファイルの署名を検証する方法について説明します。最終的なスクリプトは、スクリプトが実行される前に検証します。+」と似ていますが、検証済みのスクリプトを起動する追加機能があります。スクリプト名を引数として使用し、そのファイルの署名を検証することで機能します。検証が成功すると、スクリプトはコンソールにメッセージを投稿し、検証されたスクリプトを起動します。検証プロセスが失敗した場合、スクリプトはコンソールにエラーを通知し、ファイルの実行を中止します。+`という新しいファイルを作成します。verifyfile.pyまず、必要なライブラリをインポートして、作業ディレクトリを設定しましょう。open_fs(".")スクリプトが機能するためには、検証および実行するファイルの名前を保存する必要があります。str(sys.argv[1])この変数は最初の引数を取り、新しく作成された変数内に保存します。+`のファイルを署名で検証し、検証に合格した場合に実行します。execution")完成したスクリプトは次のようになります。execution")スクリプトの作成は終了しましたが、現時点では、現在のフォルダー内からのみ起動できます。次のステップでは、権限を変更してグローバルにアクセスできるようにします。+`コマンドを使用して、ファイルの所有者である非ルートユーザーに実行権限を付与します。PATH`に保存されているファイルは、システム内の任意のフォルダーからアクセスできます。`拡張子をドロップしていることに注意してください。この行はhttps://en.wikipedia.org/wiki/Shebang_(Unix)[shebang]と呼ばれ、オペレーティングシステムがコードの実行時に使用するbashインタープリターまたは環境を識別するのに役立ちます。スクリプトを実行すると、オペレーティングシステムはPythonを環境として指定したことを認識し、実行のためにコードをPythonに渡します。これは、作業する環境を識別するのに役立つファイル拡張子が不要になったことを意味します。/usr/local/bin/verifydetachこれで、スクリプトがコマンドラインから取る引数とともにスクリプト名を実行するだけで、システム内の任意の場所でスクリプトを実行できます。次のステップでは、これらのスクリプトの使用方法の例をいくつか見ていきます。+`に移動したので、サーバー上の任意のフォルダーからスクリプトを実行できます。python-test`ディレクトリ内で作業しているかどうかを確認します。pwd出力は次のようになります。Output/home//python-testチュートリアルの前半で3つのテストファイルを作成しました。+`コマンドを実行して、フォルダー内のファイルを一覧表示します。python-test`フォルダーに保存されている3つのファイルが表示されます。test3.txtこれら3つのファイルでスクリプトをテストします。+`コマンドを使用して、暗号化する前にファイルの内容をすばやく表示できます。fileすべてのファイルの分離署名を作成することから始めましょう。+`ディレクトリが存在しないことを検出して作成したことに注意してください。次に、ファイル署名を作成しました。+`コマンドを再度実行します。+`ディレクトリに注目してください。このフォルダーのコンテンツをリストし、署名の1つを詳しく見てみましょう。すべての署名を一覧表示するには、次を入力します。`拡張子で識別できます。`コマンドはこれらの署名の1つのコンテンツを表示できます。+`の内容を見てみましょう。+`の分離された署名です。署名を配置したら、ファイルの暗号化に進むことができます。`フォルダーを作成したことに注意してください。すべてのファイルが正常に暗号化されたことにも注意してください。+`コマンドを再度実行し、ディレクトリ内の新しいフォルダーに注目してください。MESSAGE-----元のファイルに保存された文は、暗号化プロセスの結果として複雑な一連の文字と数字に変換されました。ファイルの署名と暗号化が完了したので、元のファイルを削除して、暗号化されたファイルから元のメッセージを復元できます。オリジナルを削除するには、次を入力します。+`コマンドを再度実行して、元のファイルがすべて削除されたことを確認します。signatures元のファイルがなくなったら、暗号化されたファイルを復号化して確認しましょう。+`フォルダーに移動し、すべてのファイルをリストします。これは、それぞれが正常に復号化されたことを意味します。+」の内容を表示します。test1.txt`ファイル内に保存されているメッセージを回復しました。+`スクリプトで署名を検証して、このメッセージが実際に元のメッセージであることを確認しましょう。署名ファイルには、署名者のIDと、署名されたドキュメントのデータを使用して計算されたハッシュ値が含まれています。+`は送信者の公開鍵を取得し、ハッシュアルゴリズムと一緒に使用してデータのハッシュ値を計算します。検証を成功させるには、計算されたハッシュ値と署名内に保存されている値が一致する必要があります。元のファイル、署名ファイル、または送信者の公開キーが改ざんされると、ハッシュ値が変更され、検証プロセスが失敗します。valid出力から、すべてのファイルに有効な署名があることがわかります。これは、このプロセス中にドキュメントが改ざんされていないことを意味します。次に、署名後にドキュメントに変更を加えたときに何が起こるかを見てみましょう。test1.txt次に、ファイルに次の文を追加します。fileファイルを保存して閉じます。detach`スクリプトを再実行し、出力がどのように変更されたかに注目してください。`を返したことに注意してください。これは、署名後にファイルに変更を加えたためです。`は署名ファイルに保存されたハッシュ値を、署名したドキュメントから計算したハッシュ値と比較することに注意してください。