2016-05-13 17 views
1

私はオープンソースアプリケーションを開発している新しい開発者です。私はプログラムにどのように署名するかを考えようとしています。署名証明書でコードに署名するプロセスは何ですか?

私はコード署名が大事な理由を理解しています。(CAまたは個別に)証明書を取得する方法はわかっていますが、秘密鍵を取得した後で実際に署名するプロセスは説明できません。

署名証明書でどのようにコードに署名しますか?具体的には、ソースコード、ビルドされた実行可能ファイル、完全に他の何かに署名しますか?特定のアプリを実行しているのですか、コードに何かを含めていますか?

関連しているが、離散質問:What to do with the code signing certificate?

答えて

2

あなたは、秘密鍵と公開鍵が含まれているコード署名証明書を持っています。

コードとデータの暗号化チェックサムを計算し、秘密鍵で暗号化します。暗号化されたチェックサムと公開鍵をコードに追加します。

誰でもあなたのコードの同じチェックサムを計算し、公開鍵で暗号化されたチェックサムを解読して比較することができます。一致した場合、コードが秘密鍵を持っている人によって提供されたことが証明されます。一致しない場合、このコードはチェックサムを暗号化したコードと同じではないことが証明されています。

オペレーティングシステムは有用であるために、アプリケーションの実行を許可する前にこの種のテストを実行します。そして、公開鍵は、OS供給者が所有する周知の秘密鍵で署名され、公開鍵の所有者を識別するために使用されるデータを伴います。

明らかに、EvilHackerはマルウェアを作成してコードに署名する可能性があります。それが署名されているという事実は無意味です。しかし、あなたはEvilHackerのアイデンティティーも持っているか、オペレーティングシステムがアプリケーションを起動しません。したがって、オペレーティングシステムでは、ハッキングされたアプリケーションや、公開鍵の所有者がOSの作成者に知られていないアプリケーションを実行することは決してありません。

ハッカーがうまくいくのは、コード署名を完全に削除し、ハッキングされていないコードを与えることです.OSは、署名のないコードを実行するかどうかを尋ねるか、まったく許可しません。

最も悪いハッカーは、osのオーナーにEvilHackerのコード署名証明書を受け入れるか、コード署名証明書を盗み、実際に正しく署名されたマルウェアを作成するかのどちらかです。

+0

あなたはソースコード上でチェックサムを実行し、srcをencrytpedチェックサムと公開鍵とともに配布します。実行可能ファイルのみを配布する場合はどうすればよいですか? – GreySage