web-dev-qa-db-ja.com

TACACS +暗号化はどのように正確に機能しますか?

TACACS +暗号化の仕組みを理解しようとしています。私は CiscoのTACACS + RFCドラフト を読みましたが、それは技術的すぎて理解が非常に簡単ではありません。私の質問は:

  1. TACACS +デバイス(クライアント)は、要求を送信する前に、サーバーに対して自身を認証しますか?チャレンジ/レスポンス手法を使用していますか?また、チャレンジ/レスポンスパケットを暗号化するためにどのアルゴリズムを使用していますか?

  2. ユーザーがTACACS +を使用してデバイスにログオンしようとするとどうなりますか?リクエストはどのように送信されますか?ユーザー名+パスワードを含むパケット全体が暗号化され、どの暗号化アルゴリズムが使用されていますか?

2

TACACS +では、事前共有キー(キーの長さは63文字に制限されています)を設定する必要があります。これは、デバイスがサーバーに対して認証する方法です。これは「チャレンジ/レスポンス」ではありません。

この事前共有キーは、パケット全体を暗号化する暗号化を設定するために使用されます。つまり、ユーザー名とパスワードは最初から保護されます。

暗号化の方法については、「ボディの暗号化」セクションで RFC で説明されています。ワンタイムパッドのバージョンです。

この場合、パケット本体はバイト単位でXORすることにより暗号化されます。
疑似ランダムパッド。

ENCRYPTED {data} == data ^ pseudo_pad

パッドは、一連のMD5ハッシュ(それぞれ16バイト長)を連結し、それを入力データの長さに切り捨てることによって生成されます。

このドキュメントで使用される場合、MD5は[3]で指定されている「RSA Data Security、Inc. MD5メッセージダイジェストアルゴリズム」を指します。

pseudo_pad = {MD5_1 [、MD5_2 [...、MD5_n]]}はlen(data)に切り捨てられます

最初のMD5ハッシュは、session_id、秘密鍵、バージョン番号、シーケンス番号を連結して生成され、そのストリームでMD5を実行します。 TACACS +クライアントとデーモンの間の共有秘密である秘密鍵を除いて、これらの入力値はすべてパケットヘッダーで使用できます。

バージョン番号は、メジャーバージョン番号とマイナーバージョン番号の1バイトの組み合わせです。

セッションIDは、TACACS +ヘッダーに表示されるバイト順で使用されます。 (つまり、ホストのバイト順ではなく、ネットワークのバイト順です)。

後続のハッシュは、同じ入力ストリームを使用して生成されますが、入力ストリームの最後で前のハッシュ値を連結します。

MD5_1 = MD5 {session_id、key、version、seq_no}

MD5_2 = MD5 {session_id、key、version、seq_no、MD5_1}

....

MD5_n = MD5 {session_id、key、version、seq_no、MD5_n-1}

ここでは、ユーザー認証プロセスについて説明します。

https://www.Cisco.com/c/en/us/td/docs/switches/datacenter/nexus5000/sw/configuration/guide/cli/CLIConfigurationGuide/sec_tacacsplus.html


2018年3月1日更新:

シスコがTACACS +を更新し、新しい高性能スイッチを使用する場合、ユーザーは AES128でパスワードを暗号化 できるようになりました。これまでのところ、これはパスワードのみを暗号化します。それはTACACS +プロトコルのペイロードの暗号化を変更しません。しかし、それは何かです。ただし、すべての製品がこれを利用できるわけではないことに注意してください。

1
schroeder