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が70年間で急成長した理由が明らかに!タイム誌の4枚の写真がアルゴリズムの進化の謎を明らかにする

過去 10 年間の AI システムの進歩のスピードは驚くべきものでした。 2016年の囲碁対局でアル...

...

Java でよく使われる 7 つのソート アルゴリズムの概要

しばらく時間が空いたので、Java でよく使われる 7 つのソート アルゴリズムをまとめてみました。...

ネイチャー誌は「同じ原稿の複数投稿」を認めるべき時が来たという記事を掲載した。

「私たちの論文を溜め込むのはやめてください」ネイチャー誌のコラムに学者の投稿が掲載される。記事は、...

...

我が国の5G基地局は718,000台に達し、人工知能の発展を促進

2020年中国人工知能サミットフォーラム及び中国人工知能競技会結果発表会が23日、厦門で開催された。...

機械学習に効果的なデータを取得する方法 小さなデータを扱うための 7 つのヒント (一読の価値あり)

この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式...

人工知能による植毛が「ネットセレブ」に?ロビン・リー:AIはクールという段階を過ぎた

先日の中国国際輸入博覧会では、多くの現実的な人工知能製品が展示され、AIに代表される新技術が生活の細...

ついに誰かが説明可能な機械学習を明らかにした

[[443127]]ビッグデータの時代において、機械学習は製品の売上向上や人間の意思決定の支援に大き...

2020年に注目すべき8つのAIトレンド

自動化、ハードウェア、モデル開発などの新たな開発が、2020 年の AI を形作るでしょう。 O&#...

...

私の国はAI医療機器の標準化を加速しています

今年は、新たに改訂された「医療機器監督管理条例」の実施初年度であり、企業の主な責任がより顕著になり、...

2023 年の最高の無料 AI アート ジェネレーター

翻訳者 |ブガッティレビュー | Chonglouここ数か月で、生成AIにおいて大きな進歩がありまし...

新しい量子アルゴリズムは非線形方程式を解読しました。コンピューターは人間に取って代わり、預言者になれるのでしょうか?

かつて私たちは、コンピューターがどれだけ強力であっても、未来を予測するには不十分であると考えていまし...