ホームページ >よくある問題 >暗号化の強度は主に何によって決まりますか

暗号化の強度は主に何によって決まりますか

醉折花枝作酒筹
醉折花枝作酒筹オリジナル
2021-06-25 11:28:0120630ブラウズ

暗号化の強度は主に、暗号化方式とキーの複雑さによって決まります。鍵は暗号アルゴリズムを使用する際に入力されるパラメータであり、暗号文が安全かどうかを決定する重要なパラメータであり、通常、鍵が長いほど解読が困難になります。

暗号化の強度は主に何によって決まりますか

このチュートリアルの動作環境: Windows 7 システム、Dell G3 コンピューター。

暗号化の強度は主に、暗号化方式とキーの複雑さによって決まります。

Key

キーは、暗号アルゴリズムの使用中に入力されるパラメータです。同じ平文から、同じ暗号アルゴリズムと異なる鍵計算に基づいて異なる暗号文が生成されます。多くのよく知られた暗号アルゴリズムは公開されており、キーは暗号文が安全かどうかを決定する重要なパラメータです。通常、キーが長ければ長いほど、解読は難しくなります。たとえば、8 ビットのキーは使用状況が 256 にまで達します。使用方法が劣悪なため、非常に簡単に解読されてしまいます。よく知られている DES アルゴリズムは 56 ビット キーを使用しています。これはもはや安全な暗号化アルゴリズムではありません。主な理由は、56 ビット キーが短すぎて、危険な可能性があることです。数時間以内にクラックされる可能性があります。鍵は対称鍵と非対称鍵に分けられます。

平文/暗号文

平文は暗号化前の元データ、暗号文は暗号操作を行って暗号文となった結果です

対称鍵

対称-key アルゴリズムは、共有キー暗号化とも呼ばれます。対称キーの暗号化と復号化プロセスで使用されるキーは同じです。一般的な対称暗号化アルゴリズムには、DES、3DES、AES、RC5、および RC6 が含まれます。対称キーの利点は、計算が速いことですが、欠点もあります。通信の両端でキーを共有する必要があるため、お互いにキーが何であるかを認識し、相手がそれを復号化できるようにする必要があります。すべてのクライアントが同じキーを共有している場合、このキーはマスター キーのようなものです。1 つのキーを使用して全員の暗号文を解読できます。各クライアントとサーバーが個別のキーを保持している場合、サーバーは何千ものキーを管理する必要があります. これはサーバー側で悪夢を引き起こす可能性があります。

以下は、平文を ASCII に暗号化する単純な対称暗号化です。

# 加密的方式:在ASCII的基础上 + 密钥的值
def encipher(plain_text, key):  
   # 加密
cipher_text = []
for c in plain_text:
cipher_text.append(str(ord(c) + key))
return ' '.join(cipher_text)
def decipher(cipher_text, key):
   # 解密    
plain_text = []
for c in cipher_text.split(" "):
plain_text.append(chr(int(c)+key))
return "".join(plain_text)if __name__ == '__main__':
print "cipher_text:", encipher("abcdef", 0)
print "plain_text:", decipher("97 98 99 100 101 102", 0)

非対称キー

非対称キー (公開キー暗号化)。公開キー暗号化とも呼ばれ、サーバーはキーのペアを生成し、秘密キーはサーバー上に保存されます。一方、もう一方が公開鍵であることを知っているのは、誰でも自由に使用できる公開鍵であることだけです。

クライアントの平文は公開キーで暗号化されており、暗号文は秘密キーで復号化する必要があります。非対称鍵は、暗号化と復号化のプロセスで異なる鍵を使用し、暗号化と復号化が非対称であるため、非対称暗号化と呼ばれます。

対称キー暗号化と比較すると、非対称暗号化ではクライアントとサーバー間でキーを共有する必要がありません。秘密キーがユーザーに送信されない限り、公開キーがオンラインで傍受されたとしても、暗号化することはできません。復号化には、盗まれた公開鍵だけが役に立ちません。一般的な非対称暗号化は RSA です。非対称暗号化と復号化のプロセス:

  • サーバーは、ペアになった公開キーと秘密キーを生成します。

  • Privateキーはサーバーに保存され、公開キーはクライアントに送信されます

  • #クライアントは公開キーを使用してプレーン テキストを暗号化し、サーバーに送信します

  • サーバーは、ブラウザとサーバー間でデータが送信されるときに秘密キーを使用して暗号文を復号し、平文を取得します。

デジタル署名

では、送信プロセス中に泥棒のふりをした泥棒によってコンテンツが盗まれる可能性があります。置き換えられた場合、データが転送されずに実際のサーバーから送信されることを確認する方法と、送信されたデータが改ざんされていないことを確認する方法この2つの問題を解決するには、電子署名を使う必要があります。電子署名は日常生活と同じです。契約書の署名と同じように、契約書に自分の名前が記載されれば、それは法的にあなたの署名であると判断されます。それはあなただけの手書きなので、人はそれをコピーすることができます。

それでは、コンピュータ内のデジタル署名はどうなるのでしょうか?電子署名は、送信内容が実サーバーから送信されたデータであるかどうか、送信データが改ざんされていないかどうかを検証するために使用され、非対称暗号化の応用シナリオです。ただし、代わりに秘密キーを使用して、ペアになった公開キーを通じて暗号化および復号化します。

ステップ 1: サーバーは、ハッシュを通じてメッセージを処理し、ダイジェスト情報 Digest を生成します。ダイジェスト情報は、秘密キー private-key を使用して暗号化され、署名が生成されます。サーバーは、署名をメッセージと一緒に送信します。クライアント。

ステップ 2: クライアントはデータを受信後、署名を抽出し、公開鍵を使用して復号し、Digest2 が正常に復号できれば、相手が送信したものであることが確認できます。

ステップ 3: クライアントはメッセージのテキストを抽出し、同様のハッシュ処理を実行します。得られたダイジェスト情報 Digest1 と、以前に復号化した Digist2 を比較します。両者が等しい場合は、コンテンツが暗号化されていないことを意味します。改ざんされている場合、そうでない場合は内容が変更されています。なぜなら、テキストの内容に少しでも変更がある限り、まったく異なる要約情報がハッシュ化されてしまうからです。

デジタル証明書

デジタル証明書は CA と呼ばれます。権威ある組織が特定の Web サイトに対して発行する、承認された証明書です。この証明書はすべての人 (ブラウザー) によって認識されます。なぜデジタル証明書を使用する必要があるのですか? デジタル証明書ではありません。署名の安全性が十分ではありませんか?

すべての実サーバーが本当に本物であるかどうかをブラウザが判断できない状況があります。これは簡単な例です: メーカー A があなたの家に錠を設置し、同時にあなたに鍵を渡します。鍵で錠を開けることができるので、鍵と錠前が一致していることを確認できます。誰かが鍵を交換したり、錠前を交換したりしたのにドアが開かない場合は、ドアが盗まれたことがわかりますが、もし誰かが錠前を交換した 表面的には似ているが、品質がはるかに低い別のセットと鍵を交換した 鍵と錠前は一致していますが、それが本当にメーカー A から渡されたものであるかどうかはわかりません。現時点では、品質検査部門に連絡してください。この錠セットが本当にメーカー A 製かどうかを検査部門に確認してもらいましょう。品質検査部門は権威ある機関であり、彼の言うことは世間に認知されます (笑)。

同様に、誰か (Zhang San) が実際のサーバーからブラウザに送信された公開鍵を自分の公開鍵に置き換えると、Zhang San は自分の秘密鍵を使用して同じ手順を実行してハッシュにテキストメッセージを送信します。デジタル署名の最終結果には何も問題はありませんが、実際にはブラウザーに表示されるものは実際のサーバーからのものではなく、Zhang San によって内側から変更されています (公開鍵から秘密鍵へ)。

では、現在使用している公開キーが実際のサーバーから送信されたものであることを確認するにはどうすればよいでしょうか?この問題を解決するためにデジタル証明書を使用します。デジタル証明書は通常、デジタル認証局 (Certificate Authority) によって発行されます。証明書には、実サーバーの公開キーと Web サイトに関するその他の情報が含まれています。デジタル認証局は、それを独自の秘密キーで暗号化し、ブラウザに送信します。 . ブラウザはデジタル証明書を使用します 組織の公開鍵を復号して実サーバーの公開鍵を取得します。この処理は誰もが認める認証局から取得した公開鍵を元に行うため、安全な方法です。

コンピュータ関連の知識について詳しくは、FAQ 列をご覧ください。

以上が暗号化の強度は主に何によって決まりますかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。