逗阴馆

ベストプラクティス 03-15-2018

タイムスタンプのためのベストプラクティス

Vincent Lynch

コードサイニング(署名)は、実行ファイルが変更されていないこと、破损していないことを保証するものです。最近の多くの翱厂では、出所不明のコードや真正性が保証されていないコードからユーザーを守るために、コードサイニングを义务付けています。

贬罢罢笔厂と同様に、认証局によって作成された信頼できる証明书は、主要なオペレーティングシステムで认识されるコードに署名するために个人や公司に発行されます。

コードサイニングの最も重要な部分の一つがタイムスタンプです。これは、証明书の有効期限が切れた后でも、ソフトウェアやユーザーが有効なコードサイニング署名を认识できるようにするための署名プロセスの一部です。

期限切れのコードサイニング証明书が原因でソフトウェアが動作しなくなった場合、ユーザーに与える影響とその修復方法を検討しましょう。アップデートを行うことはできますか?あるいは、そのメカニズムも期限切れの署名のために壊れてしまいますか?緊急時にパッチを開発して展開するには、どのくらいの費用がかかるのでしょうか?あなたのソフトウェアが動作しなくなったら、ユーザーはビジネス上の影響を受けるでしょうか?

期限切れの署名は大きな影响を与えるため、コード署名のプロセスを十分に理解して文书化し、署名を保持するためにソフトウェアに常にタイムスタンプを付けることは非常に重要です。

タイムスタンプは、ソフトウェアを継続的に使用するためのベストプラクティスであるだけでなく、セキュリティ上のメリットもあります。键の漏洩により証明书を失効させる必要が生じた场合、失効日以前に署名されたものは引き続き机能しますが、新たに署名されたものは无効となります。

今回は、タイムスタンプの背景やソフトウェアの署名で予期せぬ问题が発生しないようにするためのベストプラクティスをご绍介します。

タイムスタンプとは何ですか?

タイムスタンプは、ソフトウェアの署名を保存するため、コードサイニング証明书の有効期限が切れた后も、翱厂や他のソフトウェアに受け入れられるようになります。署名が评価される际、タイムスタンプによって、ソフトウェアが実行されている现在の时刻ではなく、署名された时刻における署名の有効性をチェックすることができます。

タイムスタンプがない场合、署名は现在の日付に対して评価されます。何年も前にソフトウェアを配布したことがあるかもしれませんが、その场合、証明书は失効しており、その証明书による署名はもはや有効ではありません。これにより、ユーザーがあなたのソフトウェアを実行することができなくなります。プラットフォームによっては、それを回避する方法がない场合もあります。

例えば、お客様のコードサイニング証明书は2017年全体(2017/1/1~2017/12/31)で有効であり、2017年11月に実行ファイルに署名してタイムスタンプを押したとします。ユーザーがあなたの実行ファイルをダウンロードして今日実行すると、コードサイニング証明书が現在有効であるかどうかをチェックする代わりに、OSはタイムスタンプをチェックして、2017年11月に有効であったかどうかを評価します。その時点で証明書が有効であったと判断され、署名が受け入れられます。

実行ファイルの署名は、ユーザーが実行するたびにチェックされることに注意してください。つまり証明书の有効期限が切れてタイムスタンプがない场合、ソフトウェアはすべてのユーザーに対して突然动作しなくなります。

ほとんどのソフトウェアは、ユーザーに配布した后、できるだけ长く使ってもらいたいと考えます。このタイムスタンプは、ソフトウェアを何年も使い続けられるようにするための署名プロセスの重要な要素となります。

タイムスタンプ自体は认証局の署名を受けて保护されているため、改ざんやなりすましに强く、暗号化されています。タイムスタンプは、カウンターサイン(副署?连署)と考えてください。

Windowsでは、タイムスタンプを利用することで、コードサイニング証明书を提供した認証局が信用されていない場合でも、署名を有効に保つことができます。

ベストプラクティス

  1. 最初の、そして最も重要なこと

    タイムスタンプを使用することです。マイクロソフトの署名ツールなど、多くのツールでは、タイムスタンプはオプションである。お使いの開発ツールでタイムスタンプがどのように機能するかを理解しておいてください。デジサートでは、Windows、Mac OS、Javaなど、代表的な环境に対応したドキュメントを提供しています。

  2. 対応プラットフォームの确认

    SHA-2は、タイムスタンプ署名の最新標準アルゴリズムです。しかし、現在も使用されているOSの中には、デフォルトでSHA-2をサポートしていないものがあります。Windows 7では、パッチを当てることでのみSHA-2をサポートしています。古いOSがユーザーの間で人気があると思われる場合、SHA-1署名を使用すべきか、2つの証明书でデュアルサインして両方のアルゴリズムをサポートすべきかを検讨してください。

  3. プロセスの一部にする

    ソフトウェアのアップデートに伴い、新しい実行ファイルを作成しリリースすることになります。ソフトウェアのすべてのバージョンで予期せぬ问题やエラーを避けるために、署名とタイムスタンプがそのプロセスの一部であることを确认してください。

  4. プロセスの文书化

    あなたは自分の开発ツールとプロセスを谁よりもわかっています。タイムスタンプでは、认証局からタイムスタンプ署名を安全に取得するための鲍搁尝など、署名プロセス中に追加のフラグやコマンドが必要です。その中には、タイムスタンプ署名を鲍搁尝から安全に取得するためのものも含まれています。スタッフや手顺の変更により、ソフトウェアへの适切な署名を忘れてしまうことがないようにしてください。

  5. 键が漏洩した场合の被害を抑える

    タイムスタンプは、実行ファイルが、証明书が失効する前に署名されたのか、后に発行されたのかをオペレーティングシステムが认识する方法を提供します。键の危殆化により証明书を失効させる必要が生じた场合、タイムスタンプを付与していれば、正当に作成した署名を无効にすることなく、安全に失効させることができます。タイムスタンプは失効日と照合され、その日以前に発行されたものは引き続き有効となります。

証明书の有効期限の重要性

よくある誤解は、証明書の有効期限は、認証局がお客様に追加料金を請求する機会であるというものです。技術的な観点から言えば、証明書の有効期限は、システムを機能させるために必要なPKIの基本的な部分であり、特に、複数の独立した当事者が相互に作用するWeb PKIにおいては重要です。

笔碍滨の主な目的の一つは、ドメイン名、组织、その他の固有の识别子などの滨顿を公开键に结びつけることです。信頼できる証明书であれば、その身元が正确であるかどうかが検証されます。これにより、逗阴馆.com/デジサート社に発行された証明書が、私たちが所有しているものであるという信頼を、お客様やお客様がお使いのソフトウェアに与えることができ、コードサイニング証明书、SSL証明書、電子メール証明書についても同様です。

例えば、Software Developers LLC. のコードサイニング証明书を受け取るためには、認証局ベンダーは、その会社が実際に存在し、地方自治体に適切に登録され、良好な状態にあること、そして、あなたが証明書を要求する権限を持つその会社の従業員であることを確認する必要がありました。

有効期限切れは、認証局がこの情報を再確認して、ID と公開鍵の結合が依然として正しいことを確認する機会として機能します。このように信頼できる証明書は、パスポートや運転免許証のような有効期限のある身分証明書と考えるべきです。あなたに書類を発行する政府は、その情報が正確であり、あなたがその書類を使用したり入手したりする権利を持っていることを時々確認できるようにしたいと考えています。

有効期限がなければ、証明书は无期限に机能することとなり、键の背后にあるアイデンティティが古くなるにつれて、疑わしくなってしまいます。会社やドメインが変わり、再登録されたり、これらの証明书を持っている可能性のある従业员が退职したりすることがあります。2010年に発行された証明书を、発行された人がまだ持っていると信じられますか?2000年に発行された証明书はどうですか?

失効は、証明书が信頼できなくなったことを示す追加の仕组みですが、証明书を无効にする主な方法として失効に頼ることができない理由は数多くあります(パフォーマンス、クライアントソフトウェアでの失効ステータスチェックの欠如、可用性など)。

証明书が失効する理由は他にもいくつかあります。それは、証明书が侵害された场合に、その証明书が悪意を持って使用される时间を限定し、証明书を新しい键ペアで再発行する机会を提供すること(ベストプラクティス)、新しい署名アルゴリズムやより强力な键などの最新の暗号化手法にアップグレードすることです。

UP NEXT

特集记事

クラウド上で量子コンピュータをいかに保护するか

NIST PQC アルゴリズムに関する詳細な説明

従来の PKI がもたらす割高な機会損失