(57)【特許請求の範囲】
【請求項１】
一以上の計算機に接続される署名サーバであって、
前記署名サーバは、前記計算機に接続される一以上のインタフェースと、前記インタフェースに接続されるプロセッサと、前記プロセッサに接続されるメモリと、を備え、
前記署名サーバは、
署名依頼先の署名者を特定する署名者特定部と、
前記特定された署名者が前記署名サーバの利用を許可されている内部ユーザであるか否かを判定するユーザ判定部と、
前記署名者が内部ユーザであると判定された場合、前記署名者が使用する計算機に対して前記署名サーバを利用した署名実施を依頼し、前記署名者が内部ユーザではないと判定された場合、前記署名者が使用する計算機に対して前記署名サーバの利用要否を問い合わせるユーザ連携部と、
前記署名サーバの利用要否の問い合わせに対して、前記署名サーバを利用するとの応答があった場合、前記署名者の証明書を取得できるときは、前記証明書を取得し、取得した前記証明書が適正ではないと判定すると、前記署名者が使用する計算機に対して前記署名者の前記証明書の適正化を依頼する署名環境判定部と、
署名を実施する署名生成部と、
を備え、
前記ユーザ連携部は、前記署名環境判定部が取得した前記証明書が適正であると判定された場合、または、適正化された前記証明書を前記署名者が使用する計算機から取得した場合には、前記署名者が使用する計算機に対して前記署名サーバを利用した署名実施を依頼し、前記ユーザ連携部は、前記署名サーバの利用要否の問い合わせに対して、署名者側で署名を実施するとの応答があった場合、前記署名者が使用する計算機に署名者側での署名実施を依頼し、
前記署名生成部は、前記ユーザ連携部が、前記署名者が使用する計算機に対して前記署名サーバを利用した署名実施を依頼した場合、前記署名者が使用する計算機からの指示に応じて、前記署名者の適正な証明書を使用して署名を実施する、
ことを特徴とする署名サーバ。
【請求項２】
前記署名環境判定部は、前記証明書を取得できない場合に、前記署名サーバを利用した署名処理のためのプログラムを署名者が使用する計算機に送信する処理を行う、
ことを特徴とする請求項１に記載の署名サーバ。
【請求項３】
前記ユーザ連携部は、前記署名サーバの利用要否の問い合わせに対して、署名者側で署名を実施するとの応答があった場合、署名の条件を示す署名条件情報、署名の依頼内容を示す署名依頼情報、および、署名対象の文書を、署名者が使用する計算機に対して送信する、
ことを特徴とする請求項１に記載の署名サーバ。
【請求項４】
前記署名サーバは、署名者が実施した署名が署名条件を満たすか否かを検証する署名検証部をさらに備える、
ことを特徴とする請求項１に記載の署名サーバ。
【請求項５】
前記ユーザ連携部は、署名依頼先の署名者が複数存在する場合、署名の条件を示す署名条件情報に基づいて、全ての署名者が署名を実施したか否かを判定し、署名を実施していない署名者がいると判定すると、次の署名者に署名実施を依頼する、
ことを特徴とする請求項１に記載の署名サーバ。
【請求項６】
前記ユーザ連携部は、前記署名者が使用する計算機に、署名標準に基づいた署名実施を依頼する、
ことを特徴とする請求項１に記載の署名サーバ。
【請求項７】
前記ユーザ連携部は、前記署名者が使用する計算機から署名の代行要求を受け付けると、前記代行要求に基づいて、署名の条件を示す署名条件情報、および、署名の依頼内容を示す署名依頼情報を更新して、代行者が使用する計算機に署名実施を依頼する、
ことを特徴とする請求項１に記載の署名サーバ。
【請求項８】
一以上の計算機と、第１署名サーバと、前記第１署名サーバとは別のサーバである外部サーバと、前記一以上の計算機の少なくとも一つ、前記第１署名サーバ、および前記外部サーバ間に接続されるネットワークと、を備える署名システムであって、
前記第１署名サーバは、前記計算機に接続される一以上のインタフェースと、前記インタフェースに接続されるプロセッサと、前記プロセッサに接続されるメモリと、を備え、
前記第１署名サーバは、
署名依頼先の署名者を特定する署名者特定部と、
前記特定された署名者が前記第１署名サーバの利用を許可されている内部ユーザであるか否かを判定するユーザ判定部と、
前記署名者が内部ユーザであると判定された場合、前記署名者が使用する計算機に対して前記第１署名サーバを利用した署名実施を依頼し、前記署名者が内部ユーザではないと判定された場合、前記署名者が使用する計算機に対して前記第１署名サーバの利用要否を問い合わせるユーザ連携部と、
前記第１署名サーバの利用要否の問い合わせに対して、前記第１署名サーバを利用するとの応答があった場合、前記署名者の証明書を取得できるときは、前記証明書を取得し、取得した前記証明書が適正ではないと判定すると、前記署名者が使用する計算機に対して前記署名者の前記証明書の適正化を依頼する署名環境判定部と、
署名を実施する署名生成部と、
を備え、
前記ユーザ連携部は、前記署名環境判定部によって取得した前記証明書が適正であると判定された場合、または、適正化された前記証明書を前記署名者が使用する計算機から取得した場合には、前記署名者が使用する計算機に対して前記第１署名サーバを利用した署名実施を依頼し、前記ユーザ連携部は、前記第１署名サーバの利用要否の問い合わせに対して、署名者側で署名を実施するとの応答があった場合、前記署名者が使用する計算機に署名者側での署名実施を依頼し、
前記署名生成部は、前記ユーザ連携部が、前記署名者が使用する計算機に対して前記第１署名サーバを利用した署名実施を依頼した場合、前記署名者が使用する計算機からの指示に応じて、前記署名者の適正な証明書を使用して署名を実施する、
ことを特徴とする署名システム。
【請求項９】
前記署名システムはさらに、前記第１署名サーバとは別の第２署名サーバを備え、
前記第１署名サーバは、前記第１署名サーバの利用要否の問い合わせに対して、前記第２署名サーバを利用した署名を実施するとの応答があった場合に、署名の条件を示す署名条件情報、署名の依頼内容を示す署名依頼情報、および、署名対象の文書を、前記第２署名サーバに送信する、
ことを特徴とする請求項８に記載の署名システム。
【請求項１０】
一以上の計算機に接続される署名サーバを利用した署名処理方法であって、
前記署名サーバは、前記計算機に接続される一以上のインタフェースと、前記インタフェースに接続されるプロセッサと、前記プロセッサに接続されるメモリと、を備え、
前記署名処理方法は、
前記署名サーバが署名依頼対象の署名者を特定するステップと、
前記署名サーバが、前記特定した署名者が前記署名サーバの利用を許可されている内部ユーザであるか否かを判定するステップと、
前記署名者が内部ユーザであると判定した場合、前記署名サーバが、前記署名者が使用する計算機に対して前記署名サーバを利用した署名実施を依頼するステップと、
前記署名者が内部ユーザではないと判定した場合、前記署名サーバが、前記署名者が使用する計算機に対して前記署名サーバの利用要否を問い合わせるステップと、
前記署名サーバの利用要否の問い合わせに対して、前記署名サーバを利用するとの応答があった場合、前記署名サーバが前記署名者の証明書を取得できるときは、前記証明書を取得し、取得した前記証明書が適正ではないと判定すると、前記署名者が使用する計算機に対して前記署名者の前記証明書の適正化を依頼するステップと、
取得した前記証明書が適正であると判定された場合、または、適正化された前記証明書を前記署名者が使用する計算機から取得した場合には、前記署名サーバが、前記署名者が使用する計算機に対して前記署名サーバを利用した署名実施を依頼するステップと、
前記署名サーバの利用要否の問い合わせに対して、署名者側で署名を実施するとの応答があった場合、前記署名サーバが、前記署名者が使用する計算機に対して署名者側での署名実施を依頼するステップと、
前記署名者が使用する計算機に対して前記署名サーバを利用した署名実施を依頼した場合、前記署名サーバが、前記署名者が使用する計算機からの指示に応じて、前記署名者の適正な証明書を使用して署名を実施するステップと、
を含むことを特徴とする署名処理方法。
【請求項１１】
前記署名者の前記証明書の適正化を依頼するステップでは、前記証明書を取得できない場合に、前記署名サーバを利用した署名処理のためのプログラムを署名者が使用する計算機に送信する、
ことを特徴とする請求項１０に記載の署名処理方法。
【請求項１２】
前記署名者側での署名実施を依頼するステップでは、署名の条件を示す署名条件情報、署名の依頼内容を示す署名依頼情報、および、署名対象の文書を、署名者が使用する計算機に対して送信する、
ことを特徴とする請求項１０に記載の署名処理方法。
【請求項１３】
前記署名処理方法は、
前記署名サーバが、署名者が行った署名が署名条件を満たすか否かを検証するステップをさらに含む、
ことを特徴とする請求項１０に記載の署名処理方法。
【請求項１４】
前記署名処理方法は、
署名依頼対象の署名者が複数存在する場合、前記署名サーバが署名の条件を示す署名条件情報に基づいて全ての署名者が署名を実施したか否かを判定し、署名を実施していない署名者がいると判定すると、次の署名者に署名実施を依頼するステップをさらに含む、
ことを特徴とする請求項１０に記載の署名処理方法。
【請求項１５】
前記署名者が使用する計算機に対して署名実施を依頼するステップでは、署名標準に基づいた署名実施を依頼する、
ことを特徴とする請求項１０に記載の署名処理方法。
【請求項１６】
前記署名処理方法は、
前記署名サーバが、前記署名者が使用する計算機から署名の代行要求を受け付けると、前記代行要求に基づいて、署名の条件を示す署名条件情報、および、署名の依頼内容を示す署名依頼情報を更新して、代行者が使用する計算機に対して署名実施を依頼するステップをさらに含む、
ことを特徴とする請求項１０に記載の署名処理方法。
【請求項１７】
前記署名処理方法は、
前記署名サーバが、署名の条件を示す署名条件情報のうち、前記署名サーバが保持しない情報を外部サーバから取得するステップをさらに含む、
ことを特徴とする請求項１０に記載の署名処理方法。
【請求項１８】
前記署名処理方法は、
前記署名サーバの利用要否の問い合わせに対して、前記署名サーバとは別の署名サーバを利用した署名を実施するとの応答があった場合、前記署名サーバが、署名の条件を示す署名条件情報、署名の依頼内容を示す署名依頼情報、および、署名対象の文書を、前記別の署名サーバに送信するステップをさらに含む、
ことを特徴とする請求項１０に記載の署名処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子署名を依頼する署名サーバに関し、特に、依頼者が署名者に電子署名を依頼する場合に、署名者の電子署名の正当性を確保・検証する技術に関する。
【背景技術】
【０００２】
近年、様々な分野で紙の電子化が進んでいる。電子文書の正当性を保証する技術として、電子署名技術がある。電子署名を用いることで、文書が改竄されてないか、誰が署名したか等を確認することができる。
【０００３】
依頼者が他者に電子署名の実施を依頼する公知技術として、特許文献１がある。特許文献１の技術によれば、署名の依頼者は、署名させたい情報を事前に文書に書込んでおき、署名者はその文書を見て署名を実施する。これにより、依頼者と署名者間で、何に対しての署名か、文書内容に同意したか等について、意識の相違を防止し、意思の一致ができるようになる。
【０００４】
また、上記以外の公知技術として、署名の依頼、実施をワークフロー形式でシステム化し、複数署名者が連続して署名する場合でも効率的に処理する技術がある（非特許文献１、非特許文献２）。非特許文献１及び非特許文献２では、署名サーバをホスティングサービスとして提供し、署名依頼者や署名者など、署名に関わるユーザは皆、一つの署名サーバを利用する。当該サービスでは、異なる企業のユーザ間であっても、署名の依頼、実施を行うことができる。署名依頼者は、署名者や署名対象、選択すべき署名理由などを設定して処理フローを行うことで、自分が意図したように署名者に署名させることが可能になる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許出願公開２００７／００６１５７８号公報
【非特許文献】
【０００６】
【非特許文献１】"CertaSign Online Help Contents"、［online］、Gemini Security Solutions, Inc.、［平成２２年１２月１０日検索］、インターネット＜URL：https://app.certasign.com/help/Helpv1.aspx＞
【非特許文献２】"MySignatureBook 1.1.3 FAQ"、［online］、TriCipher, Inc.、［平成２２年１２月１０日検索］、インターネット＜URL：https://safe-msb.tricipher.com/signaturebook/MSB_help.pdf＞
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上記の公知技術では、全ての署名者が同一の署名サーバ上で署名を行う必要がある。しかしながら、必ずしも全ての署名者が同じ署名サーバを使うケースばかりとは限らない。例えば、署名者が別の署名環境を使う場合（自社で集中管理する署名サーバを使う場合や、クライアントマシン側の署名ソフトを使う場合など）も考えられ、上記公知技術では、そのような場合に署名依頼を行うことができないという問題がある。特に異なる企業のユーザ間で署名の依頼、作成を行う場合は、企業によって使用する署名環境も異なると考えられる。例えば、一方のユーザは、ホスティングサービスの署名サーバを使用し、他方のユーザは、自社の署名サーバを使用して署名する等の状況が多数生じると考えられる。
【０００８】
上記のような署名環境の異なるユーザ間で署名の依頼・作成を行う状況でも署名依頼者が指定する条件で署名者に署名させるには、実施された署名が署名依頼者の指定した条件に合致するか検証する仕組みが別途必要である。
【０００９】
また、上記公知技術では、署名者の署名環境（例えば、署名依頼者により指定された証明書を持っているか、また、そもそも署名機能を持っているか等)までは考慮しておらず、署名者が署名環境を持ってない場合の処理については示されていない。
【００１０】
本発明は、上述した問題に鑑みてなされたものであり、署名者の署名環境を判別し、署名者の署名環境が様々である場合でも、署名依頼者が意図した署名条件で署名者に署名させることが可能な署名システムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、一以上の計算機に接続される署名サーバであって、前記署名サーバは、前記計算機に接続される一以上のインタフェースと、前記インタフェースに接続されるプロセッサと、前記プロセッサに接続されるメモリと、を備え、前記署名サーバは、署名依頼先の署名者を特定する署名者特定部と、前記特定された署名者が前記署名サーバの利用を許可されている内部ユーザであるか否かを判定するユーザ判定部と、前記署名者が内部ユーザであると判定された場合、前記署名者が使用する計算機に対して前記署名サーバを利用した署名実施を依頼し、前記署名者が内部ユーザではないと判定された場合、前記署名者が使用する計算機に対して前記署名サーバの利用要否を問い合わせるユーザ連携部と、前記署名サーバの利用要否の問い合わせに対して、前記署名サーバを利用するとの応答があった場合、前記署名者の証明書を取得できるときは、前記証明書を取得し、取得した前記証明書が適正ではないと判定すると、前記署名者が使用する計算機に対して前記署名者の前記証明書の適正化を依頼する署名環境判定部と、署名を実施する署名生成部と、を備え、前記ユーザ連携部は、前記署名環境判定部が取得した前記証明書が適正であると判定された場合、または、適正化された前記証明書を前記署名者が使用する計算機から取得した場合には、前記署名者が使用する計算機に対して前記署名サーバを利用した署名実施を依頼し、前記ユーザ連携部は、前記署名サーバの利用要否の問い合わせに対して、署名者側で署名を実施するとの応答があった場合、前記署名者が使用する計算機に署名者側での署名実施を依頼し、前記署名生成部は、前記ユーザ連携部が、前記署名者が使用する計算機に対して前記署名サーバを利用した署名実施を依頼した場合、前記署名者が使用する計算機からの指示に応じて、前記署名者の適正な証明書を使用して署名を実施する、ことを特徴とする。
【発明の効果】
【００１２】
本発明の代表的な実施の形態によれば、署名者の署名環境が様々である場合でも、署名依頼者が意図した署名条件で署名者に署名させることができる。
【図面の簡単な説明】
【００１３】
【図１】本発明の第１の実施形態における署名システムのハードウェアおよびソフトウェア構成を示すブロック図である。
【図２】第１の実施形態におけるアカウント情報の一例を示す図である。
【図３】第１の実施形態における署名依頼情報の一例を示す図である。
【図４】署名条件情報の一例を示す図である。
【図５】第２の実施形態の変形例における署名条件情報の一例を示す図である。
【図６】署名フィールドについて説明するための図である。
【図７】本発明の第１の実施形態における外部サーバ情報の一例を示す図である。
【図８】本発明の第１の実施形態における署名サーバが実行する、署名依頼、署名環境の判別、署名の実施および検証についての処理の一例を示すフローチャートである。
【図９】本発明の第２の実施形態における署名サーバが実行する、署名依頼、署名環境の判別、署名の実施および検証についての処理の一例を示すフローチャートである。
【図１０】本発明の第３の実施形態における署名システムで行われる署名の依頼、代行処理の一例を示すフローチャートである。
【図１１】本発明の第３の実施形態における署名システムの構成を示す図である。
【発明を実施するための形態】
【００１４】
以下、本発明の実施の形態について説明する。尚、以下に説明する実施の形態は一例であって、本発明はこれに限定されるものではない。
【００１５】
＜第１の実施形態＞
図１は、本発明の第１の実施形態における署名システムのハードウェアおよびソフトウェア構成を示すブロック図である。第１の実施形態における署名システムは、１以上の署名サーバ１０１ａ及び１０１ｂ（以下、これらを総称して署名サーバ１０１とも記載する）と、１以上の自社署名サーバ１２８と、１以上のＯＣＳＰサーバ１１７と、１以上のタイムスタンプサーバ１１８と、署名機能を持たない１以上のクライアント端末１１９ａ及び１１９ｂ（以下、これらを総称してクライアント端末１１９とも記載する）と、署名機能を備える１以上のクライアント端末１２０と、を備える。
【００１６】
自社署名サーバ１２８は、同じ組織内のクライアント端末１１９ｂからアクセス可能である。
【００１７】
署名サーバ１０１、クライアント端末１２０、自社署名サーバ１２８は、それぞれＩ／Ｆ１０４、１２３、１３１を介してネットワークに接続される。署名サーバ１０１は、Ｉ／Ｆ１０４を介して、クライアント端末１１９等の外部機器に対して、操作要求の受付けや操作の指示を行う。
【００１８】
署名サーバ１０１は、メモリ１０２、ＣＰＵ１０３、およびＩ／Ｆ１０４を備える。
【００１９】
ＣＰＵ１０３は、Ｉ／Ｆ１０４を介して、クライアント端末１１９等の外部機器からの操作要求の受信および当該操作の実行や、外部機器に対して署名依頼の通知や操作結果の送信などを行う。
【００２０】
メモリ１０２は、アカウント管理プログラム１０５、署名生成プログラム１０６、署名検証プログラム１０７、署名条件管理プログラム１０８、ユーザ連携プログラム１０９、署名環境判定プログラム１１０、外部サーバ連携プログラム１１１、アカウント情報１１２、署名依頼情報１１３、署名条件情報１１４、外部サーバ情報１１５、署名文書情報１１６を備え、ＣＰＵ１０３およびＩ／Ｆ１０４と接続されている。
【００２１】
クライアント端末１２０は、ＣＰＵ１２２、メモリ１２１およびＩ／Ｆ１２３を備える。
【００２２】
ＣＰＵ１２２は、Ｉ／Ｆ１２３を介して、署名サーバ１０１等への操作要求や、署名サーバ１０１等からの操作指示の受付を行う。メモリ１２１は、署名生成プログラム１２４、署名検証プログラム１２５、外部サーバ連携プログラム１２６を備え、ＣＰＵ１２２およびＩ／Ｆ１２３と接続されている。
【００２３】
自社署名サーバ１２８は、メモリ１２９、ＣＰＵ１３０、およびＩ／Ｆ１３１を備え、クライアント端末１１９ｂと接続されている。メモリ１２９は、署名生成プログラム１３２、署名検証プログラム１３３、外部サーバ連携プログラム１３４を備え、ＣＰＵ１３０、およびＩ／Ｆ１３１と接続されている。ＣＰＵ１３０は、Ｉ／Ｆ１３１を介して、署名サーバ１０１やクライアント端末１１９ｂ等と通信を行う。
【００２４】
次に、本実施形態における署名システムのソフトウェア構成の詳細について説明する。
【００２５】
最初に、署名サーバ１０１のメモリ１０２に格納されているプログラム以外の情報について説明し、その後、メモリ１０２に格納されているプログラム情報について説明する。
【００２６】
アカウント情報１１２は、署名サーバ１０１を使用するユーザを認証するために使用する情報である。
【００２７】
図２は、第１の実施形態におけるアカウント情報１１２の一例を示す図である。アカウント情報１１２には、項目２０１、２０２、２０３、２０４の四つのデータ項目が含まれる。項目２０１は、ユーザを一意に識別するためのユーザＩＤを示す。項目２０２は、署名サーバにログインする際に必要なパスワードを示す。項目２０３は、ユーザのメールアドレスの情報を示す。項目２０４は、署名サーバを使うためのアカウントの発行ライセンスがユーザにあるか否かを示す。例えば図２において、ｕｓｅｒＡはライセンス数が１０であるので、１０個のアカウントを発行する権限があることを示す。例えば、自分以外のユーザにも署名サーバを利用させたい場合に、当該ユーザに対して署名サーバのアカウントを発行する等ができる。図２において、ｕｓｅｒＢはライセンス数が０であり、アカウントを発行することはできない。
【００２８】
署名依頼情報１１３は、署名依頼者が署名者に署名依頼するにあたり、誰にどんな条件で何に署名させるかを示す情報である。
【００２９】
図３は、第１の実施形態における署名依頼情報１１３の一例を示す図である。署名依頼情報１１３には、項目３０１、３０２、３０３、３０４、３０５、３０６の六つのデータ項目が含まれる。項目３０１は、署名依頼者が行なっている署名依頼を識別するための依頼番号を示す。項目３０２は、署名依頼を行っている依頼者の情報を示す。項目３０３は、当該署名依頼によって署名させたいユーザ（署名者）を示す。
【００３０】
項目３０４は、どのような条件で署名者に署名させるかの署名条件の情報を示す。本項目は、後述する署名条件情報１１４を参照する。項目３０５は、当該署名依頼において署名して貰いたい文書を示す。項目３０６は、当該署名依頼の進捗状況を示す。例えば図３において、依頼番号１のステータスは「済」であり、依頼した署名者による署名が完了していることを示す。依頼番号２のステータスは「未済（１／２）」であり、依頼した署名者２人のうち１人目の署名までが終わっていることを示す。
【００３１】
署名条件情報１１４は、署名依頼者が署名者に署名依頼する際の署名の条件（例えば署名の期限など）を示す情報であり、署名依頼者が署名依頼する前に設定する。
【００３２】
図４は、署名条件情報１１４の一例を示す図である。図４（ａ）は、第１の実施形態における署名条件情報１１４の一例を示し、図４（ｂ）は、後述する第２の実施形態における署名条件情報１１４の一例を示す。
【００３３】
署名条件情報１１４は、１以上の署名条件３０４で構成される。署名条件３０４には、項目４０１、４０２、４０３、４０４、４０５、４０６、４０７の７つのデータ項目が含まれる。項目４０１は、署名者の署名理由を示す。例えば、文書を署名者に確認させたいという意図で署名を求める場合には「確認」を設定し、文書を署名者に承認させたいという意図で署名を求める場合には「承認」を設定する。また、「確認」と「承認」の両方を設定して署名者にどちらかを選ばせるようにしてもよいし、ユーザに自由に指定させるようにしてもよい。
【００３４】
項目４０２は、署名させたい署名者の情報を示す。図４に示す例では、署名者のメールアドレスを指定しているが、例えば署名サーバのアカウントＩＤなど、署名者を特定できるその他の情報でもよい。項目４０３は、署名の期限を示す。例えば、設定された期限までに署名が行われなかった場合に、署名サーバは署名依頼者に対してアラートを出す等してもよい。
【００３５】
項目４０４は、文書内において署名データを入れるフィールドの情報であり、文書のどの部分に署名させるかを示す。署名フィールドについて図６を用いて説明する。例えば、上述した項目４０４で「フィールド１」が設定されていた場合、署名者は、図６の署名フィールド６０１の部分に署名し、「フィールド２」が設定されていた場合には、署名フィールド６０２の部分に署名する。
【００３６】
項目４０５は、依頼する署名において、署名者が署名を実施する際に使用可能な証明書のタイプを示す。例えば、図４に示す例では、証明書タイプは「ｓａｍｐｌｅＣＡ」であり、署名者は、ｓａｍｐｌｅＣＡ、またはその下位の中間ＣＡの発行する証明書であれば、署名に使っていいことを示す。
【００３７】
項目４０６は、文書への署名において、証明書の有効・無効の検証情報も文書に含める必要があるか否かを示す。例えば、本項目が「要」であれば、署名者またはその他のユーザが、署名に使われた証明書の有効性検証結果も文書に含める。項目４０７は、文書への署名において、さらにタイムスタンプも文書に含める必要があるか否かを示す。
【００３８】
なお、署名条件情報１１４に、上記４０１〜４０７の項目以外の署名条件に関する情報を含めるようにしてもよい。
【００３９】
外部サーバ情報１１５は、署名サーバ１０１が連携する外部のサーバのアドレスを示す情報である。
【００４０】
図７は、本発明の第１の実施形態における外部サーバ情報１１５の一例を示す図である。外部サーバ情報１１５には、項目７０１、７０２、７０３の三つのデータ項目が含まれる。
【００４１】
項目７０１は、証明書の有効性確認に使用するＯＣＳＰサーバのアドレス情報である。項目７０２は、タイムスタンプサーバ１１８のアドレス情報である。項目７０３は、その他の署名サーバのアドレス情報である。署名依頼者が署名サーバ１０１ａを使用する場合、その他の署名サーバとは、例えば、署名サーバ１０１ｂである。また、その他の署名サーバの例として、電子実験ノートシステムに用いられるサーバが挙げられる。なお、上記以外のサーバ情報があってもいいし、同種類のサーバの情報が複数登録されていてもいい。また、サーバのアドレス情報をＵＲＬ等で指定してもいい。
【００４２】
署名文書情報１１６は、署名対象とする文書である。署名文書情報１１６は、署名依頼者等が署名依頼を行う前に、署名サーバ１０１にアップロードする等して登録する。なお、署名依頼によって署名された文書や、署名途中の文書を保存するようにしてもよい。
【００４３】
次に、署名サーバ１０１のメモリ１０２に格納されているプログラム情報について説明する。
【００４４】
アカウント管理プログラム１０５は、アカウント情報１１２に基づいて、署名サーバ１０１を使用するユーザを認証し、ユーザが要求する操作の実行を許可、または禁止する等の処理を実行するためのプログラムである。
【００４５】
署名生成プログラム１０６は、文書への署名を行うためのプログラムである。署名処理としては、例えば文書のハッシュ値を生成し、そのハッシュ値を署名者の秘密鍵で暗号化し、この暗号化した値を署名値として文書に付加する。なお、文書のハッシュ値を署名者が使用するクライアント端末に送り、署名者側で当該ハッシュ値をもとに署名値を作成し、署名サーバは、署名者から当該署名値を貰って文書に付加するなど、上記以外の処理でもよい。
【００４６】
署名検証プログラム１０７は、署名者が実施した署名が適正か否かの検証を行うためのプログラムである。具体的には、署名値が正しいか否か、実施された署名が署名依頼条件を満たしているか等を検証する。
【００４７】
署名条件管理プログラム１０８は、署名依頼者等の要求に基づき、署名依頼情報１１３や署名条件情報１１４の作成、変更、削除等を行うためのプログラムである。署名依頼者は、本プログラムを用いて署名に関する条件を設定し、署名者に署名を依頼することができる。例えば署名依頼者は、本プログラムを用いて署名の依頼内容や条件を設定し、設定した署名依頼の実施要求を署名サーバ１０１に対して出す。署名サーバ１０１は、設定した署名依頼で指定された署名者に対して、署名の依頼通知を行う。
【００４８】
ユーザ連携プログラム１０９は、署名依頼者が設定した署名依頼情報に基づき、署名者への署名依頼通知や署名結果の送信、署名者側で実施した署名の受信等を行うためのプログラムである。例えば、図３の依頼番号１の署名依頼の場合、ユーザ連携プログラム１０９は、test@test.comのユーザに対して署名依頼通知を出す。
【００４９】
署名環境判定プログラム１１０は、署名者から受信した署名方法に関する応答結果に基づいて、署名者の署名環境の取得・判別を行うためのプログラムである。署名環境判定プログラム１１０は、また、署名者の署名環境が署名依頼者の指定する条件に合致するか検証し、合致しない場合は、署名者の署名環境を適正化する等の処理を行うためのプログラムでもある。
【００５０】
外部サーバ連携プログラム１１１は、外部のサーバ、例えば他の署名サーバ１０１ｂやＯＣＳＰサーバ１１７、タイムスタンプサーバ１１８と連携し、外部の署名サーバへの署名依頼や、ＯＣＳＰ結果やタイムスタンプの取得を行う。
【００５１】
次に、クライアント端末１２０のメモリ１２１に格納されている情報、および、自社署名サーバ１２８のメモリ１２９に格納されている情報について説明する。
【００５２】
署名生成プログラム１２４、１３２は、署名生成プログラム１０６と同様に、文書への署名を行うためのプログラムである。署名検証プログラム１２５、１３３は、署名者が作成した署名が適正か否かの検証を行うためのプログラムである。外部サーバ連携プログラム１２６、１３４は、外部のサーバ、例えばＯＣＳＰサーバ１１７等へアクセスして、操作要求、操作結果の受信等を行うためのプログラムである。なお、メモリ１２１、１２９は、上記以外の情報、例えばメモリ１０２に格納されている情報などを含んでもよい。
【００５３】
なお、図１において、クライアント端末Ａ１１９ａ、クライアント端末Ｂ１２０、クライアント端末Ｃ１１９ｂは、それぞれ異なる組織（組織Ａ、組織Ｂ、組織Ｃ）に属している。例えば、組織Ａは、医療機関であり、組織Ｂは製薬会社である。また、組織Ａ、組織Ｂ、組織Ｃは、それぞれ異なる企業同士である。ただし、これらのクライアント端末が全てまたは一部同じ組織内にあってもよく、また、同じ組織内に異なる署名環境があってもよい。
【００５４】
以上が本実施形態における署名システムのハードウェアおよびソフトウェア構成である。
【００５５】
次に、上述したハードウェアおよびソフトウェア構成に基づいて、本実施形態における署名者への署名依頼、署名環境の判別、署名の実施および検証までの一連の処理の詳細について説明する。なお、署名依頼処理において、署名依頼情報１１３と署名条件情報１１４は、署名依頼者によって署名条件管理プログラム１０８を用いて事前に設定されている。署名サーバ１０１は、署名依頼者からの署名依頼の実施要求（例えば、図３において依頼番号１の実施要求）を受けて、署名者に対して署名依頼を行う。処理の詳細を以下で説明する。
【００５６】
図８は、本発明の第１の実施形態における署名サーバ１０１が実行する、署名依頼、署名環境の判別、署名の実施および検証についての処理の一例を示すフローチャートである。
【００５７】
署名依頼者からの署名依頼の実施要求を受け、アカウント管理プログラム１０５は、当該依頼内容を見て、署名者が署名サーバ１０１に登録されている内部ユーザか、未登録のユーザ（以下、外部のユーザとも呼ぶ）か判断する。署名サーバ１０１に登録されている内部ユーザとは、署名サーバ１０１の利用を許可されているユーザのことである。アカウント管理プログラム１０５は、署名依頼情報１１３の項目３０３の内容に基づいて署名者を判別し、次にアカウント情報１１２の項目２０１や２０３の内容に基づいて、当該署名者が外部ユーザであるか判断する（Ｓ８０１）。
【００５８】
当該署名者が署名サーバ１０１に登録されている内部ユーザであると判定すると、ユーザ連携プログラム１０９は、署名者に対して、署名依頼があることをメール等で通知し、署名依頼に対応する署名を署名サーバ１０１上で実施するよう要求する（Ｓ８０２、Ｓ８０８）。
【００５９】
続いて、署名者からの指示に基づいて、署名生成プログラム１０６および署名検証プログラム１０７は、署名の実施、検証を行う（Ｓ８０９）。具体的には、署名依頼情報で指定された署名条件３０４の各項目４０１〜４０７を満たすように、署名を実施するとともに、署名の検証を行う。署名の実施については、例えば項目４０６が「要」の場合は、署名文書に証明書検証結果も付加し、項目４０７が「要」の場合は、署名文書にタイムスタンプも付加する。
【００６０】
なお、署名サーバ１０１側で署名させる場合、署名サーバ１０１の処理を制御して、署名依頼で指定された条件でしか署名できなくする（例えば、署名理由であれば、項目４０１で指定したものしかユーザには選択できなくするなど）ことも可能である。その場合、署名文書について署名条件３０４の全ての項目を検証するのではなく、サーバ側だけでは制御できない部分（例えば署名期限は守られたか、指定の証明書は使われたか）の検証のみ行うようにしてもよい。
【００６１】
署名検証プログラム１０７による署名の検証によって、署名が正しく行われたと判定すると、署名条件管理プログラム１０８は、署名依頼情報１１３のステータス３０６を更新し、依頼された署名が終了したことを署名サーバ１０１上やメール等で署名依頼者に対して通知し、処理を終了する（Ｓ８１０、Ｓ８１２、Ｓ８１３）。
【００６２】
なお、署名された文書は、署名サーバ１０１上で保存して署名依頼者等に閲覧可能にしてもよいし、署名依頼者にメール等で直接送信してもよい。
【００６３】
一方、ステップＳ８１０において、署名が正しく行われなかったと判定すると、署名者に対して再度署名し直して貰うよう通知してもよいし、例えば署名期限を過ぎた場合や、署名者から署名拒否の要求があった場合などは、署名依頼者に対して署名サーバ１０１上やメール等でアラートを通知する。署名条件管理プログラム１０８は、署名依頼者からの指示に基づいて、署名依頼の継続、内容変更、中止などの処理を実施し、処理を終了する（Ｓ８１１）。なお、上記においても、ステータス３０６を更新（アラート状態など）してもよい。
【００６４】
ステップＳ８０２において、署名者が外部ユーザであると判定すると、ユーザ連携プログラム１０９は、署名者に対して署名依頼があることをメール等で通知し、署名依頼に対応する署名を署名サーバ１０１上で実施するか、または、署名者側で実施するか問い合わせる（Ｓ８０３）。署名者側で署名を行う例としては、署名者側が有する署名ソフトを用いた署名や、署名サーバ１０１とは異なる署名サーバを利用した署名等である。なお、署名サーバ１０１は、署名者からの応答をメール等で受付けてもよいし、署名サーバ１０１の一時アカウントを発行して、署名サーバ１０１上で応答させるなどしてもよい。
【００６５】
署名者から、署名サーバ１０１上で署名するという応答があった場合、署名環境判定プログラム１１０は、署名者の署名環境を判別するために署名者が使用しているクライアント端末１１９にアクセスし、署名環境に関する情報を取得する（Ｓ８０４、Ｓ８０５）。署名サーバ１０１上で署名するという応答があった場合とは、例えば、署名者が署名サーバ１０１の一時アカウントを使って署名サーバにログインし、署名依頼に対して署名サーバ１０１上で署名する選択を行った場合である。例えば、署名サーバ１０１は、ユーザがアクセスする署名サーバのＷｅｂページなど（ｈｔｍｌファイルなど）に、ユーザの署名環境取得のための管理プログラム（例えば、ＡｃｔｉｖｅＸ（登録商標）やＪＡＶＡ（登録商標）アプレット等）を埋め込んでおき、ユーザによる署名サーバ利用要求応答時（例えば、当該Ｗｅｂページの専用ボタン押下時など）に、当該管理プログラムをユーザのクライアント端末にダウンロードさせる。
【００６６】
クライアント端末は、管理プログラムをクライアント端末上で実行し、ユーザの署名の証明書（例えば、クライアント端末に接続されたＵＳＢやＩＣカード等の媒体に格納されている証明書や、クライアント端末内に格納されている証明書）にアクセスし、取得した情報を署名サーバ１０１に送信する。一例としては、署名サーバ１０１は、クライアント端末に接続されたＵＳＢやＩＣカード等に対して、証明書取得や署名作成の要求を行う場合、管理プログラムを介して、ＰＫＣＳ＃１１等の標準的なＩＣカードアクセスインタフェースに準拠したコマンドを使う等してアクセス可能である。クライアント端末内の証明書の場合は、ブラウザの証明書ストアにアクセスする等によって取得可能である。
【００６７】
署名環境判定プログラム１１０は、上述した方法で取得した署名者の署名環境を検証し、署名環境が適正であるか否か判断する（Ｓ８０６）。検証方法としては、取得した証明書の期限は有効か、当該証明書は当該署名依頼における署名条件情報１１４の項目４０５で指定されたタイプの証明書かなどを検証する。それ以外の検証、例えば証明書に記載された所有者メールアドレスが項目４０２で指定されたメールアドレスと一致するかや、サンプルデータに署名して貰う等までの検証を行ってもよい。
【００６８】
署名環境判定プログラム１１０は、署名者の署名環境が適正であると判定すると、署名者に対して、署名サーバ１０１を使うためのアカウントを発行して、当該アカウントで署名を行うように依頼し、ステップＳ８０９へ進む（Ｓ８０７、Ｓ８０８）。なお、アカウント発行については、任意に発行を許可するのでなく、署名依頼者にライセンス２０４がある場合にのみ発行を許可するなどの制御をしてもよい。
【００６９】
一方、署名者の署名環境が適正ではない場合もある。例えば、署名者の証明書を格納するＵＳＢ等の媒体が、管理プログラムからのアクセスのためのインタフェース（ＰＫＣＳ＃１１等）に対応してない場合など（媒体に所定のコマンドを送っても正しい応答が帰ってこないなど）、署名者の署名環境を取得できない場合もある。その場合、ステップＳ８０６において、署名環境判定プログラム１１０は、署名者の署名環境は適正でないと判定する。
【００７０】
ステップＳ８０６において、署名者の署名環境が適正ではないと判定すると、署名環境判定プログラム１１０は、署名者の署名環境を適正化する（Ｓ８１４）。例えば、証明書の有効期限切れや、証明書タイプ４０５の不適合などのように、証明書に問題がある場合には、署名者に対して、証明書を更新してから再度、署名サーバ１０１にアクセスして処理を行うよう通知して待機する。また、署名サーバ１０１の外部サーバ連携プログラム１１１が、署名条件情報１１４の項目４０５で指定された証明書発行機関に対して、当該署名者の証明書の発行要求を行い、署名者に証明書発行機関にアクセスさせて証明書をダウンロードさせるようにしてもよいし、当該証明書が記録された媒体を署名者に送付するようにしてもよい。
【００７１】
一方、証明書の問題でなく、署名者の証明書を格納する媒体にアクセスできない等の理由により、署名環境を取得できない問題の場合、署名環境判定プログラム１１０は、例えば署名者の許可があった場合は、署名処理のためのプログラム（ソフトウェアトークン）を署名者のクライアント端末に送信し、署名者に対して当該ソフトウェアトークンを使って署名するように依頼する（Ｓ８１４）。なお、署名環境を取得できない場合に、署名者の署名環境を適正化できないと判定するようにしてもよい。
【００７２】
署名環境が適正化された場合には、ステップＳ８０７に進む（Ｓ８１５）。一方、署名環境が適正化できない場合、環境判定プログラム１１０は、署名者や署名依頼者にエラー通知を出し、ステータス３０６を更新（例えばエラー状態など）して、ステップＳ８１１に進む（Ｓ８１６）。
【００７３】
ステップＳ８０４において、署名者が署名サーバ上で署名しないという応答の場合、ユーザ連携プログラム１０９は、署名者側で署名するように、署名者に依頼する（Ｓ８１７）。署名者側での署名とは、例えば、署名者側の署名ソフトを用いての署名や、署名者側の独自の署名サーバを用いての署名である。
【００７４】
なお、署名者に署名を依頼する場合、署名対象の文書と署名条件情報１１４をメール等で署名者に送信してもよいし、署名サーバ１０１の一時アカウントを発行して、署名サーバ１０１から署名に必要な情報をダウンロードさせる等してもよい。また、署名条件情報１１４のうち、ユーザの選択の余地がないもの、例えば署名理由において「確認」のみ許可されている場合などは、文書に事前にこの情報を埋込んでから署名者に送ってもよい。
【００７５】
ユーザ連携プログラム１０９は、署名者が実施した署名文書を受取り、署名検証プログラム１０７で検証する（Ｓ８１８）。具体的には、署名依頼情報１１３で指定された署名条件３０４の各項目４０１〜４０７を満たすように署名されたか否かを検証する。
【００７６】
署名サーバ１０１を使用せずに署名者側で署名させる場合、署名サーバ１０１側で署名処理を制御することができないので、全ての項目を検証する必要がある。具体的には、受信した署名文書を見て、署名理由、署名者が項目４０１、４０２と合致するか、署名期限は守られているか、項目４０４で指定した署名フィールドに署名されているか、署名に使用された証明書のタイプは項目４０５に合致するか、証明書検証情報やタイムスタンプは指定された署名条件通りに署名文書に付加されている／付加されていないか、などを検証する。検証の結果、受信した署名文書が適正であると判定するとステップＳ８１２に進む（Ｓ８１９）。
【００７７】
一方、受信した署名文書が不適正であると判定すると、当該不適正が既定回数（例えば、３回）以下であるか否かを判定し（Ｓ８２０）、規定回数以下であると判定すると、ステップＳ８１７に戻って、署名者に署名し直しを要求する。一方、不適正の回数が規定回数を超えたと判定すると、署名者や署名依頼者にエラー通知を出して、ステータスを更新し、ステップＳ８１１に進む（Ｓ８２１）。
【００７８】
なお、ステップＳ８１９において、署名条件情報の証明書検証情報が「要」であるにも関わらず、署名文書に証明書検証情報が付加されていなかった場合には、署名文書が不適正であると判定してもよい。ただし、外部サーバ連携プログラム１１１が当該署名に使用された証明書の有効性をＯＣＳＰサーバ１１７に問合わせて検証し、証明書が有効であれば、検証結果を署名文書に付加して終了（署名文書は適正であると判定する）してもよい。ただし、証明書が無効であった場合や、署名者が署名を実施してから外部サーバ連携プログラム１１１が証明書の有効性を検証するまでの間に証明書が失効した場合などでは、署名サーバ１０１は、再度署名者に対して署名し直して貰うよう通知する。
【００７９】
なお、ステップＳ８１７において、署名者側で署名を実施する場合、署名者のクライアント端末で署名する以外に、自社の署名サーバや、署名サーバ１０１とは異なるプロバイダの署名サーバを使って署名するなどしてもよい。その場合、上記と同様の処理方法でもよいし、以下のような処理を行ってもよい。以下、上記とは処理が異なる部分（ステップＳ８１７）についてのみ説明する。
【００８０】
署名者から、署名サーバ１０１ではなく、署名者が指定（例えばＵＲＬで指定等）する別の署名サーバで署名するとの応答を得た場合の処理について説明する。署名サーバ１０１は、別の署名サーバに対して、誰がどんな条件で署名する必要があるか等の情報を含む署名依頼の通知を出す。具体的には、署名サーバ１０１は、署名対象の文書とともに、当該署名者に関する署名依頼情報１１３と署名条件情報１１４を別の署名サーバに送る。別の署名サーバは、受信した情報（例えば、署名条件情報に記載の署名者のメールアドレス等）に基づいて署名者を特定し、当該署名者に対して署名を行うように通知する。別の署名サーバは、当該署名者と連携して、指定された条件または当該署名者からの入力に基づいて署名を行い、署名結果を署名サーバ１０１へ送信する。
【００８１】
なお、署名サーバ１０１と別の署名サーバ間の通信において互いを認証し、正当な署名サーバからの要求のみ受付けるようにしてもよい。また、署名者側で署名を実施させる場合は、文書の改竄を検知、防止するために、署名サーバ１０１で署名対象の文書のハッシュ値を取得して保存し、署名者から取得した署名文書と比較したり、署名対象の文書に改竄検知のための署名をつけてから送信するなどしてもいい。
【００８２】
また、署名者側で署名を実施する場合でも、ステップＳ８０５のように、署名者の署名環境を取得して、正当な場合のみ署名依頼するようにしてもよい。また、署名者の署名環境が一部不適正な場合（例えば、署名者の証明書は署名条件を満たすが、その他の条件、例えば署名文書への証明書検証結果の追加が不可などの場合）は、署名者側で署名を実施する応答があっても、署名サーバ１０１上で署名を実施するように依頼してもよい。なお、署名環境の取得については、上述したように、署名者のクライアント端末に署名環境を取得しにいってもよいし、署名者が使用する署名サーバに対して、署名者情報（メールアドレス等）を指定して取得しにいってもよい。
【００８３】
また、ステップＳ８０３における署名サーバ１０１の利用の問い合わせに対して、署名者が応答を間違えることがある。例えば、署名者が署名サーバ１０１を利用して署名したいのに、誤って署名者側で署名すると回答してしまう場合がある。このような問題に対応するため、署名サーバ１０１は、例えば一定期限内に署名者から署名文書の送信がない場合には、署名依頼者等にアラート通知を出したり、署名者から署名依頼者にアラート通知を出せる機能を備えてもよい。
【００８４】
また、ステップＳ８０５において署名者の署名環境の取得を行っているが、例えば一度署名環境を取得済みの署名者に対しては、署名者の署名環境を全面的に信頼して、再度の署名環境の取得を行わないようにしてもよい。
【００８５】
以上、第１の実施形態における署名システムによれば、署名依頼対象の署名者を特定して、署名サーバの利用を許可されている内部ユーザであるか否かを判定する。署名者が内部ユーザであると判定すると、署名者の使用する計算機に対して署名サーバを利用した署名実施を依頼し、署名者が内部ユーザではないと判定すると、署名者の使用する計算機に対して署名サーバの利用要否を問い合わせる。署名サーバの利用要否の問い合わせに対して、署名サーバを利用するとの応答があった場合には、署名者の使用する計算機に対して、署名者の署名環境を取得し、取得した署名環境が適正ではないと判断すると、取得した署名環境の適正化を行う。そして、署名サーバの利用要否の問い合わせに対して、署名者側で署名を実施するとの応答があった場合には、署名者の使用する計算機に対して署名者側での署名実施を依頼するとともに、署名者の署名環境が適正であると判定した場合、または、署名環境の適正化が行われた場合には、署名サーバを利用した署名実施を依頼する。これにより、署名者の署名環境が様々である場合でも、署名者への署名依頼が可能となる。従って、署名者が、署名依頼者が署名依頼で使う署名サーバとは異なる署名環境で署名する場合でも、署名依頼者が意図する署名条件で署名させることができる。
【００８６】
また、署名環境の適正化処理として、署名者が署名に使う証明書を適正な証明書にさせるか、または、署名処理のためのプログラムを署名者に送信する処理を行うので、署名者は、適切な署名環境にて署名することができる。
【００８７】
また、署名サーバの利用要否の問い合わせに対して、署名者側で署名を実施するとの応答があった場合に、署名の条件を示す署名条件情報、署名の依頼内容を示す署名依頼情報、および、署名対象の文書を、署名者の使用する計算機に対して送信する。これにより、署名者は、受信した署名条件情報、署名依頼情報、および、署名対象の文書に基づいて、署名依頼書の意図した署名条件で署名を実施することができる。
【００８８】
また、署名サーバは、署名者が行った署名が署名条件を満たすか否かの検証を行うので、署名者側で署名が行われた場合でも、署名者の意図した条件で署名が行われたか否かを検証することができる。
【００８９】
＜第２の実施形態＞
次に、本発明の第２の実施形態について説明する。第１の実施形態では、一回の署名依頼で一人の署名者に署名依頼する例を説明した。第２の実施形態では、ワークフロー形式で、複数の署名者に署名依頼する例について説明する。
【００９０】
第２の実施形態における署名システムの構成は、第１の実施形態における署名システムの構成と同じである（図１参照）。従って、システム構成についての詳しい説明は省略する。
【００９１】
第１の実施形態における署名システムで用いられる署名条件情報１１４の一例を図４（ａ）に示した。第２の実施形態における署名システムで用いられる署名条件情報１１４の一例を図４（ｂ）に示す。図４（ｂ）に示す署名条件情報は、図４（ａ）に示す署名条件情報と比較すると、新たな署名条件項目として、署名者の順番を示す順番４１０が追加されている。すなわち、署名者として一人の署名者だけでなく、第一署名者、第二署名者というように、複数の署名者を指定できるようになっている。
【００９２】
なお、第２の実施形態における構成及び処理のうち、第１の実施形態と同じものについては、詳しい説明を省略する。以下では、第２の実施形態において、署名者への署名依頼の処理の詳細について説明する。
【００９３】
図９は、本発明の第２の実施形態における署名サーバ１０１が実行する、署名依頼、署名環境の判別、署名の実施および検証についての処理の一例を示すフローチャートである。ただし、本実施形態のうち、第１の実施形態の署名依頼、署名環境の判別、署名の実施および検証の処理（図８参照）と同様のものについては、それらを引用して差異部分についてのみ説明する。
【００９４】
署名条件管理プログラム１０８は、ステップＳ８１２において、署名依頼情報１１３のステータス３０６を更新する（Ｓ９０１）。署名条件管理プログラム１０８は、更新されたステータス３０６が「未済」か否か判断する（Ｓ９０２）。ステータス３０６が「未済」でなく「済」の場合にはステップＳ８１３に進む（Ｓ９０４）。
【００９５】
一方、ステータス３０６が「未済」の場合には、次の署名者を判別して、ステップＳ８０１に戻り、次の署名者に対して署名依頼する（Ｓ９０３）。例えば、署名条件情報が図４（ｂ）に示すようなものである場合、第一署名者の次の署名者は第二署名者であるので、第一署名者の署名処理終了後は、第二署名者に署名依頼する。第一署名者と第二署名者に対して、同じ文書に続けて署名させる場合は、第一署名者が署名した文書に署名するよう第二署名者に依頼する。
【００９６】
なお、上記の署名依頼では、署名依頼を受けたユーザは署名を行うものとしているが、例えば文書の閲覧だけ行うユーザなど、署名をしなくてもいいユーザを含めた依頼内容にしてもよい。また、本実施例では、上記の処理以外に、ステップＳ８１８の処理が第１の実施形態と異なる。以下で、その詳細について説明する。
【００９７】
署名検証プログラム１０７は、署名者から署名文書を受取り、署名の検証を行う。検証の結果、当該署名者の署名が適正であった場合、署名検証プログラム１０７は、当該署名文書において、当該署名者の署名よりも以前に行われた署名があるか判別する。例えば、図４（ｂ）において、署名条件３０４が条件１の場合、第二署名者の署名よりも前に第一署名者の署名が存在する。このように、署名サーバ１０１は、署名条件情報１０４に基づいて判別してもいいし、署名文書の中身を調べて判別してもよい。署名検証プログラム１０７は、当該署名者の署名よりも前に行われた署名が署名文書に含まれている場合、前に行われた署名についても同様に、署名の検証を行う。当該署名者の署名よりも前に行われた署名が署名文書に含まれていない場合は、検証処理を終了する。
【００９８】
続いて、本発明の第２の実施形態の変形例について説明する。本変形例では、署名条件情報１１４に、新たな署名条件項目を追加した例について説明する。
【００９９】
図５（ａ）は、本変形例における署名条件情報１１４の一例を示す図である。図４（ｂ）に示す、第２の実施形態における署名条件情報１１４と比較すると、図５（ａ）に示す署名条件情報１１４では、署名条件項目４０５〜４０７の代わりに、新たな署名条件項目として、準拠すべき署名の標準を示す署名標準４２０が設けられている。
【０１００】
署名標準とは、例えばＳＡＦＥ(登録商標)やＨＰＫＩといった所定の署名基準である。署名標準４２０は、署名文書内容に関する要件４２１と、その他の要件４２２を含んで定義される（図５（ｂ）参照）。署名文書内容に関する要件４２１は、署名標準に準拠するためにどんな形式で文書に署名する必要があるかを定める。その他の要件４２２は、署名文書の中身に関する要件ではないが、署名標準に準拠するために、署名サーバ１０１が行わなければならない処理を定義する。
【０１０１】
図５（ｂ）に示す例では、二つの標準（標準１とＨＰＫI）がそれぞれ定義されているが、その他の標準が含まれていてもよい。項目４２１において、証明書タイプ、証明書検証情報、タイムスタンプは、図４（ａ）および図４（ｂ）と同様である。
【０１０２】
図５（ｂ）において、署名ロゴとは、署名の見た目を示すイメージデータである。署名ロゴにより、署名を実施した際に、どんなイメージを画面表示させるか指定することができる。
【０１０３】
図５（ｂ）の項目４２２において、「操作ログ」は、署名者など、署名サーバ１０１を利用するユーザの操作ログを署名サーバ１０１で取る必要があるか否かを定める。「署名文書のアーカイブ」は、署名サーバ１０１が署名文書をアーカイブする必要があるか否かを定める。例えば、項目４２２において、標準１の場合、操作ログは「必要」であるため、署名サーバ１０１は、署名者の操作ログを取得するよう動作する必要がある。
【０１０４】
なお、項目４２１、４２２ともに、上記以外の定義を含んでもいい。また項目４２１、４２２は、署名システムの管理者等が署名システムで定義しておく、または、署名標準を定義している機関等から定義情報を取得して署名システムに設定し、その定義済みのものを署名依頼者が利用する。ただし、これに限らず、その他の設定方法でもよい。
【０１０５】
以下に、第２の実施形態の変形例における、署名者への署名依頼の処理について説明する。処理の流れは、第２の実施形態（図８参照）と同様である。以下では、処理の異なる部分、すなわち、署名の実施および検証についてのみ説明する。
【０１０６】
署名サーバ１０１は、ステップＳ８０８において、署名者に署名サーバ１０１上で署名するよう依頼する。このため、署名サーバ１０１は、署名者の署名標準を判別し、当該署名標準に準拠するよう動作する。具体的には、署名者の署名標準に対応するその他の要件４２２を参照し、操作ログが「要」であれば、署名者からの操作ログを取得し保管する。署名文書のアーカイブが「要」であれば、署名が終了した後に、文書のアーカイブを行う。なお、操作ログの取得は、例えば署名依頼者が文書をアップロードした時点から行うなど、より前の段階から行うようにしてもよい。また、操作ログは、当該署名者の操作ログだけでなく、当該署名対象の文書へのあらゆるユーザの操作ログを取るようにしてもよい。署名の実施については、第２の実施形態と同様に、項目４０１〜４０４、４１０、４２０を満たすように行う。
【０１０７】
署名の検証については、署名サーバ１０１側でなく、署名者側で署名を実施した場合の処理が異なる（図８のステップＳ８１７、Ｓ８１８に対応）。署名サーバ１０１は、ステップＳ８１７で、署名者に署名者側で署名するよう依頼する。この際、署名サーバ１０１は、署名者の署名標準を判別し、当該署名標準に準拠するよう、どんな条件で署名すればいいか通知する。具体的には、署名者の署名条件情報として、項目４０１〜４０４、項目４２０が示す項目４２１、４２２の情報を署名対象の文書と合せて通知する。
【０１０８】
署名サーバ１０１は、署名者が実施した署名文書を受取り、署名を検証する。具体的には、第２の実施形態と同様に、署名文書が項目４０１〜４０４、および、項目４２１の条件を満たすように署名されているか検証する。さらに、項目４２２の条件も満たしているか検証する。例えば、操作ログが「要」であれば、署名文書とともに操作ログ情報も送付されているか検証する。操作ログについては、第三者による改竄防止のため、署名者側で操作ログへの電子署名をつける等してもよい。署名文書のアーカイブが「要」であれば、署名文書とともに、署名文書のアーカイブも送付されているか検証する。なお、署名文書のアーカイブが送付されてない場合には、署名サーバ１０１側でアーカイブを行うようにしてもよい。
【０１０９】
なお、図５（ａ）において、第一署名者の署名標準は「標準１」で、第二署名者の署名標準は「ＨＰＫI」である。この場合、署名サーバ１０１は、第一署名者の署名を実施・検証する場合は、「標準１」に対応した動作を行い、第二署名者の署名を実施・検証する場合は、「ＨＰＫI」に対応した動作を行う。例えば、図５（ａ）に示す署名条件情報１１４の場合、第一署名者の場合は操作ログが必要で、第二署名者の場合は操作ログが不要というように、署名サーバ１０１は動作する。
【０１１０】
なお、複数の署名者の署名を要求する署名依頼の場合、署名者のうち一人でも項目４１２の要素が「要」の人がいれば、その他の署名者についても、全て当該要素を「要」として処理するようにしてもいい。すなわち、署名サーバ１０１は、署名依頼するにあたり、当該署名依頼の署名者が複数か判別する。複数の場合は、各署名者に対応する署名標準４２０の要件である項目４２２を調べる。項目４２２の各要素について、署名者のうち一人でも「要」の人がいれば、本署名依頼において、他の署名者についても「要」として処理する。
【０１１１】
例えば、図５（ａ）に示す署名条件情報１１４において、第一署名者と第二署名者の一方が操作ログ「要」であるため、第二署名者についても操作ログを取得する。署名サーバ１０１は、署名者からの操作要求のたびに、当該署名者の署名標準を参照して上記の動作方法を決めてもいいし、各署名依頼において、現在の署名サーバの動作方法を判別するための動作設定情報（例えば、"「標準１」に準拠"かつ"他署名者との兼合いで文書アーカイブも「要」"など）を別途設けて、それに基づいて動作方法を決めてもいい。
【０１１２】
なお、署名標準４２０については、複数の標準から任意のものを署名者に選ばせるようにしてもよい。その場合、署名者側で実施した署名の検証については、当該署名がどの署名標準に合致するか、各署名標準の要件と照らして逐一検証して判断してもいいし、署名者が使った証明書の情報に基づいて、どの署名標準を使ったか判断（例えば、署名標準−証明書発行機関の対応関係情報を持っておき、どの機関から発行された証明書を使ったかで判断）して当該標準について検証してもよい。また、どの署名標準を使ったか、署名者から情報を受信して、当該標準について検証してもよい。なお、第１の実施形態においても、上述した署名標準を使う処理方式としてもよい。
【０１１３】
以上、第２の実施形態における署名システムによれば、署名依頼対象の署名者が複数存在する場合に、署名の条件を示す署名条件情報に基づいて、全ての署名者が署名を行ったか否かを判定し、全ての署名者が署名を行っていないと判定すると、次の署名者に署名実施を依頼する。これにより、署名依頼対象の署名者が複数存在する場合でも、全ての署名者に対して署名依頼を行うことができる。
【０１１４】
また、署名実施を依頼する際に、所定の署名基準である署名標準に関する情報を含む署名条件情報を、署名者の使用する計算機に送信することにより、署名標準に応じた署名の実施を依頼することができる。
【０１１５】
＜第３の実施形態＞
続いて、本発明の第３の実施形態における署名システムについて説明する。第３の実施形態では、ある署名者への依頼を、別の署名者に代理で処理させる例について説明する。例えば、製薬会社や医療機関では、ＣＲＯ（開発業務受託機関）やＳＭＯ（治験実施施設管理機関）等の機関に、業務の一部を委託、代行させることがある。本実施形態は、例えばそのような委託や代理の場合の署名依頼に関する。
【０１１６】
図１１は、第３の実施形態における署名システムの構成を示す図である。なお、図１１では、署名サーバやクライアント端末のソフトウェア構成（メモリ等に格納されているプログラム情報など）を図示していないが、第１の実施形態または第２の実施形態の構成と同様であり、説明を省略する。
【０１１７】
第３の実施形態における署名システムは、１以上の署名サーバ１００１（または／および署名サーバ１００２）と、１以上のＯＣＳＰサーバ１００３と、１以上のタイムスタンプサーバ１００４と、署名機能を持たない１以上のクライアント端末１００５（または／およびクライアント端末１００６)と、１以上のクライアント端末１００７（または／およびクライアント端末１００８)とを備える。なお、第１の実施形態や第２の実施形態と同様に、自社署名サーバ１２８やその他の機器を含んでもいい。
【０１１８】
クライアント端末１００６は、クライアント端末１００５からの依頼をうけて、クライアント端末１００５の業務を代行する。クライアント端末１００８は、クライアント端末１００７からの依頼を受けて、クライアント端末１００８の業務を代行する。
【０１１９】
なお、本実施形態のうち、第２の実施形態の署名依頼、署名環境の判別、署名の実施および検証の処理と同様のものについては、それらを引用して、差異部分についてのみ説明する。
【０１２０】
図１０は、本発明の第３の実施形態における署名システムで行われる署名の依頼、代行処理の一例を示すフローチャートである。
【０１２１】
署名依頼者からの署名依頼の実施要求を受け、アカウント管理プログラム１０５は、署名依頼の内容に基づいて、署名者を判別する。ユーザ連携プログラム１０９は、当該署名者に対し、署名依頼があることをメール等で通知し、依頼処理を自分で行うか代行させるかを問合わせる（Ｓ９１１）。署名者から、代行させない応答があった場合には、ステップＳ８０１に進み、代行させる応答があった場合には、署名者から代行者の指定を受付けて、依頼内容を更新する（Ｓ９１２、Ｓ９１３、Ｓ９１５）。
【０１２２】
具体的には、署名サーバ１０１は、署名者に対して一時アカウントを発行するか、もしくは既存のアカウントを使って貰う等して、署名者から代行者を指定して貰う。代行者の指定は、例えば、メールアドレス等を指定してもらうことにより行う。署名サーバ１０１は、代行者の指定を受けて、署名依頼情報１１３と署名条件情報１１４を更新する。署名依頼情報１１３については、項目３０３において新たに代行者を追加し、項目３０６も例えば署名者が増えるなら、それに応じて更新する。
【０１２３】
署名条件情報１１４については、代行要求を行った署名者の署名条件をそのまま代行者の署名条件として設定してもいいし、署名依頼者や代行要求者が新たに署名条件を設定し直してもいい。例えば、図４（ｂ）に示す署名条件情報おいて、第一署名者が代行を要求すると、第一署名者と第二署名者の間の列に新たに代行者の署名条件を作成し、第一署名者と同じ署名条件を設定する。第一署名者の署名条件には、代行中であることを示す値が設定される。
【０１２４】
なお、署名条件情報において、各署名者の代行の有無を判別するための情報を別途設けてもよい。図４（ｂ）に示す署名条件情報おいて、第一署名者が代行要求を行った場合、代行者の署名実施後に、次の署名者として第二署名者に署名依頼を行うが、それ以外に、例えば代行者の署名実施後に代行結果を一旦第一署名者に確認（承認や署名等）してもらってから、次の署名者に署名依頼するようにしてもよい。
【０１２５】
ユーザ連携プログラム１０９は、代行者に対し、署名依頼があることをメール等で通知し、署名依頼処理を自分で行うか代行させるかを問合わせて、ステップＳＳ９１２に進む（Ｓ９１４）。なお、第１の実施形態においても、上記の署名代行を行う処理方式としてもよい。
【０１２６】
以上、第３の実施形態における署名システムによれば、署名者の使用する計算機から署名の代行要求を受け付けると、代行要求に基づいて、署名の条件を示す署名条件情報、および、署名の依頼内容を示す署名依頼情報の内容を更新して、代行者の使用する計算機に対して署名実施を依頼する。これにより、署名者ではなく、署名者に代わって署名を行う代行者に対しても、署名実施を依頼することができる。
【０１２７】
以上、本発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計なども含まれる。
【符号の説明】
【０１２８】
１０１…署名サーバ、１０２,１２１,１２９…メモリ、１０３,１２２,１３０…ＣＰＵ、１０４,１２３,１３１…Ｉ／Ｆ、１０５…アカウント管理プログラム、１０６…署名生成プログラム、１０７…署名検証プログラム、１０８…署名条件管理プログラム、１０９…ユーザ連携プログラム、１１０…署名環境判定プログラム、１１１…外部サーバ連携プログラム、１１２…アカウント情報、１１３…署名依頼情報、１１４…署名条件情報、１１５…外部サーバ情報、１１６…署名文書情報、１１７…ＯＣＳＰサーバ、１１８…タイムスタンプサーバ、１１９,１２０…クライアント端末、１２４…署名生成プログラム、１２５…署名検証プログラム、１２６…外部サーバ連携プログラム、１２８…自社署名サーバ、１３２…署名生成プログラム、１３３署名検証プログラム、１３４…外部サーバ連携プログラム、１００１…署名サーバＡ、１００２…署名サーバＢ、１００３…ＯＣＳＰサーバ、１００４…タイムスタンプサーバ、１００５…クライアント端末Ａ、１００６…クライアント端末Ｃ、１００７…クライアント端末Ｂ、１００８…クライアント端末Ｄ
【図１】
0005417628.tif 000002
【図２】
0005417628.tif 000003
【図３】
0005417628.tif 000004
【図４】
0005417628.tif 000005
【図５】
0005417628.tif 000006
【図６】
0005417628.tif 000007
【図７】
0005417628.tif 000008
【図８】
0005417628.tif 000009
【図９】
0005417628.tif 000010
【図１０】
0005417628.tif 000011
【図１１】
0005417628.tif 000012