2011-02-02 24 views
2

クライアントエンドでSwingボックスを使用し、Web層とサーバー層の両方のコンポーネントを実装するJava EEアプリケーションの場合、「プレデザイン」段階(そのようなものがある場合)です。認証:KerberosまたはSSL?

私は瞬時にいくつかの技術の選択肢を提示され、KerberosとSSLの仕組みの違いを読んでいます。私が答えを見つけることができなかった1つの分野は、の対象で、KerberosまたはSSLの間でを選択する方法です。言い換えれば、どちらのプロトコルを使用するのが適切なのかをどうやって伝えますか?

スイングクライアントが特定のトランスポート(UDP、TCPなど)によってバインドされておらず、/ anyを使用できるとします。これら2つのアプリケーションのどちらがアプリケーションに適していますか?

ありがとうございます!

+1

可能性のある複製http://stackoverflow.com/questions/111386/difference-between-ssl-and-kerberos-authentication –

+1

これらの違いを尋ねない(つまり、どのように動作するか)。ベストプラクティスが両方をいつ使うべきかを決めるために何が求められるかに興味を持っています。 – Pam

+1

「ベストプラクティス」は主観的です。違いを学び、あなた自身を決定してください。 –

答えて

2

は、それが管理して投与しなければならない追加の、第三成分、認証サーバを、(必要なので、Kerberosを含むいずれかのソリューションはSSLよりも複雑になることを考えてみましょう例えばMS Active Directory)、SSLは単なるクライアント/サーバプロトコルです。

+0

ありがとうございます - いずれかのプロトコル間に顕著な性能差があるかどうか知っていますか? – Pam

+2

実際SSLに​​は第三者も必要です - 認証局。ドメイン内に独自のCAを設定していないか、手作業で証明書を配布しない限り(10人以上のクライアントには苦労します)、あなたは実際に支払う必要があります。 – thkala

+1

しかし、あなたが言及したように、SSLは* CAを必要としません - 自己署名証明書を使用するか、あなたが言及したように自分自身を配布することができます。 Kerberosでは、あなたはASを持っていなければなりません。さらに、Kerberosプロトコルは認証要求ごとにASと通信する必要がありますが、SSLではCAと直接通信することはありません。 – maerics

1

あなたはものを混ぜています。 Kerberosは認証プロトコルで、SSL ist暗号化です。 Kerberosは、あなたが企業環境にいる場合に行く方法です。

編集:Kerberosは、データトラフィックを透過的に暗号化することもできます。 SSL証明書は必要ありません。

+0

Kerberosは、別のプロトコルに結合されずに「データトラフィックを透過的に暗号化」するつもりはありません。あなたはここで何を思いついていますか? – Bruno

+1

それはもちろんです。 Tomcatの<>広告トラフィックは完全に暗号化されています。あなたは、あなたの文脈を暗号化して設定し、メッセージをラップ/ラップする必要があります。 'SASL'を使用する場合は、[保護の質](http://docs.oracle.com/javase/1.5.0/docs/api/javax/security/sasl/Sasl.html#QOP)を設定することができます。透明に起こる。 –

+1

Kerberosは、チケットの交換に関する独自のトラフィックを暗号化します(もちろん、認証は暗号化されています)が、アプリケーションのトラフィック(HTTPなど)は何も表示されません。つまり、KerberosとSSLを比較するのは理にかなっていません。 Kerberosは認証プロトコルであり、SSL/TLSは2者間のデータ転送を保護するプロトコルです。 – Bruno

5

と突然(数ヶ月後に)野生のSys管理者は、私はこの上の異議の声もする必要がありますするつもりです...

を表示されます。 CAなしでPKI を確立するという考えは信じられないほど不条理です。作成プロセスを合理化することによって、PKIの完全性とパフォーマンスを維持する必要があります。どこかで証明書を作成して保存する必要がありますが、どこにあるのでしょうか?ブーム、あなたはCAを持っています。まともなPKIも、CRLを維持することを要求する予定です。管理者は手書きで書くだけですか?あなたはまた別のタイプを持つことを忘れることができますの509は手でそれを維持するオーバーヘッドとしてあなたの心全体を吹き飛ばして灰色のスラリーになってしまうでしょう。

opensslのCLIでチケットを手作業で作成し、リモートクライアントにftpするだけで、かなりの規模のデプロイメントに大変な労力がかかると思います。基本的に、展開が非常に小さく、手作業で証明書を生成し(情報の繰り返し入力など)、CRLについて心配するのではなく、合理的な計画であれば、高度な認証システムはまったく必要ありません。 TLS + LDAP(認証ではなく機密性のために1つのサーバー証明書)の行に沿ったものがより適切です。

ここで私はいくつかの誤解を取り除いたので、実際にあなたの質問に答えてみましょう。いつ認証用にKerberosよりもSSLを使用したいですか? x509ベースの認証は、ほとんどの人(上記のMichael-Oのような)がというSSLの動作を認識していないことを考えると、ほとんどの人がというユーザーを認証しているためです。私が知っていることを知っているいくつかのFTPプログラムがあります。ミドルウェアはそれを採用しています...時には(javaトークのユースケースに近づく)、vpnクライアント/ゲートウェイはSSL証明書で認証されることがよくあります。

SSLの使用は、私がそこで述べたPKIを暗示しています。これは、ユースケースに機密性が含まれていると効果的です。 DoDは、認証外の機能に対してPKIを幅広く使用する企業の良い例です。そのコンテキストでは、関連するすべてのクライアントプログラムがx509認証をサポートしていると仮定すると、多くの意味があります。それはまだエキゾチックな設定であり、エンドユーザがSSLクレデンシャルをシステム(クライアント設定、スマートカードなど)にどのように「提示」するかを把握しなければならないが、うまく組み合わされるだろう。 Kerberosは一時的なチケットを使用して認証しますが、通常はSSL証明書は長続きします(CRLが必要な理由)。一変しないキーが1つの証明書に含まれる場合、攻撃者は数ヶ月無料の乗り物のうち、新しい証明書を見つけなければならないのですが、ケルベロスは1日しか持てません。チケットが破棄されない場合に限ります。

可能であれば、他のすべてのケースではKerberos認証を使用する必要があります。適切なセキュリティ層を提供し、実際には大規模なネットワーク認証システムとして設計されているため、SSLを使用して複製することが難しい(通常のユーザーではなくサービスとして認証するなど)目的。あなたのユースケースでは、おそらくケルベロス指向になる可能性のある既存のインフラストラクチャ、時にはLDAPS指向のものがありますが、決してx509認証指向のインフラストラクチャを考慮する必要があります。言い換えれば、あなたが書いているものは、すでにケルベロスのインフラストラクチャーで実行されている可能性が高いから、何とかしてプラグインすることもできます。認証時のKerberos認証の管理者には、509認証よりも多くのメリットがあります。これは、チケット以外の機密性が冗談だと​​いうことです。 NFSv4には、Kerberosチケットに関連している(何とか)kerberosチケットに関連するいくつかの弱いDESがあります(そして、3DESも意味しませんでした)が、認証を行います。

ケルベロススタイルのインフラストラクチャ(サービスの認識とすぐに有効期限切れのチケットを持つ「ワンタイムパッド」の側面)と組み合わせたx509の柔軟性の一部を見たいと思っています。 x509よりも実装されていますが、この段階ではほとんど夢を見ています。

概要:

X509は、インフラストラクチャの要件が問題になることはありません、あなたはとにかく他のもののためにPKIを使用することがあります場合は良いですが、それ以外は不必要な努力を複製することがありますか展開がおそらく持ってしようとしている場合とにかくケルベロスのインフラ。

Kerberosは類似していますが、より広く使用され、理解されていますが、PKIにはまったく役に立たない認証スキームであり、それだけです。

+0

資格情報の存続期間に関しては、Kerberosチケットはプロキシ証明書(RFC 3820)によく似ています。これらの証明書は短命です(属性に応じて目的別に指定することもできます)。 X.509/PKIとKerberosの大きな違いは、KerberosではクライアントがKDCに接続できる必要がありますが、PKIは常にオンラインにする必要はありません(提供されたCRLは十分な頻度で再読み込みされます)。ケルベロスは証明された数学的特性を持つ対称暗号も使用します(ただし、KDCはユーザーの秘密を知る必要があります)。X.509は依然として推測AFAIKに基づいて非対称暗号を使用します。 – Bruno

4

KerberosとSSL/TLSの比較は意味がありません。

  • Kerberosは認証プロトコルです。
  • TLSは、認証と暗号化のメカニズムに依存する2者間の通信を保護するためのプロトコルです。どのように動作するかは、選択した暗号スイートに依存します。 TLS(HTTPSなど)のほとんどの用途ではX.509証明書が使用されますが、リモートパーティの認証にPKIを使用する可能性が高い場合は、Kerberos cipher suitesも使用できます。私が知っている限り、これらのKerberos暗号スイートをサポートするTLSスタックはほとんどありません(Java does)。

必ずしもそうである必要はありません。たとえば、SPNEGO(Kerberos)HTTP認証を使用している場合でも、TLS(多くの場合、PKIを介して検証されたサーバー側のX.509証明書を使用)を使用してトランスポートをセキュリティで保護することがよくあります。そうでない場合は、HTTPヘッダーで交換されたSPNEGOトークンが認証を保証しますが、残りのHTTPメッセージは攻撃者によって変更されている可能性があります。