0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

macOSでパスワードとハッシュ値(MCF)を生成する

Last updated at Posted at 2023-04-15

概要

  • Ansible等のプロビジョニングツールでLinuxのユーザの作成を行う際に、強固なパスワードとそのハッシュ値が必要になることがある
  • 以下にmacOS Venturaでパスワードとハッシュ値の生成を行う手順をまとめた

パスワードの生成

# パスワードジェネレータのインストール
$ brew install pwgen

# -c: 少なくとも1つの大文字を含める
# -n: 少なくとも1つの数字を含める
# -s: ランダム性の高いパスワードを生成する
# -B: 曖昧な文字列(例えば0とO)を含めない
# 16: 生成するパスワードの文字数
# 1: 生成するパスワードの数
$ pwgen -c -n -s -B 16 1
vhhH7AuEUjnbwsqr

# -y: 記号を含める
$ pwgen -c -n -s -y -B 16 1
bF('LFiJ3U%T)`>h

ハッシュ値の生成

  • Linuxでは、MCF(Modular Crypt Format)という形式でパスワードが保存されている
  • MCFは$ident$salt$hashedの形式
    • ident: アルゴリズムの識別子。1はMD5、5はSHA-256、6SHA-512を表す
    • salt: 生成されたランダムなソルト
    • hashed: ソルトとパスワードを組み合わせてハッシュ化されたパスワード
  • 今回はこの形式でSHA-512のハッシュ値を生成する方法についてまとめる
# パスワードの生成
$ pwgen -c -n -s -B 16 1
HNogpasjJ7YPhU3N

# ソルトの生成
$ pwgen -c -n -s -B 8 1
wmi3rAXY

# macOSにデフォルトでインストールされているのはOpenSSLからフォークされて開発されているLibreSSL
$ openssl version
LibreSSL 3.3.6

# -6 オプション、つまりSHA-512でハッシュ化するオプションが用意されていないことが分かる
# バージョンが古いからなのか、OpenSSLとはオプションが違うからなのかは調査していない
$ openssl passwd -6 -salt=wmi3rAXY HNogpasjJ7YPhU3N
unknown option '-6'
usage: passwd [-1 | -apr1 | -crypt] [-in file] [-noverify] [-quiet]
    [-reverse] [-salt string] [-stdin] [-table] [password]

 -1                 Use MD5 based BSD password algorithm 1
 -apr1              Use apr1 algorithm (Apache variant of BSD algorithm)
 -crypt             Use crypt algorithm (default)
 -in file           Read passwords from specified file
 -noverify          Do not verify password
 -quiet             Do not output warnings
 -reverse           Reverse table columns (requires -table)
 -salt string       Use specified salt
 -stdin             Read passwords from stdin
 -table             Output cleartext and hashed passwords (tab separated)

# 参照先の確認
$ which openssl
/usr/bin/openssl

# HomebrewでOpenSSLをインストール
$ brew install openssl

# opensslコマンドの実行時にHomebrewでインストールしたOpenSSLを参照するようにする
# 設定を永続化したい場合はシェルの設定ファイルに記述する(~/.zshrc等)
$ export PATH=/usr/local/opt/openssl@3/bin:$PATH

# LibreSSLからOpenSSLに変更された
$ openssl version
OpenSSL 3.1.0 14 Mar 2023 (Library: OpenSSL 3.1.0 14 Mar 2023)

# 参照先もHomebrewでインストールしたOpenSSLに変更されている
$ which openssl
/usr/local/opt/openssl@3/bin/openssl

# MCFのSHA-512のハッシュ値が生成できた
$ openssl passwd -6 -salt=wmi3rAXY HNogpasjJ7YPhU3N
$6$wmi3rAXY$tnfg9MoWyFM0epIaatCQMmFxTksnkXVU7Ep3fmRnrTuBcU3Sm9eq5cuiKpGECjvdhfVblWR7TU.FsnbCvW3tc.
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?