macOSの標準機能だけでは、実用的な強度のパスワード付きzipは作れません。Finderの「圧縮」にパスワードの項目は無く、ターミナルの zip -e は脆弱な旧方式(PKZip 2.0)を使うためです。
結論を先に書きます。用途によって選ぶものが変わります。
- 相手もMacなら:macOS標準の
hdiutilでAES-256の暗号化ディスクイメージ(.dmg)を作る - zip形式が必要(相手がWindows等)なら:
brew install sevenzipで 7-Zip を入れて AES-256 のzipを作る - 標準の
zip -eは、暗号化なしよりましという程度。重要な情報には使わない
この記事は2025年の公開後、2026年9月に全面的に書き直しました。 公開当時は「zip -er を使えば問題ない」と書いていましたが、これは誤りでした。手元のmacOSで検証した結果を含めて訂正します。
スポンサーリンク
訂正:zip -e と zip -er は暗号化の強さが同じ
公開当時の記事は、zip -e を「守りが弱い」、zip -er を「正解」として区別していました。この区別には根拠がありません。
-r は「フォルダの中身を再帰的に含める」というだけのオプションで、暗号化の方式にはまったく関係しません。
-e パスワード付きにする(暗号化方式を決めるのはこちら)
-r サブフォルダも含める(暗号化とは無関係)
そして、その暗号化方式はコマンド自身がヘルプで「weak(弱い)」と明記しています。
zip -h2
Encryption:
-e use standard (weak) PKZip 2.0 encryption, prompt for password
-P pswd use standard encryption, password is pswd
「standard (weak) PKZip 2.0 encryption」——これがmacOS標準の zip が使う方式です。AES-256ではありません。
実際に生成したファイルを確認しても、AES暗号化を示す圧縮メソッド99は使われていませんでした。macOSに同梱されているのは Info-ZIP の Zip 3.0 で、そもそもAESに対応していません。
PKZip 2.0(ZipCrypto)には既知の弱点があり、平文の一部が分かっている場合は総当たりよりはるかに短時間で解読できることが知られています。zip内のファイル名は暗号化されないため、中身の推測もされやすい形式です。
Finderの「圧縮」ではパスワードを設定できない
Finderで右クリックして「圧縮」を選ぶとzipは作れますが、パスワードを設定する画面自体がありません。単にまとめているだけです。
パスワードをかける目的があるなら、Finderの圧縮は最初から選択肢に入りません。
スポンサーリンク
方法1:暗号化ディスクイメージ(macOS標準・AES-256)
追加インストールなしでAES-256が使えるのはこれだけです。 hdiutil はmacOSに標準で入っており、ヘルプにも「AES-256 – 256ビットAES暗号化(推奨)」と書かれています。
ターミナルで作る
hdiutil create -encryption AES-256 -stdinpass \
-srcfolder ~/Desktop/secret-folder \
-volname "Secret" \
~/Desktop/secret.dmg
実行するとパスワードの入力を求められます。
| オプション | 意味 |
|---|---|
-encryption AES-256 |
AES-256で暗号化する |
-stdinpass |
パスワードを標準入力から受け取る |
-srcfolder |
中身にするフォルダ |
-volname |
マウントしたときの表示名 |
パスワードをコマンドラインに直接書かないでください。 シェルの履歴(~/.zsh_history)に平文で残ります。-stdinpass を使えば履歴に残りません。
GUIで作る
ターミナルを使わない方法もあります。
- 「ディスクユーティリティ」を開く
- メニューから「ファイル」→「新規イメージ」→「フォルダからのイメージ」
- 対象フォルダを選ぶ
- 暗号化で「256ビットAES暗号化」を選ぶ
- イメージフォーマットは「読み出し専用」または「圧縮」
この方法の制約
.dmg はmacOS専用です。 Windows や Android では標準では開けません。相手の環境が分からない場合は次の方法を使ってください。
方法2:7-Zip でAES-256のzipを作る
zip形式のままAES-256にしたい場合は、7-Zip を入れます。
brew install sevenzip
コマンド名は 7zz です。
# zip形式・AES-256でフォルダを暗号化する
7zz a -tzip -mem=AES256 -p secret.zip secret-folder/
| オプション | 意味 |
|---|---|
a |
アーカイブに追加する |
-tzip |
zip形式で作る(省略すると7z形式になる) |
-mem=AES256 |
AES-256を指定する。これが要 |
-p |
パスワードを対話的に入力する |
-mem=AES256 を書かないとZipCryptoになります。 7-Zipを使っていても、指定を忘れると弱い方式のままです。
ファイル名も隠したい場合は7z形式
zip形式では、AES-256でもファイル名は暗号化されません。 中身のファイル名から内容が推測できてしまいます。
ファイル名まで隠すなら7z形式を使います。
# 7z形式・ファイル名も暗号化する
7zz a -t7z -m0=lzma2 -mhe=on -p secret.7z secret-folder/
-mhe=on がヘッダー(ファイル名一覧)の暗号化です。ただし7z形式は相手にも展開ソフトが必要になるので、用途に応じて選んでください。
スポンサーリンク
結局どれを選ぶか
| 状況 | 選ぶもの | 強度 |
|---|---|---|
| 相手もMac | hdiutil の暗号化dmg |
AES-256 |
| 相手がWindows等/zip指定 | 7-Zip の -mem=AES256 |
AES-256 |
| ファイル名も隠したい | 7z形式 + -mhe=on |
AES-256 |
| 中身が漏れても実害がない | zip -er でも可 |
弱い(PKZip 2.0) |
| 本当に守りたい情報 | そもそもzipで送らない | — |
最後の行が実は一番重要です。 本当に保護が必要な情報なら、パスワード付きzipをメール添付するより、アクセス権を管理できるストレージで共有リンクを渡す方が確実です。
使うときに気をつけること
パスワードは別経路で伝える
zipと同じメールにパスワードを書くと、暗号化した意味がなくなります。 メールが漏れれば両方漏れるためです。別のチャネル(チャットや口頭)で伝えてください。
ファイル名に情報を書きすぎない
先に書いたとおり、zip形式ではファイル名は暗号化されません。2026年度_役員報酬一覧.xlsx のような名前は、開かなくても中身が分かります。
コマンド履歴に残さない
# パスワードが履歴に残る
zip -er -P mypassword secret.zip folder
# 対話入力なら残らない
zip -er secret.zip folder
-P オプションはコマンド履歴とプロセス一覧の両方に平文で現れます。スクリプト内で使う場合以外は避けてください。
暗号化の強度より先に、渡し方を見直す
パスワード付きzipをメールで送り、直後に別メールでパスワードを送る運用は、実質的な保護になっていないことが指摘されています。同じ経路を通るためです。
それでもzipを使うなら、少なくともAES-256を使い、パスワードは別チャネルで渡す——ここは守ってください。
まとめ
- Finderの「圧縮」にパスワード設定はない
zip -eとzip -erは暗号化の強さが同じ。-rは再帰オプションで暗号化と無関係- macOS標準の
zipは PKZip 2.0(コマンド自身が “weak” と表記)。AESには対応していない - 相手もMacなら
hdiutil -encryption AES-256で暗号化dmg(標準機能でAES-256が使える唯一の方法) - zip形式が必要なら
brew install sevenzip+7zz a -tzip -mem=AES256 -p -mem=AES256を書き忘れると、7-Zipでも弱い方式になる- zip形式ではファイル名が暗号化されない。 隠したいなら7z形式+
-mhe=on -Pでのパスワード指定は履歴に平文で残る。対話入力を使う- パスワードは必ず別経路で伝える
「パスワードを付けた」だけで安心してしまうのが一番危ない状態です。どの方式で暗号化されているかまで確認してから運用してください。
