Cryptography-quick-guide

提供:Dev Guides
移動先:案内検索

暗号の起源

年齢の人間には、2つの固有のニーズがありました。(a)情報を伝達して共有することと、(b)選択的に伝達することです。 これら2つのニーズにより、意図した人だけが情報にアクセスできるようにメッセージをコーディングする技術が生まれました。 無許可の人々は、スクランブルされたメッセージが手に落ちても、情報を抽出できませんでした。

メッセージを隠して情報セキュリティの秘密を守る技術と科学は、暗号として認識されています。

「暗号化」という言葉は、ギリシャ語の2つの単語を組み合わせることで作られました。「クリプト」は隠れを意味し、「グラフェン」は文章を意味します。

暗号の歴史

暗号技術は、執筆技術とともに生まれたと考えられています。 文明が発展するにつれて、人間は部族、グループ、王国で組織化されました。 これにより、権力、戦い、覇権、政治などのアイデアが生まれました。 これらのアイデアは、選択的受信者と密かに通信する人々の自然な必要性をさらに促進し、暗号化の継続的な進化も保証しました。

暗号のルーツは、ローマとエジプトの文明にあります。

象形文字-最古の暗号技術

暗号化の最初の既知の証拠は、「象形文字」の使用に由来します。 約4000年前、エジプト人は象形文字で書かれたメッセージでコミュニケーションをとっていました。 このコードは、王に代わってメッセージを送信していた筆記者だけが知っている秘密でした。 そのような象形文字の1つを以下に示します。

ヒエログリフ

その後、学者は、紀元前500〜600年に単純な単一アルファベットの置換暗号を使用するようになりました。 これには、メッセージのアルファベットを何らかのシークレットルールを持つ他のアルファベットに置き換えることが含まれていました。 この rule は、文字化けしたメッセージからメッセージを取得する key になりました。

一般に Caesar Shift Cipher として知られる初期のローマ暗号方式は、メッセージの文字を合意された数だけシフトすることに依存しています(3つが一般的な選択でした)。その後、このメッセージの受信者は同じ番号と元のメッセージを取得します。

シーザーシフト暗号

ステガノグラフィ

ステガノグラフィは似ていますが、暗号化に別の次元を追加します。 この方法では、情報を隠蔽することで情報の機密性を保護するだけでなく、権限のない人が情報が存在する証拠さえも得られないようにしたいと考えています。 たとえば、不可視透かし

ステガノグラフィでは、意図しない受信者または侵入者は、観測されたデータに隠された情報が含まれているという事実を知りません。 暗号化では、侵入者は通常、データが通信されていることを認識しています。これは、コード化/スクランブルされたメッセージを見ることができるためです。

ステガノグラフィ

暗号の進化

それはヨーロッパのルネサンス期とその後であり、イタリアとローマ教皇のさまざまな州が暗号技術の急速な普及を主導しました。 秘密コードを破るために、この時代にさまざまな分析および攻撃手法が研究されました。

  • Vigenere Coding などの改善されたコーディング手法は15世紀に登場し、同じ数の場所を移動するのではなく、多くの可変の場所を持つメッセージ内の移動文字を提供しました。
  • 19世紀以降になって初めて、暗号化は、暗号化へのアドホックアプローチから、より高度な情報セキュリティの芸術および科学へと進化しました。
  • 20世紀初頭、* Enigmaローターマシン*などの機械および電気機械の発明は、情報をコーディングするより高度で効率的な手段を提供しました。
  • 第二次世界大戦中に、*暗号*と*暗号解析*の両方が過度に数学的になりました。

この分野での進歩により、政府機関、軍隊、および一部の企業家は暗号化のアプリケーションの採用を開始しました。 彼らは暗号を使用して、他人から秘密を守りました。 現在、コンピューターとインターネットの到来により、効果的な暗号化が一般の人々の手に届くようになりました。

近代暗号

現代の暗号化は、コンピューターと通信のセキュリティの基礎です。 その基礎は、数論、計算複雑性理論、確率論などの数学のさまざまな概念に基づいています。

現代暗号の特徴

現代の暗号化と従来のアプローチを区別する3つの主要な特徴があります。

Classic Cryptography Modern Cryptography
It manipulates traditional characters, i.e., letters and digits directly. It operates on binary bit sequences.
It is mainly based on ‘security through obscurity’. The techniques employed for coding were kept secret and only the parties involved in communication knew about them. It relies on publicly known mathematical algorithms for coding the information. Secrecy is obtained through a secrete key which is used as the seed for the algorithms. The computational difficulty of algorithms, absence of secret key, etc., make it impossible for an attacker to obtain the original information even if he knows the algorithm used for coding.
It requires the entire cryptosystem for communicating confidentially. Modern cryptography requires parties interested in secure communication to possess the secret key only.

暗号化のコンテキスト

暗号システムの研究である暗号学は、2つのブランチに細分することができます-

  • 暗号化
  • 暗号解析

暗号化タイプ

暗号化とは何ですか?

暗号化とは、情報セキュリティを提供できる暗号システムを作成する技術および科学です。

暗号化は、デジタルデータの実際の保護を扱います。 基本的な情報セキュリティサービスを提供する数学的アルゴリズムに基づくメカニズムの設計を指します。 暗号化は、セキュリティアプリケーションのさまざまな手法を含む大規模なツールキットの確立と考えることができます。

暗号解読とは何ですか?

暗号文を解読する技術と科学は暗号解読として知られています。

暗号解析は暗号の姉妹ブランチであり、両者は共存しています。 暗号化プロセスにより、送信または保存用の暗号テキストが生成されます。 暗号化メカニズムを研究し、それらを破壊することを意図しています。 暗号解析は、新しい暗号化技術の設計時にも使用され、セキュリティの強度がテストされます。

-暗号化は暗号システムの設計に関係しますが、暗号解析は暗号システムの破壊を研究します。

暗号化のセキュリティサービス

暗号化を使用する主な目的は、次の4つの基本的な情報セキュリティサービスを提供することです。 ここで、暗号化によって達成されることを目的とした可能な目標を見てみましょう。

守秘義務

機密性は、暗号化によって提供される基本的なセキュリティサービスです。 これは、権限のない人からの情報を保持するセキュリティサービスです。 *プライバシー*または*秘密*と呼ばれることもあります。

機密性は、物理的なセキュリティ保護からデータ暗号化のための数学的アルゴリズムの使用まで、さまざまな手段で実現できます。

データの整合性

データの変更を識別するセキュリティサービスです。 データは、無許可のエンティティによって意図的または偶然に変更される可能性があります。 整合性サービスは、許可されたユーザーによってデータが最後に作成、送信、または保存されてからデータが完全であるかどうかを確認します。

データの整合性はデータの変更を防ぐことはできませんが、データが不正な方法で操作されたかどうかを検出する手段を提供します。

認証

認証は発信者の識別を提供します。 受信者に、受信したデータが識別され、検証された送信者のみによって送信されたことを確認します。

認証サービスには2つのバリアントがあります-

  • *メッセージ認証*は、メッセージを送信したルーターやシステムに関係なく、メッセージの発信者を識別します。
  • *エンティティ認証*は、特定のウェブサイトなどの特定のエンティティからデータが受信されたことを保証します。

発信者とは別に、認証は、作成/送信の日付や時刻などのデータに関連する他のパラメーターに関する保証も提供する場合があります。

否認防止

エンティティが以前のコミットメントまたはアクションの所有権を拒否できないことを保証するセキュリティサービスです。 データの元の作成者が、そのデータの作成または受信者または第三者への送信を拒否できないことを保証します。

否認防止は、データの交換をめぐって紛争の可能性がある状況で最も望ましい特性です。 たとえば、このトランザクションで否認防止サービスが有効になっている場合、注文が電子的に行われると、購入者は注文を拒否できません。

暗号化プリミティブ

暗号化プリミティブは、必要なセキュリティサービスのセットを提供するために選択的に使用できる暗号化のツールとテクニックにすぎません-

  • 暗号化
  • ハッシュ関数
  • メッセージ認証コード(MAC)
  • デジタル署名

次の表に、特定のセキュリティサービスを単独で実現できるプリミティブを示します。

Primitives Service

-暗号プリミティブは複雑に関連しており、暗号システムから望ましいセキュリティサービスのセットを実現するためにしばしば組み合わされます。

暗号システム

暗号システムは、情報セキュリティサービスを提供するための暗号技術とそれに付随するインフラストラクチャの実装です。 暗号システムは、*暗号システム*とも呼ばれます。

送信される情報に機密性を提供する暗号システムの簡単なモデルについて説明しましょう。 この基本モデルは、次の図に示されています-

暗号システム

この図は、通信チャネル上で傍受または盗聴された者がデータを抽出できないように、一部の機密データを受信者に転送したい送信者を示しています。

この単純な暗号システムの目的は、プロセスの最後に、送信者と受信者のみが平文を知ることです。

暗号システムのコンポーネント

基本的な暗号システムのさまざまなコンポーネントは次のとおりです-

  • * Plaintext。*送信中に保護されるデータです。
  • *暗号化アルゴリズム*これは、任意のプレーンテキストと暗号化キーの暗号文を生成する数学的プロセスです。 これは、入力としてプレーンテキストと暗号化キーを受け取り、暗号文を生成する暗号化アルゴリズムです。
  • * Ciphertext。*特定の暗号化キーを使用して暗号化アルゴリズムによって生成された平文のスクランブルバージョンです。 暗号文は保護されていません。 それは公開チャンネルで流れます。 通信チャネルにアクセスできるすべてのユーザーが傍受または侵害する可能性があります。
  • *復号化アルゴリズム*これは、特定の暗号文と復号化キーに対して一意の平文を生成する数学的プロセスです。 これは、暗号文と復号化キーを入力として受け取り、平文を出力する暗号化アルゴリズムです。 復号化アルゴリズムは、基本的に暗号化アルゴリズムを逆にするため、それに密接に関連しています。
  • *暗号化キー。*これは送信者に知られている値です。 送信者は、暗号文を計算するために、暗号化キーを平文とともに暗号化アルゴリズムに入力します。
  • *復号化キー。*これは受信者に知られている値です。 復号化キーは暗号化キーに関連していますが、常に同じではありません。 受信者は、平文を計算するために、暗号化テキストとともに復号化キーを復号化アルゴリズムに入力します。

特定の暗号システムでは、可能なすべての復号化キーのコレクションは*キースペース*と呼ばれます。

インターセプター(攻撃者)は、プレーンテキストを判別しようとする無許可のエンティティです。 彼は暗号文を見ることができ、解読アルゴリズムを知っているかもしれません。 しかし、彼は決して復号化キーを知らないでください。

暗号システムの種類

基本的に、暗号化-復号化がシステムで実行される方法に基づいて2種類の暗号システムがあります-

  • 対称キー暗号化
  • 非対称キー暗号化

これらの暗号システムの主な違いは、暗号化キーと復号化キーの関係です。 論理的に、どの暗号システムでも、両方のキーは密接に関連付けられています。 暗号化キーとは関係のないキーを使用して暗号文を復号化することは事実上不可能です。

対称キー暗号化

情報の暗号化と復号化に*同じキーが使用される暗号化プロセスは、対称キー暗号化と呼ばれます。

対称暗号システムの研究は、「対称暗号」と呼ばれます。 対称暗号システムは、*秘密鍵暗号システム*とも呼ばれます。

対称キー暗号化方式のいくつかのよく知られた例は次のとおりです-Digital Encryption Standard(DES)、Triple-DES(3DES)、IDEA、およびBLOWFISH。

対称キー暗号化

1970年以前は、すべての暗号システムで対称キー暗号化が採用されていました。 今日でも、その関連性は非常に高く、多くの暗号システムで広く使用されています。 この暗号化が非対称キー暗号化よりも特定の利点があるため、この暗号化が消えることはほとんどありません。

対称鍵暗号化に基づく暗号システムの顕著な特徴は次のとおりです-

  • 対称キー暗号化を使用する人は、情報を交換する前に共通キーを共有する必要があります。
  • システムへの攻撃を防ぐために、キーを定期的に変更することをお勧めします。
  • 通信する当事者間で鍵を交換するには、堅牢なメカニズムが必要です。 キーは定期的に変更する必要があるため、このメカニズムは高価で扱いにくくなります。
  • n 人のグループでは、任意の2人の間で2者間通信を可能にするために、グループに必要なキーの数は n×(n – 1)/2 です。
  • この暗号化のキーの長さ(ビット数)は小さいため、暗号化-復号化のプロセスは非対称キー暗号化よりも高速です。
  • 対称アルゴリズムを実行するために必要なコンピューターシステムの処理能力は低くなります。

対称鍵暗号システムの課題

対称キー暗号化の採用には、2つの制限的な課題があります。

  • キーの確立-通信の前に、送信者と受信者の両方が秘密の対称キーに同意する必要があります。 安全なキー確立メカニズムが必要です。
  • 信頼の問題-送信者と受信者は同じ対称キーを使用するため、送信者と受信者が互いに「信頼」するという暗黙の要件があります。 たとえば、受信者が攻撃者へのキーを失い、送信者に通知されないことがあります。

これらの2つの課題は、現代のコミュニケーションを非常に制限しています。 今日、人々は馴染みのない、信頼できない人と情報を交換する必要があります。 たとえば、オンライン販売者と顧客間の通信。 対称キー暗号化のこれらの制限により、非対称キー暗号化スキームが発生しました。

非対称キー暗号化

  • 異なるキーが情報の暗号化と復号化*に使用される暗号化プロセスは、非対称キー暗号化と呼ばれます。 キーは異なりますが、数学的に関連しているため、暗号文を復号化して平文を取得することは可能です。 プロセスは、次の図に示されています-

非対称キー暗号化

非対称キー暗号化は、通信する人の間で事前共有秘密キーの必要性を克服するために20世紀に発明されました。 この暗号化スキームの顕著な特徴は次のとおりです-

  • このシステムのすべてのユーザーは、異なるキーのペア、*プライベートキー*および*パブリックキー*を持っている必要があります。 これらのキーは数学的に関連しています。1つのキーが暗号化に使用されると、もう1つのキーは暗号文を解読して元のプレーンテキストに戻すことができます。
  • 公開鍵を公開リポジトリに、秘密鍵を十分に保護された秘密として配置する必要があります。 したがって、この暗号化スキームは「公開鍵暗号化」とも呼ばれます。
  • ユーザーの公開鍵と秘密鍵は関連していますが、計算上、1つを見つけることはできません。 これがこのスキームの強みです。
  • _Host1_は_Host2、_にデータを送信する必要がある場合、リポジトリから_Host2_の公開キーを取得し、データを暗号化して送信します。
  • _Host2_は、プライベートキーを使用してプレーンテキストを抽出します。
  • この暗号化のキーの長さ(ビット数)は大きいため、暗号化/復号化のプロセスは対称キー暗号化よりも遅くなります。
  • 非対称アルゴリズムを実行するために必要なコンピューターシステムの処理能力は高くなります。

対称暗号システムは自然な概念です。 対照的に、公開鍵暗号システムは理解するのが非常に困難です。

_暗号化キーと復号化キーはどのように「関連する」ことができますが、暗号化キーから復号化キーを決定することは不可能ですか?_答えは数学的概念にあります。 キーにこのプロパティがある暗号システムを設計することができます。 公開鍵暗号の概念は比較的新しいものです。 対称アルゴリズムよりも少ない公開鍵アルゴリズムが知られています。

公開鍵暗号システムの課題

公開鍵暗号システムには1つの重要な課題があります。ユーザーは、人との通信に使用している公開鍵が本当にその人の公開鍵であり、悪意のある第三者になりすまされていないことを信頼する必要があります。

これは通常、信頼できるサードパーティで構成される公開キー基盤(PKI)によって実現されます。 サードパーティは、公開キーの信頼性を安全に管理および証明します。 第三者が通信者Xに公開鍵を提供するよう要求された場合、第三者は正しい公開鍵を提供することが信頼されます。

サードパーティは、認証、公証、またはその他のプロセスによってユーザーIDについて満足します。Xは唯一の、またはグローバルに一意のXです。 検証済みの公開キーを利用可能にする最も一般的な方法は、信頼できる第三者によってデジタル署名された証明書にそれらを埋め込むことです。

暗号化スキーム間の関係

2種類の暗号システムの基本的な主要特性の概要を以下に示します-

Symmetric Cryptosystems Public Key Cryptosystems
Relation between Keys Same Different, but mathematically related
Encryption Key Symmetric Public
Decryption Key Symmetric Private

両方のシステムの長所と短所のために、実用的な情報セキュリティシステムでは対称キーと公開キー暗号システムがしばしば一緒に使用されます。

暗号システムのKerckhoffの原則

19世紀、オランダの暗号作成者A。 Kerckhoffは、優れた暗号システムの要件を提供しました。 Kerckhoffは、暗号システムは、キー以外のシステムに関するすべてが公の知識であっても安全である必要があると述べました。 暗号システムのためにケルコフによって定義された6つの設計原則は-

  • 暗号システムは、数学的にではないにしても、実際には壊れないものでなければなりません。
  • 暗号システムが侵入者の手に落ちても、システムのセキュリティ侵害につながることはなく、ユーザーの不便を防ぎます。
  • キーは、簡単に伝達、記憶、および変更可能である必要があります。
  • 暗号文は、安全でないチャネルである電信で送信できる必要があります。
  • 暗号化装置とドキュメントは、持ち運び可能で、一人で操作できるものでなければなりません。
  • 最後に、システムは使いやすく、精神的な負担も、観察するための長いルールの知識も必要ありません。

2番目のルールは、現在* Kerckhoffの原則*として知られています。 DES、AESなど、ほぼすべての現代の暗号化アルゴリズムに適用されます。 これらの公開アルゴリズムは、完全に安全であると見なされます。 暗号化されたメッセージのセキュリティは、秘密暗号化キーのセキュリティのみに依存します。

アルゴリズムを秘密にしておくことは、暗号解読に対する重要な障壁として機能する可能性があります。 ただし、アルゴリズムを秘密に保つことは、それらが厳密に制限された円で使用される場合にのみ可能です。

現代では、暗号化はインターネットに接続しているユーザーに対応する必要があります。 そのような場合、秘密のアルゴリズムを使用することは実行不可能であるため、現代の暗号化でアルゴリズムを設計するためのケルコフの原則は不可欠なガイドラインになりました。

暗号システムへの攻撃

現在の時代では、ビジネスだけでなく、人間の生活のほぼすべての側面が情報によって推進されています。 したがって、攻撃などの悪意のあるアクティビティから有用な情報を保護することが不可欠になっています。 一般的に情報がさらされる攻撃の種類を考えてみましょう。

攻撃は通常、攻撃者が実行したアクションに基づいて分類されます。 したがって、攻撃は*パッシブ*または*アクティブ*になります。

パッシブ攻撃

受動的攻撃の主な目標は、*情報への不正アクセス*を取得することです。 たとえば、通信チャネルでの傍受や盗聴などのアクションは、受動的攻撃と見なすことができます。

これらのアクションは、情報に影響を与えたり、通信チャネルを混乱させたりしないため、本質的に受動的です。 受動的攻撃は、多くの場合、「盗む」情報と見なされます。 物理的な商品を盗むことと情報を盗むことの唯一の違いは、データの盗難が依然としてその所有者にそのデータを所有しているということです。 したがって、情報の盗難は所有者に気付かれない可能性があるため、受動的な情報攻撃は商品を盗むよりも危険です。

パッシブ攻撃

積極的な攻撃

積極的な攻撃には、情報に対して何らかのプロセスを実行することにより、何らかの方法で情報を変更することが含まれます。 例えば、

  • 不正な方法で情報を変更します。
  • 情報の意図しない送信または不正な送信を開始する。
  • 発信者名や情報に関連付けられたタイムスタンプなどの認証データの変更
  • データの不正削除。
  • 正当なユーザーの情報へのアクセスの拒否(サービス拒否)。

アクティブな攻撃

暗号化は、上記の攻撃のほとんどを防ぐことができる暗号システムを実装するための多くのツールとテクニックを提供します。

攻撃者の仮定

私たちはこれらのシステムを破壊するために採用された攻撃の種類が続く暗号システムの周りの一般的な環境を見てみましょう-

暗号システムを取り巻く環境

暗号システムへの攻撃の可能性を考慮しながら、暗号システム環境を知る必要があります。 環境に関する攻撃者の仮定と知識が彼の能力を決定します。

暗号化では、セキュリティ環境と攻撃者の能力に関して次の3つの仮定が行われます。

暗号化スキームの詳細

暗号化システムの設計は、次の2つの暗号化アルゴリズムに基づいています-

  • パブリックアルゴリズム-このオプションを使用すると、アルゴリズムのすべての詳細はパブリックドメインにあり、すべての人に知られています。
  • 独自のアルゴリズム-アルゴリズムの詳細は、システム設計者とユーザーのみが知っています。

独自のアルゴリズムの場合、セキュリティはあいまいさによって保証されます。 プライベートアルゴリズムは社内で開発されているため、最も強力なアルゴリズムではない場合があり、脆弱性について広範囲に調査されていない場合があります。

第二に、彼らは閉じたグループ間でのみ通信を許可します。 したがって、それらは、人々が多数の既知または未知のエンティティと通信する現代の通信には適していません。 また、Kerchkhoffの原則によれば、アルゴリズムは_key_にある暗号化の強度で公開されることが望ましいです。

したがって、セキュリティ環境に関する最初の仮定は、*暗号化アルゴリズムが攻撃者に知られている*ことです。

暗号文の可用性

平文が暗号文に暗号化されると、安全でない公開チャネル(電子メールなど)に送信されます。 したがって、攻撃者は、*暗号システムによって生成された暗号文に*アクセスできると明らかに推測できます。

平文と暗号文の可用性

この仮定は、他ほど明白ではありません。 ただし、攻撃者がプレーンテキストおよび対応する暗号テキストにアクセスできる場合があります*。 いくつかのそのような可能な状況は-

  • 攻撃者は送信者に影響を与え、選択した平文を変換し、暗号文を取得します。
  • 受信者は、平文を意図せずに攻撃者に漏らす可能性があります。 攻撃者は、オープンチャネルから収集された対応する暗号文にアクセスできます。
  • 公開キー暗号システムでは、暗号化キーはオープンドメインにあり、潜在的な攻撃者に知られています。 このキーを使用して、彼は対応する平文と暗号文のペアを生成できます。

暗号攻撃

攻撃者の基本的な意図は、暗号システムを破り、暗号文から平文を見つけることです。 アルゴリズムはすでにパブリックドメインにあるため、プレーンテキストを取得するには、攻撃者は秘密の復号化キーを見つけるだけで済みます。

したがって、彼は暗号システムで使用されている秘密鍵を見つけることに最大限の努力を払っています。 攻撃者がキーを特定できると、攻撃されたシステムは_broken_または_compromised_と見なされます。

使用される方法論に基づいて、暗号システムへの攻撃は次のように分類されます-

  • 暗号文のみの攻撃(COA)-この方法では、攻撃者は暗号文のセットにアクセスできます。 彼は、対応する平文にアクセスできません。 COAは、暗号文の特定のセットから対応する平文を決定できる場合に成功すると言われます。 場合によっては、この攻撃から暗号化キーを決定できます。 最新の暗号システムは、暗号文のみの攻撃から保護されています。
  • 既知の平文攻撃(KPA)-この方法では、攻撃者は暗号文の一部の平文を知っています。 タスクは、この情報を使用して暗号文の残りを復号化することです。 これは、キーを決定するか、他の方法で行うことができます。 この攻撃の最良の例は、ブロック暗号に対する「線形暗号解析」です。
  • * Chosen Plaintext Attack(CPA)*-この方法では、攻撃者は選択したテキストを暗号化します。 したがって、彼は自分が選択した暗号文と平文のペアを持っています。 これにより、暗号化キーを決定する彼のタスクが簡素化されます。 この攻撃の例は、ブロック暗号とハッシュ関数に対して適用される「差分暗号化分析」です。 一般的な公開鍵暗号システムであるRSAは、選択平文攻撃に対しても脆弱です。
  • 辞書攻撃-この攻撃には多くの変種があり、そのすべてが「辞書」のコンパイルを伴います。 この攻撃の最も簡単な方法では、攻撃者は、一定期間にわたって学習した暗号文と対応する平文の辞書を作成します。 将来、攻撃者は暗号文を取得すると、辞書を参照して対応する平文を見つけます。
  • ブルートフォースアタック(BFA)-この方法では、攻撃者はすべての可能なキーを試すことでキーを特定しようとします。 キーの長さが8ビットの場合、可能なキーの数は2 ^ 8 ^ = 256です。 攻撃者は暗号文とアルゴリズムを知っているため、256個すべてのキーを1つずつ解読しようとします。 キーが長い場合、攻撃を完了するまでの時間が非常に長くなります。
  • 誕生日攻撃-この攻撃は、ブルートフォース手法の変形です。 暗号化ハッシュ関数に対して使用されます。 クラスの生徒に誕生日について尋ねると、答えは可能な365日の1つになります。 最初の生徒の生年月日が8月3日だと仮定しましょう。 次に、生年月日が8月3日である次の学生を見つけるには、1.25 ^ * ^?√365≈25人の学生に問い合わせる必要があります。 +同様に、ハッシュ関数が64ビットのハッシュ値を生成する場合、可能なハッシュ値は1.8x10 ^ 19 ^です。 異なる入力に対して関数を繰り返し評価することにより、約5.1x10 ^ 9 ^のランダムな入力の後に同じ出力が得られることが期待されます。 +攻撃者が同じハッシュ値を与える2つの異なる入力を見つけることができる場合、それは*衝突*であり、そのハッシュ関数は壊れていると言われます。
  • 中間者攻撃(MIM)-この攻撃のターゲットは、主に通信が行われる前に鍵交換が行われる公開鍵暗号システムです。
  • ホスト_A_はホスト_B_と通信したいので、_B_の公開鍵を要求します。
  • 攻撃者はこのリクエストを傍受し、代わりに自分の公開鍵を送信します。
  • したがって、ホスト_A_がホスト_B_に送信するものは何でも、攻撃者は読み取ることができます。
  • 通信を維持するために、攻撃者は公開鍵で読み取った後、データを再暗号化し、_B_に送信します。
  • 攻撃者は自分の公開鍵を_A_の公開鍵として送信し、_B_が_A_から取得しているように取得します。
  • * Side Channel Attack(SCA)*-このタイプの攻撃は、特定のタイプの暗号システムまたはアルゴリズムに対するものではありません。 代わりに、暗号システムの物理的な実装の弱点を悪用するために起動されます。
  • タイミング攻撃-プロセッサでの計算には、異なる計算が異なる時間を要するという事実を利用します。 このようなタイミングを測定することにより、プロセッサが実行している特定の計算について知ることができます。 たとえば、暗号化に時間がかかる場合は、秘密鍵が長いことを示しています。
  • 電力解析攻撃-これらの攻撃は、基礎となる計算の性質に関する情報を取得するために電力消費量が使用されることを除いて、タイミング攻撃に似ています。
  • 障害分析攻撃-これらの攻撃では、暗号システムにエラーが誘発され、攻撃者は有用な情報の結果出力を調査します。

攻撃の実用性

ここで説明する暗号システムへの攻撃は、アカデミックコミュニティからの攻撃が大半を占めるため、高度にアカデミックです。 実際、多くの学術的な攻撃には、攻撃者の能力だけでなく、環境に関する非常に非現実的な仮定が含まれます。 たとえば、選択された暗号文攻撃では、攻撃者は非現実的な数の意図的に選択された平文と暗号文のペアを必要とします。 完全に実用的ではないかもしれません。

それでも、特に攻撃手法に改善の可能性がある場合、攻撃が存在するという事実が懸念の原因となるはずです。

従来の暗号

第2章では、最新の暗号化の基礎について説明しました。 暗号化は、さまざまな暗号化技術が基本ツールと見なされるツールキットと同等でした。 これらのツールの1つは、暗号化と復号化に使用されるキーが同じである対称キー暗号化です。

この章では、この手法と、さまざまな暗号システムを開発するためのアプリケーションについてさらに説明します。

以前の暗号化システム

さらに進む前に、歴史的な暗号システムに関するいくつかの事実を知る必要があります-

  • これらのシステムはすべて、対称鍵暗号化方式に基づいています。
  • これらのシステムが提供する唯一のセキュリティサービスは、情報の機密性です。
  • デジタルであり、データを2進数として扱う最新のシステムとは異なり、以前のシステムはアルファベットを基本要素として使用していました。

これらの初期の暗号化システムは、暗号とも呼ばれます。 一般に、暗号は、暗号化と対応する復号化の両方を実行するための単なる一連のステップ(アルゴリズム)です。

シーザー暗号

それは、平文の各文字が別の文字に置き換えられて暗号文を形成するモノアルファベット暗号です。 これは、置換暗号スキームの最も単純な形式です。

この暗号システムは、一般に Shift Cipher と呼ばれます。 概念は、各アルファベットを0〜25の固定数だけ「シフト」された別のアルファベットに置き換えることです。

このタイプのスキームでは、送信者と受信者の両方がアルファベットをシフトするための「秘密シフト番号」に同意します。 0〜25のこの数値が暗号化のキーになります。

「シフト3」が使用される場合、「シーザー暗号」という名前がシフト暗号を表すために時々使用されます。

シフト暗号のプロセス

  • プレーンテキスト文字を暗号化するために、送信者はスライドルーラーをプレーンテキスト文字の最初のセットの下に配置し、シークレットシフトの位置の数だけ左にスライドさせます。
  • 次に、平文の文字は、下にあるスライド式定規の暗号文の文字に暗号化されます。 このプロセスの結果は、3つのポジションの合意されたシフトについて次の図に示されています。 この場合、プレーンテキスト「チュートリアル」は暗号化テキスト「WXWRULDO」に暗号化されます。 以下は、Shift 3の暗号文アルファベットです-

シフト暗号のプロセス

  • 暗号文を受信すると、秘密のシフトも知っている受信者は、スライディング定規を暗号テキストのアルファベットの下に置き、合意されたシフト番号(この場合は3)で右にスライドします。
  • 次に、暗号化された文字を、その下のスライド式定規の平文の文字に置き換えます。 したがって、暗号文「WXWRULDO」は「チュートリアル」に復号化されます。 Shift 3でエンコードされたメッセージを復号化するには、以下に示すように「-3」のShiftを使用してプレーンテキストアルファベットを生成します-

Shift Cipher1のプロセス

セキュリティ値

Caesar Cipherは、試せる鍵が26個しかないため、*安全な*暗号システムではありません。 攻撃者は、利用可能な限られたコンピューティングリソースで徹底的なキー検索を実行できます。

単純な置換暗号

これは、Caesar Cipherの改善です。 このスキームでは、アルファベットをある数だけシフトする代わりに、アルファベットの文字の順列を使用します。

たとえば、A.B…..Y.ZおよびZ.Y……B.Aは、アルファベットのすべての文字の2つの明らかな順列です。 順列は、ごちゃ混ぜになったアルファベットのセットにすぎません。

アルファベットが26文字の場合、可能な順列は26です! (26の係数)は4x10 ^ 26 ^に等しい。 送信者と受信者は、これらの可能な順列のいずれかを暗号文アルファベットとして選択できます。 この順列は、スキームの秘密鍵です。

単純な置換暗号のプロセス

  • アルファベットA、B、C、…​、Zを自然な順序で記述します。
  • 送信者と受信者は、アルファベットの文字のランダムに選択された順列を決定します。
  • 自然順序アルファベットの下に、アルファベット文字の選択された順列を書きます。 暗号化の場合、送信者は、テーブル内のその直下にある置換文字を置き換えることにより、各プレーンテキスト文字を置き換えます。 このプロセスを次の図に示します。 この例では、選択された順列はK、D、G、…​、Oです。 平文の「ポイント」は「MJBXZ」に暗号化されます。

暗号文のアルファベット順が暗号文のアルファベット順です。

単純な置換暗号

  • 暗号文を受信すると、受信者はランダムに選択された順列も知っているため、一番下の行の各暗号文文字を一番上の行の対応する平文文字に置き換えます。 暗号文「MJBXZ」は「point」に復号化されます。

セキュリティ値

単純な置換暗号は、シーザー暗号よりも大幅に改善されています。 可能なキーの数は多く(26!)、最新のコンピューティングシステムでさえ、ブルートフォース攻撃を快適に開始してシステムを破壊するほど強力ではありません。 ただし、Simple Substitution Cipherの設計は単純であり、明白な順列を選択すると、この暗号システムは簡単に壊れる可能性があるなど、欠陥を設計する傾向があります。

モノアルファベットおよびポリアルファベット暗号

モノアルファベット暗号は、特定のキーに対して、各プレーンアルファベットの暗号アルファベットが暗号化プロセス全体で固定される置換暗号です。 たとえば、「A」が「D」として暗号化されている場合、その平文での出現回数に関係なく、「A」は常に「D」に暗号化されます。

この章で前述したすべての置換暗号は、単一アルファベットです。これらの暗号は、暗号解読の影響を非常に受けやすくなっています。

Polyalphabetic Cipherは、暗号化プロセス中に場所によってプレーンアルファベットの暗号アルファベットが異なる可能性がある置換暗号です。 次の2つの例、* playfairとVigenere Cipherは多アルファベット暗号です*。

プレイフェア暗号

このスキームでは、単純な置換暗号の場合のように単一の文字ではなく、文字のペアが暗号化されます。

プレイフェア暗号では、最初にキーテーブルが作成されます。 キーテーブルは、プレーンテキストを暗号化するためのキーとして機能するアルファベットの5×5グリッドです。 25個のアルファベットはそれぞれ一意である必要があり、26個ではなく25個のアルファベットしか必要ないため、アルファベットの1文字(通常はJ)はテーブルから省略されています。 平文にJが含まれている場合、Iに置き換えられます。

送信者と受信者は、特定のキーを「自殺」と言います。 キーテーブルでは、テーブルの最初の文字(左から右へ)はフレーズであり、重複する文字は含まれません。 テーブルの残りの部分には、アルファベットの残りの文字が自然な順序で入力されます。 キーテーブルは次のように機能します-

キーテーブル

プレイフェア暗号のプロセス

  • まず、プレーンテキストメッセージは2つの文字(ダイグラフ)のペアに分割されます。 文字の数が奇数の場合、最後の文字にZが追加されます。 「hide money」というメッセージを暗号化したいとしましょう。 それは次のように書かれます- + HI DE MO NE YZ
  • 暗号化のルールは-
  • 両方の文字が同じ列にある場合は、それぞれの下の文字を取ります(下にある場合は上に戻ります)
  • 両方の文字が同じ行にある場合、各文字の右側の文字を取ります(右端の場合は左側に戻ります)
  • 上記の2つの規則のいずれも当てはまらない場合は、2つの文字で長方形を形成し、長方形の水平方向の反対側の角にある文字を取ります。

Playfair Cipher

これらのルールを使用すると、「チュートリアル」のキーを持つ「お金を隠す」の暗号化の結果は-

QC EF NU MF ZV

Playfair暗号の復号化は、同じプロセスを逆に実行するのと同じくらい簡単です。 受信者は同じキーを持ち、同じキーテーブルを作成し、そのキーを使用して作成されたメッセージを復号化できます。

セキュリティ値

また、置換暗号であり、単純な置換暗号に比べて破ることが困難です。 置換暗号の場合のように、暗号解読はPlayfair暗号でも同様に可能ですが、26の異なる可能性のあるアルファベットの代わりに625の可能性のあるペアの文字(25x25のアルファベット)に対してです。

Playfair暗号は、使用が迅速で特別な機器を必要としないため、主に重要ではあるが重要ではない秘密を保護するために主に使用されました。

Vigenere Cipher

この暗号方式では、テキスト文字列(たとえば、単語)をキーとして使用します。この文字列は、プレーンテキストで多くのシフトを行うために使用されます。

たとえば、キーが「ポイント」であると仮定します。 キーの各アルファベットは、それぞれの数値に変換されます。この場合、

p→16、o→15、i→9、n→14、t→20

したがって、キーは16 15 9 14 20です。

Vigenere暗号のプロセス

  • 送信者と受信者がキーを決定します。 「ポイント」が鍵だと言います。 このキーの数値表現は「16 15 9 14 20」です。
  • 送信者は、「南東からの攻撃」などのメッセージを暗号化したいと考えています。 彼は次のように平文と数字キーを配置します-

Vigenere Cipher

  • 彼は今、以下に示すように暗号文を作成するために、その下に書かれた数字で各平文アルファベットをシフトします

暗号文の作成

  • ここでは、各平文文字が異なる量だけシフトされています。その量はキーによって決定されます。 キーはメッセージのサイズ以下でなければなりません。
  • 復号化の場合、受信者は同じキーを使用し、受信した暗号文を逆順でシフトして平文を取得します。

逆順の暗号文

セキュリティ値

Vigenere Cipherは、標準のCaesar暗号を調整して、暗号文の暗号解析の有効性を減らし、暗号システムをより堅牢にすることで設計されました。 通常のシーザー暗号よりも大幅に安全です。

歴史上、政治的および軍事的機密情報を保護するために定期的に使用されていました。 暗号解読に難易度があったため、「解読不可能な暗号」と呼ばれていました。

Vigenere Cipherのバリアント

Vigenere暗号の2つの特別なケースがあります-

  • キーワードの長さは、原文のメッセージと同じです。 このケースは Vernam Cipher と呼ばれます。 通常のVigenere暗号よりも安全です。
  • Vigenere暗号は、*ワンタイムパッド*と呼ばれる完全な秘密を備えた暗号システムになります。

ワンタイムパッド

状況は-

  • キーワードの長さは、平文の長さと同じです。
  • キーワードは、ランダムに生成されたアルファベットの文字列です。
  • キーワードは1回だけ使用されます。

セキュリティ値

Shift暗号とワンタイムパッドを比較してみましょう。

シフト暗号-簡単に破る

シフト暗号の場合、メッセージ全体が1〜25の間でシフトする可能性があります。 これは非常に小さいサイズであり、ブルートフォースが非常に簡単です。 ただし、各文字に1〜26の個別のシフトがあるため、可能なキーはメッセージに対して指数関数的に増加します。

ワンタイムパッド-壊れない

ワンタイムパッドで「ポイント」という名前を暗号化します。 5文字のテキストです。 暗号文をブルートフォースで解読するには、キーのすべての可能性を試して、(26 x 26 x 26 x 26 x 26)= 26 ^ 5 ^ = 11881376回計算する必要があります。 これは、アルファベットが5つあるメッセージの場合です。 したがって、メッセージが長くなると、アルファベットが追加されるたびに計算が指数関数的に増加します。 これにより、総当たりで暗号文を解読することは計算上不可能になります。

転置暗号

これは別のタイプの暗号で、プレーンテキスト内のアルファベットの順序が再配置されて暗号テキストが作成されます。 実際のプレーンテキストのアルファベットは置き換えられません。

一例は、プレーンテキストが特定のアルファベット幅で水平に書き込まれる「単純な列転置」暗号です。 次に、暗号文は図のように垂直方向に読み取られます。

たとえば、平文は「黄金の像は11番目の洞窟にあります」であり、選択される秘密のランダムキーは「5」です。 このテキストを、キー値に等しい列数で表内で水平に配置します。 結果のテキストを以下に示します。

転置暗号

暗号文は、最初の列から最後の列まで垂直に下向きに列を読み取ることによって取得されます。 暗号文は「gnuneaoseenvltiltedasehetivc」です。

復号化するために、受信者は同様のテーブルを準備します。 列の数はキー番号と同じです。 行数は、暗号文アルファベットの合計数をキー値で除算し、商を次の整数値に丸めることによって取得されます。

次に、受信者は受信した暗号文を垂直方向に左から右の列に書き込みます。 テキストを取得するために、彼は水平方向に左から右、上から下の行を読みます。

最新の対称キー暗号化

デジタルデータは、アルファベットとは異なり、2進数(ビット)の文字列で表されます。 現代の暗号システムでは、このバイナリ文字列を処理して別のバイナリ文字列に変換する必要があります。 これらのバイナリ文字列が処理される方法に基づいて、対称暗号化スキームはに分類することができます-

ブロック暗号

このスキームでは、プレーンバイナリテキストは一度にビットのブロック(グループ)で処理されます。つまり 平文ビットのブロックが選択され、このブロックに対して一連の操作が実行されて、暗号文ビットのブロックが生成されます。 ブロック内のビット数は固定されています。 たとえば、スキームDESおよびAESのブロックサイズはそれぞれ64および128です。

ストリーム暗号

このスキームでは、平文は一度に1ビット処理されます。 1ビットの平文が取得され、一連の操作が実行されて1ビットの暗号文が生成されます。 技術的には、ストリーム暗号は1ビットのブロックサイズのブロック暗号です。

ブロック暗号とストリーム暗号

ブロック暗号

ブロック暗号の基本的なスキームは次のように描かれています-

ブロック暗号

ブロック暗号は、平文ビットのブロックを受け取り、一般に同じサイズの暗号文ビットのブロックを生成します。 ブロックのサイズは、指定されたスキームで固定されています。 ブロックサイズの選択は、暗号化スキームの強度に直接影響しません。 暗号の強度は、キーの長さによって異なります。

ブロックサイズ

任意のサイズのブロックを使用できますが、ブロックのサイズを選択する際には次の点に留意してください。

  • 非常に小さなブロックサイズを避ける-ブロックサイズがmビットだとしましょう。 この場合、可能な平文ビットの組み合わせは2 ^ m ^です。 攻撃者が以前に送信された暗号文ブロックに対応するプレーンテキストブロックを発見した場合、攻撃者はその暗号化キーを使用して送信された平文/暗号文ペアの辞書を構築することにより、「辞書攻撃」のタイプを起動できます。 ブロックサイズを大きくすると、辞書を大きくする必要があるため、攻撃が難しくなります。
  • 非常に大きなブロックサイズを持たない-ブロックサイズが非常に大きいと、暗号の操作が非効率的になります。 このような平文は、暗号化する前にパディングする必要があります。
  • * 8ビットの倍数*-ほとんどのコンピュータープロセッサが8ビットの倍数でデータを処理するため、実装が容易であるため、優先ブロックサイズは8の倍数です。

ブロック暗号のパディング

ブロック暗号は、固定サイズ(64ビットなど)のブロックを処理します。 平文の長さは、ほとんどブロックサイズの倍数ではありません。 たとえば、150ビットの平文は、それぞれが22ビットのバランスの3番目のブロックを持つ64ビットの2つのブロックを提供します。 最終ブロックの長さがスキームのブロックサイズに等しくなるように、ビットの最後のブロックに冗長情報を埋め込む必要があります。 この例では、残りの22ビットに完全なブロックを提供するために42ビットの冗長ビットを追加する必要があります。 最後のブロックにビットを追加するプロセスは、 padding と呼ばれます。

パディングが多すぎると、システムの効率が低下します。 また、パディングが常に同じビットで行われる場合、パディングによりシステムが安全でない場合があります。

ブロック暗号スキーム

膨大な数のブロック暗号方式が使用されています。 それらの多くは公に知られています。 最も人気のある有名なブロック暗号を以下にリストします。

  • デジタル暗号化標準(DES)-1990年代の一般的なブロック暗号。 現在、主に小さなキーサイズのため、「壊れた」ブロック暗号と見なされています。
  • *トリプルDES *-繰り返されるDESアプリケーションに基づくバリアントスキームです。 依然として尊敬されているブロック暗号ですが、利用可能な新しいより高速なブロック暗号と比較すると非効率です。
  • * Advanced Encryption Standard(AES)-AES設計コンペで優勝したのは、暗号化アルゴリズム *Rijndael に基づく比較的新しいブロック暗号です。
  • IDEA -これは、ブロックサイズが64でキーサイズが128ビットの十分に強力なブロック暗号です。 Pretty Good Privacy(PGP)プロトコルの初期バージョンを含む、多くのアプリケーションがIDEA暗号化を使用しています。 IDEAスキームの使用は、特許の問題により採用が制限されています。
  • Twofish -このブロック暗号方式では、128ビットのブロックサイズと可変長のキーを使用します。 AESファイナリストの1つでした。 これは、64ビットのブロックサイズを持つ以前のブロック暗号Blowfishに基づいています。
  • Serpent -ブロックサイズが128ビットで、キーの長さが128、192、または256ビットのブロック暗号。これもAES競争のファイナリストでした。 低速ですが、他のブロック暗号よりも安全な設計です。

次のセクションでは、最初にブロック暗号のモデルについて説明し、次に最も影響力のある最新のブロック暗号の2つであるDESおよびAESについて説明します。

Feistelブロック暗号

Feistel Cipherは、ブロック暗号の特定のスキームではありません。 これは、多くの異なるブロック暗号が派生する設計モデルです。 DESはFeistel Cipherの一例です。 Feistel暗号構造に基づく暗号化システムは、暗号化と復号化の両方に同じアルゴリズムを使用します。

暗号化プロセス

暗号化プロセスは、プレーンテキストの複数ラウンドの処理で構成されるFeistel構造を使用します。各ラウンドは、「置換」ステップとそれに続く置換ステップで構成されます。

Feistel構造は、次の図に示されています-

Feistel Structure

  • 各ラウンドへの入力ブロックは、左半分と右半分をLとRで表すことができる2つの半分に分割されます。
  • 各ラウンドで、ブロックの右半分、Rは変更されずに通過します。 ただし、左半分のLは、Rと暗号化キーに依存する操作を実行します。 まず、キーKとRの2つの入力を受け取る暗号化関数「f」を適用します。 この関数は、出力f(R、K)を生成します。 次に、数学関数の出力をLとXORします。
  • DESなどのFeistel暗号の実際の実装では、各ラウンドで暗号化キー全体を使用する代わりに、暗号化キーからラウンド依存キー(サブキー)が派生します。 つまり、これらのサブキーはすべて元のキーに関連していますが、各ラウンドでは異なるキーが使用されます。
  • 各ラウンドの最後の置換ステップは、変更されたLと変更されていないRを交換します。 したがって、次のラウンドのLは現在のラウンドのRになります。 そして、次のラウンドのRは、現在のラウンドの出力Lです。
  • 上記の置換と置換のステップは「ラウンド」を形成します。 ラウンド数は、アルゴリズム設計によって指定されます。
  • 最後のラウンドが完了すると、2つのサブブロック「R」と「L」がこの順序で連結され、暗号文ブロックが形成されます。

Feistel Cipherの設計で難しい部分は、ラウンド関数「f」の選択です。 破壊不可能なスキームであるためには、この関数には、議論の範囲を超えたいくつかの重要なプロパティが必要です。

復号化プロセス

Feistel暗号の復号化プロセスはほぼ同じです。 平文のブロックで開始する代わりに、暗号文ブロックはFeistel構造の開始点に送られ、その後のプロセスは、与えられた図で説明したものとまったく同じです。

このプロセスはほとんど同じであり、まったく同じではないと言われています。 復号化の場合、唯一の違いは、暗号化で使用されるサブキーが逆の順序で使用されることです。

Feistel Cipherの最後のステップでの「L」と「R」の最終的な交換は不可欠です。 これらが交換されない場合、結果の暗号文は同じアルゴリズムを使用して復号化できませんでした。

ラウンド数

Feistel Cipherで使用されるラウンドの数は、システムに必要なセキュリティによって異なります。 ラウンドの数が多いほど、システムの安全性が高まります。 しかし同時に、ラウンド数が増えると、暗号化および復号化プロセスの効率が遅くなります。 したがって、システムのラウンド数は、効率とセキュリティのトレードオフに依存します。

データ暗号化標準

Data Encryption Standard(DES)は、米国国立標準技術研究所(NIST)によって公開された対称キーブロック暗号です。

DESはFeistel Cipherの実装です。 16ラウンドFeistel構造を使用します。 ブロックサイズは64ビットです。 キーの長さは64ビットですが、DESの有効なキーの長さは56ビットです。これは、キーの64ビットのうち8ビットが暗号化アルゴリズムによって使用されないためです(チェックビットとしてのみ機能)。 DESの一般的な構造は、次の図に示されています-

DES構造

DESはFeistel Cipherに基づいているため、DESを指定するために必要なものはすべて-

  • ラウンド関数
  • キースケジュール
  • 追加の処理-初期および最終の順列

初期および最終順列

最初と最後の順列は、互いに逆の直線の順列ボックス(Pボックス)です。 DESには暗号化の意味はありません。 初期および最終の順列は次のように示されています-

初期および最終順列

ラウンド関数

この暗号の中心はDES関数_f_です。 DES関数は、右端の32ビットに48ビットキーを適用して、32ビット出力を生成します。

ラウンド関数

  • 拡張置換ボックス-右の入力は32ビットであり、ラウンドキーは48ビットなので、最初に右の入力を48ビットに拡張する必要があります。 順列ロジックは、次の図にグラフィカルに描かれています-

置換ロジック

  • グラフィカルに描かれた置換ロジックは、一般的に示されるように示されたDES仕様の表として説明されています-

DES仕様

  • * XOR(ホワイトナー)。*-拡張順列の後、DESは拡張された右セクションとラウンドキーでXOR演算を実行します。 ラウンドキーは、この操作でのみ使用されます。
  • 置換ボックス-Sボックスは実際のミキシング(混乱)を実行します。 DESは8個のSボックスを使用し、各ボックスには6ビット入力と4ビット出力があります。 次の図を参照してください-

S-boxes

  • Sボックスのルールは以下に示されています-

S-boxルール

  • 合計8つのS-boxテーブルがあります。 8つのSボックスすべての出力は、32ビットセクションに結合されます。
  • ストレート順列-S-ボックスの32ビット出力は、次の図に示すルールでストレート順列になります。

ストレート順列

キー生成

ラウンドキージェネレーターは、56ビット暗号キーから16個の48ビットキーを作成します。 キー生成のプロセスは、次の図に示されています-

キー生成

パリティドロップ、シフト、および圧縮Pボックスのロジックは、DESの説明に記載されています。

DES分析

DESは、ブロック暗号の望ましい特性の両方を満たします。 これらの2つの特性により、暗号は非常に強力になります。

  • アバランシェ効果-平文の小さな変更は、暗号文の非常に大きな変更をもたらします。
  • 完全性-暗号文の各ビットは、平文の多くのビットに依存しています。

過去数年間、選択されたキーが弱いキーである場合、暗号解読によりDESにいくつかの弱点が見つかりました。 これらのキーは使用しないでください。

DESは、非常に適切に設計されたブロック暗号であることが証明されています。 完全なキー検索以外のDESに対する重大な暗号解読攻撃はありません。

トリプルDES

1990年以降のDESに対する徹底的なキー検索の速度は、DESのユーザーに不快感を与え始めました。 ただし、ユーザーはDESを置き換えたくありませんでした。大規模なセキュリティアーキテクチャに広く採用され、組み込まれている暗号化アルゴリズムを変更するには膨大な時間と費用がかかるためです。

実用的なアプローチは、DESを完全に放棄することではなく、DESの使用方法を変更することでした。 これにより、トリプルDES(3DESとしても知られる)のスキームが変更されました。

ちなみに、3キートリプルDES(3TDES)と2キートリプルDES(2TDES)として知られるトリプルDESの2つのバリアントがあります。

3-KEYトリプルDES

3TDESを使用する前に、ユーザーは3つの異なるDESキーK〜1〜、K〜2〜およびK〜3〜で構成される3TDESキーKを最初に生成して配布します。 つまり、実際の3TDESキーの長さは3×56 = 168ビットです。 暗号化スキームは次のように示されています-

暗号化スキーム

暗号化/復号化プロセスは次のとおりです-

  • キーK〜1〜を使用して、単一のDESを使用してプレーンテキストブロックを暗号化します。
  • 次に、キーK〜2〜を使用して単一のDESを使用して、ステップ1の出力を復号化します。
  • 最後に、鍵K〜3〜を使用して単一のDESを使用してステップ2の出力を暗号化します。
  • ステップ3の出力は暗号文です。
  • 暗号文の復号化は逆のプロセスです。 ユーザーはまずK〜3〜を使用して復号化し、次にK〜2〜で暗号化し、最後にK〜1〜で復号化します。

暗号化-復号化-暗号化プロセスとしてのトリプルDESのこの設計により、K〜1、〜K〜2、〜およびK〜3〜を同じ値。 これにより、DESとの下位互換性が提供されます。

Triple DES(2TDES)の2番目のバリアントは、K〜3〜がK〜1〜に置き換えられていることを除いて、3TDESと同じです。 つまり、ユーザーはキーK〜1、〜でプレーンテキストブロックを暗号化し、次にキーK〜2、〜で復号化し、最後にK〜1〜で再び暗号化します。 したがって、2TDESのキーの長さは112ビットです。

トリプルDESシステムは、シングルDESよりもはるかに安全ですが、これらはシングルDESを使用した暗号化よりも明らかに遅いプロセスです。

高度な暗号化標準

現在遭遇する可能性が高い、より一般的で広く採用されている対称暗号化アルゴリズムは、Advanced Encryption Standard(AES)です。 これは、トリプルDESより少なくとも6倍高速です。

鍵サイズが小さすぎるため、DESの交換が必要でした。 計算能力の向上により、徹底的なキー検索攻撃に対して脆弱であると見なされました。 トリプルDESはこの欠点を克服するために設計されましたが、遅いことがわかりました。

AESの機能は次のとおりです-

  • 対称キー対称ブロック暗号
  • 128ビットデータ、128/192/256ビットキー
  • Triple-DESよりも強力で高速
  • 完全な仕様と設計の詳細を提供する
  • CおよびJavaで実装可能なソ​​フトウェア

AESの操作

AESは、Feistel暗号ではなく反復暗号です。 「置換-置換ネットワーク」に基づいています。 これは一連のリンクされた操作で構成され、その一部は入力を特定の出力(置換)に置き換えることを含み、その他はビットをシャッフルする(順列)ことを含みます。

興味深いことに、AESはすべての計算をビットではなくバイトで実行します。 したがって、AESはプレーンテキストブロックの128ビットを16バイトとして扱います。 これらの16バイトは、行列として処理するために4列4行に配置されています-

DESとは異なり、AESのラウンド数は可変であり、キーの長さに依存します。 AESは、128ビットキーに10ラウンド、192ビットキーに12ラウンド、256ビットキーに14ラウンドを使用します。 これらの各ラウンドでは、元のAESキーから計算された異なる128ビットのラウンドキーが使用されます。

AES構造の概略図は、次の図に示されています-

AES構造

暗号化プロセス

ここでは、AES暗号化の一般的なラウンドの説明に限定します。 各ラウンドは4つのサブプロセスで構成されます。 最初のラウンドプロセスは以下に描かれています-

最初のラウンドプロセス

バイト置換(SubBytes)

16個の入力バイトは、設計で指定された固定テーブル(Sボックス)を検索することで置き換えられます。 結果は、4行4列のマトリックスになります。

シフトロー

マトリックスの4行はそれぞれ左にシフトされます。 「落ちる」エントリはすべて、行の右側に再挿入されます。 シフトは次のように実行されます-

  • 最初の行はシフトされません。
  • 2番目の行は、1(バイト)だけ左にシフトされます。
  • 3番目の行は2つ左にシフトされます。
  • 4番目の行は、左に3桁シフトします。
  • 結果は、同じ16バイトで構成されているが、互いに対してシフトされた新しいマトリックスです。

MixColumns

4バイトの各列は、特別な数学関数を使用して変換されるようになりました。 この関数は、1つの列の4バイトを入力として受け取り、元の列を置き換える4つの完全に新しいバイトを出力します。 結果は、16個の新しいバイトで構成される別の新しいマトリックスです。 このステップは最終ラウンドでは実行されないことに注意してください。

Addroundkey

マトリックスの16バイトは128ビットと見なされ、ラウンドキーの128ビットとXORされます。 これが最後のラウンドの場合、出力は暗号文です。 それ以外の場合、結果の128ビットは16バイトとして解釈され、別の同様のラウンドを開始します。

復号化プロセス

AES暗号テキストの復号化プロセスは、逆順の暗号化プロセスに似ています。 各ラウンドは、逆の順序で行われる4つのプロセスで構成されています-

  • ラウンドキーを追加
  • ミックスカラム
  • 行をシフト
  • バイト置換

Feistel Cipherとは異なり、各ラウンドのサブプロセスは逆の方法であるため、暗号化アルゴリズムと復号化アルゴリズムは非常に密接に関連していますが、個別に実装する必要があります。

AES分析

現在の暗号化では、AESはハードウェアとソフトウェアの両方で広く採用およびサポートされています。 現在まで、AESに対する実用的な暗号解読攻撃は発見されていません。 さらに、AESにはキーの長さの柔軟性が組み込まれているため、完全なキー検索を実行する能力の進歩に対してある程度「将来を保証」できます。

ただし、DESと同様に、AESセキュリティは、正しく実装され、適切なキー管理が採用されている場合にのみ保証されます。

ブロック暗号操作モード

この章では、ブロック暗号のさまざまな動作モードについて説明します。 これらは、汎用ブロック暗号の手続き規則です。 興味深いことに、さまざまなモードにより、さまざまなプロパティが実現され、基盤となるブロック暗号のセキュリティが強化されます。

ブロック暗号は、固定サイズのデータ​​ブロックを処理します。 通常、メッセージのサイズはブロックサイズよりも大きくなります。 したがって、長いメッセージは一連の連続したメッセージブロックに分割され、暗号はこれらのブロックに対して1つずつ動作します。

電子コードブック(ECB)モード

このモードは、連続してリストされた一連のメッセージブロックを処理する最も簡単な方法です。

操作

  • ユーザーはプレーンテキストの最初のブロックを取得し、キーで暗号化して暗号テキストの最初のブロックを生成します。
  • 次に、彼はプレーンテキストの2番目のブロックを取得し、同じキーなどを使用して同じプロセスに従います。

ECBモードは*決定論的*です。つまり、プレーンテキストブロックP1、P2、…、Pmが同じキーで2回暗号化される場合、出力暗号テキストブロックは同じになります。

実際、特定のキーに対して、技術的には、可能なすべてのプレーンテキストブロックの暗号テキストのコードブックを作成できます。 暗号化では、必要なプレーンテキストのみを検索し、対応する暗号文を選択する必要があります。 したがって、操作はコードブック内のコードワードの割り当てに類似しており、したがって公式名-電子コードブック操作モード(ECB)を取得します。 次のように示されています-

ECBモード

ECBモードの分析

実際には、アプリケーションデータには通常、推測可能な部分的な情報が含まれています。 たとえば、給与の範囲を推測できます。 ECBからの暗号文により、平文メッセージが予測可能な範囲内にある場合、攻撃者は試行錯誤によって平文を推測できます。

たとえば、ECBモードからの暗号文が給与数値を暗号化することがわかっている場合、少数の試行により攻撃者が数値を回復できます。 一般に、決定論的暗号を使用することは望まないため、ほとんどのアプリケーションではECBモードを使用しないでください。

暗号ブロック連鎖(CBC)モード

CBC操作モードは、暗号文を生成するためのメッセージ依存性を提供し、システムを非決定的にします。

操作

CBCモードの動作を次の図に示します。 手順は次のとおりです-

  • 最上位レジスタにnビットの初期化ベクトル(IV)をロードします。
  • 最上位レジスタのデータ値とnビットのプレーンテキストブロックをXORします。
  • キーKを使用して、基礎となるブロック暗号でXOR操作の結果を暗号化します。
  • 暗号文ブロックを最上位レジスタに送り、すべての平文ブロックが処理されるまで操作を続けます。
  • 復号化の場合、IVデータは、最初に暗号化解除された暗号文ブロックとXORされます。 最初の暗号文ブロックは、次の暗号文ブロックを復号化するためのIVを置換するレジスタにも送られます。

CBCモード

CBCモードの分析

CBCモードでは、現在の平文ブロックが前の暗号文ブロックに追加され、結果がキーで暗号化されます。 したがって、復号化は逆のプロセスであり、現在の暗号文を復号化し、その結果に以前の暗号文ブロックを追加することを伴います。

ECBに対するCBCの利点は、IVを変更すると、同一のメッセージに対して異なる暗号文が作成されることです。 欠点の側面では、チェーン効果のため、復号化中に伝送エラーがさらにいくつかのブロックに伝播されます。

CBCモードは、よく知られたデータ発信元認証メカニズムの基礎を形成することに言及する価値があります。 したがって、対称暗号化とデータ発信元認証の両方を必要とするアプリケーションには利点があります。

暗号フィードバック(CFB)モード

このモードでは、各暗号文ブロックは次の平文ブロックを暗号化するために暗号化プロセスに「フィードバック」されます。

操作

CFBモードの動作を次の図に示します。 たとえば、現在のシステムでは、メッセージブロックのサイズは「s」ビットで、1 <s <nです。 CFBモードでは、初期ランダムnビット入力ブロックとして初期化ベクトル(IV)が必要です。 IVは秘密である必要はありません。 操作の手順は次のとおりです-

  • トップレジスタにIVをロードします。
  • キーKを使用して、基礎となるブロック暗号でトップレジスタのデータ値を暗号化します。
  • 暗号化プロセスの出力の「s」個の最上位ビット(左ビット)のみを取り、「s」ビットのプレーンテキストメッセージブロックとXORして、暗号文ブロックを生成します。
  • 既に存在するデータを左にシフトすることにより、暗号文ブロックを最上位レジスタに送り、すべての平文ブロックが処理されるまで操作を続けます。
  • 基本的に、前の暗号文ブロックはキーで暗号化され、結果は現在の平文ブロックとXORされます。
  • 復号化についても同様の手順に従います。 事前に決定されたIVは、復号化の開始時に最初にロードされます。

CFBモード

CFBモードの分析

CFBモードはECBモードとは大きく異なります。特定のプレーンテキストブロックに対応する暗号文は、そのプレーンテキストブロックとキーだけでなく、以前の暗号文ブロックにも依存します。 つまり、暗号文ブロックはメッセージに依存しています。

CFBには非常に奇妙な機能があります。 このモードでは、ユーザーはブロック暗号の暗号化プロセスのみを使用して暗号文を復号化します。 基礎となるブロック暗号の復号化アルゴリズムは使用されません。

明らかに、CFBモードはブロック暗号をストリーム暗号のタイプに変換しています。 暗号化アルゴリズムは、最下位レジスタに配置されるキーストリームを生成するキーストリームジェネレータとして使用されます。 このキーストリームは、ストリーム暗号の場合のようにプレーンテキストとXORされます。

ブロック暗号をストリーム暗号に変換することにより、CFBモードはブロック暗号の有利な特性を保持しながら、ストリーム暗号の有利な特性の一部を提供します。

反対に、ブロックの変更により伝送エラーが伝播します。

出力フィードバック(OFB)モード

基礎となるブロック暗号から連続する出力ブロックをフィードバックします。 これらのフィードバックブロックは、CFBモードの場合のようにキーストリームジェネレーターとして機能する暗号化アルゴリズムに供給するビット列を提供します。

生成されたキーストリームは、プレーンテキストブロックとXORされます。 OFBモードでは、初期ランダムnビット入力ブロックとしてIVが必要です。 IVは秘密である必要はありません。

操作は、次の図に示されています-

OFBモード

カウンター(CTR)モード

フィードバックなしのCFBモードのカウンターベースバージョンと見なすことができます。 このモードでは、送信者と受信者の両方が信頼できるカウンターにアクセスする必要があります。このカウンターは、暗号文ブロックが交換されるたびに新しい共有値を計算します。 この共有カウンターは必ずしも秘密の値ではありませんが、両方の側でカウンターの同期を維持する必要があるという課題があります。

操作

次の図に、CTRモードでの暗号化と復号化の両方を示します。 操作の手順は次のとおりです-

  • 一番上のレジスタに初期カウンタ値をロードすることは、送信者と受信者の両方で同じです。 CFB(およびCBC)モードのIVと同じ役割を果たします。
  • キーを使用してカウンタの内容を暗号化し、結果を最下位レジスタに配置します。
  • 最初のプレーンテキストブロックP1を取得し、これをボトムレジスタの内容とXORします。 この結果はC1です。 C1を受信者に送信し、カウンターを更新します。 カウンターの更新は、CFBモードの暗号テキストフィードバックを置き換えます。
  • 最後の平文ブロックが暗号化されるまで、この方法で続けます。
  • 復号化は逆のプロセスです。 暗号文ブロックは、カウンター値の暗号化されたコンテンツの出力とXORされます。 暗号化の場合と同様に、各暗号文ブロックカウンターの復号化後に更新されます。

CTRモード

カウンターモードの分析

メッセージに依存関係がないため、暗号文ブロックは以前の平文ブロックに依存しません。

CFBモードと同様に、CTRモードにはブロック暗号の復号化プロセスは含まれません。 これは、CTRモードが実際にブロック暗号を使用してキーストリームを生成し、XOR機能を使用して暗号化されているためです。 つまり、CTRモードでは、ブロック暗号もストリーム暗号に変換されます。

CTRモードの重大な欠点は、送信側と受信側に同期カウンタが必要なことです。 同期が失われると、プレーンテキストが正しく復元されなくなります。

ただし、CTRモードにはCFBモードのほぼすべての利点があります。 また、伝送エラーをまったく伝播しません。

公開鍵暗号化

公開鍵暗号

対称キー暗号化とは異なり、公開キー暗号化の歴史的な使用は見当たりません。 これは比較的新しい概念です。

対称暗号化は、政府、軍隊、および機密通信に関与する大規模な金融会社などの組織に適していました。

過去数十年でより安全ではないコンピューターネットワークが普及したため、より大規模な暗号化を使用するという真のニーズが感じられました。 対称キーは、キー管理で直面した課題により、実用的ではないことがわかりました。 これが公開鍵暗号システムを生み出しました。

暗号化と復号化のプロセスは、次の図に示されています-

公開鍵暗号化

公開鍵暗号化方式の最も重要なプロパティは次のとおりです-

  • 暗号化と復号化には異なるキーが使用されます。 これは、対称暗号化方式とは異なるこの方式を設定するプロパティです。
  • 各受信者は、一般に自分の秘密キーと呼ばれる一意の復号化キーを所有しています。
  • 受信者は、公開キーと呼ばれる暗号化キーを公開する必要があります。
  • このスキームでは、受信者としての攻撃者によるなりすましを回避するために、公開鍵の信頼性をある程度保証する必要があります。 一般に、このタイプの暗号システムには、特定の公開鍵が特定の個人またはエンティティのみに属していることを証明する信頼できる第三者が関与します。
  • 暗号化アルゴリズムは複雑で、攻撃者が暗号文と暗号化(公開)キーから平文を推測するのを防ぐことができます。
  • 秘密鍵と公開鍵は数学的に関連していますが、公開鍵から秘密鍵を計算することは現実的ではありません。 実際、公開キー暗号システムのインテリジェントな部分は、2つのキー間の関係を設計することです。

公開鍵暗号化スキームには3つのタイプがあります。 私たちは次のセクションでそれらを議論します-

RSA暗号システム

この暗号システムは、初期システムの1つです。 現在でも最も採用されている暗号システムです。 このシステムは、3人の学者 Ron Rivest、Adi Shamir 、および Len Adleman によって発明されたため、RSA暗号システムと呼ばれています。

RSA暗号システムには、最初にキーペアを生成し、次に暗号化/復号化アルゴリズムの2つの側面があります。

RSAキーペアの生成

暗号化を使用した通信への参加を希望する各個人または当事者は、公開鍵と秘密鍵のペアのキーを生成する必要があります。 キーの生成で従うプロセスは以下に説明されています-

  • * RSAモジュラス(n)*を生成します
  • 2つの大きな素数pとqを選択します。 n = p qを計算します。 強力で解読不能な暗号化の場合、nを大きな数値(通常は最小512ビット)にします。
  • 派生番号の検索(e)
  • 数値 e は1より大きく、(p − 1)(q − 1)未満でなければなりません。
  • 1を除いて、eと(p − 1)(q − 1)に共通の因子があってはなりません。 つまり、2つの数値eと(p – 1)(q – 1)は互いに素です。
  • 公開鍵を作成
  • 数字のペア(n、e)はRSA公開鍵を形成し、公開されます。
  • 興味深いことに、nは公開キーの一部ですが、大きな素数の因数分解が困難なため、攻撃者はnの取得に使用される2つの素数(p&q)を有限の時間で見つけることができません。 これがRSAの強みです。
  • 秘密鍵を生成
  • 秘密鍵dは、p、q、およびeから計算されます。 nとeが与えられた場合、一意の番号dがあります。
  • 数値dは、eモジュロ(p-1)(q – 1)の逆数です。 これは、dが(p-1)(q-1)より小さい数であることを意味し、eを乗算すると1モジュロ(p-1)(q-1)に等しくなります。
  • この関係は次のように数学的に書かれています-
ed = 1 mod (p − 1)(q − 1)

拡張ユークリッドアルゴリズムは、p、q、およびeを入力として受け取り、dを出力として提供します。

RSAキーペアを生成する例を以下に示します。 (理解を容易にするために、ここで取られる素数pとqは小さな値です。 実際には、これらの値は非常に高いです)。

  • 2つの素数をp = 7およびq = 13とします。 したがって、モジュラスn = pq = 7 x 13 = 91です。
  • e = 5を選択します。これは有効な選択です。5の共通因子である数値はなく、1を除いて(p − 1)(q − 1)= 6×12 = 72です。
  • 数字のペア(n、e)=(91、5)は公開鍵を形成し、暗号化されたメッセージを送信できるようにしたい人なら誰でも利用できるようにすることができます。
  • 拡張ユークリッドアルゴリズムにp = 7、q = 13、e = 5を入力します。 出力はd = 29になります。
  • 計算することにより、計算されたdが正しいことを確認してください-
de = 29 × 5 = 145 = 1 mod 72
  • したがって、公開鍵は(91、5)であり、秘密鍵は(91、29)です。

暗号化と復号化

キーペアが生成されると、暗号化と復号化のプロセスは比較的簡単で、計算が簡単になります。

興味深いことに、RSAは、対称キー暗号化の場合のようにビット文字列を直接操作しません。 nを法とする数値で動作します。 したがって、プレーンテキストをn未満の一連の数値として表す必要があります。

RSA暗号化

  • 送信者が、公開キーが(n、e)である人にテキストメッセージを送信したいとします。
  • 次に、送信者はプレーンテキストをn未満の一連の数字として表します。
  • nを法とする数値である最初のプレーンテキストPを暗号化します。 暗号化プロセスは、単純な数学的ステップです-
C = Pe mod n
  • 言い換えると、暗号文Cは、平文Pにeを掛けた値に等しく、nを法として減らされます。 これは、Cもnより小さい数であることを意味します。
  • 平文P = 10の鍵生成の例に戻ると、暗号文Cが得られます−
C = 105 mod 91

RSA復号化

  • RSAの復号化プロセスも非常に簡単です。 公開鍵ペア(n、e)の受信者が暗号文Cを受信したと仮定します。
  • 受信者はCを自分の秘密鍵の累乗に上げますd。 nを法とする結果は平文Pになります。
Plaintext = Cd mod n
  • 数値の例に戻ると、暗号文C = 82は、秘密鍵29を使用して番号10に復号化されます-
Plaintext = 8229 mod 91 = 10

RSA分析

RSAのセキュリティは、2つの別個の機能の強度に依存します。 RSA暗号システムは、最も一般的な公開鍵暗号システムの強度であり、その強度は、非常に大きな数を因数分解するという実際的な困難に基づいています。

  • 暗号化機能-これは、平文を暗号文に変換する一方向の機能と見なされ、秘密鍵dの知識がある場合にのみ元に戻すことができます。
  • キー生成-RSA公開キーから秘密キーを決定することの難しさは、モジュラスnを因数分解することと同等です。 したがって、攻撃者は、nを因数分解できない限り、RSA公開鍵の知識を使用してRSA秘密鍵を決定することはできません。 また、一方向関数であり、p&q値からモジュラスnへの移行は簡単ですが、逆は不可能です。

これらの2つの機能のいずれかが一方向ではないことが判明した場合、RSAは機能しなくなります。 実際、ファクタリングの効率的な手法が開発された場合、RSAは安全ではなくなります。

RSA暗号化の強度は、数pとqが大きな素数でない場合、および/または選択された公開鍵eが小さい場合、攻撃に対して大幅に低下します。

ElGamal暗号システム

RSAとともに、他の公開鍵暗号システムが提案されています。 それらの多くは、離散対数問題の異なるバージョンに基づいています。

楕円曲線バリアントと呼ばれるElGamal暗号システムは、離散対数問題に基づいています。 これは、特定の数の実際の時間枠では離散対数を見つけることができないという仮定から強度を導き出しますが、電力の逆演算は効率的に計算できます。

pを法とする数値で動作するElGamalの簡単なバージョンを見てみましょう。 楕円曲線バリアントの場合、まったく異なる数体系に基づいています。

ElGamalキーペアの生成

ElGamal暗号システムの各ユーザーは、次のようにキーペアを生成します-

  • *大きな素数pの選択*通常、1024から2048ビット長の素数が選択されます。
  • ジェネレーター要素の選択g。
  • この数は1からp − 1の間でなければなりませんが、任意の数にすることはできません。
  • これは、pを法とする整数の乗法群の生成元です。 これは、pと互いに素な整数mごとに、g ^ k ^ = a mod nとなるような整数kが存在することを意味します。 +たとえば、3はグループ5のジェネレータです(Z〜5〜= \ {1、2、3、4})。
N 3n 3n mod 5
1 3 3
2 9 4
3 27 2
4 81 1
  • *秘密鍵の選択。*秘密鍵xは、1より大きくp-1より小さい任意の数です。
  • *公開鍵の一部を計算します。*値yは、次のようにパラメータp、gおよび秘密鍵xから計算されます-
y = gx mod p
  • 公開鍵の取得 ElGamal公開鍵は、3つのパラメーター(p、g、y)で構成されています。 +たとえば、p = 17およびg = 6(6はグループZ〜17〜の生成元であることが確認できます)とします。 秘密鍵xは、1より大きく71より小さい任意の数値にすることができるため、x = 5を選択します。 その後、値yは次のように計算されます-
y = 65 mod 17 = 7
  • したがって、秘密鍵は62であり、公開鍵は(17、6、7)です。

暗号化と復号化

ElGamalキーペアの生成は、RSAの同等のプロセスよりも比較的簡単です。 ただし、暗号化と復号化はRSAよりもやや複雑です。

ElGamal暗号化

送信者がElGamal公開キーが(p、g、y)である誰かに平文を送信したいとし、-

  • 送信者は、pを法とする一連の数値として平文を表します。
  • pを法とする数として表される最初の平文Pを暗号化します。 暗号文Cを取得するための暗号化プロセスは次のとおりです-
  • 数値kをランダムに生成します。
  • 2つの値C1およびC2を計算します。ここで-
C1 = gk mod p
C2 = (P*yk) mod p
  • 2つの別個の値(C1、C2)で構成される暗号文Cを一緒に送信します。
  • 上記のElGamalキー生成の例を参照すると、プレーンテキストP = 13は次のように暗号化されます-
  • ランダムに数値を生成します(k = 10など)
  • 2つの値C1とC2を計算します。ここで-
C1 = 610 mod 17
C2 = (13*710) mod 17 = 9
  • 暗号文C =(C1、C2)=(15、9)を送信します。

エルガマル復号

  • 秘密鍵xを使用して暗号文(C1、C2)を復号化するには、次の2つの手順が取られます-
  • pを法とする(C1)^ x のモジュラー逆行列を計算します。これは(C1)-x ^で、一般に復号化係数と呼ばれます。
  • 次の式を使用して平文を取得します-
C2 × (C1)-x  mod p = Plaintext
  • この例では、秘密鍵x = 5を使用して暗号文C =(C1、C2)=(15、9)を復号化するには、復号化係数は
15-5  mod 17 = 9
  • 平文P =(9×9)mod 17 = 13を抽出します。

エルガマル分析

ElGamalシステムでは、各ユーザーは秘密鍵xを持っています。 そして、公開鍵の* 3つのコンポーネント*-*素数モジュラスp、ジェネレータg、および公開Y = g ^ x ^ mod p *を持ちます。 ElGamalの強度は、離散対数問題の難しさに基づいています。

セキュアキーのサイズは通常、1024ビット以上です。 今日では、2048ビット長のキーも使用されています。 処理速度の面では、Elgamalは非常に遅く、主にキー認証プロトコルに使用されます。 処理効率が高いため、ElGamalのElliptic Curveバリアントはますます普及しています。

楕円曲線暗号(ECC)

楕円曲線暗号(ECC)は、離散対数問題の特別なバージョンに基づいたセキュリティを備えた一連の暗号化ツールおよびプロトコルを記述するために使用される用語です。 pを法とする数値は使用しません。

ECCは、楕円曲線と呼ばれる数学的オブジェクトに関連付けられた数値のセットに基づいています。 pを法とする数の場合と同様に、これらの数の倍数を追加および計算するための規則があります。

ECCには、ElGamal暗号化やデジタル署名アルゴリズムなどのモジュラー番号用に最初に設計された多くの暗号化スキームのバリアントが含まれています。

離散対数問題は、楕円曲線上の点に適用した場合、はるかに困難になると考えられています。 これは、pを法とする数値から楕円曲線上の点への切り替えを促します。 また、楕円曲線ベースのバリアントを使用すると、短いキーでも同等のセキュリティレベルを取得できます。

短いキーは2つの利点になります-

  • キー管理の容易さ
  • 効率的な計算

これらの利点により、暗号化スキームの楕円曲線ベースのバリアントは、コンピューティングリソースが制限されているアプリケーションにとって非常に魅力的です。

RSAとElGamalスキーム–比較

さまざまな側面でRSAとElGamalスキームを簡単に比較しましょう。

RSA ElGamal
It is more efficient for encryption. It is more efficient for decryption.
It is less efficient for decryption. It is more efficient for decryption.
For a particular security level, lengthy keys are required in RSA. For the same level of security, very short keys are required.
It is widely accepted and used. It is new and not very popular in market.

暗号化におけるデータ整合性

これまで、情報の機密性を実現するための対称および公開キースキームの使用について説明しました。 この章では、他のセキュリティサービスを提供するために設計されたさまざまな暗号化技術について説明します。

この章の焦点は、データ整合性と同じことを達成するために使用される暗号化ツールにあります。

データの整合性に対する脅威

機密情報を交換する場合、受信者は、意図した送信者からメッセージがそのまま送信され、不注意またはその他の方法で変更されていないことを保証する必要があります。 データ整合性の脅威には、*パッシブ*と*アクティブ*の2種類があります。

受動的脅威

この種の脅威は、データの偶発的な変更が原因で存在します。

  • これらのデータエラーは、通信チャネルのノイズが原因で発生する可能性があります。 また、ファイルがディスクに保存されている間、データが破損する可能性があります。
  • エラー訂正コードと巡回冗長検査(CRC)などの単純なチェックサムは、データの整合性の損失を検出するために使用されます。 これらの手法では、データのダイジェストが数学的に計算され、データに追加されます。

アクティブな脅威

このタイプの脅威では、攻撃者は悪意を持ってデータを操作できます。

  • 最も単純なレベルでは、データにダイジェストがない場合、検出せずに変更できます。 システムは、アクティブな変更を検出するためにデータにCRCを追加する手法を使用できます。
  • より高いレベルの脅威では、攻撃者はデータを変更し、変更されたデータの新しいダイジェストを既存のダイジェストから導出しようとする可能性があります。 これは、CRCなどの単純なメカニズムを使用してダイジェストが計算される場合に可能です。
  • ハッシュ関数などのセキュリティメカニズムは、アクティブな変更の脅威に対処するために使用されます。

暗号化ハッシュ関数

ハッシュ関数は非常に便利であり、ほとんどすべての情報セキュリティアプリケーションで使用されています。

ハッシュ関数は、数値入力値を別の圧縮数値に変換する数学関数です。 ハッシュ関数への入力は任意の長さですが、出力は常に固定長です。

ハッシュ関数によって返される値は、*メッセージダイジェスト*または単に*ハッシュ値*と呼ばれます。 次の図は、ハッシュ関数を示しています-

ハッシュ関数

ハッシュ関数の機能

ハッシュ関数の典型的な機能は次のとおりです-

  • 固定長出力(ハッシュ値)
  • ハッシュ関数は、任意の長さのデータを固定長に変換します。 このプロセスは、多くの場合、*データのハッシュ*と呼ばれます。
  • 一般に、ハッシュは入力データよりもはるかに小さいため、ハッシュ関数は「圧縮関数」と呼ばれることもあります。
  • ハッシュは大きなデータの小さな表現であるため、「ダイジェスト」とも呼ばれます。
  • nビット出力のハッシュ関数は、* nビットハッシュ関数*と呼ばれます。 一般的なハッシュ関数は、160〜512ビットの値を生成します。
  • 運用効率
  • 一般に、入力xを持つハッシュ関数hの場合、h(x)の計算は高速な操作です。
  • 計算ハッシュ関数は、対称暗号化よりもはるかに高速です。

ハッシュ関数のプロパティ

効果的な暗号化ツールであるためには、ハッシュ関数は次の特性を持つことが望まれます-

  • プレイメージ抵抗
  • このプロパティは、ハッシュ関数を逆にすることが計算上困難であることを意味します。
  • 言い換えると、ハッシュ関数hがハッシュ値zを生成した場合、zにハッシュする入力値xを見つけるのは難しいプロセスになるはずです。
  • このプロパティは、ハッシュ値のみを持ち、入力を見つけようとしている攻撃者から保護します。
  • 第二のプレイメージ抵抗
  • このプロパティは、入力とそのハッシュが与えられることを意味し、同じハッシュで異なる入力を見つけるのは難しいはずです。
  • 言い換えると、入力xのハッシュ関数hがハッシュ値h(x)を生成する場合、h(y)= h(x)となるような他の入力値yを見つけることは困難です。
  • ハッシュ関数のこのプロパティは、入力値とそのハッシュを持ち、元の入力値の代わりに別の値を正当な値に置き換えたい攻撃者から保護します。
  • 衝突抵抗
  • このプロパティは、同じハッシュになる任意の長さの2つの異なる入力を見つけるのが難しいことを意味します。 このプロパティは、衝突のないハッシュ関数とも呼ばれます。
  • つまり、ハッシュ関数hの場合、h(x)= h(y)となるような2つの異なる入力xおよびyを見つけるのは困難です。
  • ハッシュ関数は固定ハッシュ長の圧縮関数であるため、ハッシュ関数が衝突しないことは不可能です。 コリジョンフリーのこのプロパティは、これらのコリジョンを見つけるのが難しいことを確認するだけです。
  • このプロパティにより、攻撃者は同じハッシュを持つ2つの入力値を見つけることが非常に困難になります。
  • また、ハッシュ関数が衝突に耐性がある場合は、* 2番目のプリイメージに耐性があります。*

ハッシュアルゴリズムの設計

ハッシュの中心にあるのは、ハッシュコードを作成するためにデータの2つの固定サイズブロ​​ックで動作する数学関数です。 このハッシュ関数は、ハッシュアルゴリズムの一部を形成します。

各データブロックのサイズは、アルゴリズムによって異なります。 通常、ブロックサイズは128ビットから512ビットです。 次の図は、ハッシュ関数を示しています-

ハッシュ関数構造

ハッシュアルゴリズムには、ブロック暗号のような上記のハッシュ関数のラウンドが含まれます。 各ラウンドは、固定サイズの入力(通常、最新のメッセージブロックと最後のラウンドの出力の組み合わせ)を受け取ります。

このプロセスは、メッセージ全体をハッシュするために必要な回数だけ繰り返されます。 ハッシュアルゴリズムの概略図を次の図に示します-

ハッシュアルゴリズム

なぜなら、最初のメッセージブロックのハッシュ値は2番目のハッシュ操作への入力になり、その出力は3番目の操作の結果を変更する、などです。 この効果は、ハッシュの「なだれ」効果として知られています。

雪崩の影響により、1ビットのデータでさえ異なる2つのメッセージのハッシュ値が大幅に異なります。

ハッシュ関数とアルゴリズムの違いを正しく理解してください。 ハッシュ関数は、2ブロックの固定長バイナリデータを操作してハッシュコードを生成します。

ハッシュアルゴリズムは、ハッシュ関数を使用して、メッセージを分割する方法と、以前のメッセージブロックの結果を連鎖させる方法を指定するプロセスです。

人気のあるハッシュ関数

いくつかの人気のあるハッシュ関数を簡単に見てみましょう-

メッセージダイジェスト(MD)

MD5は、長年にわたって最も一般的で広く使用されているハッシュ関数でした。

  • MDファミリは、ハッシュ関数MD2、MD4、MD5、およびMD6で構成されています。 インターネット標準RFC 1321として採用されました。 これは128ビットのハッシュ関数です。
  • MD5ダイジェストは、転送されたファイルの整合性に関する保証を提供するために、ソフトウェアの世界で広く使用されています。 たとえば、ファイルサーバーは、多くの場合、ファイルに対して事前に計算されたMD5チェックサムを提供するため、ユーザーはダウンロードしたファイルのチェックサムをファイルと比較できます。
  • 2004年、MD5で衝突が見つかりました。 分析攻撃は、コンピュータークラスターを使用して1時間でのみ成功することが報告されました。 この衝突攻撃によりMD5が侵害されたため、使用を推奨しなくなりました。

セキュアハッシュ関数(SHA)

SHAのファミリーは、4つのSHAアルゴリズムで構成されています。 SHA-0、SHA-1、SHA-2、およびSHA-3。 同じ家族のものですが、構造的に異なります。

  • 元のバージョンは、1993年に米国国立標準技術研究所(NIST)によって公開された、160ビットのハッシュ関数であるSHA-0です。 弱点はほとんどなく、あまり人気がありませんでした。 1995年後半、SHA-1は、SHA-0の弱点の疑いを修正するために設計されました。
  • SHA-1は、既存のSHAハッシュ関数の中で最も広く使用されています。 Secure Socket Layer(SSL)セキュリティを含むいくつかの広く使用されているアプリケーションとプロトコルで採用されています。
  • 2005年に、実用的な時間枠内でSHA-1の衝突を明らかにする方法が発見され、SHA-1の長期使用可能性が疑わしくなりました。
  • SHA-2ファミリーには、ハッシュ値のビット数に応じて、SHA-224、SHA-256、SHA-384、SHA-512の4つのSHAバリアントがあります。 SHA-2ハッシュ関数に対する攻撃の成功はまだ報告されていません。
  • ただし、SHA-2は強力なハッシュ関数です。 大幅に異なりますが、その基本設計はまだSHA-1の設計に準拠しています。 したがって、NISTは新しい競合ハッシュ関数の設計を求めました。
  • 2012年10月、NISTは新しいSHA-3標準としてKeccakアルゴリズムを選択しました。 Keccakには、効率的なパフォーマンスや攻撃に対する優れた耐性など、多くの利点があります。

RIPEMD

RIPENDは、RACE Integrity Primitives Evaluation Message Digestの頭字語です。 このハッシュ関数のセットは、オープンな研究コミュニティによって設計され、一般的にヨーロッパのハッシュ関数のファミリーとして知られています。

  • セットにはRIPEND、RIPEMD-128、およびRIPEMD-160が含まれます。 このアルゴリズムには256ビットおよび320ビットバージョンもあります。
  • オリジナルのRIPEMD(128ビット)は、MD4で使用されている設計原則に基づいており、疑わしいセキュリティを提供することがわかっています。 RIPEMD 128ビットバージョンは、元のRIPEMDの脆弱性を克服するための迅速な修正の代替として登場しました。
  • RIPEMD-160は改良されたバージョンであり、ファミリーで最も広く使用されているバージョンです。 256ビットと320ビットのバージョンは、偶発的な衝突の可能性を減らしますが、それぞれRIPEMD-128とRIPEMD-160と比較して、より高いレベルのセキュリティはありません。

ワールプール

これは512ビットのハッシュ関数です。

  • これは、Advanced Encryption Standard(AES)の修正バージョンから派生しています。 デザイナーの1人は、AESの共同作成者であるVincent Rijmenでした。
  • Whirlpoolの3つのバージョンがリリースされました。つまり、WHIRLPOOL-0、WHIRLPOOL-T、およびWHIRLPOOLです。

ハッシュ関数の応用

暗号化特性に基づいたハッシュ関数の2つの直接アプリケーションがあります。

パスワード保存

ハッシュ関数は、パスワードストレージを保護します。

  • パスワードを平文で保存する代わりに、ほとんどすべてのログオンプロセスがパスワードのハッシュ値をファイルに保存します。
  • パスワードファイルは、(ユーザーID、h(P))という形式のペアのテーブルで構成されます。
  • ログオンのプロセスは、次の図に示されています-

ログオンのプロセス

  • 侵入者は、パスワードにアクセスした場合でも、パスワードのハッシュのみを見ることができます。 ハッシュ関数にはプリイメージ耐性の特性があるため、ハッシュを使用してログオンしたり、ハッシュ値からパスワードを取得したりすることはできません。

データ整合性チェック

データ整合性チェックは、ハッシュ関数の最も一般的なアプリケーションです。 データファイルのチェックサムを生成するために使用されます。 このアプリケーションは、データの正確性についてユーザーに保証を提供します。

プロセスは、次の図に示されています-

データ整合性チェック

整合性チェックは、ユーザーが元のファイルに加えられた変更を検出するのに役立ちます。 ただし、独創性についての保証はありません。 攻撃者は、ファイルデータを変更する代わりに、ファイル全体を変更し、新しいハッシュをまとめて計算して受信者に送信できます。 この整合性チェックアプリケーションは、ユーザーがファイルの独創性について確信している場合にのみ役立ちます。

メッセージ認証

前の章では、データの整合性の脅威と、データに変更攻撃が行われたかどうかを検出するハッシュ手法の使用について説明しました。

データに存在する別のタイプの脅威は、*メッセージ認証*の欠如です。 この脅威では、ユーザーはメッセージの発信者について不明です。 メッセージ認証は、暗号化の場合に行われるように秘密鍵を使用する暗号化技術を使用して提供できます。

メッセージ認証コード(MAC)

MACアルゴリズムは、メッセージ認証を提供する対称キー暗号化技術です。 MACプロセスを確立するために、送信者と受信者は対称キーKを共有します。

基本的に、MACはメッセージ認証を保証するためにメッセージとともに送信される、基になるメッセージで生成される暗号化されたチェックサムです。

認証にMACを使用するプロセスは、次の図に示されています-

MAC

プロセス全体を詳細に理解してみましょう-

  • 送信者は、既知のMACアルゴリズムを使用して、メッセージと秘密鍵Kを入力し、MAC値を生成します。
  • ハッシュと同様に、MAC関数も任意の長い入力を固定長の出力に圧縮します。 ハッシュとMACの主な違いは、MACが圧縮中に秘密鍵を使用することです。
  • 送信者はメッセージをMACとともに転送します。 ここでは、機密性ではなくメッセージ発信元認証の提供を懸念しているため、メッセージは平文で送信されると想定しています。 機密性が必要な場合、メッセージには暗号化が必要です。
  • メッセージとMACを受信すると、受信者は受信したメッセージと共有秘密鍵KをMACアルゴリズムに送り、MAC値を再計算します。
  • 受信者は、新しく計算されたMACと送信者から受信したMACの同等性を確認します。 それらが一致する場合、受信者はメッセージを受け入れ、メッセージが目的の送信者によって送信されたことを確認します。
  • 計算されたMACが送信者によって送信されたMACと一致しない場合、受信者は、それが変更されたメッセージであるか、改ざんされた発信元であるかを判断できません。 ボトムラインとして、受信者はメッセージが本物ではないと安全に想定します。

MACの制限

MACには2つの主要な制限があり、どちらも動作の対称性のためです-

  • 共有シークレットの確立
  • 共有キーを持つ事前に決定された正当なユーザー間でメッセージ認証を提供できます。
  • これには、MACを使用する前に共有秘密を確立する必要があります。
  • 否認防止を提供できない
  • 否認防止とは、メッセージの発信者が以前に送信されたメッセージとコミットメントまたはアクションを拒否できないことの保証です。
  • MAC技術は否認防止サービスを提供しません。 送信者と受信者がメッセージの発信をめぐる紛争に巻き込まれた場合、MACは送信者によってメッセージが実際に送信されたという証拠を提供できません。
  • 第三者はMACを計算できませんが、送信者はメッセージを送信したことを拒否し、受信者がメッセージを偽造したと主張できます。

これらの制限は両方とも、次のセクションで説明する公開鍵ベースのデジタル署名を使用することで克服できます。

暗号化デジタル署名

デジタル署名は、メッセージ認証の公開キープリミティブです。 物理的な世界では、手書きまたは入力されたメッセージに手書きの署名を使用するのが一般的です。 これらは、署名者をメッセージにバインドするために使用されます。

同様に、デジタル署名は、個人/エンティティをデジタルデータにバインドする手法です。 このバインディングは、受信者とサードパーティによって個別に検証できます。

デジタル署名は、署名者だけが知っているデータと秘密鍵から計算される暗号値です。

実際には、メッセージの受信者は、メッセージが送信者に属していることを保証する必要があり、メッセージの発信元を拒否できないようにする必要があります。 交換されたデータをめぐる紛争の可能性は非常に高いため、この要件はビジネスアプリケーションでは非常に重要です。

デジタル署名のモデル

前述のように、デジタル署名スキームは公開鍵暗号に基づいています。 デジタル署名方式のモデルは、次の図に示されています-

モデルデジタル署名

次のポイントは、プロセス全体を詳細に説明します-

  • このスキームを採用する各人には、公開鍵と秘密鍵のペアがあります。
  • 一般に、暗号化/復号化と署名/検証に使用されるキーペアは異なります。 署名に使用される秘密鍵は署名鍵と呼ばれ、公開鍵は検証鍵と呼ばれます。
  • 署名者はデータをハッシュ関数に送り、データのハッシュを生成します。
  • ハッシュ値と署名キーは、指定されたハッシュでデジタル署名を生成する署名アルゴリズムに送られます。 署名がデータに追加された後、両方が検証者に送信されます。
  • 検証者は、デジタル署名と検証キーを検証アルゴリズムに送ります。 検証アルゴリズムは、出力として何らかの値を提供します。
  • Verifierは、受信データに対して同じハッシュ関数を実行してハッシュ値を生成します。
  • 検証のために、このハッシュ値と検証アルゴリズムの出力が比較されます。 比較結果に基づいて、検証者はデジタル署名が有効かどうかを判断します。
  • デジタル署名は署名者の「プライベート」キーによって作成され、他の誰もこのキーを持つことはできません。署名者は今後データへの署名を拒否することはできません。

署名アルゴリズムによって直接データに署名する代わりに、通常、データのハッシュが作成されることに注意してください。 データのハッシュはデータの一意の表現であるため、データの代わりにハッシュに署名するだけで十分です。 署名に直接データの代わりにハッシュを使用する最も重要な理由は、スキームの効率です。

RSAが署名アルゴリズムとして使用されると仮定します。 公開鍵暗号化の章で説明したように、RSAを使用した暗号化/署名プロセスにはモジュラーべき乗が含まれます。

モジュラー累乗法を使用して大きなデータに署名すると、計算コストと時間がかかります。 データのハッシュはデータのダイジェストが比較的小さいため、ハッシュに署名する方がデータ全体に署名するよりも効率的です

デジタル署名の重要性

すべての暗号プリミティブのうち、公開鍵暗号を使用したデジタル署名は、情報セキュリティを実現するための非常に重要で有用なツールと見なされています。

メッセージの否認防止を提供する機能とは別に、デジタル署名はメッセージ認証とデータ整合性も提供します。 これがデジタル署名によってどのように達成されるかを簡単に見てみましょう-

  • メッセージ認証-検証者が送信者の公開鍵を使用してデジタル署名を検証する場合、署名は、対応する秘密秘密鍵を所有し、他の誰も所有していない送信者のみによって作成されたことが保証されます。
  • データの整合性-攻撃者がデータにアクセスしてデータを変更した場合、受信側でのデジタル署名の検証は失敗します。 変更されたデータのハッシュと検証アルゴリズムによって提供される出力は一致しません。 したがって、受信者は、データの整合性が侵害されていると想定して、メッセージを安全に拒否できます。
  • 非拒否-署名者のみが署名キーの知識を持っていると想定されているため、特定のデータに対して一意の署名のみを作成できます。 したがって、受信者は、将来紛争が発生した場合に、証拠としてデータとデジタル署名を第三者に提示できます。

デジタル署名方式に公開キー暗号化を追加することにより、セキュリティの4つの重要な要素、つまりプライバシー、認証、整合性、および否認防止を提供できる暗号システムを作成できます。

デジタル署名による暗号化

多くのデジタル通信では、機密性を確保するために、平文よりも暗号化されたメッセージを交換することが望ましいです。 公開キー暗号化スキームでは、送信者の公開(暗号化)キーがオープンドメインで利用できるため、だれでも自分の身元を偽装して、暗号化されたメッセージを受信者に送信できます。

これにより、暗号化にPKCを使用するユーザーは、メッセージ認証と否認防止を保証するために、暗号化されたデータとともにデジタル署名を探すことが不可欠になります。

これは、デジタル署名と暗号化スキームを組み合わせることによりアーカイブできます。 この要件を達成する方法について簡単に説明します。 then-then-encryptencrypt-then-sign の2つの可能性があります。

ただし、sign-then-encryptに基づく暗号化システムは、受信者が送信者の身元を偽装し、そのデータを第三者に送信するために悪用される可能性があります。 したがって、この方法は好ましくありません。 暗号化してから署名するプロセスは、より信頼性が高く、広く採用されています。 これは、次の図に示されています-

デジタル署名による暗号化

暗号化されたデータと署名を受け取った受信者は、まず送信者の公開鍵を使用して署名を検証します。 署名の有効性を確認した後、彼は自分の秘密鍵を使用して復号化してデータを取得します。

公開鍵インフラ

Public Key Infrastructure(PKI)の最も明確な機能は、基礎となるセキュリティサービスを実現するためにキーのペアを使用することです。 キーペアは、秘密キーと公開キーで構成されます。

公開鍵はオープンドメインにあるため、悪用される可能性があります。 したがって、これらのキーを管理するには、ある種の信頼できるインフラストラクチャを確立して維持する必要があります。

キー管理

暗号システムのセキュリティは、そのキーが安全に管理されているかどうかに依存することは言うまでもありません。 暗号化キーを処理するための安全な手順がないと、強力な暗号化スキームを使用する利点が失われる可能性があります。

暗号化スキームは、設計の弱点によってめったに侵害されないことが観察されています。 ただし、それらはしばしば不十分なキー管理によって危険にさらされます。

次のようなキー管理のいくつかの重要な側面があります-

  • 暗号化キーは特別なデータです。 キー管理とは、暗号化キーの安全な管理を指します。
  • キー管理は、次の図に示すように、キーのライフサイクル全体を扱います-

キー管理ライフサイクル

  • 公開キー暗号化のキー管理には、2つの特定の要件があります。
  • *秘密鍵の秘密。*鍵のライフサイクルを通して、秘密鍵は所有者であり、使用を許可されている者を除くすべての関係者の秘密を保持する必要があります。
  • *公開キーの保証。*公開キー暗号化では、公開キーはオープンドメインにあり、データの公開部分と見なされます。 デフォルトでは、公開鍵が正しいかどうか、誰と関連付けることができるか、または何に使用できるかについての保証はありません。 したがって、公開鍵の鍵管理は、公開鍵の目的の保証により明確に焦点を合わせる必要があります。

「公開キーの保証」の最も重要な要件は、公開キー暗号化をサポートするためのキー管理システムである公開キーインフラストラクチャ(PKI)によって実現できます。

公開キー基盤(PKI)

PKIは公開鍵の保証を提供します。 公開鍵とその配布の識別を提供します。 PKIの構造は、次のコンポーネントで構成されています。

  • 一般に「デジタル証明書」と呼ばれる公開鍵証明書。
  • 秘密鍵トークン。
  • 認証局。
  • 登録認定機関。
  • 証明書管理システム。

デジタル証明書

たとえば、証明書は個人に発行されたIDカードと見なすことができます。 人々は、運転免許証、パスポートなどのIDカードを使用して、身元を証明します。 デジタル証明書は、電子の世界で同じ基本的なことを行いますが、1つの違いがあります。

デジタル証明書は、人々に発行されるだけでなく、コンピュータ、ソフトウェアパッケージ、または電子の世界で身元を証明する必要がある他のあらゆるものに発行できます。

  • デジタル証明書はITU標準X.509に基づいており、公開鍵証明書と証明書検証の標準証明書形式を定義しています。 したがって、デジタル証明書はX.509証明書とも呼ばれます。 +ユーザークライアントに関連する公開キーは、クライアント情報、有効期限、使用法、発行者などの他の関連情報とともに、証明機関(CA)によってデジタル証明書に保存されます。
  • CAはこの情報全体にデジタル署名し、証明書にデジタル署名を含めます。
  • クライアントの公開キーと関連情報について保証が必要な場合は、CAの公開キーを使用して署名検証プロセスを実行します。 検証に成功すると、証明書で指定された公開鍵が、証明書で詳細が指定された人のものであることが保証されます。

個人/エンティティがデジタル証明書を取得するプロセスを次の図に示します。

デジタル証明書

図に示すように、CAは公開鍵を証明するためにクライアントからのアプリケーションを受け入れます。 CAは、クライアントの身元を正当に検証した後、そのクライアントにデジタル証明書を発行します。

認証機関(CA)

前述のように、CAはクライアントに証明書を発行し、他のユーザーが証明書を検証するのを支援します。 CAは、発行される証明書を要求するクライアントのIDを正しく識別する責任を負い、証明書に含まれる情報が正しいことを保証し、デジタル署名します。

CAの主な機能

CAの主要な機能は次のとおりです-

  • キーペアの生成-CAは、クライアントと独立して、または共同でキーペアを生成できます。
  • デジタル証明書の発行-CAは、パスポート代理店と同等のPKIと見なすことができます-CAは、クライアントが身元を確認するための資格情報を提供した後に証明書を発行します。 次に、CAは証明書に署名して、証明書に含まれる詳細の変更を防ぎます。
  • 証明書の発行-ユーザーが証明書を見つけることができるように、CAは証明書を発行する必要があります。 これを達成するには2つの方法があります。 1つは、電子電話帳に相当する証明書を発行することです。 もう1つは、何らかの方法で証明書が必要になると思われる人に証明書を送信することです。
  • 証明書の検証-CAは、クライアントのデジタル証明書の署名の検証を支援するために、環境で公開キーを利用可能にします。
  • 証明書の取り消し-CAは、ユーザーによる秘密キーの侵害やクライアントの信頼の喪失などの何らかの理由で発行された証明書を取り消すことがあります。 失効後、CAは環境で使用可能なすべての失効した証明書のリストを保持します。

証明書のクラス

証明書には4つの典型的なクラスがあります-

  • *クラス1 *-これらの証明書は、電子メールアドレスを入力することで簡単に取得できます。
  • *クラス2 *-これらの証明書には、追加の個人情報が必要です。
  • *クラス3 *-これらの証明書は、要求者の身元について確認が行われた後にのみ購入できます。
  • *クラス4 *-非常に高いレベルの信頼を必要とする政府や金融機関が使用する場合があります。

登録機関(RA)

CAは、サードパーティの登録機関(RA)を使用して、証明書を要求している個人または会社に対して必要なチェックを実行し、身元を確認することがあります。 RAはクライアントにはCAとして表示されますが、実際には発行された証明書に署名しません。

証明書管理システム(CMS)

証明書の公開、一時的または永続的な一時停止、更新、または取り消しを行う管理システムです。 証明書管理システムは通常、証明書を削除しません。これは、おそらく法律上の理由により、ある時点で証明書のステータスを証明する必要があるためです。 CAは、関連するRAと共に証明書管理システムを実行して、その責任と責任を追跡できます。

秘密鍵トークン

クライアントの公開鍵は証明書に保存されますが、関連付けられた秘密秘密鍵は鍵所有者のコンピューターに保存できます。 通常、この方法は採用されていません。 攻撃者がコンピューターにアクセスすると、秘密鍵に簡単にアクセスできます。 このため、秘密キーは、パスワードで保護された安全なリムーバブルストレージトークンアクセスに保存されます。

異なるベンダーは、多くの場合、キーを保存するために異なる、時には独自のストレージ形式を使用します。 たとえば、Entrustは独自の.epf形式を使用し、Verisign、GlobalSign、およびBaltimoreは標準の.p12形式を使用します。

CAの階層

広大なネットワークとグローバル通信の要件により、すべてのユーザーが証明書を取得する信頼できるCAを1つだけにすることは実際には不可能です。 第二に、CAが危険にさらされた場合、1つのCAのみの可用性が問題を引き起こす可能性があります。

このような場合、通信する2つのパーティが同じCAとの信頼関係を持たない環境で公開鍵証明書を使用できるため、階層型の証明書モデルが重要です。

  • ルートCAはCA階層の最上位にあり、ルートCAの証明書は自己署名証明書です。
  • ルートCAに直接従属するCA(CA1およびCA2など)には、ルートCAによって署名されたCA証明書があります。
  • 階層内の下位CAの下のCA(たとえば、CA5およびCA6)には、上位レベルの下位CAによって署名されたCA証明書があります。

認証局(CA)階層は、証明書チェーンに反映されます。 証明書チェーンは、階層内のブランチから階層のルートまでの証明書のパスをトレースします。

次の図は、エンティティ証明書から2つの下位CA証明書(CA6およびCA3)を経由してルートCAのCA証明書に至る証明書チェーンを持つCA階層を示しています。

CA階層

証明書チェーンの検証は、特定の証明書チェーンが有効であり、正しく署名され、信頼できることを確認するプロセスです。 次の手順では、認証用に提示された証明書から始まる証明書チェーンを検証します-

  • 信頼性が検証されているクライアントは、一般にルートCAまでの証明書のチェーンとともに、証明書を提供します。
  • 検証者は証明書を取得し、発行者の公開キーを使用して検証します。 発行者の公開キーは、クライアントの証明書の隣のチェーンにある発行者の証明書にあります。
  • 発行者の証明書に署名した上位CAが検証者によって信頼されている場合、検証は成功し、ここで停止します。
  • それ以外の場合、発行者の証明書は、上記の手順でクライアントに対して行われたのと同様の方法で検証されます。 このプロセスは、信頼できるCAがその間に見つかるか、ルートCAまで継続します。

暗号化の利点と欠点

今日、ネットワークはグローバルになり、情報はデジタル形式のビットとバイトになりました。 重要な情報は、コンピューターシステムおよびオープンな通信チャネルでデジタル形式で保存、処理、および送信されるようになりました。

情報は非常に重要な役割を果たしているため、敵はコンピュータシステムを標的にして、通信チャネルを開いて機密情報を盗んだり、重要な情報システムを破壊したりします。

現代の暗号化は、正当なユーザーが情報にアクセスできるようにする一方で、敵対者の悪意のある意図を阻止するための堅牢な技術セットを提供します。 この章では、暗号化から得られる利点、その制限、および暗号化の将来について説明します。

暗号化–利点

暗号化は、重要な情報セキュリティツールです。 情報セキュリティの最も基本的な4つのサービスを提供します-

  • 機密性-暗号化技術により、情報と通信を不正な暴露や情報へのアクセスから保護できます。
  • 認証-MAC​​やデジタル署名などの暗号化技術は、なりすましや偽造から情報を保護できます。
  • データの整合性-暗号化ハッシュ関数は、データの整合性についてユーザーに保証する上で重要な役割を果たしています。
  • 非拒否-デジタル署名は、送信者によるメッセージの通過の拒否により発生する可能性のある紛争を防ぐための非拒否サービスを提供します。

暗号化によって提供されるこれらの基本的なサービスはすべて、非常に効率的かつ効果的な方法でコンピューターシステムを使用してネットワーク上でビジネスを行うことを可能にしました。

暗号化–欠点

情報セキュリティの4つの基本要素とは別に、情報の効果的な使用に影響する他の問題があります-

  • 強力に暗号化された、本物の、デジタル署名された情報は、意思決定の重要な時期に*正当なユーザーであっても*アクセスが困難になる可能性があります。 ネットワークまたはコンピューターシステムは、侵入者によって攻撃され、機能しなくなる可能性があります。
  • 情報セキュリティの基本的な側面の1つである*高可用性は、暗号化の使用では保証できません。 サービス拒否や情報システムの完全な故障などの脅威から保護するには、他の方法が必要です。
  • *選択的アクセス制御*の情報セキュリティのもう1つの基本的なニーズも、暗号の使用では実現できません。 同じために、管理上の制御と手順を実行する必要があります。
  • 暗号化は、システム、プロトコル、および手順の貧弱な設計から生じる脆弱性と*脅威を保護しません。 これらは、適切な設計と防御インフラストラクチャのセットアップを通じて修正する必要があります。
  • 暗号化にはコストがかかります。 コストは時間とお金の面で-
  • 情報処理に暗号技術を追加すると、遅延が発生します。
  • 公開鍵暗号の使用には、かなりの財政的予算を必要とする公開鍵インフラストラクチャのセットアップとメンテナンスが必要です。
  • 暗号技術のセキュリティは、数学的な問題の計算の難しさに基づいています。 このような数学的問題を解決したり、計算能力を向上させたりすると、暗号技術が脆弱になります。

暗号の未来

楕円曲線暗号(ECC)はすでに発明されていますが、その長所と短所はまだ完全には理解されていません。 ECCでは、大幅に短い時間で暗号化と復号化を実行できるため、同等のセキュリティで大量のデータを渡すことができます。 ただし、暗号化の他の方法として、ECCは、政府、商業、および個人での使用が認められる前に、テストされ、安全であることが証明されている必要があります。

  • 量子計算*は新しい現象です。 現代のコンピューターは、「1」または「0」を保存できる「ビット」と呼ばれるバイナリ形式を使用してデータを保存しますが、量子コンピューターは、複数の状態の量子重ね合わせを使用してデータを保存します。 これらの複数の値の状態は、「量子ビット」または「量子ビット」に格納されます。 これにより、数値の計算は、従来のトランジスタプロセッサよりも数桁高速になります。

量子コンピューターの能力を理解するために、193桁の数字であるRSA-640を考えてみましょう。これは、5か月間で80個の2.2GHzコンピューターで因数分解でき、1つの量子コンピューターは17秒未満で因数分解します。 計算に通常数十億年かかる数字は、完全に開発された量子コンピューターで数時間、さらには数分しかかかりません。

これらの事実を考慮して、現代の暗号化は、計算が困難な問題を探すか、現在の暗号化が現在提供している目標をアーカイブするまったく新しい手法を考案する必要があります。