Jenkins 独自のユーザー データベース暗号化アルゴリズムの簡単な分析

Jenkins 独自のユーザー データベース暗号化アルゴリズムの簡単な分析

Jenkins のアクセス制御は、セキュリティ ドメイン (認証) と承認戦略に分かれています。

その中で、セキュリティ ドメインは、Jenkins 独自のユーザー データベース、LDAP、およびサーブレット コンテナー エージェントの 3 つの形式を取ることができます。

Jenkins固有のユーザーデータは、<JENKINS_HOME> /users/に保存されます。

各ユーザーの関連情報はconfig.xmlファイルに保存されます: <JENKINS_HOME>/users/ <user>/config.xml

config.xmlファイルのpasswordHashノードでは、ユーザー名の暗号化された暗号文ハッシュ値を確認できます。

では、暗号化にはどのような暗号化方式が使用されるのでしょうか?暗号文を復号化して平文を取得することはできますか?

GitHubでソースコードを表示し、キーワード#jbcryptを検索してHudsonPrivateSecurityRealm.javaファイルを見つけます。

HudsonPrivateSecurityRealm.java の詳細なパスは次のとおりです: jenkins/core/src/main/java/hudson/security/HudsonPrivateSecurityRealm.java

ソースコードを分析すると、次のことがわかります。

1. 暗号文の形式は、salt: encPassです。#jbcryptは、saltがデータヘッダーとして使用されることを示します。

2. 平文はjbcryptアルゴリズムによって暗号文encPassに変換される

jbcrypt について:

jbcrypt は、bcrypt 暗号化ツールの Java 実装です。

API は非常にシンプルです。DEMO は次のとおりです。HudsonPrivateSecurityRealm.java では、暗号化と検証に次の API が使用されていることがわかります。

  1. // 初めてパスワードをハッシュする 
  2. ハッシュされた文字列 = BCrypt.hashpw(password, BCrypt.gensalt());
  3.  
  4. // gensalt の log_rounds パラメータは複雑さを決定します。作業係数は 2**log_rounds で、デフォルトは 10 です。  
  5. ハッシュされた文字列 = BCrypt.hashpw(password, BCrypt.gensalt( 12 ));
  6.  
  7. // 暗号化されていないパスワードが以前にハッシュされたパスワードと一致するかどうかを確認します 
  8. if (BCrypt.checkpw(候補, ハッシュ))
  9. System.out.println( "一致しました" );
  10. それ以外   
  11. System.out.println( "一致しません" );

同じ平文をjbcryptで暗号化すると、ソルトが通常異なるため、暗号化された暗号文は一般的に異なることが検証されています。

bcrypt について:

1. bcrypt は不可逆な暗号化アルゴリズムであり、暗号文を復号化しても平文を取得することは不可能です。

2. bcrypt と他の対称または非対称暗号化方式の違いは、直接復号化して平文を取得することも、暗号文を 2 回暗号化して暗号文を比較することもないことです。代わりに、平文と保存された暗号文を一緒に計算して、別の暗号文を取得します。2 つの暗号文が同じであれば、検証は成功です。

要約すると、Jenkins 独自のユーザー データベースは jbcrypt を使用して暗号化されます。jbcrypt 暗号化は元に戻すことができず、同じプレーンテキストの暗号化結果は通常異なります。

この記事は http://my.oschina.net/donhui/blog/379925 から引用しました。

<<:  他の人たちが赤い封筒を掴んでいる間、プログラマーたちは赤い封筒のアルゴリズムを研究している

>>:  WeChat JS-SDK-使用許可署名アルゴリズム

ブログ    
ブログ    
ブログ    
ブログ    
ブログ    
ブログ    

推薦する

...

未来を受け入れる: AIと教育テクノロジーによる教育の変革

新しいテクノロジー、特に人工知能 (AI) の急速な台頭により、教育と指導は大きな変化の瀬戸際にあり...

...

機械に記憶を与える: DeepMind の主要研究は柔軟な重み統合アルゴリズムを提案

世界で最も注目されている人工知能研究機関のひとつである Google DeepMind は、常に私た...

政府データ保護におけるAIの役割

1. 背景米国政府機関は機密データを保護し、潜在的な脅威に対応する任務を負っています。現在、リモート...

世界モデルに関するいくつかの誤解と自動運転との統合に関する考察

この記事は、Heart of Autonomous Driving の公開アカウントから許可を得て転...

AIネットワークはこれまで考えられていたよりも攻撃に対して脆弱である

人工知能 (AI) ツールは、自動運転車から医療画像解釈まで、さまざまなアプリケーションで使用される...

...

機械学習ガバナンスの5つの課題

ML モデル ガバナンスは、組織がアクセスを制御し、ポリシーを実装し、モデル アクティビティを追跡す...

無料の AI ベスト論文検索ツール: ワンクリックで結果を表示し、数分で論文の表とデータを抽出

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

自動車技術が新たな時代を切り開きます!メルセデス・ベンツ、BMW、Google、Amazon、Qualcommの次世代レイアウト!

編纂者:ヤン・ジェン制作:51CTO テクノロジースタック(WeChat ID:blog)次世代のス...

ジャック・マー氏の予測は現実になるかもしれない。今後20年間で、仕事の50%が徐々に消滅するだろう。あなたもその中にいないことを祈ります

導入コンピュータが人々の生活に入り始めて以来、人々は、特定の職業をコンピュータに置き換えることは避け...

複数の負荷分散アルゴリズムとそのJavaコード実装

まず、負荷分散とは何かを紹介します(百科事典より)負荷分散は既存のネットワーク構造に基づいて構築され...

「Split Everything」のビデオ版はこちらです。数回クリックするだけで、動いている人物や物体が丸で囲まれます。

写真ビデオセグメンテーションは多くのシナリオで広く使用されています。映画の視覚効果を高めたり、自動運...

SelfOcc: 純粋な視覚に基づく初の自己教師あり 3D 占有予測 (清華大学)

この記事は、Heart of Autonomous Driving の公開アカウントから許可を得て転...