パスワードがデータベースや暗号化されたファイルではなくLDAPに保存されている場合、パスワードは何らかの形でより安全ですか?
パスワードは、ハッシュ文字列としてLDAPディレクトリに保存されます。たとえば、OpenLDAPは、Salted SHA1 {SSHA}
、crypt {CRYPT}
(OSに依存)、MD5 {MD5}
、塩漬けMD5 {SMD5}
およびSHA1{SHA}
。 Active Directoryサーバーは、ある種のLMハッシュやNTハッシュを格納していると思います。
その事実を考えると、LDAPディレクトリにパスワードを保存することは、ハッシュされたパスワード(同じハッシュを想定)をファイルまたはSQLデータベースに保存することほど安全ではありません。基盤となるデータ構造に直接アクセスできるすべての人は、少なくともハッシュされたパスワード値を読み取ることができます(データがファイルまたはファイルシステムベースで追加で暗号化されていない場合)。
LDAPまたは他の種類のアカウントストレージメカニズムを使用するかどうかの決定は、パスワードがどの程度安全に保存されているかという事実に基づくものではありません。決定は、認証がどのように行われるか、および他にどのような要件を満たす必要があるかに基づいて行われます。 LDAPは、さまざまなclientsを中央認証システム(プロプライエタリソフトウェア、電子メールサーバーなど)に接続する必要がある場合、またはKerberosまたはSASL認証シナリオに統合する必要がある場合に便利です。
パスワードは、ユーザーとパスワードが保存されている場所との間の最も弱いリンクと同じくらい安全です。基本的に、これは、パスワードの保存方法だけでなく、ユーザーとストレージ間の接続回線も保護する必要があることを意味します。サーバーと通信が安全である場合、最も弱いリンクがユーザーであることがよくあります。 (ユーザーがペットロックのメモリ容量を持っていることがあるためです。)
私の同僚はかつてラップトップを紛失し、泥棒が自分のシステム上のすべての秘密のものにアクセスするのではないかと非常に心配していました。結局のところ、彼は自分のラップトップにパスワードを記載した小さなメモを添付していました。そして残念ながら、この世界で自分のコンピューターの横にあるメモにパスワードを書くだけの人は彼だけではありません。
LDAPは通信プロトコルであり、パスワードの保存方法はディレクトリシステム次第です。たとえば、Windowsの機能については、 WindowsでのNTLMユーザー認証 を参照してください。
LAN Manager互換のパスワードは、LANManagerで使用されているパスワードと互換性があります。このパスワードは、相手先ブランド供給(OEM)の文字セットに基づいています。このパスワードでは大文字と小文字は区別されず、最大14文字の長さにすることができます。このパスワードのOWFバージョンは、LAN ManagerOWFまたはESTDバージョンとも呼ばれます。このパスワードは、DES暗号化を使用して定数をクリアテキストパスワードで暗号化することによって計算されます。LANManagerOWFパスワードの長さは16バイトです。クリアテキストパスワードの最初の7バイトは計算に使用されますLAN Manager OWFパスワードの最初の8バイト。クリアテキストパスワードの次の7バイトは、LAN ManagerOWFパスワードの次の8バイトを計算するために使用されます。
Windowsパスワードは、Unicode文字セットに基づいています。このパスワードでは大文字と小文字が区別され、最大128文字の長さにすることができます。このパスワードのOWFバージョンは、WindowsOWFパスワードとも呼ばれます。このパスワードは、RSAMD-4暗号化アルゴリズムを使用して計算されます。このアルゴリズムは、クリアテキストのパスワードバイトの可変長文字列の16バイトダイジェストを計算します。
これは特に安全ではありませんが、Active Directoryは通常、数回の悪い試みの後にロックアウトで実装されるため、それほど悪くはありません。一般に、ベンダーが作成したコードは、独自のコードを展開するよりも優れています。
また、データベースにパスワードを保存する方法と、適用されるポリシーによっても異なります。プレーンパスワードをハッシュ化または暗号化せずに保存するのはひどい考えです。通常、ディレクトリシステムがそれを処理します。たとえば、ADはパスワードの複雑さを要求し、同じパスワードの再利用などを防ぐこともできます。攻撃者がアクセスできるファイルにADを配置することはお勧めできません。
暗号化されていないパスワードをネットワークに公開しない限り、ハッシュ化されたパスワードをデータベースに保存するのと同じくらい安全です。 LDAPサーバーの実装に応じて、さまざまな種類のハッシュを使用できます。
OpenLDAPは、CRYPT、MD5、SMD5、SSHA、およびSHA(私のマニュアルページによる)を提供します。
つまり、LDAPは、パスワードを自分でハッシュしてSQLデータベースに保存するのと同様のハッシュ機能を提供します。
LDAPを使用すると、パスワードはサーバーで検証されます。設計上、それほど安全ではありません。ただし、LDAPを使用するSSOソリューションは多数あるため、ユーザーベースは非常に大きくなります。