6

このトピックは私を混同し続けています。私は現在の理解を書いて、うまくいけば私が間違っていることを見つけたと思った。証明書、プロビジョニングプロファイル、公開鍵/秘密鍵が解読されました

開発証明書を作成すると、公開鍵と秘密鍵の概念があります。プロビジョニングポータルで使用可能な証明書は公開鍵を保持し、秘密鍵はキーチェーンに格納されます。あなたのアプリをコードするためには、両方を持っている必要があります。

アプリを実行するには、プロビジョニングプロファイルが必要です。プロビジョニングプロファイルは、基本的にアプリID、認識された証明書のセット(これらの証明書のいずれかによって署名されている必要があります)、デバイス識別子のセット(どのデバイスがアプリの実行を許可されているかを示す)

「認識された証明書」には公開鍵への参照が含まれていますが、秘密鍵は基本的にアプリケーションによって引き継がれています。

このように、App Storeに関しては、通常のデバイスは既定のprovプロファイルを持っていると考えることができます。既にAppleの公開キーがあり、appleは配布前に独自のコード署名操作を実行し、キー。

パーフェクト?閉じる?よろしいですか?無邪気な?

+0

私の知る限り完全に見えます。 –

答えて

1

レイWenderlichは、それほどよく説明しましたhere。秘密鍵は、基本的にアプリによって渡され ながら、あなたの説明を改善するために、代わりの

「が認識された証明書」は、公開鍵への参照を持っています。

私が言う:

アプリの.ipaは、開発者の証明書が含まれています。開発者の 証明書は、秘密鍵で署名されています。 正式なアップルの秘密鍵でも署名されています。

したがって、Appleのと、あなたの公開鍵と開発者の証明書を検証することで、iPhoneがそれを確認することができます。

  • あなたがアプリをAppleが認定されているこのアプリ
  • の開発者であります開発
  • (この開発者証明書を参照するプロビジョニングプロファイルが電話にある限り)このアプリはiPhoneで実行することができます。

秘密鍵は証明書またはプロファイルのいずれにも格納されず、署名にのみ使用されます。公開鍵が格納されているかどうかは不明です。完全に安全であるためには、検証の際に電話機がAppleから公開鍵を取得する必要があります。何が価値があるために

+0

iosアプリケーション証明書から公開鍵/秘密鍵を取得することは可能ですか? –

+0

@ iTroyd23あなたが確かに証明書から得ることができない秘密鍵は、それが大きなセキュリティ違反となるためです。公開鍵、私は知らない。証明書に記載されていても、デバイスはサーバーから依頼して他のセキュリティループホールを回避する必要があります。 – fishinear

+0

ありがとうございます。 Appleが独自のアプリでプロファイルにアクセスできるかどうか –

4

は、ここで私の更新の理解されています

Aプロビジョニングプロファイルは、デバイス上で実行することができ、開発者(証明書を経由して)によって署名(AppIDを経由して)アプリを説明しますファイルです(UDID)。

証明書には、公開鍵と秘密鍵という概念があります。公開鍵と秘密鍵は数学的にリンクされており、平文を暗号化し、暗号文を解読することができます。証明書により、Appleは登録された開発者だけがコードを配布できるという2つ、配布されているコードがあなたのデバイスに向かう途中で変更されていないことの2つを保証することができます。

Xcodeでコードをビルドすると、キーチェーンにある非公開鍵でアプリケーションに署名してロックします。コードのロックを解除/復号化するには、宛先デバイスが公開鍵にアクセスできる必要があります。デバイスは、プロビジョニングプロファイルに含まれている証明書から公開鍵を取得します。

開発者からデバイスへのコードの変更がないことを確認するために、証明書にコード/データを「ダイジェスト」として変換できるアルゴリズムが含まれています。開発者側では、データ/コードがアルゴリズムを通じて実行され、別のダイジェストに生成され、プライベートキーでロックされます。

デバイスでアプリケーションパッケージが受信されると、デバイスはコードを変更していないことを確認できます。秘密鍵でダイジェストをロック解除し、アルゴリズムを使用して暗号化されていないデータを実行します証明書を使って証明書にアクセスできます)、結果が開発者から送信されたものと同じダイジェストであることを確認します。

さらに、provプロファイルでは、電話機のUDIDを確認して、プロファイルのAppIDがアプリの識別子と一致することを確認するだけで済みます。

私たちは、アプリストアのアプリに別々の証明書プロファイルを必要としない理由は、各iPhoneにAppleが署名配布アプリに使用する公開鍵を同梱しているためです。

+0

も同様に修正してください! –

+0

私はRayのtestflightチュートリアルで、コードに署名した方が良いと説明していると思います。 http://www.raywenderlich.com/48750/testflight-sdk-tutorial – huggie