JP2006197323A - 証明携帯プログラム配信方法および証明携帯プログラム配信システム - Google Patents

証明携帯プログラム配信方法および証明携帯プログラム配信システム Download PDF

Info

Publication number
JP2006197323A
JP2006197323A JP2005007608A JP2005007608A JP2006197323A JP 2006197323 A JP2006197323 A JP 2006197323A JP 2005007608 A JP2005007608 A JP 2005007608A JP 2005007608 A JP2005007608 A JP 2005007608A JP 2006197323 A JP2006197323 A JP 2006197323A
Authority
JP
Japan
Prior art keywords
program
proof
developer
safety
verification
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2005007608A
Other languages
English (en)
Inventor
Yasuaki Tsukada
恭章 塚田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2005007608A priority Critical patent/JP2006197323A/ja
Publication of JP2006197323A publication Critical patent/JP2006197323A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】 実施可能な通信複雑度を持つ、効率的な証明携帯プログラム配信方法および証明携帯プログラム配信システムを提供する。
【解決手段】 証明携帯プログラム配信方法であって、開発者側が作成したプログラムfが正しいことを示すために、検証論理式{Pre}f{Post}を検証論理式生成部により生成する第1のステップと、前記検証論理式が妥当であることを示すためにある論理体系T内で証明し、安全性証明pを、安全証明作成部により作成する第2のステップと、開発者側が得られた安全性証明pをもとに利用者側との間でゼロ知識証明プロトコル部により対話的に通信を行い、安全なプログラムの集合Safeに属することを利用者に確認させる第3のステップと、利用者側は、開発者側から送信されたプログラムfが前記集合Safeに属することを確認した後に該プログラムfを実行する第4のステップとを有する。
【選択図】 図1

Description

本発明は、ネットワーク経由で配信される悪性プログラムを利用者が実行前に検出・駆除し、計算機システムを守り、同時に良性プログラムのリバースエンジニアリングを防止し、プログラム著作権を保護する技術に関する。
今日、プログラム化された高機能コンテンツがWWWブラウザや携帯端末に日常的にダウンロードされ実行されている。
また、パケットやノードなどのネットワーク構成要素をプログラマブルとすることで拡張性や耐故障性を増したアクティブネットワークの研究も進んでいる。
プログラムが流通する時代を迎え、悪性プログラムから計算機を守る新しい技術への需要が高まってきている。
現在、公開鍵暗号を利用した電子署名つきプログラム配信方式が広く実用化されている。この方式では、開発者が電子的な「印鑑」をプログラムに捺印し、それを受け取った利用者がその「印鑑」を検証することで、プログラムが信頼できる開発者から送られてきたことを確認できるようになっている。
ところが、開発者が信頼できたからと言ってプログラムも信頼できるとは限らない。たとえ信頼できる開発者が作ったとしてもプログラムには誤りが混入しやすいからである。プログラム本体の内容を検査しないこの方式には明らかな限界がある。
そこで、プログラムそのものの安全性を利用者が直接検証することが考えられる。
ウィルスと呼ばれる悪性プログラムの一種に対しては、パタンマッチによる検知・駆除システムが広く実用化されている。
しかし、最新のウィルス定義ファイルを用いたとしても、次々に現れる新種のウィルスの感染を未然に防ぐことはできない。未知のウィルスから計算機を守るためには、プログラムが安全に実行可能であるための十分条件を予め厳密に定義し、その条件を満たしたプログラムのみを実行する手法が必要である。
悪性プログラムから計算機を守る技術として、仮想機械のバイトコード検証系が普及している。この技術はプログラム(バイトコード)そのものの安全性を検証するものの、特定の検証体系に基づく限定的な安全性(各命令のオペランドが適切な型を待つことなど)しか対象にできない。それにもかかわらず、バイトコード検証系を含む仮想機械全体の規模は小さくなく、それ自体の安全性を前もって確認することは容易でない。
さらに、仮想機械においては一般にプログラム実行時の検証も行われるため、非力な計算環境では実行速度の低下が問題となる。
したがって、プログラムの多様な安全性を比較的小さなシステムで検証し、安全性を保証しながら高速に実行することが求められる。
上記3つの現行方式の問題を解決する新技術として証明携帯プログラム配信方式が提案されている(非特許文献1、2参照)。この方式では、プログラムが正しく安全に動作すること(例えば、与えられた入力条件のもとでプログラムを実行した場合、結果が出力条件を満たし、実行時には禁止されたメモリ領域へのアクセスが全くないこと)の数学的証明をプログラムに添付し、プログラムと証明を同時に流通させる。利用者は受け取った証明を証明チェッカと呼ばれるソフトウェアを用いて機械的に検査することで、プログラムの安全性を自動的に検証することができる。
証明携帯プログラム配信方式は、現行技術と比べて次の長所を持っている。
(1)誤りを含むプログラムや安全でないプログラムに対しては正しい証明が得られないので、証明を検証するこの方式はプログラムそのものを検証する方式である。言い換えると正しい証明の存在がプログラムの安全性の十分条件になっている。
(2)証明の記述には一階述語論理、高階論理、あるいは時相論理といった汎用の論理体系を用いるので、多様な安全性(型安全性、メモリ安全性、リソース範囲に関するその他の安全性、停止性など)を議論できる。
(3)(証明の作成が困難だとしても)証明の正しさをチェックすること自体は(証明の各ステップで適切な推論規則が適用されていることを逐一確認するだけなので)単純な作業であり、利用者が用いる証明チェッカはコンパクトである。
(4)安全性の検証はプログラムの実行前に行うため、実行時検証を伴う他方式に比べプログラムを高速に実行できる。
しかし、証明携帯プログラム配信方式には、証明を同時に流通させることに起因する、以下のような問題がある。
第一に、安全性証明はプログラム本体の指数オ−ダのサイズになりうるという問題がある。すなわち、プログラムと証明をそのまま組にして流通させる本方式を大規模なプログラムに適用した場合、巨大な証明のチェックを利用者に強いることになってしまう。言い換えると、利用者が証明確認に費やせる時間を現実的な範囲に制限した場合、短い証明を有する、限られた種類のプログラムしかこの方式では安全に転送・実行することができない。
第二に、悪性プログラムから計算機を守るために安全性の証拠として添付する証明が逆に悪意を持った利用者に盗用されかねないという問題がある。証明をそのまま流通させた場合、例えば証明を利用したリバースエンジニアリングなどを招く恐れを否定できない。
上述した証明携帯プログラム配信方式の第一の問題を解決する方式として対話型証明携帯プログラム配信方式が提案されている(特許文献1、非特許文献3、4参照)。この対話型証明携帯プログラム配信方式は、対話的・確率的手法に基づく効率的な証明検証技法(非特許文献5、6,7参照)を応用したものである。ただし安全性証明の盗用・悪用を防止する機能はなく、第二の問題は依然として残る。
証明携帯プログラム配信方式の第二の問題を解決するために、ゼロ知識証明携帯プログラム配信方式が提案されている(特許文献1、非特許文献3、4参照)。このゼロ知識証明携帯プログラム配信方式は、非特許文献8の手法を応用し、証明・検証プロトコルのゼロ知識化を提案したものである。
このゼロ知識証明携帯プログラム配信方式は、安全性証明の内容を秘匿しつつプログラムの安全性を利用者に納得させることができる。その結果、安全性証明の盗用・悪用を防ぐことができる。特に、安全性証明の所有者が正規のプログラム開発者に限られるため、証明の所有をプログラム著作権の保持とみなすことも可能となる。
以上、従来技術についての比較を図14に示す。
特開2000−78126号公報 Necula, G. C.: Proof-Carry ing Code, Proc. 24th ACM SIGPLAN-SIGACT Symp. Principles of Programming Languages, ACM Press, pp. 106-119 (1997). Necula, G. C. and Lee, P.: Safe to Execute Verification of Software, US Patent 6,128,774(2000). Tsukada, Y.: Mobile Codes with Interactive Proofs: An Approach to Provably Safe Evolution of Distributed Software Systems, Proc. 2000 Int'l Symp. Principles of Software Evolution, IEEE Computer Society Press, pp. 23-27 (2001). Tsukada, Y.: Interactive and Probabilistic Proof of Mobile Code Safety, Automated Software Engineering (To appear). Goldwasser, S., Micali, S. and Rackoff, C.: The Knowledge Complexity of Interactive Proof Systems, SIAM J. Computing, Vol. 18, No. 1, pp. 186-208 (1989). Lund, C., Fortnow, L., Karloff, H. and Nisan, N.: Algebraic Method for Interactive Proof Systems, J. ACM, Vol. 39, No. 4, pp. 859-868 (1992). Shamir, A.: IP = PSPACE, J. ACM, Vol. 39, No. 4, pp. 869-877 (1992). Ben-Or, M., Goldreich, O., Goldwasser, S., Hastad, J., Kilian, J., Micali, S. and Rogaway, P.: Everything Provable is Provable in Zero-Knowledge, Advances in Cryptology―Crypto'88,Lecture Notes in Computer Science, Vol. 403, Springer-Verlag, Berlin,pp. 37-56 (1990).
しかしながら、上述した特許文献1、非特許文献3、4では、上記ゼロ知識証明携帯プログラム配信方式の原理的可能性のみが示され、具体的な実施例は明記されていない。なぜなら、特許文献1、非特許文献3、4に記載の方式では、証明・検証プロトコルのゼロ知識化に伴う通信複雑度(開発者と利用者との間の対話的通信のラウンド数)の増大が著しく、ゼロ知識証明携帯プログラム配信方式を実施することが現実的に困難だからである。
本発明は、このような事情に鑑みてなされたものであり、従来のゼロ知識証明携帯プログラム配信方式における通信複雑度(開発者と利用者の間の対話的通信のラウンド数)の問題を解決し、実施可能な通信複雑度を持つ、効率的な証明携帯プログラム配信方法および証明携帯プログラム配信システムを提供することを目的とする。
本発明は、プログラム検証理論における証明携帯プログラム配信方式(非特許文献1、2参照)と暗号理論におけるゼロ知識対話型証明プロトコル(非特許文献5、6、7、8及び参考文献1参照)という二つの概念を融合させ、高度な安全性と実施可能な効率性を併せ持つ新しいプログラム流通メカニズムを提供することを最も主要な特徴としている。
技術的には、二つの概念を融合させる際、すなわちプログラム安全性の証明・検証プロトコルをゼロ知識化する際に、一方向性準同型写像を用いたコミットメント(秘密証拠供託)関数(参考文献1参照)を利用することを主要な特徴としている。
従来技術は、一方向性関数の仮定から存在が保証される秘匿確率暗号関数(非特許文献8参照)を利用しており、その結果、開発者と利用者との間の対話的通信のラウンド数および各ラウンドで送受信される情報量の著しい増大を招いていた。
本発明は、送受信される情報量を定数倍に抑え、ラウンド数を定数回の増加に抑えることにより、実施可能な効率性を実現している。
すなわち、上記目的を達成するために請求項1に記載の発明は、開発者側が作成したプログラムfを送信装置により利用者側に配信する際に、開発者側は前記プログラムfが安全に実行可能であることを利用者側に示し、利用者側は受信装置により受信した前記プログラムfを実行前に該プログラムfが安全に実行可能であることを、開発者側の送信装置と対話的に通信しながら検証する証明携帯プログラム配信方法であって、
開発者側が作成したプログラムfが正しいことを示すために、プログラムfと、プログラムfを実行する直前に成立すべき条件である前条件Preと、プログラムfの実行直後に成立すべき条件である後条件Postとから検証論理式{Pre}f{Post}を検証論理式生成部により生成する第1のステップと、
前記検証論理式が妥当であることを示すためにある論理体系T内で証明し、安全性証明pを、安全性証明作成部により作成する第2のステップと、
開発者側が得られた安全性証明pをもとに利用者側との間でゼロ知識証明プロトコル部により対話的に通信を行い、送信したプログラムfが、
Safe={f|Tにおける{Pre}f{Post}の証明pが存在する}
によって定義される安全なプログラムの集合Safeに属することを利用者に確認させる第3のステップと、
利用者側は、開発者側から送信されたプログラムfが前記集合Safeに属することを確認した後に該プログラムfを実行する第4のステップとを
有することを特徴とする。
また、請求項2に記載の発明は、請求項1に記載の証明携帯プログラム配信方法において、前記第3のステップにおいて、開発者側は、一方向性準同型写像を用いたコミットメント関数に基づくゼロ知識証明プロトコルを用いて{Pre}f{Post}の証明pが存在するか確認させることを特徴とする。
また、請求項3に記載の発明は、開発者側が作成したプログラムfを送信する送信装置と、該送信装置から転送されたプログラムを受信する利用者側が使用する受信装置とを有し、受信装置にプログラムを配信する際に、送信装置と受信装置間で対話的に通信して前記プログラムfが安全に実行可能であることを検証する証明携帯プログラム配信システムであって、
開発者側が作成したプログラムfが正しいことを示すために、プログラムfと、プログラムfを実行する直前に成立すべき条件である前条件Preと、プログラムfの実行直後に成立すべき条件である後条件Postとから検証論理式{Pre}f{Post}を生成する検証論理式生成部と、
検証論理式{Pre}f{Post}が妥当であることを示すためにある論理体系T内で証明し、安全性証明pを作成する安全性証明作成部と、
開発者側が得られた安全性証明pをもとに利用者側との間で対話的に通信を行い、送信したプログラムfが、
Safe={f|Tにおける{Pre}f{Post}の証明pが存在する}
によって定義される安全なプログラムの集合Safeに属することを利用者に確認させ、かつ利用者側は、開発者側から送信されたプログラムfが前記集合Safeに属することを確認した後に該プログラムfを実行するゼロ知識証明プロトコル部と、
を有することを特徴とする。
また、請求項4に記載の発明は、請求項3に記載の証明携帯プログラム配信システムにおいて、前記ゼロ知識証明プロトコル部は、開発者側が、一方向性準同型写像を用いたコミットメント関数に基づくゼロ知識証明プロトコルを用いて{Pre}f{Post}の証明pが存在するか確認させることを特徴とする。
以上説明したように、本発明は、プログラムが正しく安全に動作することの数学的証明を、対話を通じて効率的に検証する手段を与えており、これにより本発明の第一の目的である悪性プログラムの実行前検出・駆除が実現できる。
さらに、本発明は、安全性証明の内容を秘匿し証明の盗用・悪用を防ぐ効率的なプロトコルを提供しており、これにより本発明の第二の目的である証明情報に基づくリバースエンジニアリングの防止が実現できる。
さらに、安全性証明の所有者が正規のプログラム開発者に限られるため、証明の所有をプログラム著作権の保持とみなすことも可能になるという効果を併有する。
すなわち、本発明は、プログラムの安全性を効率的に検証したいという利用者側の要求とプログラムの著作権を保護したいという開発者側の要求を同時に満たすという効果を有する。
以下、本発明の実施形態を、図面を参照して詳細に説明する。
(1)本発明の概要
図1に本発明に係る証明携帯プログラム配信方法の概要を示す。同図において、開発者側Xはプログラムfを作成し(ステップ1)、作成したプログラムfが安全であることを示すために、検証論理式{Pre}f{Post}を生成する(ステップ2)。ここで、前条件Preおよび後条件Postはそれぞれプログラムを実行する直前および直後に成立すべき条件であって、プログラムの利用者が開発者に事前に公開しているものである(例えば、自然数の列の総和を求めるプログラムを利用したい場合、「入力レジスタは自然数のリスト型を持つ」という前条件と、「出力レジスタは自然数の型を持つ」という後条件を公開しておく。)。
さらに、プログラムfを実行するにあたりいかなる安全性を要求するかについても利用者側Yは事前に公開しているものとする。さて、プログラムfと前条件Preおよび後条件Postから検証論理式{Pre}f{Post}を生成する手法は、利用者側Yが要求する安全性に依存して決まるが、いずれにせよ検証論理式{Pre}f{Post}が妥当な論理式である場合、「前条件Preが成立する状況でプログラムfを実行し計算が終了すると、必ず後条件Postが成立し、しかもプログラムfの実行時には、利用者の要求する安全性が満たされる」ことが数学的に保証される。
この検証論理式は、それが妥当な論理式であることを示すために、ある論理体系T内で証明される(ステップ3)。得られた証明pは、検証論理式の妥当性の証拠として使われる。Tは一般に一階述語論理、高階論理、あるいは時相論理といった汎用の論理体系であり、その公理は利用者の要求する安全性に依存して定まる。
得られた安全性証明pをもとに開発者側Xは利用者側Yと対話的通信を行い、ステップ4で送信したプログラムfが
Figure 2006197323
によって定義される安全なプログラムの集合Safeに属することを開発者側Xは利用者側Yに確認させる(ステップ5)。
一方、利用者側Yは開発者側Xと対話的通信を行い、ステップ6で受信したプログラムfが前記集合Safeに属すること、すなわちプログラムfが安全であることを確認した後に実行する(ステップ7,8)。
開発者側Xと利用者側Yとの対話的通信において、プログラムfが集合Safeに属することを示す最も簡単な方法は、作成された安全性証明pを開発者側Xがそのまま利用者側Yに送ることである。これがすなわち従来の証明携帯プログラム配信方式である(図15参照)。この方式の欠点は、利用者の計算能力をプログラムfのサイズ|f|についての多項式時間に制限した場合、安全性証明pのサイズ|p|もプログラムfのサイズ|f|の多項式長に制限されてしまうという点である。すなわち、利用者の計算能力に現実的な制限を施した場合、プログラムfが
Figure 2006197323
(ただしhはある多項式)によって定義される集合Safehに属することしか示すことができない。
これらの集合Safehの全体はNP(非決定性多項式時間限定アルゴリズムで計算可能な集合のクラス)にほかならない。
これに対し対話型証明携帯プログラム配信方式は、プログラムfが集合Safeに属することを示すために、対話型証明プロトコル(非特許文献5参照)を利用する(図16参照)。
その結果、利用者の計算能力に現実的な制限を施した場合、PSPACE(決定性多項式領域限定アルゴリズムで計算可能な集合のクラスであり、クラスNPよりもはるかに大きいと考えられている)に含まれる任意のSafeに対し、プログラムfがSafeに属するかどうかを示すことができる(非特許文献6、7参照)。すなわち、この方式は、適用可能なプログラムの集合(あるいは適用可能な安全性と言ってもよい)の全体を従来のNPからPSPACE へと拡大することで、複雑な安全性が要求される多様なプログラムを安全に転送・実行できるようにしている。
さらに、ゼロ知識証明携帯プログラム配信方式は、プログラムfが集合Safeに属することを示すために、この対話型証明プロトコルをゼロ知識化して利用する。従来技術はゼロ知識化に際して非特許文献8に記載の手法を応用(図17)していたが、本発明(図1)では参考文献1の手法を応用し、通信複雑度を大幅に改善したゼロ知識化を実現している。その結果、利用者の計算能力に現実的な制限を施した場合、PSPACEに含まれる任意の集合Safeに対し、プログラムfが集合Safeに属するという事実のみをそれ以外の情報(例えばTにおける{Pre}f{Post}の証明pの内容に開する情報)を一切漏らすことなく効率的に示すことができる。
本発明は、次のような応用可能性を持つ。今、ネットワーク上で競合する複数のエージェントP,P,…,Pが顧客Vに安全性証明を添えてプログラムを販売しようとしているとする。このとき、従来の証明携帯プログラム配信方式によれば、証明は公開されているため盗用される危険性が高い。顧客Vになりすました攻撃者Pjがプログラムと証明を別のPiから盗み、自分が開発したと虚偽の主張をして顧客Vに売りつける恐れがある。
一方、本発明によれば、証明の中身を把握しているのは正規の開発者に限定される(より正確には、正規の開発者以外の者が証明の中身を把握するには証明を作成するのと同等の高い計算コストを要する)。すなわち、安全性証明がプログラムの著作権として機能し、この著作権がゼロ知識性によりネットワーク上で保護される。
ソフトウェアの著作権を保護する手法は、難読化や電子透かしの挿入など数多く提案されている。本発明の特徴は、プログラムの著作権を保護したいという開発者側の要求のみならず、プログラムを安全に実行したいという利用者側の要求も考慮し、両者を同時に満たすという点にある。
本発明に係る証明携帯プログラム配信方法を実施するための証明携帯プログラム配信システムの構成を図2に示す。同図において、証明携帯プログラム配信システムは、開発者(証明者)側装置である送信装置10と、利用者(検証者)側装置である受信装置20とから構成されている。
送信装置10は、検証論理式生成部100と、安全性証明作成部101と、プログラム送信部102と、量化命題論理式還元部103と、算術化部104と、ヒント(部分証明)作成・送信部105とを有している。
また、受信装置20は、プログラム受信部200と、量化命題論理式還元部201と、算術化部202と、ヒント(部分証明)受信・検証部203と、乱数生成・送信部204とを有している。
送信装置10における量化命題論理式還元部103、算術化部104、ヒント(部分証明)作成・送信部105と、受信装置20における量化命題論理式還元部201、算術化部202、ヒント(部分証明)受信・検証部203、乱数生成・送信部204はゼロ知識証明プロトコル部300を構成している。
送信装置10において、検証論理式生成部100は、作成されたプログラムfの検証論理式{Pre}f{Post}を生成し、安全性証明作成部101に送出する。
安全性証明作成部101は、検証論理式{Pre}f{Post}を受け取り、論理体系Tにおける検証論理式{Pre}f{Post}の安全性証明pを作成する。
プログラム送信部102は、安全性証明作成部101により作成された論理体系Tにおける検証論理式{Pre}f{Post}の安全性証明pを量化命題論理式還元部103に送出するとともに、作成されたプログラムfを受信装置20のプログラム受信部200に転送する。
量化命題論理式還元部103では、論理体系Tにおける検証論理式{Pre}f{Post}の安全性証明pを量化命題論理式に翻訳する。
算術化部104では、量化命題論理式還元部103により翻訳された量化命題論理式を算術化し、ヒント(部分証明)作成・送信部105に送出する。
一方、受信装置20側では、プログラム受信部200が、プログラム送信部102よりプログラムfを受信し、量化命題論理式還元部201に送出する。
量化命題論理式還元部201は、プログラムfを量化命題論理式に翻訳する。
算術化部202は、量化命題論理式還元部201により翻訳された量化命題論理式を算術化し、ヒント(部分証明)受信・検証部203に送出する。
ヒント(部分証明)作成・送信部105は、ヒント(部分証明)受信・検証部203との間で対話型プロトコルを実行する。このとき、ヒント(部分証明)受信・検証部203は、乱数生成・送信部204により乱数を発生させ、該乱数によりヒント(部分証明)作成・送信部105から転送されるヒント情報を指定する。
ヒント(部分証明)受信・検証部203は、プログラムfが安全に実行可能であることを確認した後、プログラムfを実行する。
(2)機械語プログラムのメモリ安全性
以下では、機械語プログラムのメモリ安全性を例にとり、本発明の実施方法について説明する。「メモリ安全性」とは、プログラムの実行中に、禁止された領域へのメモリアクセスがないという性質であり、最も基本的な安全性のひとつとされる。
プログラムの一例として、Alphaアセンブリ言語(参考文献2参照)で記述された簡単なプログラムを図3に示す。レジスタr1、r2、r3の値に応じて分岐するプログラムである。
いま、利用者側の受信装置20は代表的な関数型言語であるStandard ML言語(参考文献3参照)の型つき中間言語コンパイラ実行時システム(参考文献4参照)を塔載していると仮定する。この利用者システムは、その安全性要求やプログラムの前条件・後条件といった仕様を型の概念を用いて規定する。例えば先のプログラム例の前条件・後条件も型を用いて規定される(図3参照)。式eが型τを持つことをe:τと書く。本実施形態で利用される式と型は次のように定義される。
Figure 2006197323
ここで、nは32ビットで表わされる自然数、各riはAlphaレジスタ、 sel(e)はメモリ番地eの内容を指す。型intの値は32ビットで表される自然数である。型τ12の値は、型τ1と型τ2の値が格納された隣接するメモリ番地へのポインタである。型τ1+τ2の値は隣接するメモリ番地へのポインタであり、最初の番地にはタグ(Oまたは1)が格納され、タグが0ならば型τ1の値、タグが1ならば型τ2の値が続きの番地に格納される。また型addrの値は、安全に読み出し可能なメモリ番地を表わす。
この利用者システムが規定する安全性要求は、型の概念を用いて図4
に示すように規定される。
本実施形態における一階述語論理体系Tはこれらを公理として持つ。
実は図3に示すプログラム例は、プログラムがメモリ安全であることと、量化命題論理式
Figure 2006197323
が偽であることが同値となるように作られている。命題変数Xiの真偽は、4(ri)(タグが格納された番地0(ri)の続きの番地)がintであるかあるいはint の組へのポインタであるかということにエンコードされる。さらに、r3+iにその内容を読み込むことにより、命題変数Xiの真偽はr3+i :intあるいはsel(r3+i ):intの成立へと変換される。
プログラムfがこの利用者システムでメモリ安全に実行可能であることを意味する検証論理式{Pre}f{Post}は、機械語プログラムの操作的意味論に基づくFloyd流検証論理式生成器(参考文献5参照)によって自動的に生成される。検証論理式生成器を図5に示す。また、それを用いて図3のプログラムに対する検証論理式が実際に生成されていく様子を図6乃至図8に示す。最終的に得られる検証論理式は、図9に示す14個の論理式の論理積となる。
検証論理式は、その妥当性の証拠を得るために、一階述語論理体系Tにおいて証明される。検証論理式{Pre}f{Post}が一階述語論理体系Tで証明された場合、Standard ML言語の型つき中間言語コンパイラ実行時システムにおいて、前条件Preが成立する状況でプログラムfを実行し、計算が終了すると、必ず後条件Post が成立し、しかも(プログラムfの実行中に用いられる全ての値に適切な型がつくため)プログラムfの実行時のメモリアクセスが安全であることが保証される。例えば、図3のプログラム例も検証論理式が証明可能であり、メモリ安全であることが保証される。
メモリ安全性の検証に要する計算量について検討する。検証論理式{Pre}f{Post}が一階述語論理体系Tで証明可能なプログラムfの全体を集合Safeとしたとき、その計算の複雑さは従来の証明携帯プログラム配信方式が適用可能な計算量クラスNPを超えているように思われる。実際、安全性証明のサイズのみならず検証論理式そのもののサイズがプログラムのサイズに比して指数オーダになりうることがわかる。
その理由は、プログラム中に条件分岐命令がn回続いた場合、たとえループを含まないプログラムであっても2n通りの実行パスが存在することになるが、そのどれをとってもメモリ安全に実行されることが保証されなければならないため、一般に検証論理式は2n個の論理式の論理積で表されるからである(図10参照)。個々の論理式の証明は短く実際に多項式時間で検証可能であるが、検証論理式全体となると証明は指数オーダのサイズとなる。この事実を計算の複雑さの理論の言葉を用いて表現すれば、集合Safeはco-NP完全(補集合がNPに属する集合のクラスco-NPの中で、最も計算するのが難しい集合)である。
(3)メモリ安全性の対話型証明
co-NP完全な集合はNPに属さないと考えられているため、機械語プログラムのメモリ安全性は従来方式では必ずしも効率的に検証することができない。この問題が対話型証明の理論(非特許文献5、6、7参照)により解決されることを示す。
対話型証明は3ステップからなる。最初のステップは安全性の量化命題論理式還元部103、201による量化命題論理式への翻訳である。
メモリ安全に実行可能なAlphaアセンブリ言語プログラムの全体Safeはco-NP完全であった。
一方、偽の量化命題論理式の全体はより計算量の大きいとされるPSPACE完全である。したがって、プログラムが集合Safeに属するか否かといった安全性検証の問題は、量化命題論理式の真偽判定問題に還元可能である。例えば、図3のプログラム例が集合Safeに属することは、(2)に既出の量化命題論理式(式(4))が偽であることと同値である。
次のステップは算術化部104、202による量化命題論理式の算術化である。論理式を算術化することで、論理式の真偽判定を数式の値の零判定に置き換えることができる。実際、命題変数Xを自然数変数Xに、∨を+に、∧を×に、¬Xを1−Xに、そして量化子∃を和Σに変換することで算術化は完了する。例えば、先の量化命題論理式が偽であることは、次の数式の値が零であることと同値である。
Figure 2006197323
このような数式の値を通常の展開による計算手法で求めようとした場合、その計算時間はΣ記号が入れ子になるにつれ指数関数的に増大する。
一方、Σ記号の入れ子の深さは、元のプログラム中の条件分岐命令の個数を反映する。したがって、プログラムの安全性の検証をこのように数式の評価に還元したとしても、プログラムが大規模になれば計算時間の爆発の問題は依然として避けがたい。しかし、算術化によって利用可能となった代数的な手法を適用し、この問題が解決されることを次に示す。
上記数式が零であることを証明する対話型プロトコルの実行例を図11及び図12に示す。対話は実質的に3ラウンドからなり、各ラウンドがひとつのΣ記号に対応する。各ラウンドごとにひとつの数式が提示され、利用者はその値の正当性を開発者との対話を通じて検証する。なお、実際のプロトコルにおいては、元の数式の長さlに応じて決まる長さO(l)の適当な素数qを法とした計算が行われるが、ここでは省略する。
まず、開発者は、各ラウンドで提示された数式からΣ記号をひとつ除去し、それを展開して得られた1変数多項式(の係数)をヒント情報として利用者に送る。続いて利用者は、各ラウンドごとに自動的に決まる検証タスクを実行する。具体的には、受け取った多項式の0と1におけるそれぞれの値の和を計算し、それが期待される値と等しいかどうかを検証する。
利用者の計算能力には制限があるが、このようにヒント情報を利用することにより、複雑な数式の値を効率的に計算することができる。
この検証をパスすると、続いてヒント情報の妥当性を検証する新しいラウンドに移行し、Σ記号のひとつ少ない新しい数式が提示され、開発者によるヒントの送付と利用者による値の検証が繰り返される。不正な開発者が妥当でないヒントを送付した場合が問題であるが、このような攻撃に対処するため利用者は、開発者が各ラウンドでΣ記号のひとつ少ない数式を提示する際に、変数に代入する定数を、乱数生成・送信部204により乱数で指定する。
さらに最後のラウンドでは、送付された多項式α[2][4] [X3]が個々のXの値についてA[2][4][X3]と一致するかどうかをヒント無しで調べることができるので、最終的にヒントの妥当性を確認できる。このようにして、利用者は最初に提示された数式の値が零であること、すなわち図3のプログラム例が安全に実行可能であることを最終的に結論づける。
本プロトコル実行中における利用者のタスクは多項式の値の評価・その和の計算・値の比較といった簡単な演算のみから構成される。さらに、対話のラウンド数はΣ記号の数にほかならない。
その結果、利用者が計算に要する時間および対話のラウンド数はいずれもプログラムのサイズの多項式で抑えられる。すなわち利用者は効率的にプログラムの安全性を検証できる。
一方、開発者が計算に要する時間は多項式では抑えられない。しかし、プログラムの送り手には相応の高い計算能力を求めるものの、受け手の計算量を抑える本方式は、ユビキタス環境において高速なサーバから携帯端末や組み込みシステム等の小型計算機にプログラムをダウンロードし実行する場合に有用であると考えられる。
また、このように構成されるプロトコルが保証する安全性は確率的である。すなわち、元のプログラムが安全でない場合、このプロトコルに従った利用者が誤ってそれを安全だと結論づけてしまう確率が微少ではあるが存在する。特に問題となるのは、不正な開発者による偽のヒント情報の送信が、検証の誤り確率の増大を招く場合である。しかしその確率は、たとえ不正な開発者がどのような偽のヒントを送ろうとも、プログラムのサイズをkとした場合1/2以下に抑えらえることが、n次方程式の解は高々n個であるいう事実を利用することにより示される。
(4)メモリ安全性のゼロ知識証明
(4−1) 非特許文献8の手法を応用した従来方式(特許文献1、非特許文献3,4参照)
図11及び図12のプロトコルは、非特許文献8に示される代表的構成法を適用することで原理的にゼロ知識化可能である。すなわち、共通入力をAとするときの検証者(利用者)から証明者(開発者)への転送情報(乱数)x,…,xおよび証明者から検証者への転送情報(ヒント)列y,…,yからなるプロトコル実行を、次のように修正する。
1.転送情報(ヒント)列y,…,yの代わりに、一方向性関数の仮定から存在が保証される秘匿確率暗号関数(secure probabilistic encryption scheme) Eと乱数列d,…,dを用いたそれらの暗号化
Figure 2006197323
を転送する。
2.最後に証明者は検証者に
Figure 2006197323
なるNP述語をゼロ知識で証明する。ここで述語Pは元のプロトコル実行において転送情報列x,…,x,y,…,yが満たすべき性質を表わす。
しかしこの構成法は、複雑なNP述語のゼロ知識証明プロトコルを部分プロトコルとして含むため、通信複雑度の著しい増大を招いている。
(4−2)参考文献1の手法を応用した本発明の方式
本発明では、参考文献1の手法を応用し、通信複雑度の増加を抑えたゼロ知識証明プロトコルを示す。
情報の内容自体を秘密に保ったまま、内容の事後変更を不可能とする十分な証拠を予め相手に渡しておくために、コミットメント(秘密証拠供託)関数commitを本プロトコルにおいて利用する。セキュリティパラメータlと長さO(l)の素数qに対し、証明者は秘密にしたい情報a∈ {0,1,…,q−1}と乱数r∈{0,1}lをもとに証拠commit(a、 r)∈{0,1}l を計算して検証者に送付する(コミットメント・フェーズ)。
その後、証明者によるaとrの開示を受けた検証者は、これらの情報に基づき先の証拠が確かにcommit(a、r)であることを計算し、情報aが事後変更されていないことを確認する(開示フェーズ)。
このような秘密証拠供託の実現は、関数commitに課せられた次のふたつの性質により保証される。
「秘匿性」:commit (a,r)の値から秘密情報aに間する知識を得ることは計算論的に困難である性質、すなわち、異なるふたつの秘密情報に対するコミットメントの確率分布は多項式時間識別不可能である性質である。
「束縛性」:commit(a、r)の値から秘密情報aが一意に決まる性質である。すなわち、秘密情報の事後変更は不可能である性質である。
簡単のため適当なrに対するcommit(a,r)をC(a)と略記する。これにあわせ、コミットメント間の等号C=C’を、CとC’があるaに対し集合{commit(a, r)|r}の要素であることと定義する。C(a)は同値関係=による各同値類{commit(a,r)|r}の代表元とみなせる。
さらに、 コミットメント関数commitに次の性質を持たせることができる。
「準同型性」:与えられたふたつのコミットメントA =C(a)およびB =C(b)からC(a+b mod q)およびC(a−b mod q)が多項式時間で計算可能である。各コミットメントは乗法群の要素であるため、これらをそれぞれABおよびAB−1と記す。この性質から直ちに、コミットメントA=C(a)が与えられれば、任意の定数cに対しC(ca mod q)が多項式時間計算可能となる。これをAと記す。
これら3つの性質(秘匿性、束縛性、準同型性)をもつコミットメント関数は、次のように構成することができる。
Figure 2006197323
ここで、fは一方向性準同型写像と呼ばれるものであり、その作成法は複数知られている。例えば、離散対数問題に基づくElGamal暗号の安全性(すなわち異なるふたつの平文のElGamal暗号方式による確率的暗号化が多項式時間識別不可能であること)を仮定することで具体的に作成可能である(参考文献1参照)。
また、yは次の2条件をみたすように選ばれる。
すなわち、
1.異なるiとj(ただし0≦i,j<p)に対し、確率分布yif(r)およびyjf(s)(ただしrとsは独立に選ばれる)は多項式時間識別不可能である。
2.剰余類yIm(f)、y2Im(f),…は全て異なる。
一方向性準同型写像を用いて構成されたcommitを利用することにより、通信複雑度を抑えたゼロ知識化か可能となる。図3のプログラム例に対するゼロ知識証明プロトコルの実行例は、図11及び図12における破線で囲んだ部分、すなわち、情報1〜5、タスク1〜5を図13の内容に置き換えることによって得られる。
図11及び図12においては開発者がヒントとして多項式の係数そのものを送付していたのに対し、ゼロ知識証明プロトコルでは係数のコミットメントを送付する点が異なる。
準同型写像を用いたコミットメント関数の性質により、利用者は、これら係数のコミットメントのみから、目的とする式のコミットメントを計算することが可能となる。例えば、第2ラウンドで利用者は目的とする式
Figure 2006197323
の計算を行うが、それまでに受け取った係数のコミットメントのみを用いて
Figure 2006197323
として計算することができる。そして対話の最終段階において、これら目的とする式の値を、開発者はコミットメントの内容を開示することにより利用者に納得させる。
このゼロ知識化によって、各ラウンドで開発者から利用者に送付される情報量は定数倍に抑えられる。また、ラウンド数も定数回の増加に抑えられる。
[参考文献]
(1) Cramer, R. and Damgard, L: Zero-Knowledge Proofs for Finite Field Arithmetic or: Can Zero-Knowledge be for Free?, Advances in Cryptology―Crypto'98, Lecture Notes in Computer Science, Vol. 1462, Springer-Verlag, Berlin,pp. 424-441 (1998).
(2) Sites, R. L.: Alpha Architecture Reference Manual, Digital Press, Burlington, Massachusetts(1992).
(3) Milner, R., Tofte, M. and Harper, R.: The Definition of Standard ML, The MIT Press,Cambridge, Massachusetts (1990).
(4) Tarditi, D., Morrisett, G., Cheng, P., Stone, C., Harper, R. and Lee, P. : TIL: A Type-Directed Optimizing Compiler for ML, Proc. 1996 ACM SIGPLAN Conf. Programming Language Design and Implementation, ACM Press, pp. 181-192 (1996).
(5) Floyd, R. W.: Assigning Meanings to Programs, Mathematical Aspects of Computer Science, Symposia in Applied Mathematics, Vol. 19, American Mathematical Society, pp. 19-32 (1967).
本発明に係る証明携帯プログラム配信方法の内容を示すフローチャート。 図1に示した証明携帯プログラム配信方法を実施するための証明携帯プログラム配信システムの構成を示すブロック図。 検証対象となるプログラムの一例を示す図。 一階述語論理体系Tの内容を示す図。 検証論理式生成器の内容を示す図。 図5に示した検証論理式生成器を用いて図3に示したプログラムに対する検証論理式が生成される様子を示す説明図。 図5に示した検証論理式生成器を用いて図3に示したプログラムに対する検証論理式が生成される様子を示す説明図。 図5に示した検証論理式生成器を用いて図3に示したプログラムに対する検証論理式が生成される様子を示す説明図。 図5に示した検証論理式生成器を用いて図3に示したプログラムに対して最終的に生成された検証論理式を示す図。 検証論理式のサイズを示す説明図。 対話型証明プロトコルの実行例を示す説明図。 対話型証明プロトコルの実行例を示す説明図。 ゼロ知識証明プロトコルの実行例を示す説明図。 従来技術と本発明とを比較して示した説明図。 従来の証明携帯プログラム配信方式の内容を示すフローチャート。 従来の対話型証明携帯プログラム配信方式の内容を示すフローチャート。 従来のゼロ知識証明携帯プログラム配信方式の内容を示すフローチャート。
符号の説明
10…送信装置、20…受信装置、100…検証論理式生成部、101…安全性証明作成部、102…プログラム送信部、103、201…量化命題論理式還元部、104、202…算術部、105…ヒント(部分証明)作成・送信部、200…プログラム受信部、203…ヒント(部分証明)受信・検証部、204…乱数生成・送信部、300…ゼロ知識証明プロトコル部

Claims (4)

  1. 開発者側が作成したプログラムfを送信装置により利用者側に配信する際に、開発者側は前記プログラムfが安全に実行可能であることを利用者側に示し、利用者側は受信装置により受信した前記プログラムfを実行前に該プログラムfが安全に実行可能であることを、開発者側の送信装置と対話的に通信しながら検証する証明携帯プログラム配信方法であって、
    開発者側が作成したプログラムfが正しいことを示すために、プログラムfと、プログラムfを実行する直前に成立すべき条件である前条件Preと、プログラムfの実行直後に成立すべき条件である後条件Postとから検証論理式{Pre}f{Post}を検証論理式生成部により生成する第1のステップと、
    前記検証論理式が妥当であることを示すためにある論理体系T内で証明し、安全性証明pを、安全性証明作成部により作成する第2のステップと、
    開発者側が得られた安全性証明pをもとに利用者側との間でゼロ知識証明プロトコル部により対話的に通信を行い、送信したプログラムfが、
    Safe={f|Tにおける{Pre}f{Post}の証明pが存在する}
    によって定義される安全なプログラムの集合Safeに属することを利用者に確認させる第3のステップと、
    利用者側は、開発者側から送信されたプログラムfが前記集合Safeに属することを確認した後に該プログラムfを実行する第4のステップとを
    有することを特徴とする証明携帯プログラム配信方法。
  2. 前記第3のステップにおいて、開発者側は、一方向性準同型写像を用いたコミットメント関数に基づくゼロ知識証明プロトコルを用いて{Pre}f{Post}の証明pが存在するか確認させることを特徴とする請求項1に記載の証明携帯プログラム配信方法。
  3. 開発者側が作成したプログラムfを送信する送信装置と、該送信装置から転送されたプログラムを受信する利用者側が使用する受信装置とを有し、受信装置にプログラムを配信する際に、送信装置と受信装置間で対話的に通信して前記プログラムfが安全に実行可能であることを検証する証明携帯プログラム配信システムであって、
    開発者側が作成したプログラムfが正しいことを示すために、プログラムfと、プログラムfを実行する直前に成立すべき条件である前条件Preと、プログラムfの実行直後に成立すべき条件である後条件Postとから検証論理式{Pre}f{Post}を生成する検証論理式生成部と、
    検証論理式{Pre}f{Post}が妥当であることを示すためにある論理体系T内で証明し、安全性証明pを作成する安全性証明作成部と、
    開発者側が得られた安全性証明pをもとに利用者側との間で対話的に通信を行い、送信したプログラムfが、
    Safe={f|Tにおける{Pre}f{Post}の証明pが存在する}
    によって定義される安全なプログラムの集合Safeに属することを利用者に確認させ、かつ利用者側は、開発者側から送信されたプログラムfが前記集合Safeに属することを確認した後に該プログラムfを実行するゼロ知識証明プロトコル部と、
    を有することを特徴とする証明携帯プログラム配信システム。
  4. 前記ゼロ知識証明プロトコル部は、
    開発者側が、一方向性準同型写像を用いたコミットメント関数に基づくゼロ知識証明プロトコルを用いて{Pre}f{Post}の証明pが存在するか確認させることを特徴とする請求項3に記載の証明携帯プログラム配信システム。

JP2005007608A 2005-01-14 2005-01-14 証明携帯プログラム配信方法および証明携帯プログラム配信システム Pending JP2006197323A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005007608A JP2006197323A (ja) 2005-01-14 2005-01-14 証明携帯プログラム配信方法および証明携帯プログラム配信システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005007608A JP2006197323A (ja) 2005-01-14 2005-01-14 証明携帯プログラム配信方法および証明携帯プログラム配信システム

Publications (1)

Publication Number Publication Date
JP2006197323A true JP2006197323A (ja) 2006-07-27

Family

ID=36803022

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005007608A Pending JP2006197323A (ja) 2005-01-14 2005-01-14 証明携帯プログラム配信方法および証明携帯プログラム配信システム

Country Status (1)

Country Link
JP (1) JP2006197323A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010090068A1 (ja) * 2009-02-03 2010-08-12 日本電気株式会社 認証システム、方法及びプログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010090068A1 (ja) * 2009-02-03 2010-08-12 日本電気株式会社 認証システム、方法及びプログラム

Similar Documents

Publication Publication Date Title
EP0881559B1 (en) Computer system for protecting software and a method for protecting software
Bosselaers et al. Integrity Primitives for Secure Information Systems: Final Ripe Report of Race Integrity Primitives Evaluation
US20050058294A1 (en) Method, system and device for enabling delegation of authority and access control methods based on delegated authority
US8762736B1 (en) One-time programs
US20120278609A1 (en) Joint encryption of data
JP2004534333A (ja) コンピュータネットワークにおける分散データ処理に関する統合された保護方法及びシステム
JP2008514097A (ja) ランダムファンクションを利用した秘密の共有
Almeida et al. A machine-checked proof of security for AWS key management service
Gebotys Security in embedded devices
JP2006311477A (ja) 同種写像ベースの署名の生成および検証のためのシステムおよび方法
Dziembowski On forward-secure storage
CN111582496A (zh) 一种基于sgx的安全高效的深度学习模型预测系统和方法
Hanzlik et al. Controlled randomness–a defense against backdoors in cryptographic devices
Dent Fundamental problems in provable security and cryptography
Agrawal et al. Game-set-MATCH: Using mobile devices for seamless external-facing biometric matching
CN107026729B (zh) 用于传输软件的方法和装置
JP2006197323A (ja) 証明携帯プログラム配信方法および証明携帯プログラム配信システム
KR100954844B1 (ko) 오류 주입 공격에 안전한 crt-rsa 모듈러 지수승 알고리즘을 이용한 디지털 서명 방법, 그 장치 및 이를 기록한 기록매체
JP2007157021A (ja) 耐タンパ証明携帯プログラム配信システム及びその方法
CN114026586A (zh) 用于授予对加密资产的访问权的零知识或有支付协议
EP3672139A1 (en) A circuit compiling device and circuit evaluation device
PAPACHRISTOUDIS A survey on lattice-based blind signatures and their feasibility
Costea et al. Secure software licensing: Models, constructions, and proofs
Eldridge et al. One-Time Programs from Commodity Hardware
Campos et al. Post-quantum cryptography for ECU security use cases