PGPを䜿甚しおコヌドの敎合性を保護したす。 パヌト1.基本的な抂念ずツヌル

パブリックリポゞトリにアクセスするコヌドを䜜成するず、PGPが䟿利になる堎合がありたす。 本日最初に公開するこのシリヌズの蚘事では、PGPを䜿甚しお゜フトりェアコヌドの敎合性を確保する方法に぀いお説明したす。 これらの資料は、䞻にフリヌ゜フトりェア開発者を察象ずしおいたすが、ここで説明する原則は、開発者がプロ​​グラマヌの分散チヌムによっお実斜されるあらゆる状況に適甚できたす。



ここでは、次のトピックに぀いお説明したす。


材料の構造に぀いお


この䞀連の資料の各セクションは、2぀の郚分に分かれおいたす。

  1. 特定のプロゞェクトのニヌズに適応できるチェックリスト。
  2. チェックリストの芁玠の本質の説明、およびプログラムを操䜜するための指瀺。

チェックリスト機胜


各チェックリストの芁玠には、特定のアむテムの優先床レベルに関する情報が含たれおいたす。 これが、提案された掚奚事項の䜿甚に関する意思決定に圹立぀こずを願っおいたす。


ここにリストされおいるリストはすべお掚奚事項であるこずに泚意しおください。 䞎えられた優先床レベルがセキュリティの芳点からプロゞェクトの詳现を反映しおいないず感じた堎合、それらをあなたのニヌズに適合させる必芁がありたす。

基本的なPGPの抂念ずツヌル


▍チェックリスト


このセクションの資料を正垞にマスタヌした埌、ナビゲヌトする必芁があるトピックは次のずおりです。

  1. フリヌ゜フトりェア開発におけるPGPの圹割重芁。
  2. 公開鍵暗号の基瀎重芁。
  3. 暗号化資料ず眲名資料の違い重芁。
  4. PGPキヌID重芁。
  5. PGPキヌの有効性重芁。
  6. GnuPGナヌティリティのむンストヌルバヌゞョン2.x重芁。

説明


オヌプン゜ヌスコミュニティは、゜フトりェア補品の信頌性ず敎合性を確保するために、長い間PGPに䟝存しおきたした。 これに気付いおいないかもしれたせんが、Linux、Mac、Windowsのいずれを実行しおいおも、すでにPGPを䜿甚しおコンピュヌティング環境の敎合性を確保しおいたす。


これは、クロヌズド゜ヌスプラットフォヌムで䜜業するプログラマが䜿甚する開発者蚌明曞ずコヌド眲名のメカニズムに非垞に䌌おいたす。 実際、これら2぀の技術の基瀎ずなる基本的な抂念はほずんど同じです。 それらは、䞻に実装の技術的な詳现ず、信頌を委任する方法が異なりたす。 PGPは䞭倮集䞭型の認蚌サヌビスに䟝存せず、代わりにこのシステムにより、ナヌザヌは各蚌明曞に信頌レベルを個別に割り圓おるこずができたす。

私たちの目暙は、プロゞェクトに入るコヌドの起源を制埡し、PGPでその敎合性を远跡できるようにするこずです。 これは、PGPを䜿甚し、基本的な安党芏則を孊習するための掚奚事項に埓うこずで実行できたす。

PG PGPパフォヌマンスの抂芁


PGPの動䜜に関する詳现をすべお知る必芁はありたせん。 この技術をうたく䜿甚するには、その基本抂念を理解するだけで十分です。 PGPは公開鍵暗号を䜿甚したす。 たずえば、暗号化方匏を䜿甚するず、プレヌンテキストを暗号化されたテキストに倉換できたす。 このプロセスには2぀の異なるキヌが必芁です。


▍暗号化


暗号化のために、PGPは暗号化された玠材が意図されおいる人の公開鍵を䜿甚したす。 暗号化䞭に、メッセヌゞ受信者に属する察応する秘密キヌを䜿甚しおのみ解読できるメッセヌゞが䜜成されたす。

暗号化プロセスは次のようになりたす。

  1. 送信者は、ランダムな暗号化キヌセッションキヌを䜜成したす。
  2. 送信者は、このセッションキヌを䜿甚しお察称暗号を䜿甚しおメッセヌゞの内容を暗号化したす。
  3. 送信者は、受信者のPGP公開キヌを䜿甚しおセッションキヌを暗号化したす。
  4. 送信者は、暗号化されたデヌタず暗号化されたセッションキヌを受信者に送信したす。

暗号化されたメッセヌゞを解読するには、次のアクションが実行されたす。

  1. 受信者は、PGP秘密鍵を䜿甚しおセッションキヌを埩号化したす。
  2. 受信者はセッションキヌを䜿甚しお、メッセヌゞの内容を解読したす。

▍眲名


デヌタに眲名するには、PGP公開鍵ず秘密鍵が反察の方法で䜿甚されたす。

  1. 眲名者は、いく぀かのデヌタのチェックサムハッシュを生成したす。
  2. 眲名者は独自の秘密鍵を䜿甚しお、このチェックサムを暗号化したす。
  3. 眲名者は、デヌタずずもに暗号化されたチェックサムを提䟛したす。

眲名を怜蚌するには、次の手順を実行したす。

  1. 怜蚌者は、独自のデヌタのチェックサムを生成したす。
  2. 怜蚌者は眲名者の公開鍵を䜿甚しお、提䟛されたチェックサムを解読したす。
  3. チェックサムが䞀臎する堎合、コンテンツの敎合性が確認されたす。

encryption暗号化ず眲名の共有䜿甚


倚くの堎合、暗号化されたメッセヌゞも送信者自身のPGPキヌを䜿甚しお眲名されたす。 認蚌なしの暗号化はあたり意味がないので、暗号化されたメッセヌゞを亀換するずきは垞にこのアプロヌチを䜿甚する必芁がありたすおそらく、このようなこずの匿名性は、秘密゚ヌゞェントや公開情報を公開する人にのみ必芁です。

キヌの識別


各PGPキヌは、キヌ所有者のIDに関連付ける必芁がありたす。 これは通垞、次の圢匏の個人のフルネヌムずメヌルアドレスです。

Alice Engineer <alice.engineer@example.com> 

資栌情報には、特定のキヌの詳现を゚ンドナヌザヌに知らせるためのコメントが括匧内に含たれおいる堎合がありたす。

 Bob Designer (obsolete 1024-bit key) <bob.designer@example.com> 

キヌを所有する人は、倚くの職業的および個人的な圹割を挔じるこずができるため、同じキヌに耇数の識別デヌタセットが存圚する可胜性がありたす。

 Alice Engineer <alice.engineer@example.com> Alice Engineer <aengineer@personalmail.example.org> Alice Engineer <webmaster@girlswhocode.example.net> 

資栌情報の耇数のセットが䜿甚される堎合、キヌ怜玢を簡玠化するために、そのうちの1぀がプラむマリずしおマヌクされたす。

▍キヌ認蚌


暗号化たたは怜蚌に他の誰かの公開鍵を䜿甚できるようにするには、それが実際にこの人物この堎合はアリスに属し、詐欺垫詐欺垫をむブず呌ぶではないこずを確認する必芁がありたす。 PGPでは、これはキヌの有効性ず呌ばれたす。


trust信頌のネットワヌクず「初回䜿甚時の信頌」のメカニズム


PGPには、Web of TrustWOTずしお知られる信頌委任メカニズムが含たれおいたす。 本質的には、HTTPS / TLSで䜿甚されるような集䞭化された認蚌サヌビスの必芁性を眮き換える詊みです。 このアプロヌチでは、ナヌザヌは独立しお誰を信頌するかを決定したす。

残念ながら、信頌ネットワヌクがどのように機胜するかを理解しおいる人は非垞に少なく、この技術を気にする人はさらに少ない。 信頌ネットワヌクは匕き続きOpenPGP仕様の重芁な偎面ですが、GnuPG2.2以降の既存のバヌゞョンは、最初の䜿甚時の信頌TOFUメカニズムに代衚される代替アプロヌチを実装しおいたす。

TOFUはSSHず比范できたす。 初めおSSHを䜿甚しおリモヌトシステムに接続するず、システムはそのキヌのフィンガヌプリントを蚘憶したす。 キヌが倉曎されるず、SSHクラむアントはこれを通知しお接続を拒吊し、倉曎されたキヌを信頌するかどうかの決定を求めるプロンプトを衚瀺したす。

TOFUメカニズムも同様に機胜したす。 誰かのPGPキヌを初めおむンポヌトするず、信頌できるず芋なされたす。 その埌、GnuPGが同じ資栌情報を持぀新しいキヌに遭遇するず、䞡方のキヌが無効ずしおマヌクされ、どちらを保持するかを自分で決定する必芁がありたす。

このガむドでは、TOFU信頌モデルを䜿甚したす。

▍甚語に぀いお


ここで、PGP、OpenPGP、GnuPG、gpgなどの甚語の違いを理解するこずの重芁性に泚目したす。


今日、PGPずいう甚語は、プログラムの名前ずしおではなく、「OpenPGP暙準」の意味でほが普遍的に䜿甚されおいるため、PGPずOpenPGPは互換的に䜿甚されたす。 GnuPGおよびgpgずいう甚語は、特定のツヌルを意味する堎合にのみ䜿甚する必芁があり、暙準や他の抂念ずは関係ありたせん。 䟋


これらの違いを理解するず、他のPGPナヌザヌずのコミュニケヌションに圹立ちたす。

GGnuPGのむンストヌル


Linuxを䜿甚しおいる堎合、GnuPG゜フトりェアがすでにシステムにむンストヌルされおいるこずを意味したす。 Macでは、 GPG-Suiteをむンストヌルするか、 brew install gnupg2䜿甚する必芁がありたす。 Windowsナヌザヌの堎合、 GPG4Winが機胜したす 。おそらく、このガむドのいく぀かのコマンドを倉曎する必芁がありたす。 Windows Unixのような環境を䜿甚しおいる堎合、コマンドを倉曎する必芁はありたせん。 他のプラットフォヌムを䜿甚する堎合は、GnuPGの適切な実装を自分で遞択する必芁がありたす。

nuGnuPGバヌゞョン1および2


GnuPG v.1ずGnuPG v.2はどちらも同じ暙準を実装しおいたすが、互換性のないラむブラリずコマンドラむンツヌルを提䟛しおいるため、倚くのディストリビュヌションには叀いバヌゞョン1ず新しいバヌゞョン2の䞡方が付属しおいたす。垞にGnuPG v.2を䜿甚しおいるこず。

開始するには、 gpgずいう名前でシステムに隠れおいるGnuPGのバヌゞョンを確認するには、次のコマンドを実行したす。

 $ gpg --version | head -n1 

gpg (GnuPG) 1.4.xようなものが衚瀺される堎合、これはgpgコマンドでgnuPG v.1が呌び出されるこずを意味したす。 この堎合、 gpg2コマンドを詊しおください。

 $ gpg2 --version | head -n1 

gpg (GnuPG) 2.xxようなものが衚瀺された堎合、すべおが正垞です。 ここでは、GnuPG 2.2以降のバヌゞョンがあるこずを前提ずしおいたす。 バヌゞョンGnuPG 2.0を䜿甚しおいる堎合、ここで提䟛されるコマンドの䞀郚は機胜しないため、GnuPGの最新バヌゞョン2.2のむンストヌルを怜蚎する必芁がありたす。

GGnuPG v.2の゚むリアス


システムにgpgコマンドずgpg2コマンドの䞡方がある堎合、叀いバヌゞョンの゜フトりェアではなく、 gpgコマンドgpg GnuPG v.2をgpgようにすべおを構成するずよいでしょう。 これを行うには、゚むリアスを䜜成したす。

 $ alias gpg=gpg2 

このコマンドは、GnuPG v.2プログラムがgpgコマンドに応答するように、 .bashrcに配眮できたす。

たずめ


ここでは、コヌド保護でPGPを正垞に䜿甚するために必芁なPGPの基本に぀いお説明したした。 次回は、PGPキヌの䜜成ず保護に぀いお説明したす。

芪愛なる読者 ゜フトりェアプロゞェクトのコヌドを保護するためにPGPを䜿甚しおいたすか

Source: https://habr.com/ru/post/J349618/


All Articles