説明

タイムスタンプ装置及びそのためのプログラム

【課題】第三者機関へ接続する環境にないユーザでもタイムスタンプを取得することができるタイムスタンプ装置及びそのためのプログラムを提供する。
【解決手段】タイムスタンプ装置10には、クライアントPC12が接続されており、クライアントPC12が発生した時刻証明の対象となるデータを受け付ける場合の、受付処理の順序の前後関係を証明する第1のタイムスタンプを生成する。また、タイムスタンプ装置10には、タイムスタンプサーバ14が接続されており、タイムスタンプ装置10が発生した時刻情報に対して証明時刻を添付し、ディジタル署名をつけた第2のタイムスタンプをタイムスタンプサーバ14から取得する。また、タイムスタンプ装置10は、上記証明時刻を使用して、各第1のタイムスタンプの生成時刻を演算する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、時刻証明の対象となるデータに対してタイムスタンプを生成するタイムスタンプ装置及びそのためのプログラムに関する。
【背景技術】
【0002】
従来より、コピーが容易で原本の特定が困難であるディジタル文書については、文書作成日時を証明するためのタイムスタンプ(時刻署名)を付加する技術が開発されている。
【0003】
例えば、下記特許文献1には、時刻署名生成時に第三者機関への接続を行わず、オフラインで時刻署名を生成する時刻署名装置が開示されている。
【特許文献1】特開2002−116694号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
しかし、上記従来の技術においては、タイムスタンプ(時刻署名)生成前に必ず第三者機関へ接続する必要があるので、第三者機関へ接続する環境にないユーザは、タイムスタンプを取得できないという問題があった。
【0005】
本発明は、上記従来の課題に鑑みなされたものであり、その目的は、第三者機関へ接続する環境にないユーザでもタイムスタンプを取得することができるタイムスタンプ装置及びそのためのプログラムを提供することにある。
【課題を解決するための手段】
【0006】
上記目的を達成するために、本発明は、タイムスタンプ装置であって、時刻情報を受信する時刻情報受信手段と、時刻証明の対象となるデータの受付処理を行う受付処理手段と、前記受付処理手段が行う受付処理の順序の前後関係を証明するために前記時刻情報受信手段が受信した時刻情報を用いて第1のタイムスタンプを生成するタイムスタンプ生成手段と、前記時刻情報に対して時刻証明するための第2のタイムスタンプを取得するタイムスタンプ取得手段と、前記時刻情報と前記タイムスタンプ取得手段が取得した第2のタイムスタンプの証明時刻との差分を取得する差分取得手段と、前記差分取得手段が取得した時刻の差分と前記タイムスタンプ生成手段が生成する各第1のタイムスタンプの間の経過時間とに基づき、前記タイムスタンプ生成手段が生成した各タイムスタンプの生成時刻を演算する時刻演算手段と、を備えることを特徴とする。
【0007】
また、上記タイムスタンプ装置において、前記タイムスタンプ生成手段は、前記受付処理手段が受付処理を行った複数のデータに対してまとめて第1のタイムスタンプを生成することを特徴とする。
【0008】
また、本発明は、時刻証明の対象となるデータの受付処理を行い、時刻情報を受信し、前記受付処理の順序の前後関係を証明するために前記受信した時刻情報を用いて第1のタイムスタンプを生成し、前記時刻情報に対して時刻証明するための第2のタイムスタンプを取得し、前記時刻情報と前記第2のタイムスタンプの証明時刻との差分を取得し、前記差分と前記各第1のタイムスタンプの間の経過時間とに基づき、前記各タイムスタンプの生成時刻を演算する処理をコンピュータに実行させるプログラムであることを特徴とする。
【発明を実施するための最良の形態】
【0009】
以下、本発明を実施するための最良の形態(以下、実施形態という)を、図面に従って説明する。
【0010】
図1には、本発明にかかるタイムスタンプ装置を使用したタイムスタンプ生成システムの構成例が示される。図1において、タイムスタンプ装置10には、ユーザ側のクライアントコンピュータ(クライアントPC)12が接続され、クライアントPC12が発生した時刻証明の対象となるデータに対して第1のタイムスタンプを付与してクライアントPC12に送信する。第1のタイムスタンプは、クライアントPC12からのデータをタイムスタンプ装置10が受け付ける場合の、受付処理の順序の前後関係を証明するためのタイムスタンプである。なお、タイムスタンプ装置10とクライアントPC12との接続方法は特に限定されず、イーサネット(登録商標)等適宜な手段を使用することができる。
【0011】
また、タイムスタンプ装置10は、インターネット、LAN(構内通信網)等を介してタイムスタンプサーバ14に接続されている。このタイムスタンプサーバ14は、例えばタイムスタンプ装置10が発生した時刻情報に対して信頼できる時刻源から得た時刻を添付し、ディジタル署名をつけて返信する。上記信頼できる時刻源から得た時刻が、タイムスタンプ装置10が発生した時刻情報に対する証明時刻となる。また、上記タイムスタンプサーバ14から得るディジタル署名付きの返信データが本発明の第2のタイムスタンプの例である。なお、タイムスタンプサーバ14は、例えば適宜な外部機関に設置されていてもよいし、タイムスタンプ装置10と同じ組織内に設置されていてもよい。また、タイムスタンプサーバ14は、公的な認証機関により発行された公開鍵証明書を保持していてもよいし、公開鍵証明書を保持せずにタイムスタンプを付与する構成でもよい。
【0012】
以上の実施形態によれば、クライアントPC12がインターネット等を介して外部の第三者機関へ接続する環境にない場合でもタイムスタンプを取得することができる。また、タイムスタンプ装置10は、上記タイムスタンプ装置10が発生した時刻情報と、タイムスタンプサーバ14から受け取った上記第2のタイムスタンプに含まれる証明時刻とに基づき、タイムスタンプ装置10が生成した第1のタイムスタンプの生成時刻を求めることができる。
【0013】
図2には、本発明にかかるタイムスタンプ装置10の構成例が示される。図1において、タイムスタンプ装置は、CPU(中央処理装置)16、不揮発性記憶装置18、RAM(ランダムアクセスメモリ)20、通信インタフェース22,24及び計時部26を含んで構成されている。
【0014】
CPU16は、不揮発性記憶装置18に格納されたプログラムを実行し、タイムスタンプ装置10の動作を制御するプロセッサである。
【0015】
不揮発性記憶装置18は、リードオンリーメモリ、ハードディスク装置等により構成されたコンピュータ読み取り可能な不揮発性の記憶媒体であり、CPU16が実行するプログラムやデータ等を記憶する。
【0016】
RAM20は、CPU16の作業用メモリ(主記憶装置)として機能する読み書き可能な揮発性メモリである。
【0017】
通信インタフェース22は、上記クライアントPC12に接続され、時刻証明の対象となるデータ及びそのデータに対するタイムスタンプ等の送受信処理を行う。
【0018】
通信インタフェース24は、タイムスタンプサーバ14に接続され、タイムスタンプ装置10が発生した時刻情報及びその時刻情報に対するタイムスタンプ等の送受信処理を行う。
【0019】
計時部26は、タイムスタンプ装置10の動作に使用する時刻情報を発生する時計機能である。なお、時刻情報は、コンピュータ内部に設けられたクロックモジュールから受信してもよく、この場合には計時部26がなくてもよい。
【0020】
図3には、上記図2に示されたタイムスタンプ装置10の各機能を表す機能ブロック図が示される。図3において、タイムスタンプ装置10は、タイムスタンプ制御部28、タイムスタンプ生成部30、タイムスタンプ取得部32、時刻情報受信部34、記憶部36及び通信部38の各機能を含んで構成されている。
【0021】
タイムスタンプ制御部28は、CPU16により実現され、時刻証明の対象となるデータの受付処理及びタイムスタンプサーバ14への時刻証明(第2のタイムスタンプ)の要求処理を行う。このタイムスタンプ制御部28が受け付ける時刻証明の対象となるデータは、クライアントPC12において生成されたハッシュ値であることが好適である。また、タイムスタンプ制御部28は、時刻情報受信部34から取得した時刻情報とタイムスタンプ取得部32が取得した第2のタイムスタンプの証明時刻との差分を求め、この差分とタイムスタンプ生成部30が生成する各第1のタイムスタンプの間の経過時間とに基づき、タイムスタンプ生成部30が生成した各第1のタイムスタンプの生成時刻を演算する。この場合のタイムスタンプ制御部28が、本発明の差分取得手段及び時刻演算手段に相当する。なお、上記各第1のタイムスタンプの生成時刻を演算する処理の詳細については後述する。
【0022】
タイムスタンプ生成部30は、CPU16により実現され、上記タイムスタンプ制御部28が行う受付処理の前後関係を証明するための第1のタイムスタンプを生成する。また、タイムスタンプ生成部30は、第1のタイムスタンプと第2のタイムスタンプとを関係付ける処理も行う。第1のタイムスタンプを生成及び第1のタイムスタンプと第2のタイムスタンプとを関係付ける処理の詳細については後述する。
【0023】
タイムスタンプ取得部32は、CPU16により実現され、上記タイムスタンプ制御部28から第2のタイムスタンプを要求された場合に、タイムスタンプサーバ14に対して時刻情報受信部34から取得した時刻情報を送り、この時刻情報に対して時刻証明するための第2のタイムスタンプをタイムスタンプサーバ14から受け取る。
【0024】
時刻情報受信部34は、CPU16により実現され、計時部26またはコンピュータ内部に設けられたクロックモジュールから時刻情報を受信してタイムスタンプ制御部28、タイムスタンプ生成部30、タイムスタンプ取得部32等に提供する。
【0025】
記憶部36は、不揮発性記憶装置18及びRAM20により実現され、上記第1,第2のタイムスタンプ等のデータ及びCPU16の動作プログラム等を格納する。
【0026】
通信部38は、通信インタフェース22,24により実現され、クライアントPC12及びタイムスタンプサーバ14との間で、第1,第2のタイムスタンプ、時刻証明の対象となるデータ等の送受信処理を行う。
【0027】
図4には、本発明にかかるタイムスタンプ装置10の動作例のフローが示される。図4において、タイムスタンプ制御部28は、クライアントPC12からタイムスタンプの要求が有ったか否かを監視する(S101)。このタイムスタンプの要求は、クライアントPC12が、時刻証明の対象となるデータのハッシュ値を送信することにより行う。
【0028】
S101において、タイムスタンプの要求が有ると、タイムスタンプ制御部28は、通信部38を介して受け付けたハッシュ値をタイムスタンプ生成部30に渡す。この場合のタイムスタンプ制御部28が、本発明の受付処理手段に相当する。タイムスタンプ生成部30は、ハッシュ値を受け取った時刻を時刻情報受信部34から取得し、前回ハッシュ値を受け取ってからの経過時間を演算する(S102)。また、タイムスタンプ生成部30は、上記ハッシュ値及び経過時間等を使用して第1のタイムスタンプを生成する(S103)。
【0029】
図5には、第1のタイムスタンプの生成方法の例の説明図が示される。図5において、HnはクライアントPC12から受信した時刻証明の対象となるハッシュ値であり、nはタイムスタンプ制御部28がこのハッシュ値を受け付けた順番を示す番号である。また、Lnは、ハッシュ値Hnに付される第1のタイムスタンプである。Ln−1は、タイムスタンプ制御部28が受け付けた順番がハッシュ値Hnより一つ前のハッシュ値Hn−1に対して付加された第1のタイムスタンプである。Δtnは、第1のタイムスタンプの間の経過時間であり、本例の場合は上述したように、一つ前のハッシュ値Hn−1をタイムスタンプ制御部28が受け取ってから次のハッシュ値Hnを受け取るまでに経過した時間である。本例では、上記二つのハッシュ値Hn、Hn−1、ハッシュ値Hnの受付番号であるn及び上記経過時間Δtnとを使用してタイムスタンプ生成部30が次に示す式(1)により第1のタイムスタンプLnを演算する。
Ln=hash(Hn,n,Ln−1,Δtn) −(1)
ここで、hashはハッシュ関数を示す。なお、ハッシュ関数としては、特に限定されない。
【0030】
上記式(1)に示されるように、第1のタイムスタンプLnは、時刻証明の対象となるハッシュ値Hn、その受付番号n、受付番号が一つ前のハッシュ値Hn−1に対して付加された第1のタイムスタンプLn−1及び経過時間Δtnを組み合わせた形式となっている。従って、例えば上記第1のタイムスタンプLnを受付番号の順に演算した結果(L1、L2…Ln−1、Ln)を、時刻証明の対象となるハッシュ値Hnをタイムスタンプ制御部28が受け付けた順序の前後関係の証明に使用することができる。
【0031】
以上のようにして生成した第1のタイムスタンプは、タイムスタンプ制御部28がクライアントPC12に送信する(S104)。また、タイムスタンプ制御部28は、上記第1のタイムスタンプを記憶部36に格納する。この場合、上記経過時間も合わせて記憶部36に記憶する。
【0032】
次に、タイムスタンプ制御部28は、クライアントPC12からタイムスタンプの要求が有ったか否かを監視し(S105)、要求が有った場合には、S102からの動作を繰り返し、第1のタイムスタンプを生成する。
【0033】
また、タイムスタンプ制御部28は、第2のタイムスタンプの取得時期が到来したか否かも監視し(S106)、到来していない場合はS105からの動作を繰り返す。一方、S106において、第2のタイムスタンプの取得時期が到来した場合は、クライアントPC12から最も新しく取得した時刻証明の対象となるハッシュ値の受付番号に1を加えた数値をタイムスタンプ取得部32に渡し(例えばn+1)、第2のタイムスタンプの取得をタイムスタンプ取得部32に要求する(S107)。なお、第2のタイムスタンプの取得時期は、適宜設定することができる。例えば、クライアントPC12からのタイムスタンプの要求回数に応じてあるいは所定時間毎に取得時期を設定してもよい。
【0034】
タイムスタンプ取得部32は、S107においてタイムスタンプ制御部28が第2のタイムスタンプの要求を行った要求時刻(Tn+1)を時刻情報受信部34から取得し、この時刻(Tn+1)のハッシュ値を算出して通信部38を介してタイムスタンプサーバ14に送信する。タイムスタンプサーバ14では、上記時刻のハッシュ値を時刻情報として受け取ると、これに証明時刻(TGn+1)を添付し、さらにディジタル署名をつけて第2のタイムスタンプとしてタイムスタンプ装置10に返信する。上記証明時刻は、タイムスタンプサーバ14が信頼できる時刻源から得た時刻であり、上記時刻(Tn+1)に対して時刻証明するための時刻である。タイムスタンプ取得部32は、返信された第2のタイムスタンプを通信部38を介して取得する(S108)。
【0035】
なお、タイムスタンプ取得部32は、タイムスタンプサーバ14から第2のタイムスタンプを取得する際に、上記要求時刻Tn+1の代わりに、最も新しく生成した第1のタイムスタンプLnのハッシュ値をタイムスタンプサーバ14に送信してもよい。
【0036】
タイムスタンプ制御部28は、タイムスタンプ取得部32が取得した第2のタイムスタンプをタイムスタンプ生成部30に渡す。タイムスタンプ生成部30は、第2のタイムスタンプを受け取った時刻を時刻情報受信部34から取得し、前回ハッシュ値を受け取ってからの経過時間を演算する(S109)。また、タイムスタンプ生成部30は、上記第2のタイムスタンプ及び経過時間等を使用して第1のタイムスタンプを生成する。これにより、第1のタイムスタンプと第2のタイムスタンプとを関係付ける(S110)。
【0037】
図6には、第2のタイムスタンプを使用して第1のタイムスタンプを生成する処理の例の説明図が示される。図6において、TSn+1は、タイムスタンプ取得部32が取得した第2のタイムスタンプである。また、Δtn+1は、上記S109で演算した経過時間である。この第2のタイムスタンプ及び経過時間等を使用して生成した第1のタイムスタンプLn+1は、次の式(2)により演算される。
Ln+1=hash(Ln,n+1,TSn+1,Δtn+1) −(2)
【0038】
上記式(2)により演算される第1のタイムスタンプLn+1は、クライアントPC12から取得したハッシュ値に対して付加された第1のタイムスタンプLnと第2のタイムスタンプTSn+1とを関係付け、その前後関係を示している。これにより、第1のタイムスタンプLnが付与されたハッシュ値Hnが第2のタイムスタンプTSn+1以前に作成されたものであることが証明できる。また、第2のタイムスタンプが2回付与されている場合には、第2のタイムスタンプが2回付与された各時点の間の期間に上記ハッシュ値が作成されたものであることを証明できる。
【0039】
以上のようにして生成した第1のタイムスタンプは、タイムスタンプ制御部28が記憶部36に格納する。この場合、上記第2のタイムスタンプ、第2のタイムスタンプの要求を行った要求時刻及び経過時間等も合わせて記憶部36に記憶する。その後、S105からの動作を繰り返す。なお、この場合、S105においてタイムスタンプの要求が有り、S102において経過時間を演算するときには、S109において第2のタイムスタンプを受け取った時刻から次のハッシュ値をクライアントPC12より受け取るまでに経過した時間を演算する。
【0040】
以上の実施形態によれば、クライアントPC12が直接タイムスタンプサーバ14に対してタイムスタンプを要求する構成に比べて、タイムスタンプサーバ14へのアクセス回数を減少することができ、タイムスタンプの付与コストを低減することができる。
【0041】
本実施形態においては、タイムスタンプ制御部28が、上述した経過時間Δtn、第2のタイムスタンプの要求を行った時刻Tn+1及び第2のタイムスタンプを所定の鍵により復号して得られる上記証明時刻TGn+1を使用して各第1のタイムスタンプの生成時刻を演算することができる。
【0042】
図7には、上記各第1のタイムスタンプの生成時刻を演算する動作のフローが示される。図7において、タイムスタンプ制御部28は、第2のタイムスタンプの要求を行った要求時刻とタイムスタンプサーバ14が当該要求時刻を証明するための証明時刻を取得する(S201)。上記要求時刻は記憶部36から読み出し、上記証明時刻は、記憶部36から読み出した第2のタイムスタンプより取得する。
【0043】
S201の動作を図5及び図6に示された例で説明する。Ln−2及びLn+1が第2のタイムスタンプ及び経過時間等を使用して生成された第1のタイムスタンプの例であり、Ln−1及びLnがクライアントPC12から受け取ったハッシュ値に対して生成された第1のタイムスタンプの例である。本例において、タイムスタンプ制御部28は、第1のタイムスタンプLn−2及びLn+1に対応して、要求時刻Tn−2、Tn+1及び証明時刻TGn−2、TGn+1を取得する。
【0044】
次に、タイムスタンプ制御部28は、上記要求時刻と証明時刻との差分を求める(S202)。図5及び図6においては、次に示す式(3)、(4)より差分を求める。
Ln−2における差分ΔTn−2=(Tn−2)−(TGn−2) −(3)
Ln+1における差分ΔTn+1=(Tn+1)−(TGn+1) −(4)
【0045】
次に、タイムスタンプ制御部28は、上記差分及び各第1のタイムスタンプの間の経過時間とに基づいて各第1のタイムスタンプの生成時刻を演算する(S203)。
【0046】
図5及び図6においては、次のようにして上記第1のタイムスタンプの生成時刻を演算する。まず、ΔTn−2とΔTn+1とを比較し、ΔTn−2=ΔTn+1のときは、時間が経過しても要求時刻と証明時刻、すなわちタイムスタンプ装置10の時刻情報受信部34から取得する時刻とタイムスタンプサーバ14が時刻源から得た時刻との間で時計の刻み(時刻が進行する速さ)に差がないと判断する。このときには、タイムスタンプ制御部28は、次に示す式(5)により第1のタイムスタンプLnの生成時刻TL,nを演算する。
L,n=TGm+ΣΔtk −(5)
ここで、TGmは所定の第2のタイムスタンプに含まれる証明時刻であり、図5、図6の例では、TGn−2が相当する。また、Δtkは、前述した経過時間であり、図5、図6の例では、ΣΔtk=Δtn−1+Δtnとなる。この経過時間は、タイムスタンプ制御部28が記憶部36から読み出して使用する。
【0047】
一方、ΔTn−2=ΔTn+1ではないときには、タイムスタンプ装置10の時刻情報受信部34から取得する時刻とタイムスタンプサーバ14が時刻源から得た時刻との間で時計の刻み(時刻が進行する速さ)に差があると判断する。このときには、タイムスタンプ制御部28は、下記式(6)により第1のタイムスタンプLnの生成時刻TL,nを演算する。
L,n=TGm+ΣΔtk・(TGn+1−TGn−2)/(Tn+1−Tn−2) −(6)
ここで、(TGn+1−TGn−2)/(Tn+1−Tn−2)は、第1のタイムスタンプLn−2とLn+1との間における差分の変化率である。また、Δtkは、上記式(5)の場合と同じである。
【0048】
このように、本実施形態のタイムスタンプ装置10は、タイムスタンプサーバ14から受け取った第2のタイムスタンプに含まれる証明時刻を使用して、上記式(5)、(6)に基づき、各第1のタイムスタンプLnの生成時刻を求めることができる。
【0049】
図8には、第1のタイムスタンプの他の生成方法の例の説明図が示される。図8において、クライアントPC12から受信した複数のハッシュ値Hn1、Hn2…を使用して、次に示す式(7)により新たなハッシュ値Hnを演算する。
Hn=hash(Hn1,Hn2…) −(7)
【0050】
次に、式(8)により第1のタイムスタンプLnを演算する。
Ln=hash(Hn,n,Ln−1,Δtn) −(8)
【0051】
上記方法によれば、複数のハッシュ値Hn1、Hn2…に対してまとめてタイムスタンプを付与できるので、処理速度を向上することができる。また、上述した式(5)、(6)を使用して各第1のタイムスタンプLnの生成時刻を求めることもできる。
【図面の簡単な説明】
【0052】
【図1】本発明にかかるタイムスタンプ装置を使用したタイムスタンプ生成システムの構成例を示す図である。
【図2】本発明にかかるタイムスタンプ装置の構成例を示す図である。
【図3】本発明にかかるタイムスタンプ装置の各機能を表す機能ブロック図である。
【図4】本発明にかかるタイムスタンプ装置の動作例のフロー図である。
【図5】第1のタイムスタンプの生成方法の例の説明図である。
【図6】第2のタイムスタンプを使用して第1のタイムスタンプを生成する処理の例の説明図である。
【図7】各第1のタイムスタンプの生成時刻を演算する動作のフロー図である。
【図8】第1のタイムスタンプの他の生成方法の例の説明図である。
【符号の説明】
【0053】
10 タイムスタンプ装置、12 クライアントPC、14 タイムスタンプサーバ、16 CPU、18 不揮発性記憶装置、20 RAM、22,24 通信インタフェース、26 計時部、28 タイムスタンプ制御部、30 タイムスタンプ生成部、32 タイムスタンプ取得部、34 時刻情報受信部、36 記憶部、38 通信部。

【特許請求の範囲】
【請求項1】
時刻情報を受信する時刻情報受信手段と、
時刻証明の対象となるデータの受付処理を行う受付処理手段と、
前記受付処理手段が行う受付処理の順序の前後関係を証明するために前記時刻情報受信手段が受信した時刻情報を用いて第1のタイムスタンプを生成するタイムスタンプ生成手段と、
前記時刻情報に対して時刻証明するための第2のタイムスタンプを取得するタイムスタンプ取得手段と、
前記時刻情報と前記タイムスタンプ取得手段が取得した第2のタイムスタンプの証明時刻との差分を取得する差分取得手段と、
前記差分取得手段が取得した時刻の差分と前記タイムスタンプ生成手段が生成する各第1のタイムスタンプの間の経過時間とに基づき、前記タイムスタンプ生成手段が生成した各タイムスタンプの生成時刻を演算する時刻演算手段と、
を備えることを特徴とするタイムスタンプ装置。
【請求項2】
請求項1記載のタイムスタンプ装置において、前記タイムスタンプ生成手段は、前記受付処理手段が受付処理を行った複数のデータに対してまとめて第1のタイムスタンプを生成することを特徴とするタイムスタンプ装置。
【請求項3】
時刻証明の対象となるデータの受付処理を行い、
時刻情報を受信し、
前記受付処理の順序の前後関係を証明するために前記受信した時刻情報を用いて第1のタイムスタンプを生成し、
前記時刻情報に対して時刻証明するための第2のタイムスタンプを取得し、
前記時刻情報と前記第2のタイムスタンプの証明時刻との差分を取得し、
前記差分と前記各第1のタイムスタンプの間の経過時間とに基づき、前記各タイムスタンプの生成時刻を演算する処理をコンピュータに実行させることを特徴とするプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate