2016-12-04 6 views
1

私はインターネット経由で新しいバージョンのアプリケーションをダウンロードできる統合アップデーターを持つデスクトップアプリケーションの著者です。ダウンロードしたファイルを認証して、新しいファイルが作成されたことをダウンローダが確認できるようにしたいと思います。 SSLベースのサーバー認証はオプションではありません。なぜなら、ファイルはサードパーティのサービスでホストされているからです。カスタムQtベースのアップデータのダウンロード

私は、次の手順を考えています

  • ハッシュSHA512
  • 暗号化秘密鍵RSA
  • を使用して、ハッシュ暗号化されたハッシュを公開してくださいを使用してダウンロード:私の側に

    新しいバージョン発表と一緒に

クライアントのアップデータは、 nは、以下のん:

  • ファイル(当たり前)をダウンロード
  • は、私のプライベート1
  • は本物の1で復号化されたハッシュを比較一致ハードコードされた公開鍵を使用して、新しいアップデートの発表からハッシュを復号化ダウンロードしたファイル

私は当初、クライアントに公開鍵を持つアップデータの無修正バージョンを配布できると仮定して、このワークフローに欠陥がありますか?

答えて

0

従来のコード署名を使用する方がよいでしょう。自家製のソリューションは機能するかもしれませんが、レビューなしでは防弾ではありません。証明された暗号は、ほとんどの場合、より良い方法です。

あなたは公開鍵暗号を使用して適切なアイデアを得ています。

CAからコード署名証明書を購入するか(Windows SmartScreenの要件を満たす場合に便利です)、自分で公開鍵と秘密鍵のペアを生成します。自己署名している場合は、プログラムと共に公開鍵を発送してください。秘密鍵を使用して新しいインストーラに署名します。アップグレード時に、アップデータが新しいバージョンをアンパックする前に公開鍵を使用して署名を検証するようにしてください。アプリケーションがWindowsベースの場合は、WinVerifyTrustを使用して検証することができます。

また、あなたが提案した解決策はすでにPGP signingで実装されており、何十年ものセキュリティ検査に耐えられています。 .sigを新しいバージョンで公開すると、アップデータはそれを確認します。 digital signaturesを使用して解決されており、OpenSSLで簡単に実装できます。

関連する問題