暗号化の強度は主に、暗号化方式とキーの複雑さによって決まります。鍵は暗号アルゴリズムを使用する際に入力されるパラメータであり、暗号文が安全かどうかを決定する重要なパラメータであり、通常、鍵が長いほど解読が困難になります。
このチュートリアルの動作環境: 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キーはサーバーに保存され、公開キーはクライアントに送信されます
デジタル証明書は CA と呼ばれます。権威ある組織が特定の Web サイトに対して発行する、承認された証明書です。この証明書はすべての人 (ブラウザー) によって認識されます。なぜデジタル証明書を使用する必要があるのですか? デジタル証明書ではありません。署名の安全性が十分ではありませんか?
すべての実サーバーが本当に本物であるかどうかをブラウザが判断できない状況があります。これは簡単な例です: メーカー A があなたの家に錠を設置し、同時にあなたに鍵を渡します。鍵で錠を開けることができるので、鍵と錠前が一致していることを確認できます。誰かが鍵を交換したり、錠前を交換したりしたのにドアが開かない場合は、ドアが盗まれたことがわかりますが、もし誰かが錠前を交換した 表面的には似ているが、品質がはるかに低い別のセットと鍵を交換した 鍵と錠前は一致していますが、それが本当にメーカー A から渡されたものであるかどうかはわかりません。現時点では、品質検査部門に連絡してください。この錠セットが本当にメーカー A 製かどうかを検査部門に確認してもらいましょう。品質検査部門は権威ある機関であり、彼の言うことは世間に認知されます (笑)。
同様に、誰か (Zhang San) が実際のサーバーからブラウザに送信された公開鍵を自分の公開鍵に置き換えると、Zhang San は自分の秘密鍵を使用して同じ手順を実行してハッシュにテキストメッセージを送信します。デジタル署名の最終結果には何も問題はありませんが、実際にはブラウザーに表示されるものは実際のサーバーからのものではなく、Zhang San によって内側から変更されています (公開鍵から秘密鍵へ)。
では、現在使用している公開キーが実際のサーバーから送信されたものであることを確認するにはどうすればよいでしょうか?この問題を解決するためにデジタル証明書を使用します。デジタル証明書は通常、デジタル認証局 (Certificate Authority) によって発行されます。証明書には、実サーバーの公開キーと Web サイトに関するその他の情報が含まれています。デジタル認証局は、それを独自の秘密キーで暗号化し、ブラウザに送信します。 . ブラウザはデジタル証明書を使用します 組織の公開鍵を復号して実サーバーの公開鍵を取得します。この処理は誰もが認める認証局から取得した公開鍵を元に行うため、安全な方法です。
コンピュータ関連の知識について詳しくは、FAQ 列をご覧ください。
以上が暗号化の強度は主に何によって決まりますかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。