興味深い数学的対称/非対称暗号化に関する簡単な歴史と数学的原理のリスト

1. 非対称暗号化の簡単な歴史

1. アルゴリズムの確立

        暗号化されたメッセージを送信したい人にとってのもう 1 つの問題は、そもそもメッセージがどのように暗号化されたかを受信者に知らせる方法です。文字置換暗号のような暗号の問題は、盗聴者が暗号化スキームを知ると、その後の情報に簡単にアクセスできることです。

        公開キー暗号化 (略して PKE) システムは、この問題を解決できます。公開キーと秘密キーの 2 つのキーを使用します。どちらのキーも信頼できる認証局によって発行されます。公開キーは電子証明書として保存され、その所有者と通信したい人は誰でもアクセスできます。

        公開キーと秘密キーはどちらも本質的に数学的に関連した複数桁の数字です。これは、もう一方のキーを使用して情報を復号化する限り、どちらのキーも情報の暗号化に使用できることを意味します。

        GCHQ は 1970 年代にこの取り組みを開始しました。同時に、米国スタンフォード大学のホイットフィールド・ディッフェ氏とマーティン・ヘルマン氏も独自に考案したため、このアルゴリズムをディフィー・ヘルマン暗号化と呼ぶこともあります。

        クラッカーのような人にとって、2 つのキーが数学的に関連していることを知っていてもあまり役に立ちません。一方をもう一方から導き出すのは非常に困難です。

        この暗号化アルゴリズムの利点の 1 つは、キーを検証するために中央データベースが必要ないため、検証プロセス中に通信チャネルを盗聴する盗聴者によってキーが傍受される可能性が低減されることです。

2. 現実世界に適用する

        GCHQ とスタンフォード大学での研究活動は公開鍵暗号の基礎を築き、MIT の 3 人の研究者、Rona1d Rivest、Adi Shamir、Leonard Adelman (Leonard Adleman の画期的な成果) によって実用化されました。この 3 人は、公開鍵と秘密鍵を簡単に関連付けるための数学的方法を発見し、送信者の身元を確認する電子的方法であるデジタル署名の交換も可能にしました。彼らの手法には因数と素数が含まれます。

        任意の数値について、その因数はその数値を均等に割る (つまり、剰余が生じない) 整数です。たとえば、数字 6 の因数は 1、2、3、および 6 です。これは、6 は剰余を生成せずにこれらの各数字を四捨五入できるためです。6 をそれ自体で割ると、4 の商は 1、余りは 2 になるため、数値 4 は 6 の因数ではありません。素数とは、それ自体と数値 1 の 2 つの因数だけを持つ数です。数字 6 には 4 つの因数があるため、素数ではないことがはっきりとわかります。対照的に、数字 5 はそれ自体と 1 でしか割り切れないため、素数になります。

        この定義を念頭に置いて、素数の最初のグループ、2、3、5、7、13、17、19、23、29、および 31 をリストすることができます。数値 1 は因数が 1 つしかないため、素数とみなされません。上のリストの 2 つの最大の素数 29×31 を乗算するのは簡単な処理です。電卓を使えば数秒でできる簡単な作業です。最初に 30 x 31 を計算し、31 を引いて 899 という数字を得るというショートカットを使用する限り、これはおそらく紙と鉛筆を使えばかなり早く行うことができ、それほど長くない時間で頭の中で理解することもできます。 。

        しかし、この問題を逆に解決しようとすると、はるかに困難になります。899 という数字が与えられ、その 2 つの因数は何かと尋ねられた場合、電卓で解くのに 1 時間、紙と鉛筆で解くのに 1 日、暗算で解くのに 1 週​​間かかるかもしれません。

        素数が大きくなるにつれて、問題を解くのにかかる時間はますます長くなります。2018 年に発見された最大の素数は 2,400 万桁以上あります。これは、このような 2 つの数値を乗算することは平均的なデスクトップ コンピューターでは実行できないことを意味しますが、少量のコンピューティング能力があれば実行できます。逆のプロセスに費やす時間は想像を絶するものです。しかし、どんな挑戦にも言えることですが、挑戦しようとする人は常にいます。最近成功した 232 ビット キーの解読には、2,000 年以上の計算時間に相当する時間がかかりました。

        素数のこの数学的性質は、Levistr、Shamir、Adelman によって提案されたアプローチの基礎です。3 人が設立した会社である RSA Security は、RSA 暗号化標準のコピーが現在アプリケーションで 10 億以上使用されていると推定しています。RSA の人気のある製品の 1 つは SecurID と呼ばれるハードウェア トークンで、これは企業の IT システムにリモート アクセスしたいユーザーを識別するのに役立ちます。ユーザーは、仮想プライベート ネットワーク (電子的に安全なトンネル) を使用して企業システムにログインします。各ユーザーは、液面ディスプレイを備えた小型のキーフォブ型端末を装備しています。6 桁の数字がディスプレイに表示され、60 秒ごとに変わります。システムにアクセスするには、ユーザーはログイン ページを呼び出し、自分を識別する数字コードとその時点で端末画面に表示されている 6 桁の番号を入力し、事前に設定されたパスワードを入力する必要があります。ユーザーが知っているもの (パスワード) と所有しているもの (キーホルダー) のこの組み合わせは、一般的な識別方法になりつつあります。この方法は一般的に 2 要素認証 (2 要素認証) として知られており、これに慣れていると、銀行によっては、今では比較的珍しいかもしれないこの種のものを購入するためにお金を出してくれる場合があります。

2. 高度な暗号化標準

        1970 年代半ば、国家標準局 (NBS) は、無検閲だが機密性の高い政府データを暗号化する方法に関するアイデアを募集しました。IBM コンピュータ会社は、暗号化と復号化に同じキーを使用する固定長のデータ ブロックの暗号である対称ブロック暗号を使用するというアイデアを思いつきました。対称暗号化アルゴリズムがあるかどうかもよくわかります。

        1977 年に、Data Encryption Standard (略して DES) と呼ばれる暗号のアップグレード バージョンがすぐにリリースされ、採用されました。DES は 64 ビットのデータ ブロック サイズと同じサイズのキーを使用しますが、パスワードに直接使用されるのはキーの 56 ビットのみで、残りは送信中のエラーの可能性を減らすために使用されます。RSA セキュリティ会社は、DES 暗号を解読できた組織や個人に賞金を提供しましたが、それに応じて、電子フロンティア財団 (EFF) は、ブルート フォースを使用してすべての暗号を迅速にチェックできる「ディープ クラック」(ディープ クラック) と呼ばれるマシンを特別に構築しました。 256 個の可能なキー。1999 年、EFF によるデモンストレーションでは、このプロセスが 1 日以内に完了できることが示されました。

        3DES (TripIed ES) という名前の DES 暗号のアップグレード バージョンがその年に採用されましたが、コンピュータの処理能力が向上するにつれて、DES は安全ではないことが最終的に証明され、2002 年に Advanced Encryption Standard に採用されました。標準、AES と呼ばれます)が置き換えられました。

        Advanced Encryption Standard は、2 人のベルギーの暗号学者によって設計され、128 ビット、192 ビット、または 256 ビットの鍵 (AES-128、AES-192、AES-256 と呼ばれる) を使用して、長さ 128 ビットのデータ ブロックを暗号化します。この暗号化には、メッセージ内のビットのシフトと交換、およびビットに対する排他的論理和演算の実行というさまざまなサイクルが含まれます。

        盗聴者が AES 暗号化メッセージを読み取ることを可能にする公に知られた攻撃はこれまでにありません。そうは言っても、現在公開されている AES に対する理論的な攻撃は数多くあり、それらは完全な総当たり攻撃よりもはるかに速く情報を復号化できます。ただし、このような攻撃を完了するのに必要な時間は実際には不可能です。たとえば、いわゆる二股攻撃の背後には、数学的グラフ理論の一分野があります。この攻撃方法はブルート フォース攻撃よりも 4 倍速いことが 2011 年に発見されました。内部告発者エドワード。スノーデン (エドワード スノーデン) は、米国家安全保障局が AES をクラックする新しい方法を探しているというニュースを伝えました。

        公開キー暗号化 (PKE) に使用される非常に長いキーと、そのキーを見つけるために必要な数学の複雑さの増加により、現代の暗号化は現在、関心のあるアマチュアの手に届かず、むしろ数学者のための専門的な活動となっています。しかし、大きな数の素因数分解の難しさを利用した暗号システムに脆弱性が存在する可能性があるという、興味深い可能性が残っています。これまでに発見された因数分解方法は数学的に複雑ですが、もっと単純な方法がまだ存在する可能性があります。

3. 安全なインターネットを構築する

        私たちが電子メールで送信するメッセージの多くは些細なものですが、場合によっては、私たちが何を言っているかを誰にも盗み見られないようにする必要があります。たとえば、新しい仕事に応募している場合、現在の雇用主に知られることは絶対に避けたいものです。

        電子メールを暗号化する 1 つの方法は、Pretty Good Privacy (PGP) と呼ばれるソフトウェア パッケージを使用することです。これは、従来の暗号化と公開キー暗号化の要素を組み合わせたものです。PGP はフィリップ R. ジマーマンによって作成され、
1991 年に無料でリリースされました。PGP ソフトウェアは、マウスの動きと入力パターンに基づいてランダムなキーを生成します。このランダムなキーはメッセージの暗号化に使用されます。

        その後の開発段階では公開鍵暗号化が使用されますが、公開鍵で暗号化されるのは情報そのものではなく、前段階で使用したランダム鍵と、公開鍵で暗号化されたランダム鍵と暗号化鍵です。ランダムキーで暗号化した情報も一緒に送信されます。受信者はメッセージを受信すると、秘密キーを使用してメッセージを復号化するのではなく、まずランダム キーを復号化し、次にそのランダム キーを使用して付随するメッセージを復号化します。

        暗号化は、「https」Web サイトにアクセスするときにも使用されます。このようなサイトは、ブラウザ ウィンドウに表示される小さな南京錠でわかります。また、その URL は http ではなく https で始まります。このようなサイトでは、トランスポート層セキュリティ (TLS) と呼ばれるテクノロジーと、その前世代のテクノロジーであるセキュア ソケット レイヤ (セキュア) が使用されています。実際、TLS と SSL は、前述したように公開キー暗号化を使用して、ユーザーと通信先のコンピューター間の接続を保護します。たとえば、「銀行口座の詳細をハッキングしようとする暗号学者は、同じ暗号化スキームを使用して送信されたメッセージを解読しようとする暗号学者と同じ課題に直面します。」

4. 公開鍵暗号化の数学的例

        以下は公開キー暗号化の簡略化された例です。最初に 2 つの素数 P と Q を選択します。説明を簡単にするために、P は 11、Q は 17 とします。まず P と Q を掛けて 181 を求めます。この数値はモジュラスと呼ばれます。次に、1 と係数の間で乱数を選択します。この数値は E と呼ばれ、この例では 3 です。

(D*E)-1次に、均等に割り切れる        任意の数 E を見つける必要があります(P-1)*(Q-1)この例では、(P-1)*(Q-1)=160. 320 は 160 で割り切れるので、次のような D 値を求めることができます。

        の場合(D*E)-1=320、E を 3 に選択したため、D=107 になります。

        この非常に単純化された例では、計算をできるだけ簡単にするために、D の値は整数です。これが唯一の可能な値ではないことに注意してください。E の別の値を選択したり、320 の代わりに 480 や 640、あるいはその他の無数の数値を使用したりすることもできます。

        ある種の数学のトリックのように思えるかもしれませんが、P と Q のそれぞれの値が分からない限り、E から D の値を計算することはほぼ不可能であり、その逆も同様です。 

        さて、公開鍵と秘密鍵の問題に戻りましょう。私たちが全員と共有する公開鍵は、実際には 2 つの数値の法 (P×Q) と数値 E であり、この場合は 181 と 3 です。秘密キーは番号 D で、この場合は 107 です。

        P と 0 のそれぞれの値は明らかにしたくありませんが、係数 (PXQ) を皆さんに伝えます。これは意外に思われるかもしれませんが、実際にはこれがこのテクニックの核心です。P と Q の値が十分に大きい場合、係数を因数分解してそれらを見つけるのにかかる時間は、宇宙船で宇宙の果てまで飛行するのとほぼ同じです。

        次に、これらのキーを使用してメッセージ内の文字を暗号化および復号化します。アルファベットの文字に番号を付けてみましょう。A=1、z=26 とします。特定の文字を暗号化するには、その文字に対してさらに計算を行います。7 番目の文字 G を暗号化したいとします。そのため、数字の 7 から始めます。

        まず、7のE乗を計算します。同じ数字を E 回掛けると、7 の 2 乗は 7×7=49 となり、7 の 2 乗に等しく、7 の 3 乗は 7×7×7=343 となり、7 の 3 乗に等しくなります。 7。

        次に、モジュラー演算と呼ばれるものを使用します。これは、モジュラスと呼ばれる固定値に達した後にラップアラウンドすることを意味します。モジュラー算術の良い例は、時間を調べることです。これは、実際にはモジュロ 12 に基づいています (たとえば、10 時から 5 時間後は 15 時ではなく 3 時です。なぜなら、12 時に到達すると、 、時間をゼロにリセットします)。

        係数 P×Q の値は 181 と計算されました。数値 343 は、モジュロ 181 を使用したモジュロ算術では 162 に等しくなります。この番号は文字 G の暗号化された形式です。

        そこで、番号 162 と秘密鍵 D (この場合は 107) を受信者に送信し、受信者は同様の操作を実行してメッセージを復号化します。受信者は、同じモジュロ演算を使用して、162 の 107 乗を計算します。ご想像のとおり、162 を 107 倍すると、非常に大きな数が得られます。実際には、約 2 の後に 236 個のゼロが続きます。しかし、モジュロ算術を使用しており、181 になるたびに合計を 0 にリセットすると、最終的には 7 という数字になります。復号化された文字は 7、つまり文字 G です。したがって、受信者はメッセージの最初の文字を受け取り、メッセージ全体が秘密裏に送信されるまで同じ方法を続けることができます。

        上で述べたように、この大幅に単純化された例でさえとらえどころがなく、計算を行うには確かに強力なコンピューターが必要です。最新の暗号化ソフトウェアが使用するような数値を使用した場合、世界で最も強力なコンピューターがなければ計算は不可能になります。

おすすめ

転載: blog.csdn.net/bashendixie5/article/details/131226109