(57)【特許請求の範囲】
【請求項１】
メモリに記憶されたデータオブジェクトに含まれるデータについて更新対象となるデータが指定されるデータ更新命令を受けると、前記更新対象となるデータを更新する前に、前記データオブジェクトに含まれるデータから前記更新対象となるデータを除く更新対象外のデータからデータ更新前のＥＤＣを算出しておき、前記更新対象となるデータを更新した後に、前記更新対象外のデータから算出したデータ更新後のＥＤＣと、前記更新対象外のデータから算出したデータ更新前のＥＤＣを照合するデータ更新手段を備えたことを特徴とするセキュリティトークン。
【請求項２】
前記データ更新手段は、前記更新対象となるデータを更新した後に、前記更新対象外のデータから算出したデータ更新後のＥＤＣと、前記更新対象外のデータから算出したデータ更新前のＥＤＣの照合に成功した場合のみ、データオブジェクトのデータ更新後のＥＤＣを算出し、データオブジェクトに付加されているＥＤＣを該データ更新後のＥＤＣに更新することを特徴とする、請求項１に記載したセキュリティトークン。
【請求項３】
メモリに記憶されたデータオブジェクトに含まれるデータについて更新対象となるデータが指定されるデータ更新命令をセキュリティトークンが受けると、前記セキュリティトークンが、前記更新対象となるデータを更新する前に、前記データオブジェクトに含まれるデータから前記更新対象となるデータを除く更新対象外のデータからデータ更新前のＥＤＣを算出するステップ１、前記セキュリティトークンが、前記更新対象となるデータを更新した後に、前記更新対象外のデータから算出したデータ更新後のＥＤＣと、前記更新対象外のデータから算出したデータ更新前のＥＤＣを照合するステップ２が順に実行されることを特徴とするデータの更新方法。
【請求項４】
前記ステップ２の実行後、前記セキュリティトークンは、前記更新対象外のデータから算出したデータ更新後のＥＤＣと、前記更新対象外のデータから算出したデータ更新前のＥＤＣの照合に成功した場合のみ、データオブジェクトのデータ更新後のＥＤＣを算出し、データオブジェクトに付加されているＥＤＣを該データ更新後のＥＤＣに更新するステップ３を実行することを特徴とする、請求項３に記載したデータの更新方法。
【請求項５】
メモリに記憶されたデータオブジェクトに含まれるデータについて更新対象となるデータが指定されるデータ更新命令を受けると、前記更新対象となるデータを更新する前に、前記データオブジェクトに含まれるデータから前記更新対象となるデータを除く更新対象外のデータからデータ更新前のＥＤＣを算出するステップ１、前記更新対象となるデータを更新した後に、前記更新対象外のデータから算出したデータ更新後のＥＤＣと、前記更新対象外のデータから算出したデータ更新前のＥＤＣを照合するステップ２をセキュリティトークンに実行させるためのコンピュータプログラム。
【請求項６】
前記ステップ２の実行後、前記更新対象外のデータから算出したデータ更新後のＥＤＣと、前記更新対象外のデータから算出したデータ更新前のＥＤＣの照合に成功した場合のみ、データオブジェクトのデータ更新後のＥＤＣを算出し、データオブジェクトに付加されているＥＤＣを該データ更新後のＥＤＣに更新するステップ３を前記セキュリティトークンに実行させる特徴とする、請求項５に記載したコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
ＩＣカードに代表されるセキュリティトークンのメモリに記憶されているデータの整合性を検証するための技術に関する。
【背景技術】
【０００２】
ＩＣカードに代表されるセキュリティトークンのメモリには、セキュアなサービスにて利用するデータオブジェクトが記憶され、特許文献１で開示されているように、このデータオブジェクトには、データオブジェクトに含まれるデータに誤りがないことを検証できるように誤り検出符号（誤り検出符号: Error Detection Code）が付加される。
【０００３】
誤り検出符号を用いてデータの整合性を検証する従来の手法では、セキュリティトークンのメモリに記憶されたデータオブジェクトからデータを読み出す際、（Ｒ１）読み出し対象となるデータが含まれているデータオブジェクトの誤り検出符号を算出するステップ、（Ｒ２）誤り検出符号を算出したデータオブジェクトに付加されている誤り検出符号と算出した誤り検出符号を照合するステップ、（Ｒ３）誤り検出符号の照合に成功すると、読み出し対象となるデータをデータオブジェクトから読み出しするステップが順に実行される。また、データオブジェクトに含まれているデータを更新する際、上述した（Ｒ１）及び（Ｒ２）を実行した後、（Ｕ１）誤り検出符号の照合に成功すると、更新対象となるデータを更新するステップ、（Ｕ２）更新後のデータオブジェクトの更新後の誤り検出符号を算出するステップ、（Ｕ３）更新後のデータオブジェクトに付加されている誤り検出符号を更新するステップ、が順に実行される。
【０００４】
しかし、上述した手順では、更新時の（Ｕ１）と（Ｕ２）の間で更新対象外のデータの改竄またはデータ化けが生じた場合、更新対象外のデータに誤りがあるにもかかわらず、（Ｕ２）にて、誤った更新対象外のデータを含む状態で誤り検出符号が算出されてしまい、例えば、データオブジェクトからデータを読み出す際、データオブジェクトに誤りがあることを検出することはできなかった。
【０００５】
図５を用いて上記内容を説明する。図５は、従来の手法において不十分なケースを説明する図で、図５において、データオブジェクトのサイズは８バイトで、２バイトの誤り検出符号（ここでは、ＣＲＣ１６）をデータオブジェクトに付加している。
【０００６】
図５（ａ）は、データを更新する前のデータオブジェクトを説明する図で、データを更新する前のデータオブジェクトに含まれているデータは全て「００ｈ」で、該データオブジェクトに付加されている誤り検出符号は「６６ＢＢｈ」である。
【０００７】
図５（ｂ）は、（Ｕ１）更新対象となるデータを更新するステップの内容を説明する図である。図５（ｂ）ではデータオブジェクトのＤ３・Ｄ４の２バイトが更新対象となるデータで、データオブジェクトのＤ３の内容が「００ｈ」から「ＡＡｈ」へ、Ｄ４が「００ｈ」から「ＢＢｈ」へ更新され、データ化けまたはデータの改竄攻撃により更新対象外となるＤ６のデータが「００ｈ」から「ＦＦｈ」に不正に更新されている。
【０００８】
図５（ｃ）は、（Ｕ２）更新後のデータオブジェクトの誤り検出符号を算出するステップの内容を説明する図で、更新後のデータオブジェクトの誤り検出符号は、更新後のデータオブジェクトに含まれている全てのデータを対象として算出されため、図５（ｃ）では、不正に更新されたＤ６のデータも含めて更新後の誤り検出符号が算出され、正式な更新後の誤り検出符号は「００００ＡＡＢＢ００００００００ｈ」から算出された「４Ｅ３Ｆｈ」になるにも係わらず、更新後の誤り検出符号として「２Ｅ３Ｅｈ」が算出されてしまう。
【０００９】
図５（ｄ）は、（Ｕ３）更新後のデータオブジェクトに付加されている誤り検出符号を更新するステップの内容を説明する図で、不正に更新されたＤ６のデータも含めて算出された「２Ｅ３Ｅｈ」が、データを更新したデータオブジェクトに付加されることになり、更新後にデータオブジェクトを読み出す際に誤り検出符号を照合しても、更新後のデータオブジェクトの内容と該データオブジェクトの内容から算出される誤り検出符号は一致してしまうため、不正に更新されたデータ（ここでは、Ｄ６のデータ）が更新後のデータオブジェクトに含まれることを検出できない。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特許第３２３１４４８号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
このように、誤り検出符号を用いてデータの整合性を検証する従来の手法では、セキュリティトークンのメモリに記憶されたデータオブジェクトのデータを更新した際、更新対象外のデータが不正に更新されても、更新対象外のデータが不正に更新されたことを検出できない問題があった。
【００１２】
そこで、本発明は、セキュリティトークンのメモリに記憶されたデータオブジェクトのデータを更新した際、更新対象外のデータが不正に更新されても、更新対象外のデータが不正に更新されたことを検出できるセキュリティトークン及び方法を提供することを目的とする。
【課題を解決するための手段】
【００１３】
上述した課題を解決する第１の発明は、メモリに記憶されたデータオブジェクトに含まれるデータについて更新対象となるデータが指定されるデータ更新命令を受けると、前記更新対象となるデータを更新する前に、前記データオブジェクトに含まれるデータから前記更新対象となるデータを除く更新対象外のデータからデータ更新前のＥＤＣを算出しておき、前記更新対象となるデータを更新した後に、前記更新対象外のデータから算出したデータ更新後のＥＤＣと、前記更新対象外のデータから算出したデータ更新前のＥＤＣを照合するデータ更新手段を備えたセキュリティトークンである。
【００１４】
また、第２の発明は、第１の発明のセキュリティトークンにおいて、前記データ更新手段は、前記更新対象となるデータを更新した後に、前記更新対象外のデータから算出したデータ更新後のＥＤＣと、前記更新対象外のデータから算出したデータ更新前のＥＤＣの照合に成功した場合のみ、データオブジェクトのデータ更新後のＥＤＣを算出し、データオブジェクトに付加されているＥＤＣを該データ更新後のＥＤＣに更新するセキュリティトークンである。
【００１５】
更に、上述した課題を解決する第３の発明は、メモリに記憶されたデータオブジェクトに含まれるデータについて更新対象となるデータが指定されるデータ更新命令をセキュリティトークンが受けると、前記セキュリティトークンが、前記更新対象となるデータを更新する前に、前記データオブジェクトに含まれるデータから前記更新対象となるデータを除く更新対象外のデータからデータ更新前のＥＤＣを算出するステップ１、前記セキュリティトークンが、前記更新対象となるデータを更新した後に、前記更新対象外のデータから算出したデータ更新後のＥＤＣと、前記更新対象外のデータから算出したデータ更新前のＥＤＣを照合するステップ２が順に実行されるデータの更新方法である。
【００１６】
また、第４の発明は、第３の発明に記載のデータの更新方法において、前記ステップ２の実行後、前記セキュリティトークンは、前記更新対象外のデータから算出したデータ更新後のＥＤＣと、前記更新対象外のデータから算出したデータ更新前のＥＤＣの照合に成功した場合のみ、データオブジェクトのデータ更新後のＥＤＣを算出し、データオブジェクトに付加されているＥＤＣを該データ更新後のＥＤＣに更新するステップ３を実行するデータの更新方法である。
【００１７】
更に、上述した課題を解決する第５の発明は、メモリに記憶されたデータオブジェクトに含まれるデータについて更新対象となるデータが指定されるデータ更新命令を受けると、前記更新対象となるデータを更新する前に、前記データオブジェクトに含まれるデータから前記更新対象となるデータを除く更新対象外のデータからデータ更新前のＥＤＣを算出するステップ１、前記更新対象となるデータを更新した後に、前記更新対象外のデータから算出したデータ更新後のＥＤＣと、前記更新対象外のデータから算出したデータ更新前のＥＤＣを照合するステップ２をセキュリティトークンに実行させるためのコンピュータプログラムである。
【００１８】
また、第６の発明は、第５の発明に記載のコンピュータプログラムにおいて、前記ステップ２の実行後、前記更新対象外のデータから算出したデータ更新後のＥＤＣと、前記更新対象外のデータから算出したデータ更新前のＥＤＣの照合に成功した場合のみ、データオブジェクトのデータ更新後のＥＤＣを算出し、データオブジェクトに付加されているＥＤＣを該データ更新後のＥＤＣに更新するステップ３を前記セキュリティトークンに実行させるコンピュータプログラムである。
【発明の効果】
【００１９】
上述した本発明によれば、セキュリティトークンのメモリに記憶されたデータオブジェクトのデータを更新した際、データを更新する前に、更新対象外となるデータオブジェクトのデータから算出した誤り検出符号と、データを更新した後に、更新対象外となるデータオブジェクトのデータから算出した誤り検出符号が照合されるので、更新対象外のデータオブジェクトのデータが不正に更新されても、更新対象外のデータが不正に更新されたことを検出できるようになる。
【図面の簡単な説明】
【００２０】
【図１】セキュリティトークンの一例を説明する図。
【図２】セキュリティトークンのブロック図。
【図３】データ更新手段の動作を説明するフロー図。
【図４】データ更新手段の動作を説明する補足図。
【図５】従来の手法において不十分なケースを説明する図。
【発明を実施するための形態】
【００２１】
ここから、本発明の好適な実施形態について、図面を参照しながら詳細に説明する。なお、これから説明する実施形態は本発明の一実施形態にしか過ぎず、種々の変形や変更が可能である。
【００２２】
図１は、セキュリティトークンの一例を説明する図である。本実施形態に係るセキュリティトークン１は、内部にメモリを有し外部装置とデータを通信できるように構成されたデバイスで、図１ではセキュリティトークン１をＩＣカード（スマートカード、チップカード）として図示しているが、セキュリティトークン１の形態はＩＣカードに限定されず、ＵＳＢキーの形態であってもよい。
【００２３】
図２は、セキュリティトークン１のブロック図である。本実施形態のセキュリティトークン１には、ＣＰＵ１００、ＲＡＭ１０１、ＲＯＭ１０２（Read#Only Memory）、ＥＥＰＲＯＭ１０４（Electrically Erasable Programmable Read-Only Memory）、特定のプロトコルに対応したＵＡＲＴ１０３(Universal Asynchronous Receiver Transmitter)及び特定の演算に特化したコプロセッサ１０５などを有するＩＣモジュール１００が実装され、本実施形態において、データオブジェクト１１がＥＥＲＰＯＭ１０４に記憶され、データオブジェクト１１に含まれているデータを更新する際に動作するデータ更新手段１０として機能するコンピュータプログラムがＲＯＭ１０２に実装されている。
【００２４】
本実施形態において、ＥＥＰＲＯＭ１０４に記憶されるデータオブジェクト１１とは、バイナリ型またはレコード型のデータファイル、ＥＥＰＲＯＭ１０４が所定のサイズに分割されたページメモリ、または、ＢＥＲ−ＴＬＶ形式のデータオブジェクトなどデータの塊を意味し、セキュリティトークン１のＲＯＭ１０２に実装されたコンピュータプログラムで実現されるデータ更新手段１０は、従来技術で述べた問題が発生することがないように、データオブジェクト１１に含まれたデータを更新した際、更新対象外のデータが更新されていないことを検証するように設計されている。
【００２５】
更新対象外のデータが更新されていないことを検証する手法としては、データを更新する前に、該データが含まれているデータオブジェクト１１の内容を一時的にＲＡＭ１０１にバッファしておき、データを更新した後に、更新後のデータオブジェクト１１の内容とＲＡＭ１０１にバッファした内容を照合し、更新対象外のデータが変更されていないか検証するようにすることもできるが、データオブジェクト１１のサイズが大きい場合、データオブジェクト１１の内容すべてをＲＡＭ１０１にバッファできないこともあるため、本実施形態のデータ更新手段１０は、更新対象外のデータの誤り検出符号を利用して更新対象外のデータが更新されていないことを検証する。
【００２６】
図３は、本実施形態におけるデータ更新手段１０の動作を説明するフロー図で、図４は、データ更新手段１０の動作を説明する補足図である。
【００２７】
更新するデータが含まれているデータオブジェクト１１と、更新対象となるデータ及び更新値が指定されるデータ更新命令を外部装置からセキュリティトークン１が受信すると（Ｓ１）、セキュリティトークン１のデータ更新手段１０が作動し、セキュリティトークン１のデータ更新手段１０は、まず、指定されたデータオブジェクト１１から算出した誤り検出符号と該データオブジェクト１１に付加されている誤り検出符号を照合することで、指定されたデータオブジェクト１１に付加された誤り検出符号を検証する（Ｓ２）。
【００２８】
図４（ａ）は、指定されたデータオブジェクト１１を説明する図である。図４において、指定されたデータオブジェクト１１のサイズは８バイトで、指定されたデータオブジェクト１１に含まれているデータは全て「００ｈ」で、指定されたデータオブジェクト１１に付加されている誤り検出符号（ここでは、ＣＲＣ１６）は「６６ＢＢｈ」である。
【００２９】
指定されたデータオブジェクト１１に付加されている誤り検出符号の検証に失敗すると、データを更新する処理は終了になるが、図４（ａ）において、指定されたデータオブジェクト１１に含まれているデータから算出される誤り検出符号は「６６ＢＢｈ」になるため、ここでは、指定されたデータオブジェクト１１に付加された更新前の誤り検出符号の検証に成功したものとする。
【００３０】
セキュリティトークン１のデータ更新手段１０は、指定されたデータオブジェクト１１に付加されている誤り検出符号の検証に成功すると、指定されたデータオブジェクト１１の中から更新対象外のデータを対象としてデータ更新前の誤り検出符号を算出し、更新対象外のデータから算出されたデータ更新前の誤り検出符号をＲＡＭ１０１に一時的に保持する（Ｓ３）。
【００３１】
なお、更新対象外のデータではなく、更新対象外のデータから算出されたデータ更新前の誤り検出符号をＲＡＭ１０１に一時的に保持することで、更新対象外のデータが不正に更新されていないことを検証するために必要なＲＡＭ１０１の領域は誤り検出符号のバイト数（ここでは、２バイト）で済む。
【００３２】
図４（ｂ）は、更新対象外のデータの誤り検出符号を説明する図である。図４（ｂ）において、更新対象となるデータはＤ３・Ｄ４で、更新対象外のデータであるＤ０、Ｄ１、Ｄ２、Ｄ５、Ｄ６及びＤ７を結合した「００００００００００００ｈ」から算出される誤り検出符号は「７４５９ｈ」になる。
【００３３】
セキュリティトークン１のデータ更新手段１０は、更新対象外のデータを対象としてデータ更新前の誤り検出符号を算出すると、指定されたデータオブジェクト１１に含まれているデータの中から、更新対象となるデータを更新値に更新する（Ｓ４）。
【００３４】
図４（ｃ）は、更新後のデータオブジェクト１１を説明する図である。図４（ｃ）において、更新対象となるデータはＤ３・Ｄ４で、図４（ｃ）では、データオブジェクト１１のＤ３の内容が「００ｈ」から「ＡＡｈ」へ、Ｄ４が「００ｈ」から「ＢＢｈ」へ更新されている。なお、ここでは、データオブジェクト１１に付加されている誤り検出符号は更新前の値（ここでは、「６６ＢＢｈ」）のままである。
【００３５】
セキュリティトークン１のデータ更新手段１０は、指定されたデータオブジェクト１１の中から更新対象となるデータを更新値に更新すると、更新対象となるデータを更新した際、データ化けまたはデータの改竄攻撃により、更新対象外のデータが不正に更新されていないことを検証するために、指定されたデータオブジェクト１１の中から更新対象外のデータを対象としてデータ更新後の誤り検出符号を算出する（Ｓ５）。
【００３６】
セキュリティトークン１のデータ更新手段１０は、更新対象外のデータからデータ更新後の誤り検出符号を算出すると、更新対象外のデータから算出したデータ更新前の誤り検出符号（この誤り検出符号はＲＡＭ１０１に保持されている）とデータ更新後の誤り検出符号を照合し（Ｓ６）、照合に成功しない場合、該データオブジェクト１１の誤り検出符号を更新することなく、この手順を終了する。
【００３７】
図４（ｄ）は、更新対象外のデータが不正に更新された場合を説明する図である。図４（ｃ）において、更新対象外となるデータであるＤ６が「ＦＦｈ」に不正に更新され、更新対象外のデータであるＤ０、Ｄ１、Ｄ２、Ｄ５、Ｄ６及びＤ７を結合した「００００００００ＦＦ００ｈ」から算出されるデータ更新後の誤り検出符号は「１４５８ｈ」になり、データ更新前の誤り検出符号「７４５９ｈ」とは異なるため、図４（ｄ）のケースでは、誤り検出符号を更新することなく、この手順は終了になる。
【００３８】
セキュリティトークン１のデータ更新手段１０は、更新対象外のデータから算出したデータ更新前の誤り検出符号とデータ更新後の誤り検出符号の照合に成功すると、データ更新後のデータオブジェクト１１に含まれているデータ全てから更新後の誤り検出符号を算出し（Ｓ７）、指定されたデータオブジェクト１１の誤り検出符号を更新後の誤り検出符号に更新して（Ｓ８）、この手順を終了する。
【００３９】
図４（ｅ）は、更新対象外のデータが不正に更新されていない場合を説明する図である。図４（ｅ）において、更新対象外となるデータは不正に更新されず「００ｈ」のままであるため、更新後のデータオブジェクト１１の内容「００００ＡＡＢＢ００００００００ｈ」から算出される更新後の誤り検出符号は「４Ｅ３Ｆｈ」になり、データオブジェクト１１に付加されている誤り検出符号は更新前の値「６６ＢＢｈ」から更新後の値「４Ｅ３Ｆｈ」に更新されている。
【００４０】
このように、更新対象外のデータを対象として算出したデータ更新前の誤り検出符号とデータ更新後の誤り検出符号を照合することで、更新対象外のデータに不正な誤りがあったことを検出できるようになるし、また、照合に成功しない場合、データオブジェクトの誤り検出符号を更新することなくこの手順を終了することで、次にデータオブジェクト１１の内容を読み出す際、データオブジェクト１１の内容から算出される誤り検出符号（ここでは、「２Ｅ３Ｅｈ」）とデータオブジェクト１１に付加されている誤り検出符号（ここでは、「６６ＢＢｈ」）は異なるため、不正に更新されデータが含まれているデータオブジェクト１１が利用されることはない。
【符号の説明】
【００４１】
１    セキュリティトークン
１０  データ更新手段
１１  データオブジェクト
【図１】
0005822123.tif 000002
【図２】
0005822123.tif 000003
【図３】
0005822123.tif 000004
【図４】
0005822123.tif 000005
【図５】
0005822123.tif 000006