🔐

Macユーザー向けpass導入ガイド:無料で安全なパスワード管理システムの構築

に公開

はじめに:なぜpassなのか

家族のクレジットカードが不正利用されたため、明日は我が身と、改めてパスワードくらいはしっかりと管理しようと思い、パスワード管理ツールを探していました。
パスワード管理ツールといえば1PasswordやBitwardenが有名ですが、なにせ料金がかかってしまうので、無料でいい感じで、実績もあってとそんな都合のいいツールを探していたのですが、HackerNewsで「Pass」というツールが取り上げられていたので、なんだこれは?と思い触ってみたのですが、現状私の要望を満たしてくれそうだと感じました。
この記事では、触ってみてわかったpassの基本概念から実際の導入・使用方法までを解説していきたいと思います。

passとは何か:Unix哲学に基づくパスワード管理

passは、Unix哲学に従って設計されたコマンドラインベースのパスワードマネージャーです。
既存の枯れた技術を組み合わせることで高い信頼性を実現しています。

基本的な仕組み

まず、passの基本的な仕組みから解説します。
passは以下の3つの技術を組み合わせて動作します

この設計により、特定の企業のサービスに依存することなく、永続的にパスワード管理を行うことが可能になります。

GPGとは:暗号化技術の基礎知識

passを理解する上で重要になるのがGPG(GNU Privacy Guard)です。GPGは公開鍵暗号方式を使用した暗号化ソフトウェアで、1990年代からの長期運用実績を持つ信頼性の高い技術です。

公開鍵暗号方式の仕組み

公開鍵暗号方式では、数学的に関連する2つの鍵を生成します

この方式の優れた点は、暗号化と復号化で異なる鍵を使用することにあります。
つまり、データを暗号化する際に秘密鍵を必要とせず、復号化する際にのみ秘密鍵が必要となります。

なぜGPGを使うのか

passは暗号化にGPG(GNU Privacy Guard)を使用しています。
GPGの特徴は以下の通りです

passがGPGを選択したことにより、暗号化部分を独自実装する必要がなく、実績のある暗号化技術を活用できています。

passのセキュリティの仕組み

passは以下の技術的特徴により、高いセキュリティを実現しています。

暗号化による保護

分散型アーキテクチャ

実際のセキュリティ効果

この設計により、以下のような状況でもパスワードの安全性が保たれます

  • GitHubやGitLabのサーバーが侵害された場合でも、暗号化されたファイルしか取得できない
  • ネットワーク通信が傍受されても、暗号化されたデータのみが送信される
  • GPGキーを持たない第三者は、物理的にファイルを取得してもパスワードを復号化できない

導入前の準備:必要なツールの理解

Macでpassを使用するために、以下のツールが必要になります

Homebrew

macOS用のパッケージマネージャーです。passやGPG等のUnixツールを簡単にインストールすることができます。

GPG(GnuPG)

暗号化・復号化を行うコマンドラインツールです。passの心臓部とも言える重要なコンポーネントになります。

pinentry-mac

GPGがパスフレーズ(マスターパスワード)を入力する際に、macOSのネイティブUIを使用するためのツールです。これがないとコマンドラインでパスフレーズを入力する必要があり、非常に不便になります。

Git

バージョン管理と複数デバイス間での同期に使用します。passは各操作を自動的にGitコミットとして記録するため、パスワードの変更履歴を追跡することができます。

実際の導入手順

ステップ1: 必要なツールのインストール

まず、Homebrewがインストールされていない場合は以下のコマンドでインストールします

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

次に、passをインストールします:

# pass公式で推奨されているインストール方法
brew install pass

passを快適に使用するために、以下のツールも追加でインストールすることを推奨します

# Git(バージョン管理・同期用)
brew install git

# GPG(passと一緒にインストールされる場合もありますが、明示的にインストール)
brew install gpg

# pinentry-mac(macOSでGUIパスフレーズ入力を可能にする)
brew install pinentry-mac

ステップ2: GPGキーの生成

GPGキーは、あなただけが知る「デジタル署名」のようなものです。このキーがあなたのパスワードを保護する最後の砦になります。

gpg --full-generate-key

キー生成時にいくつか質問されるので以下設定で進めます

以下生成時のログです。

% gpg --full-generate-key
gpg (GnuPG) 2.4.8; Copyright (C) 2025 g10 Code GmbH
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

ご希望の鍵の種類を選択してください:
   (1) RSA と RSA
   (2) DSA と Elgamal
   (3) DSA (署名のみ)
   (4) RSA (署名のみ)
   (9) ECC (署名と暗号化) *デフォルト
  (10) ECC (署名のみ)
  (14) カードに存在する鍵
あなたの選択は? 1
RSA 鍵は 1024 から 4096 ビットの長さで可能です。
鍵長は? (3072) 4096
要求された鍵長は4096ビット
鍵の有効期限を指定してください。
         0 = 鍵は無期限
      <n>  = 鍵は n 日間で期限切れ
      <n>w = 鍵は n 週間で期限切れ
      <n>m = 鍵は n か月間で期限切れ
      <n>y = 鍵は n 年間で期限切れ
鍵の有効期間は? (0)0
鍵は無期限です
これで正しいですか? (y/N) y

GnuPGはあなたの鍵を識別するためにユーザIDを構成する必要があります。

本名: ****
電子メール・アドレス: ****
コメント: ****
次のユーザIDを選択しました:
    "**** <****>"

名前(N)、コメント(C)、電子メール(E)の変更、またはOK(O)か終了(Q)? o
たくさんのランダム・バイトの生成が必要です。キーボードを打つ、マウスを動かす、ディスクにアクセスするなどの他の操作を素数生成の間に行うことで、乱数生成器に十分なエントロピーを供給する機会を与えることができます。
gpg: ディレクトリ'/hogehoge/.gnupg/openpgp-revocs.d'が作成されました
gpg: 失効証明書を '/hogehoge/.gnupg/openpgp-revocs.d/hogehoge.rev' に保管しました。
公開鍵と秘密鍵を作成し、署名しました。

pub   rsa4096 2025-09-15 [SC]
      ********************
uid   **** <****>
sub   rsa4096 2025-09-15 [E]

ステップ3: GPG Agent の設定

macOSでGPGを快適に使用するために、以下の設定を行います

echo "pinentry-program $(brew --prefix)/bin/pinentry-mac" > ~/.gnupg/gpg-agent.conf
gpg-connect-agent reloadagent /bye

この設定により、パスフレーズの入力時にmacOSのネイティブダイアログが表示されるようになります。

ステップ4: passの初期化

GPGキーIDを確認してからpassを初期化します

# キーIDの確認
gpg --list-secret-keys --keyid-format LONG

出力例:

sec   rsa4096/1234567890ABCDEF 2025-09-15 [SC]
uid                 [ultimate] Your Name <your.email@example.com>
ssb   rsa4096/FEDCBA0987654321 2025-09-15 [E]

この場合、キーIDは1234567890ABCDEFです。このキーIDを使ってpassを初期化します

# passの初期化(キーIDを指定)
pass init "1234567890ABCDEF"

このキーを使ってすべてのパスワードが暗号化されます。

ステップ5: Gitリポジトリとしての初期化

passをGitリポジトリとして初期化することで、バージョン管理と複数デバイス間での同期が可能になります

pass git init

GitHub連携:クラウド同期の設定

passの大きな利点の一つは、完全に暗号化された状態でクラウド同期を行えることです。GitHubにパスワードを保存しても、暗号化されているため安全です。

GitHubリポジトリの作成

  1. GitHubにログインし、新しいプライベートリポジトリを作成
  2. リポジトリ名は「passwords」等、分かりやすい名前を設定
  3. 必ずプライベートリポジトリとして作成

リモートリポジトリの設定

passにGitHubリポジトリを関連付けます

pass git remote add origin git@github.com:username/passwords.git

初回同期の実行

まず、テスト用のパスワードを生成して初回同期を行います

# テスト用パスワードの生成
pass generate test/example 16

# 変更をコミット
pass git add .
pass git commit -m "Initialize password store"

# GitHubのmainブランチに合わせるため、ブランチ名を変更
pass git branch -M main

# GitHubにプッシュ
pass git push -u origin main

この時点で、GitHubリポジトリの「main」ブランチに暗号化されたパスワードファイルがアップロードされます。ただし、GPGキーを持たない第三者には内容を見ることができません。

基本的な使用方法

パスワードの生成と保存

新しいサービスのパスワードを生成する場合

# 20文字のランダムパスワードを生成し、クリップボードにコピー
pass generate -c Social/twitter.com 20

# パスワード一覧を表示
pass

# 特定のフォルダ内を表示
pass Social/

このコマンドは以下の処理を行います

  1. 20文字のランダムパスワードを生成
  2. GPGでパスワードを暗号化
  3. Social/twitter.com.gpgファイルとして保存
  4. パスワードをクリップボードにコピー(45秒で自動削除)
  5. Gitコミットを自動作成

既存パスワードの保存

手動でパスワードを入力する場合

pass insert Email/gmail.com

プロンプトが表示されるので、既存のパスワードを入力します。

# パスワードの編集(既存エントリの更新)
pass edit Email/gmail.com

# パスワードの削除
pass rm Email/gmail.com

# フォルダごと削除
pass rm -r OldService/

パスワードの取得

保存したパスワードを使用する場合

# パスワードを画面に表示
pass Email/gmail.com

# パスワードをクリップボードにコピー(45秒後に自動消去)
pass -c Email/gmail.com

# パスワードを検索
pass find twitter
pass grep "gmail"

# QRコードとして表示(qrencodeが必要)
pass show -q Email/gmail.com

複数行データの活用

passは単純なパスワード以外にも、関連情報を一緒に保存できます

# 複数行モードでの入力
pass insert -m Banking/mizuho-bank

入力例:

MySecurePassword123
URL: https://www.mizuhobank.co.jp/
Username: taro.yamada@example.com
Secret Question: What is your pet's name? - Pochi
Phone PIN: 1234

クリップボードコピー時は最初の行(パスワード)のみがコピーされるため、ログインフォームでの使用が便利です。

推奨フォルダ構成

効率的なパスワード管理のために、以下のような階層構造を推奨します

Password Store
├── Email/
│   ├── gmail.com
│   ├── yahoo.co.jp
│   └── icloud.com
├── Social/
│   ├── twitter.com
│   ├── facebook.com
│   └── instagram.com
├── Work/
│   ├── company-email
│   ├── aws-console
│   └── slack-workspace
├── Banking/
│   ├── mizuho-bank
│   └── rakuten-bank
├── Shopping/
│   ├── amazon.co.jp
│   ├── rakuten.co.jp
│   └── apple-id
└── Services/
    ├── netflix
    ├── spotify
    └── adobe-creative-cloud

この構成により、直感的にパスワードを検索・管理できます。

複数デバイスでの運用

passの真価は、複数のデバイス間で安全に同期できることです。

別のMacでの設定

新しいMacでpassを使用する場合

  1. 既存MacからGPGキーをエクスポート:
gpg --armor --export-secret-keys [キーID] > gpg-backup.asc
  1. 新しいMacでキーをインポート
gpg --import gpg-backup.asc
# キーの信頼性を設定(自分のキーなので絶対的信頼)
gpg --edit-key [キーID] trust quit
# 「5」(絶対的信頼)を選択
  1. パスワードストアをクローン:
git clone git@github.com:username/passwords.git ~/.password-store

iPhone/iPadでの利用

「Pass for iOS」アプリを使用することで、iOSデバイスでもpassを利用できます

  1. App Storeから「Pass for iOS」をダウンロード
  2. MacからGPGキーをエクスポートし、AirDropでiOSデバイスに送信
  3. アプリでキーをインポートし、Gitリポジトリを設定

Androidでの利用

「Android Password Store」アプリにより、Androidデバイスでも同様に利用可能です。

  1. Google Play Storeから「Password Store」をインストール
  2. GPGキーをOpenKeychainアプリでインポート
  3. Gitリポジトリをクローン

まとめ

この記事では、passの基本的な仕組みから実際の導入手順、複数デバイスでの運用方法まで解説しました。

passの特徴をあらためてまとめると

初期設定にはある程度の学習が必要ですが、一度環境を構築すれば非常に快適なパスワード管理が可能になります。特にコマンドラインに慣れ親しんでいる方や、データの所有権を重視する方には適した選択肢だと思います。

無料で高機能なパスワード管理システムをお探しの方は、ぜひpassを試してみてください。

GitHubで編集を提案

Discussion