John the Ripper (JtR) は、パスワードクラッキングツールとして広く知られています。その機能群の中に、mkvcalcproba というユーティリティが存在します。このツールは、John the RipperのMarkovモードで使用される統計ファイル(statファイル)と、クラックされたパスワードのリスト(または個別のパスワード)を分析し、パスワードの「マルコフスコア」やその他の統計情報を計算するために設計されています。
      
        この記事では、mkvcalcproba の基本的な概念から、その使い方、出力される情報の意味、そして活用方法までを詳しく解説します。パスワード解析やセキュリティ評価の精度を高めたいと考えている方にとって、mkvcalcproba は強力な味方となるでしょう。
      
mkvcalcprobaとは何か?
mkvcalcproba は、John the Ripper スイートに含まれるコマンドラインユーティリティの一つです。その主な目的は、指定された統計ファイル(Markovモードの学習データ)に基づいて、与えられたパスワードリスト(通常はクラックに成功したパスワード)の各パスワードが、どの程度「ありそうな」パスワードなのかを確率的に評価することです。
      
この評価は、「マルコフスコア(Markov Score)」と呼ばれる指標で行われます。このスコアは、パスワード内の文字の遷移確率に基づいて計算され、スコアが低いほど、そのパスワードが統計モデル上、より「ありふれた」または「生成されやすい」パターンを持っていることを示します。
        具体的には、マルコフモデルの理論に基づいています。この理論では、パスワードのある文字(位置 n)が出現する確率は、その直前の文字(位置 n-1)に依存するという仮説を立てます。例えば、「q」の後には「u」が続く可能性が高い、といった具合です。mkvcalcproba は、この文字間の遷移確率を統計ファイルから読み取り、パスワード全体の生成確率(の対数を取ってスケーリングしたもの)を計算します。
      
前提条件とインストール
mkvcalcproba を使用するには、John the Ripper がシステムにインストールされている必要があります。通常、John the Ripper (特に Jumbo バージョン) をインストールすると、mkvcalcproba も一緒に /run/ ディレクトリ(またはインストール先の run ディレクトリ)にコンパイル・配置されます。
      
John the Ripper は、多くのLinuxディストリビューション(Kali Linux、Parrot OSなど)に標準で含まれているか、パッケージマネージャを通じて簡単にインストールできます。ソースコードからコンパイルすることも可能です。
John the Ripper のインストール方法については、公式サイトや各OSのドキュメントを参照してください。
        インストールが完了したら、ターミナル(コマンドプロンプト)を開き、John the Ripper のインストールディレクトリ内の run ディレクトリに移動して、mkvcalcproba が存在することを確認してください。
      
cd /path/to/john/run
ls mkvcalcproba
コマンドが見つかれば準備完了です。
基本的な使い方
mkvcalcproba の基本的なコマンド構文は以下の通りです。
      
./mkvcalcproba <stat_file> <password_file>
ここで、
<stat_file>: Markovモードの統計情報が含まれるファイルへのパスを指定します。このファイルは通常、calc_statユーティリティを使って、大量のパスワードリスト(辞書ファイルなど)から生成します。<password_file>: 分析したいパスワードが1行に1つずつ記載されたファイルへのパスを指定します。これは、John the Ripper でクラックに成功したパスワードリスト (john.potファイルなど) や、特定のパスワード群の統計を見たい場合に用意します。
        例えば、stats.dat という統計ファイルと、cracked_passwords.txt というクラック済みパスワードリストがある場合、次のように実行します。
      
./mkvcalcproba stats.dat cracked_passwords.txt
実行すると、標準出力にタブ区切りの形式で各パスワードの統計情報が出力されます。
出力情報の解説
mkvcalcproba の出力はタブ区切りで、各列は以下の情報を示します。
      
| 列番号 | 内容 | 説明 | 
|---|---|---|
| 1 | パスワード | 分析対象となったパスワードそのものです。 | 
| 2 | P’ 計算詳細 | マルコフスコア (P’) の計算過程における各文字(または遷移)のスコアを示します。通常はデバッグや詳細分析用です。 | 
| 3 | P’ (マルコフスコア) | パスワード全体のマルコフスコアです。この値が小さいほど、統計モデル上「ありふれた」パスワードであることを意味します。計算式は P'(x) = round(-10 * log(P(x))) のような形式で、確率 P(x) が高いほどスコアは小さくなります。 | 
| 4 | パスワード長 | パスワードの文字数です。 | 
| 5 | ブラインドブルートフォース位置 (推定) | もし単純なブルートフォース攻撃を行った場合に、このパスワードが何番目に見つかるかの推定順位を示します。非常に大きな値になることがあります。 | 
| 6 | 最初の2文字を除いたマルコフスコア | パスワードの最初の2文字を除いた部分に対するマルコフスコアです。パスワードの後半部分のパターン分析などに役立つ場合があります。 | 
特に重要なのは3列目の「マルコフスコア」です。このスコアを比較することで、どのパスワードが統計的に見て「弱い」または「推測されやすい」パターンを持っているかを判断する材料になります。
統計ファイル (Stat File) の準備
mkvcalcproba を効果的に使うためには、質の高い統計ファイル(statファイル)が不可欠です。このファイルは、Markovモデルの学習データとなり、分析の精度を左右します。
      
        統計ファイルは、John the Ripper に含まれる calc_stat ユーティリティを使って作成します。calc_stat は、入力として与えられたパスワードリスト(辞書ファイルや漏洩パスワードリストなど)を分析し、文字の出現頻度や文字間の遷移確率を計算して統計ファイルを出力します。
      
基本的な使い方は以下の通りです。
./calc_stat <input_password_list> <output_stat_file>
        例えば、rockyou.txt という有名なパスワードリストから my_stats.dat という統計ファイルを作成する場合は、次のようにします。
      
./calc_stat /path/to/rockyou.txt my_stats.dat
より現実に即した、あるいは特定のターゲットに合わせた分析を行いたい場合は、分析対象となる環境や言語、文脈に近いパスワードリストを使って統計ファイルを作成することが推奨されます。例えば、日本語環境のパスワードを分析するなら、日本語の単語やよく使われるパターンを含むリストで学習させると、より精度の高いスコアリングが期待できます。
実践的な活用例
mkvcalcproba は、単にスコアを計算するだけでなく、様々な応用が考えられます。
      
1. クラックされたパスワードの分析
        John the Ripper などでパスワードクラックを行った後、成功したパスワードリスト (john.pot など) を mkvcalcproba に入力することで、どのようなパターンのパスワードがクラックされやすかったかを統計的に分析できます。
      
./john --show myhashes > cracked.txt
./mkvcalcproba common_stats.dat cracked.txt | sort -t$'\t' -k3n
        上記の例では、クラックされたパスワードを cracked.txt に出力し、common_stats.dat を使って各パスワードのマルコフスコアを計算しています。sort コマンドを使って、スコアが低い順(=よりありふれたパターン順)に並び替えることで、特に脆弱なパターンを持つパスワードを特定しやすくなります。
      
2. パスワードポリシーの評価
        組織内で設定されているパスワードポリシーが、実際に生成されるパスワードの複雑性や予測困難性にどの程度寄与しているかを評価する一助となります。ユーザーが設定した(あるいは設定する可能性のある)パスワードのサンプルを収集し、mkvcalcproba でスコアリングすることで、ポリシーが形骸化していないか、より推測されにくいパスワード生成を促しているかを確認できます。スコアが高い(=統計的に稀なパターンを持つ)パスワードが多いほど、ポリシーが有効である可能性があります。
      
3. Markovモードのパラメータ調整
        John the Ripper の Markovモード (--markov) は、統計ファイルに基づいて確率の高いパスワード候補を生成する強力なクラッキング手法です。mkvcalcproba で得られるスコア情報を参考に、Markovモードのレベル (MkvLvl) や長さ (MkvMaxLen) などのパラメータを調整することで、より効率的なクラッキング戦略を立てるヒントが得られる場合があります。 例えば、特定のスコア範囲内のパスワードを集中的に試す、といったアプローチです。
      
4. パスワード生成器の品質評価
        パスワードマネージャーやカスタムツールが生成するパスワードが、どの程度ランダムで予測困難か(少なくとも統計モデル上)を評価するのに使えます。生成されたパスワードリストを mkvcalcproba で評価し、スコアが十分に高い(=ありふれたパターンから逸脱している)ことを確認します。
      
注意点と限界
mkvcalcproba は便利なツールですが、いくつかの注意点と限界があります。
      
- 統計ファイルの品質依存: 分析結果の質は、使用する統計ファイルに大きく依存します。統計ファイルの元となったパスワードリストが偏っていたり、分析対象のパスワードの性質とかけ離れていたりすると、スコアの信頼性は低下します。
 - 単純なマルコフモデル: 基本的な 
mkvcalcprobaのモデルは、直前の1文字のみに依存する単純な(1次)マルコフモデルです。実際のパスワード生成プロセスはより複雑な場合があり、このモデルでは捉えきれないパターンも存在します。(John the Ripper の Markov モード自体は、より高次のモデルや複雑な設定も可能ですが、mkvcalcprobaの基本的なスコアリングはこの単純なモデルに基づいていることが多いです。) - スコアの解釈: マルコフスコアはあくまで統計的な指標であり、絶対的な安全強度を示すものではありません。スコアが高くても、他の攻撃手法(辞書攻撃、ブルートフォースなど)に対して脆弱な場合もあります。
 - 文字セットと言語: 統計ファイルが特定の文字セット(例: ASCIIのみ)や言語(例: 英語のみ)で作成されている場合、異なる文字セットや言語のパスワードに対するスコアリング精度は低くなる可能性があります。
 
        これらの点を理解した上で、mkvcalcproba を他の分析手法やツールと組み合わせて利用することが重要です。
      
まとめ
mkvcalcproba は、John the Ripper の Markovモードに関連するユーティリティであり、パスワードリストを統計的に分析するための強力なツールです。マルコフスコアを計算することで、パスワードがどの程度「ありふれた」パターンを持っているかを評価できます。
      
適切に作成された統計ファイルと共に使用することで、クラックされたパスワードの傾向分析、パスワードポリシーの評価、Markovモードのパラメータ調整支援など、様々な用途に活用できます。ただし、その結果は統計ファイルの品質に依存し、あくまで統計的な評価である点を理解しておく必要があります。
        John the Ripper を使ったパスワードセキュリティ評価や分析を行う際には、mkvcalcproba を活用して、より深い洞察を得ることを検討してみてください。
      
参考情報
- 
Openwall Community Wiki – Markov generator: John the Ripper の Markov モードと関連ツール (calc_stat, mkvcalcproba を含む) の背景理論と使い方について解説されています。
          
https://openwall.info/wiki/john/markov - 
John the Ripper documentation (MARKOV): John the Ripper の公式ドキュメント内の Markov モードに関するセクションです。
calc_statやmkvcalcprobaの使用法についても触れられています。
https://github.com/openwall/john/blob/bleeding-jumbo/doc/MARKOV