2008年7月2日水曜日

Signing Code For iPhone Development

Signing Code For iPhone Development

http://developer.apple.com/iphone/gettingstarted/docs/signingcodeforiphonedev.action

FAQは問題が起きたときに読むとして(笑)最後に色々と噂のこのページを読んでメモを取りたいと思います・・・とは言うものの肝心のiPhoneもiPod touchも手元にないので確認ができません(苦笑)

開発システムを走らせる前と、配布する前にAppleに依頼する前に、デジタル サインを求めているそうです。さらに配布する前にAppleは自身のデジタル サインを加えているそうです。

■ Digital Signatures and Signing Identities
すべてのiPhoneのアプリケーションは証明発行によるデジタル サインが必要で、証明はAppleにiPhone developerとして登録されることで発行されます。この証明発行によりアプリケーションの開発者を識別でき、アプリケーションが改ざんされていないことを確認できる・・・と書いているのですが、イタチごっこにならないように祈るのみです。ただ、この文章のiPhone developerはFreeの人も含まれるような感じがします。

証明発行には公開鍵 秘密鍵方式だそうです。チョットここは用語の利用が気になるので英単語混じりで書くと・・・private鍵はsigningプロセスで使用され、public鍵はsignatureを確認するために使用されます。public鍵はsigning certificateに保管されています。private鍵は別に保管されています。このcertificateと関連のprivate鍵の組み合わせはdigital identityまたはsigning identityと呼ばれています・・・ん〜〜日本語の公開鍵 秘密鍵方式で使われている用語との関係がチョット分かりにくい(笑)まあ、公開鍵 秘密鍵方式はすでに知っていることなので気にせずに先に進みましょう(大笑)

iPhone Developer ProgramのProgram Portalを使用して許可申請するCertificate Signing Request (CSR)を作成するために、Keychain Accessユーティリティ内のCertificate Assistantを使用するそうです。申請が許可されるとcertificateファイルをダウンロードして、Keychainに登録するためにダブルクリックします・・・で、ここからがチョット書いていることが分からないー>この手続きでハッキリして い な い のはCSRを生成するためにCertificate Assistantユーティリティを使うときで、それは自動的にpublic鍵とprivate鍵の組み合わせを生成します・・・とちゅうの「それ」が何を差すのか分からないし、何がハッキリしないのかも分からない(苦笑)まあいずれにせよ・・・Appleに送られる承認要求の中にpublic鍵が入り、private鍵はkeychainの中に入っているそうだ。

署名されたCertificateをダウンロードしてインストールするときに、Keychain Accessユーティリティがprivate鍵と関連づけ、証明承認が生成される、としています。Certificateとそのprivate鍵を見るには、Keychain Accessユーティリティを開いて、CategoryペインのMy Certificatesを開きます、としてその図が示されています。

用意した装置に署名済みアプリケーションをインストールするときに、アプリケーションが署名されており、サイン後に変更されていないことを確かめるために、iPhone OSが署名を確認します。もし、署名が無効だったり、コードが署名されていないと、iPhone OSはアプリケーションを起動しません、と書いていますが、開発したコードに署名するにはどうすれば良いのか・・・良くわかりません。

同様に、Appleに承認を得て配布するためにアプリケーションを送るときに、signing identityを使用してアプリケーションにサイン承認して、アプリケーションと共にSigning Certificateを送ります。この時にprivate鍵をAppleに送るなと書いていますが、やる人はたくさんいるだろうな(笑)Appleは登録された開発者から送られたコードであり、改変されていないことをサインを元に確認し、アプリケーションにApple自身の承認をします。これで、開発機以外のiPhoneやiPod touchで実行できます。この方法で利用者はiTunesからダウンロードしたアプリケーションが登録開発者によって書かれたもので、改変されていないことを確信できます。

■ Copying a Signing Identity To Another Computer
複数のコンピュータで開発する場合には、すべてのコンピュータにsigning identityをいれます。これはProgram Portalからダウンロードしたsigning certificateファイルはprivate鍵を含んでいないため、このファイルをコピーしても利用できません。
Keychain AccessユーティリティのFileメニューにあるExport Itemsを選択して、certificateとprivate鍵をPersonal Information Exchange (.p12)ファイルとしてExportし、他のコンピュータにこのファイルをコピーします。ファイルをダブルクリックしてcertificateとprivate鍵をKeychainにインストールします。

■ Keeping Your Private Key Safe and Secure
このシステムはsigning identity(特にprivate鍵)が安全に保管されている限りは大丈夫です。しかし、これが第三者にコピーされると悪用されます。このため、物理的な安全策をとるようにお進めします・・・う〜ん、この意味ではMacBook (Pro)は危険だな。

このあと他の人と一緒に仕事をしているときの注意書きがあります。

Keychainの初期設定ではそのパスワードはログインのパスワードと同じだそうで、コンピュータにログインしていると解錠されてしまうそうです。これは別パスワードを設定しないとダメですね。

別パスワードを設定するにはKeychain Accessユーティリティで、Edit > Change Passwordを選択します。Change Passwordダイアログのロック アイコンをクリックしてPassword Assistantで、パスワードの安全性や推薦パスワードを調べます。

使用していないときにKeychainを施錠するには、Keychain AccessユーティリティでEdit > Change Settings for Keychainを選択し、二つのLockチェックボックスをonにするそうです。

他の人がコンピュータを使うことがないように執拗に書いています。これは万が一クラックされてAppleが控訴されたときの対策ですね。米国ではこれぐらい書いていないと、悪徳弁護士にごっそり持って行かれます(苦笑)

さらに、他の安全な場所にあるコンピュータにバックアップしたり、暗号化してCDに焼いたり、Personal Information Exchange (.p12)ファイルのフォームで暗号ディスクイメージファイルに入れるなどを推薦しています。さらに、本当に安全かを確かめろと書いています。いやはや

■ Where to Start
signing identityを入手してインストールする方法は、iPhone Developer ProgramのWebサイトにあるProgram Portalに詳細が書かれています。iPhone DevCenterページの上右端にあるProgram Portalをクリックすると行ける・・・と書いていますが、そのような場所は見あたりません(苦笑)

詳細は"Security Overview"と"Code Signing Guide"を参照するように書いています。

0 件のコメント:

Open Source

Appleが主催するdarwin-devのMailing listにAppleのDarwin TeamのWilliam SiegristがDeveloper Tools 3.1.3とiPhone OS 3.0関連のソース一部を公開したと投稿していました。 Developer To...