タイムスタンプ

タイムスタンプ（英: timestamp）とはある出来事が発生した日時・日付・時刻などを示す文字列。狭義には郵便物の発送日時等を示すために押される郵便印のことを指す（画像を参照のこと）。現在ではコンピュータにおける「タイムスタンプ」がよく知られている。 コンピュータやデジタルカメラ等の電子機器にて記録されるタイムスタンプ（他との区別のため「デジタル・タイムスタンプ」 英: Digital timestampとも呼ばれる。）は出来事（イベント）が発生した時刻そのものを指すのではなく、コンピュータにイベントが記録された時刻を指す。多くの場合、その違いは重要ではない。ただ、タイムスタンプによりイベントが記録された時刻（例: ログ書き込み時刻）と記録されたイベントの発生時刻の差が開きすぎると整合性に乖離が生じるおそれがあるため、その差は極めて0に近づくべきである。 場合によっては、タイムスタンプは単なるイベントの順序付けである可能性もあるが、その際プログラミングにおいて、タイムスタンプを格納する関数、メソッド（例: date_timeフォーマット）等の利用が常に必要となるわけではない。 このデータは通常、一貫性をもったフォーマットで表現され、これにより2つの異なる記録を容易に比較できるようになり、また、時間経過と共に変化するイベントの進行状況を追跡することが可能となる。このような実データに沿って一貫性をもったタイムスタンプを記録する手法をタイムスタンピング（英: timestamping、タイムスタンプ処理）という。 ただし、いくら一貫性を持った記録を行っても、後から改竄することが可能ならば、その信頼性は失われる。不特定多数からのアクセスを許可しているデータログは容易に改竄できる。このためタイムスタンプを含めたデータログを保管するシステム、サーバには物理的なセキュリティ（例: データセンター等安全な場所への機器保管）・論理的なセキュリティ（オペレーティングシステム（OS）レベルでのセキュリティ、ファイルパーミッションや強制アクセス制御など）を施すべきである。 タイムスタンプは一般にイベントのロギングのため、または、時系列（"sequence of events", SOE）の評価を行うため利用される。両ケースにおいて、タイムスタンプはイベントのマーキングのために使われる。ファイルシステムにおいては、タイムスタンプはファイルの作成・更新日時を指す場合もある。多くのOSのファイルシステムではファイルの作成日時（UNIXならびにUnix系OSではctimeという。以下同じ）、更新日時（mtime）、アクセス日時（atime）がタイムスタンプとして記録されている。これらのデータがシステムコールで取り出せるOSも存在する（UNIXではstat（英語版））。 このようにコンピュータのタイムスタンプは通常ファイルの日付を示す単なるメタデータである。一方、デジタル署名において、ローカル・マシンのタイムスタンプは信頼性の高いものとして利用される。データの「存在証明」と「完全性」（Integrity、非改竄証明）を担保するため、デジタル署名が利用する「タイムスタンプ」は信頼性が高いものを使用しなければならない。これを実現するものとして、RFC3161 Time stamp protocol（英語版）が考案されている。これはPKIを利用するタイムスタンプ認証プロトコルであり、"Time Stamping Authority"（TSA）と呼ばれる認証局がクライアントから送信されるデータのハッシュを元に"Time-stamp token"を作成、これをクライアントへ応答として返す一連の手続きである。これによりクライアントは"Time-stamp token"から対象データの「信頼できるタイムスタンプ」を取得できる。デジタル署名と同時に信頼できるタイムスタンプ処理も電子公証制度や民間の電子署名サービス、存在証明・完全性証明の根幹を成す技術であり、「電子署名法」や各国の電子署名関連の法（英語版）では必須とされている。 タイムスタンプの例を挙げる。 2005-10-30 T 10:45 UTC 2007-11-09 T 11:20 UTC Sat Jul 23 02:16:57 2005 1256953732（UNIX時間） (1969-07-21 T 02:56 UTC) - 月への第一歩。"That's one small step for [a] man, one giant leap for mankind"（「これは一人の人間にとっては小さな一歩だが、人類にとっては偉大な飛躍である。」）, Neil Alden Armstrong. ISO 8601は日時表現の標準化である。これらの標準化表現は、しばしばタイムスタンプの値を生成する際に利用される。 タイムスタンプは次の意味でも使われる。 タイムコード（ネットワークまたはビデオ技術） UNIX時間。1970年1月1日00:00:00 UTCからの経過秒数。プログラミングにおいてはこちらをさすことが多い。[1] ICMP Timestamp 以下は前述したよく知られるタイムスタンプ。 デジタル署名されたタイムスタンプ（digitally signed timestamp）。このタイムスタンプに署名した者は、ある時刻に署名した文書やコンテンツの存在を、デジタル署名の一部として与えられた時刻から保証する。 コンピュータのファイルシステムやデータベース上に存在するファイル、ディレクトリまたはデータベースの更新もしくはアクセス時刻。 [脚注の使い方] ^ 同様の技術がISO/IEC 18014（英語版）で標準化されている。 ^ “timestampの意味”. ejje.weblio.jp. 2011年8月14日閲覧。 ^ a b “タイムスタンプ/time stamp / デジタル・タイムスタンプ”. アットマーク・アイティ. www.atmarkit.co.jp. 2011年8月14日閲覧。 ^ “Chapter 6. Boost.Date_Time”. Boost.org. www.boost.org (2005年6月12日). 2011年8月9日閲覧。 ^ “Internet X.509 Public Key Infrastructure - Time-Stamp Protocol (TSP)”. IETF. www.ietf.org (2001年8月). 2011年8月15日閲覧。 ^ “タイムスタンプ技術解説 - 最新動向と将来展望”. IPA. www.ipa.go.jp. 2011年8月15日閲覧。 ^ “ISO 8601:2004(E)”. ISO (2004年12月1日). 2010年3月7日閲覧。 “3.5 Expansion … By mutual agreement of the partners in information interchange, it is permitted to expand the component identifying the calendar year, which is otherwise limited to four digits. This enables reference to dates and times in calendar years outside the range supported by complete representations, i.e. before the start of the year [0000] or after the end of the year [9999].” 時刻認証局 - その時刻に文章が存在し、その時刻以降に変更や改ざんが行われれていないことを証明する。 電子署名 デジタル署名 信頼できるタイムスタンプ処理 システム時刻 タイム・スタンプ・カウンタ（英語版）（Time Stamp Counter, TSC） - Pentium以降に搭載されたx86（80x86, x86-64）CPUのレジスタ。起動時からクロック周波数に合わせてカウントアップする。RDTSC（Read time stamp counter）命令を用いて呼び出すことが可能（アセンブリ言語、インラインアセンブラ）。 データログ syslog - Unix系OSのログ取得デーモン。 イベントビューアー（英語版） - Microsoft Windowsのログ読み取りツール。 確定日付 タイムレコーダー (打刻機) ウィクショナリーに関連の辞書項目があります。 タイムスタンプ