4
6

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 5 years have passed since last update.

iOS構成プロファイルの暗号化

Last updated at Posted at 2016-10-09

リファレンス
#下準備

  • 平文、未署名の構成プロファイルを作成する。(サンプルはパスコード必須化プロファイル)
  • 「PayloadContent」キー内のトップレベルarrayを切り取る。
    • 別ファイルに貼り付け、例として「content.plist」として保存
sample.mobileconfig
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>PayloadContent</key>
<!-- ここから -->
	<array>
		<dict>
			<key>PayloadDescription</key>
			<string>パスコード設定を構成します</string>
			<key>PayloadDisplayName</key>
			<string>パスコード</string>
			<key>PayloadIdentifier</key>
			<string>com.apple.mobiledevice.passwordpolicy.075922A0-F3E8-4021-9299-05DCE5737A69</string>
			<key>PayloadType</key>
			<string>com.apple.mobiledevice.passwordpolicy</string>
			<key>PayloadUUID</key>
			<string>075922A0-F3E8-4021-9299-05DCE5737A69</string>
			<key>PayloadVersion</key>
			<integer>1</integer>
			<key>allowSimple</key>
			<true/>
			<key>forcePIN</key>
			<true/>
			<key>requireAlphanumeric</key>
			<false/>
		</dict>
	</array>
<!-- ここまで --->
	<key>PayloadDisplayName</key>
	<string>構成プロファイル</string>
	<key>PayloadIdentifier</key>
	<string>com.example.sampleprofile</string>
	<key>PayloadRemovalDisallowed</key>
	<false/>
	<key>PayloadType</key>
	<string>Configuration</string>
	<key>PayloadUUID</key>
	<string>04DE3942-1870-4C98-B901-5A233EA772BF</string>
	<key>PayloadVersion</key>
	<integer>1</integer>
</dict>
</plist>
  • 「PayloadContent」キーを「EncryptedPayloadContent」に変更する。
encrypted.mobileconfig
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>EncryptedPayloadContent</key>
<!-- ここから -->

<!-- ここまで --->
	<key>PayloadDisplayName</key>
	<string>構成プロファイル</string>
	<key>PayloadIdentifier</key>
	<string>com.example.sampleprofile</string>
	<key>PayloadRemovalDisallowed</key>
	<false/>
	<key>PayloadType</key>
	<string>Configuration</string>
	<key>PayloadUUID</key>
	<string>04DE3942-1870-4C98-B901-5A233EA772BF</string>
	<key>PayloadVersion</key>
	<integer>1</integer>
</dict>
</plist>

#ペイロードコンテンツの暗号化
macOS Sierra, OpenSSL 0.9.8zh 14 Jan 2016

$ openssl smime -encrypt -aes256 \
-in content.plist \
-outform pem \
[証明書].cer

-----BEGIN PKCS7-----
44G744GS44G044KICg==(もっと長い)
-----END PKCS7-----

「-----BEGIN PKCS7-----」から「-----END PKCS7-----」までの間のBase64符号化されたデータをコピーする。

#暗号化プロファイルとして結合
プロファイルの「EncryptedPayloadContent」下にDataとして貼り付ける。

encrypted.mobileconfig
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>EncryptedPayloadContent</key>
<!-- ここから -->
	<data>
	44G744GS44G044KICg==
	</data>
<!-- ここまで --->
	<key>PayloadDisplayName</key>
	<string>構成プロファイル</string>
	<key>PayloadIdentifier</key>
	<string>com.example.sampleprofile</string>
	<key>PayloadRemovalDisallowed</key>
	<false/>
	<key>PayloadType</key>
	<string>Configuration</string>
	<key>PayloadUUID</key>
	<string>04DE3942-1870-4C98-B901-5A233EA772BF</string>
	<key>PayloadVersion</key>
	<integer>1</integer>
</dict>
</plist>

#使い方と個人的まとめ

  • iOS9までは、復号できない場合はその旨を表示していたがiOS10の場合は、ただのxmlとして扱われる模様

    • プロファイルインストール画面に遷移せず、OpenInが働く
  • 復号させる場合は、iOS側に秘密鍵を入れておく必要がある。

    • p12ファイルをメールで送る、p12を含むプロファイルをインストールしておく
  • 署名をする場合は、暗号化プロファイル作成後に署名する。

  • 暗号化することで、パスワード類を含めて平文で見えることはなくなるが、公開鍵暗号の仕様上、復号できなくもないため、内容を秘匿したい場合は秘密鍵の配布方法を考慮する必要がある。

    • p12をメールで送ると、そこから秘密鍵を取り出して復号できなくもない。
    • p12を含めたプロファイルにはp12のパスワードが平文で入る。
  • 秘密鍵を持っていないとプロファイルのインストールができないので、不特定多数への配布には不向き

  • 業務利用する場合は、秘密鍵を事前にConfiguratorで入れておけばいいかもしれない。

    • もっとも、その場合は大人しくMDMを利用する方が楽

結論:使い途が思いつかない。

おまけ
暗号化プロファイルがインストールされた場合、iTunesとかでのバックアップ時に暗号化が必須とされる。はまった。

4
6
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
4
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?