SSO を使用するクレーム ベース認証の場合、アプリケーションは発行者から特定のユーザーのトークンを受け取ります。そのトークンには、発行者が信頼されていることをアプリケーションが追跡できるように、クレームと何らかのデジタル署名が含まれています。 1。このアプリケーションが発行者を認識するための何らかのアルゴリズムが含まれているかどうかを知りたいですか? 発行者には公開鍵があり、他のすべてのアプリケーションには独自の秘密鍵があると読みましたが、本当ですか?
1 に答える
Security Assertion Markup Language (SAML)、OpenID、OAuthなど、シングル サインオンを行うためのプロトコル、形式、方法は多数あります。目標は、Web サイトなどの 1 つのエンティティが (ユーザー名とパスワードなどを介して) ユーザーを識別および認証し、他の Web サイトなどの他のエンティティがトークンを介してその認証の証拠を信頼することです。これは、ユーザーが別のパスワードを覚えておく必要がなく、各 Web サイトが独自のパスワード リストを保持していることを意味します。
この信頼は通常、デジタル署名を使用した暗号化によって強化されます。デジタル署名が使用されるのは、信頼するエンティティがトークンが (1) 認証エンティティによってのみ発行され、(2) 認証エンティティになりすます (なりすます) ことができずに改ざんされていないことを検証できるためです。
上で述べたように、これは非対称暗号化または公開鍵暗号化を使用して実行されます。AES や DES アルゴリズムなどの対称暗号化では、単一のキーを使用してデータの暗号化と復号化を行います。RSAアルゴリズムなどの非対称暗号化では、 2 つの関連するキーが使用されます。一方を使用して暗号化されたデータは、他方でのみ復号化でき、その逆も同様です。
1 つのキーは通常秘密にされ、秘密キーと呼ばれ、もう 1 つのキーは広く配布され、公開キーと呼ばれます。上記の例では、認証エンティティは秘密鍵を持っています。これにより、公開鍵を持っている人なら誰でも復号化できるデータを暗号化できます。
認証エンティティは、ユーザーの詳細を暗号化し、それをトークンとして使用するだけであるように思われます。ただし、RSA などの一般的に使用される非対称アルゴリズムは非常に遅く、少量のデータでも暗号化に時間がかかりすぎます。
したがって、ユーザーの詳細を暗号化する代わりに、認証エンティティは「ハッシュ」または「ダイジェスト」を生成し、それを暗号化します。ハッシュ アルゴリズムは、元に戻すのが非常に困難な方法で、データの一部を小さな数値 (ハッシュ) に変換します。異なるデータは、異なるハッシュも作成します。一般的なハッシュ アルゴリズムには、メッセージ ダイジェスト 5 (MD5)、セキュア ハッシュ アルゴリズム (SHA)、および SHA1、SHA256、SHA512 などの派生物が含まれます。
認証エンティティの秘密鍵で暗号化されたハッシュは、デジタル署名と呼ばれます。トークンを受け取ると、信頼エンティティは認証エンティティの公開鍵を使用してトークンを復号化し、自身で計算したハッシュと比較します。ハッシュが同じである場合、信頼するエンティティはそれが変更されていないことを認識し (ハッシュが一致するため)、認証エンティティから取得されたものでなければなりません (秘密鍵を知っているのはエンティティのみであるため)。
SAML とクレーム ベース認証について詳しく知りたい場合は、このビデオが非常に役に立ちます。かなりすぐに複雑になり、何度も見る必要があるかもしれませんが、Vittorio はこれらの概念のほとんどを非常に詳細にカバーしています。