前回の記事では、対称暗号、公開鍵暗号、メッセージ認証コード、デジタル署名などの暗号技術について説明しましたが、これらの技術はすべて、鍵と呼ばれるものを使用します。
では、キーとは正確には何ですか?キーは、最終的な平文を取得できるキーです。したがって、キーは実際にはプレーンテキストと同等です。
たとえば、金庫には10万ドルあり、金庫はロックされており、鍵を持っています。次に、キーを持つ人は10万ドルを持っていることと同等です。
さまざまなキーの概要
前回の記事では、対称暗号、公開鍵暗号、メッセージ認証コード、デジタル署名の4つの暗号化技術について説明しました。ここでもう一度確認します。
- 対称暗号
対称パスワードは、同じキーを使用してプレーンテキストを暗号化および復号化します。
- 公開鍵パスワード
公開鍵パスワードは、メッセージの暗号化と復号化に異なる鍵を使用します。
- メッセージ認証コード
メッセージ認証コードは、同じキーを使用してメッセージを認証します。
- デジタル署名
デジタル署名では、メッセージの署名と検証にさまざまなキーを使用します。
その中でも、対称パスワードと公開キーパスワードは、プレーンテキストを直接暗号化して、メッセージの機密性を確保します。
メッセージ認証コードとデジタル署名は、主にメッセージの正当性を検証するために、プレーンテキストの暗号化には使用されないメッセージの認証に使用されます。
その他の主要な分類
上記の4種類は、暗号化の方法と使用法によって分類されますが、実際には、インストールキーの使用回数は、セッションキーとマスターキーに分けることができます。
セッション鍵は、1回のセッションでのみ使用され、使用後に破棄される鍵であり、マスター鍵は、繰り返し使用される固定鍵です。
SSL / TLSプロトコルに精通している友人は、これに精通している必要があります。このプロトコルでは、セッションメッセージを暗号化するために、セッションごとに個別のキーが作成されます。つまり、セッションごとにセッションキーが作成されます。
さらに、暗号化されたオブジェクトがコンテンツであるかキーであるかに関係なく、それを暗号化メッセージのキー(CEK)と暗号化キーのキー(KEK)に分割できます。メッセージを暗号化する鍵はわかりやすく、以前の対称鍵と公開鍵はCEKでした。暗号化キーは、主にキーの数を減らすために使用されます。
キー管理
ここでは、主に次の点からキー管理について説明します。
- キーを生成
キーを生成するには、乱数を使用する方法とパスワードを使用する方法の2つがあります。
乱数には推測できない特性が必要ですが、一般的には、疑似乱数ジェネレータを使用して生成する必要があります。
通常、JavaコードではRandomクラスを使用しますが、このクラスを使用してキーを生成することはできません。java.security.SecureRandomを使用して、パスワードセキュリティ用の乱数を生成できます。
SecureRandomの2つの一般的な使用方法を次に示します。
SecureRandom random = new SecureRandom();
byte bytes[] = new byte[20];
random.nextBytes(bytes);
byte seed[] = random.generateSeed(20);
乱数に加えて、別の方法はパスワードです。
パスワードは人間が覚えやすいパスワードであり、パスワードによって生成されたキーがブルートフォースされないようにするために、パスワードをソルトする必要があります。
簡単に言うと、パスワードに乱数を追加し、追加後にその数値をハッシュし、計算結果をキーとして使用することです。
- 配送キー
鍵の配布には、事前に共有鍵、鍵配布センター、公開鍵パスワードなどを利用できます。もちろん、他の方法で配送することもできます。
- キーを更新
場合によっては、キーのセキュリティを確保するために、時々キーを更新する必要があります。一般的なアプローチは、現在のキーを参照値として使用し、特定のアルゴリズムを通じて新しいキーを計算することです。
- キーを保存
ブロックチェーンを学んだ人は、紙の鍵があることを知っているはずです。実際、それは紙に鍵を書いてそれを保存することです。
キーが多すぎる場合、キーをオフラインで保存することは非常に困難な作業になります。このとき、鍵の鍵KEKを使用できます。これらのキーを暗号化して保存します。
暗号化されたキーのセキュリティをこのように考慮する必要はありません。盗まれたとしても、以前のキーを復元することはできないからです。これらのキーを暗号化するキーを保存するだけで済みます。
- 無効キー
キーはキーであるため、キーを取り消すことは非常に複雑な問題です。削除しても、他の人がそのコピーを保持している可能性があります。したがって、鍵の設計は、設計で完全に考慮する必要があります。
以前の証明書では、CRLリストを使用して古いキーを保存できます。
詳細については、http://www.flydean.com/key/をご覧ください。