iOS署名認証メカニズムのレビューと分析

基本以前の概念について: 参照する必要があります暗号化、署名、証明書の基本概念とプロセス

ご存知のとおり、iOS では開発とリリースの両方に多数の証明書が必要です。では、各証明書の役割は何で、どのように生成されるのでしょうか?これがこの章の主要な内容です。
注: Apple 自体が CA 証明書の権威ある認証局です。

1. 証明書一覧

開発には次の証明書が含まれている必要があります。

  • Mac上生成CertificateSigningRequest.certSigningRequest文件
  • 上传刚刚的.certSigningRequest文件 生成 ios_development.cer\ios_distribution.cer证书文件(cer证书
  • デバイスの登録とアプリIDの追加
  • 获得*.mobileprovision文件 (也就是pp证书)

2. パノラマ – 全体的な状況を見る

まず全体像を見て、それからステップごとに説明しましょう。

ここに画像の説明を挿入します

3. キーリスト

使用される主なキーキャラクターは次のとおりです。

  • Macの公開鍵と秘密鍵
  • Apple の秘密キー (使用するには Apple の公式 Web サイトにアップロードする必要があります。個人はそれを持っていません)。
  • iOS デバイスに含まれる Apple の公開キー
    ここに画像の説明を挿入します

4. .certSigningRequest ファイル

ここに画像の説明を挿入します
この手順で生成されたファイル CertificateSigningRequest.certSigningRequest は、Mac デバイスの 公開キー に対応します。秘密鍵の場所は気にしません。

5.cer証明書

ここに画像の説明を挿入します
前の手順を Apple の公式 Web サイトにアップロードした後.certSigningRequest、Apple は独自の秘密キーを使用します。アップロードされたファイル (実際には Mac の 公開キー ) に署名し、
して .cer を取得します。証明書。
.cer証明書には Mac の公開キー + 署名 + Mac 関連情報などが含まれます。

つまり、全体像に対応すると、次のようになります。
ここに画像の説明を挿入します

6. .mobileprovision ファイル (例:pp证书)

ここに画像の説明を挿入します
この手順では、.cer証明書+ App ID + 可安装的设备 (Appsore および他の公開チャネルにはこのオプションがありません)
その後、Apple は独自の 私钥 で署名します。最後に pp 証明書を生成します

注:
App ID には、現在のアプリケーションのすべての権限情報などが含まれます。

つまり、全体像に対応すると、次のようになります。

ここに画像の説明を挿入します

同様に、pp ファイルには cer ファイルのすべての情報が含まれていることがわかります。

7. ipaパッケージ内のファイル内容

ファイルのサフィックスを .ipa から .zip に変更して解凍します。
次の構造がわかります:
3 つの部分で構成されます: CodeResources + pp + 其他

ここに画像の説明を挿入します

  • 内部の CodeResources ファイルは、実際には plist ファイルです。これには、現在のアプリの他のすべてのファイル (さまざまなリソース ファイル、nib、png、html、mach-o) のハッシュ値が含まれており、各ファイルがハッシュ値を生成した後、Mac の公開キーで署名されます。
<?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>files</key>
	<dict>
		<key>AppIcon20x20@2x.png</key>
		<data>
		4ks7eY796HDUyqe3inCSmyrYWus=
		</data>
		<key>AppIcon20x20@2x~ipad.png</key>
		<data>
		4ks7eY796HDUyqe3inCSmyrYWus=
		</data>
		<key>AppIcon20x20@3x.png</key>
		<data>
		NPu1GSfNuEUrnv4Xv66KqOijUmw=
		</data>
		<key>AppIcon20x20~ipad.png</key>
		<data>
		xaqeRlvoMr4z4838PEXoH2pg5h4=
		</data>
		<key>AppIcon29x29.png</key>
		<data>
		2bwmXULR6f8MkodULuPJdsVhi8Q=
		</data>
		......
  • pp ファイルには、アプリの権限、appID、および cer 証明書 (mac 公開キー) が含まれています。

これは、ipa ファイルのコンポーネントを表す全体図内のこの部分にも対応します。
ここに画像の説明を挿入します

8. プロセス全体

ここに画像の説明を挿入します
パート 2 の全体像を捉えて、最後まで読んでみましょう。
図の手順 1 ~ 6 に従います。

  1. すべてのアプリ ファイルを暗号化hashし、mac 私钥 を使用して暗号化します。 CodeResources ファイルを生成します。
  2. Apple の公式 Web サイトで、Apple で 証明書mac的公钥 (.certSigningRequest ファイル) を行います。生成 署名 私钥.cer
  3. 2 の.cer 証明書、デバイス、appid、アプリの権限を入力し、apple 私钥 を使用して署名します。 pp ファイルを生成し、その pp ファイルを ipa パッケージに入れます。
  4. iOS デバイスでは、apple 公钥 を使用して pp ファイルの署名を確認します。そして、現在のアプリのデバイス、ID、権限を一つ一つ確認し、どれか一つでも失敗するとインストールは失敗します。
  5. iOS デバイスでは、起動時に apple 公钥 を使用して手順 4 で取り出した cer 証明書を確認し、Mac公钥 も取り出します。失敗した場合、実行は失敗します。
  6. iOS デバイスで実行を開始するときに、ステップ 5 のMac 公钥を使用して、ステップ 1 で生成されたファイルを復号化します。CodeResourcesファイルが改ざんされている場合は、取り出したすべてのファイルの hash 値を 1 つずつ確認します。 1 つの項目が失敗すると、問題が発生します。

注: 一部のノートには MJ 教師の学習資料が含まれています。

おすすめ

転載: blog.csdn.net/goldWave01/article/details/122587108