...

気象庁XML等のオープンデータに おける電子署名とタイム

by user

on
Category: Documents
24

views

Report

Comments

Transcript

気象庁XML等のオープンデータに おける電子署名とタイム
気象庁XML等のオープンデータに
おける電子署名とタイムスタンプ
の活用アイデア
2014年2月24日
クラウド・テクノロジー活用部会
宮地 ([email protected])
有限会社ラング・エッジ
Copyright © 2014
2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
気象庁XMLとは
正式名称:気象庁防災情報XMLフォーマット
http://xml.kishou.go.jp/
これまでバラバラだった防災情報(気象警報、津波警報、
地震情報等)を統一XMLフォーマットで試行配信している。
AITC気象庁XML 公開API
http://api.aitc.jp/
気象庁XMLを蓄積して、REST API/SPARQLクエリ
/WebSocketの各APIで取得が可能。
※ 商用利用は不可!
Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
2
気象庁XMLサンプル
<?xml version="1.0" encoding="UTF-8"?>
<Report xmlns="http://xml.kishou.go.jp/jmaxml1/" xmlns:jmx="http://xml.kishou.go.jp/jmaxml1/"
xmlns:jmx_add="http://xml.kishou.go.jp/jmaxml1/addition1/">
<Control>
<Title>府県海氷予報</Title> <DateTime>2014-02-19T01:59:21Z</DateTime>
<Status>通常</Status>
<EditorialOffice>稚内地方気象台</EditorialOffice>
<PublishingOffice>稚内地方気象台</PublishingOffice>
</Control>
<Head xmlns="http://xml.kishou.go.jp/jmaxml1/informationBasis1/">
<Title>宗谷地方海氷予報</Title>
<ReportDateTime>2014-02-19T10:59:00+09:00</ReportDateTime>
<TargetDateTime>2014-02-19T10:59:00+09:00</TargetDateTime>
<EventID/> <InfoType>発表</InfoType> <Serial/>
<InfoKind>平文情報</InfoKind> <InfoKindVersion>1.0_0</InfoKindVersion>
<Headline> <Text/> </Headline>
</Head>
<Body xmlns="http://xml.kishou.go.jp/jmaxml1/body/meteorology1/">
<Notice/>
<Comment>
<Text type="本文">流氷は、宗谷岬から猿払村にかけての海岸から10キロメートルから20キロ
メートル付近にあり、浜頓別町から枝幸町にかけて接岸しています。20日にかけて、流氷に大きな動き
はない見込みです。</Text>
</Comment>
</Body>
</Report>
Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
3
オープンデータとセキュリティ技術
そもそも以下の疑問が…
疑問1:オープンデータに使えるセキュリティは?
疑問2:オープンデータにセキュリティは必要?
本日は気象庁XMLを例に上記の2疑問について
考察してみます。
その上で利用可能と考えられるセキュリティ技術と
して電子署名とタイムスタンプの利用についての
アイデアを説明します。
Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
4
まず情報セキュリティ技術を分類
大分類
暗号応用
電子署名
電子透かし
電子認証
対策
小分類
機能
対象
暗号化
情報秘匿
秘密分散
機密データ保存
電子署名(PKI方式)
改竄防止、発行者確認
タイムスタンプ
改竄防止、時刻保証
非PKI電子署名
改竄防止、証拠保存
追跡・秘匿通信
追跡(不正コピー対策)
認証
本人性確認
認可
権限(アクセス権等)付与
通信
運用
ウイルス・侵入
ハッキング対策
操作
秘密にする意味
が無いので除外
データ
対象が限定
なので除外
オープンデータだと使えそうなのは「電子署名」。
Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
5
データの1次取得と2次取得の違い
直接取得の場合
気象庁のURLを指定
間違い無く
気象庁の
データだ!
直接データを取得
2次取得の場合
取得
本当に
気象庁の
データ?
蓄積中継
サーバ
流通
改竄が
できるぞ
ファイル取得
データファイル
Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
6
気象庁XML利用の留意事項から
http://xml.kishou.go.jp/open_trial/considerationforxml.pdf
気象庁ホームページを通じて公開するXML形式電文のご利用にあたっての留
意事項
3.防災情報の取り扱い等に係る留意事項(公開XML電文の編集等について)
(2)公開XML電文の編集・加工について
気象庁が発表した予報内容と異なる独自の予報を発表
することは予報業務に該当し、気象業務法により許可を
受けた者しか行えません。公開XML電文中の予報の値
等を編集したり、公開XML電文を加工し作成するコンテ
ンツ等において公開XML電文の内容と異なる予報の値
等を表示したりする行為は予報業務に該当するので、予
報業務の許可を取得していない者のこのような公開XML
電文の編集・加工は認められません。
Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
7
電子署名により発行者を確認できる
2次取得の場合
発行者が
気象庁だ!
気象庁
証明書
署名付与
流通
取得
改竄が
できない
タイムスタンプを付与した場合
タイムスタンプ
サーバー
この時刻は
正しい!
改竄も無い
タイムスタンプの付与
Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
8
電子署名は意外に使われている
認証トークン(電子チケット)
 自分で署名したトークンやチケットを配布して利用時にそれらの署名を確認して判断。
自分が付与
した署名だ!
改竄が
できない
チケット発行
チケット利用
クライアント認証
 サーバが認めた認証局が発行した証明書を持つクライアントだけが接続可能。
コード署名
 決められた証明書で署名されたアプリだけが実行可能。または発行元を証明書で確認。
Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
9
ではタイムスタンプは?
法的対応や知財保護には使われている。
海外(中国やタイ等)でも普及しそうな情報あり。
でもオープンデータ・クラウドでは使われていない。
サーバ署名なので一般的なREST APIでは無いが
マッシュアップ用のAPIとしての利用は可能。
認定タイムスタンプ局では無くもっと手軽に使える
タイムスタンプサービスがあればもっと使える?
Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
10
タイムスタンプ(RFC3161)って何?
タイムスタンプはPKI方式のサーバ署名の一種。
署名時に「時刻」も埋め込むので時刻を保証可能。
サーバにHTTP経由で要求するので自動化可能。
自動処理
署名データ
保護されている
秘密鍵
サーバー
(TSA)
証明書
CAとTAの
信頼性が
重要になる
Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
署名対象
署名対象の
ハッシュ値
改竄が無い
ことを保証
証明書
情報
誰が署名
したか保証
時刻情報
時刻(いつ存在
したか)保証
11
タイムスタンプ運用パターン
※ TSU:タイムスタンプ装置
HSMにより秘密鍵運用すると
更に信頼性が向上する。
NTA (国家時刻標準機関)
Public CA (認証局)
NICT時刻サーバ
ntp.nict.jp
TA (時刻配信局)
ミリ秒で保証
Private CA
監視
外部機関運用の
非認定サービス
認定TSA
(タイムスタンプ局)
TSU
TSU
TSU
TSU
利用者・利用サービス
利用者・利用サービス
利用者・利用サービス
利用者・利用サービス
① オレオレ利用
② 外部非認定利用
③ マネージドTS利用
④ 認定TSA利用
低
信頼性
Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
高
12
タイムスタンプを使いたい
大きく分け公的に認められた認定タイムスタンプ局
と独自に運用するタイムスタンプサーバに分かれる。
利用クライアントソフトはどちらもほぼ同じ。
独自運用タイムスタンプサーバ
認定タイムスタンプ局(サービス)
保証と運用
独自運用なのでオレオレ保証
デ協から認定を受けて法的保証
初期費用
サーバを用意する必要あり
ほとんどかからない(契約必要)
運用費用
独自運用なので保守費用のみ
有償サービス(従量か定額)
時刻保証
未保証:NTP等で秒・分単位か
ミリ秒単位で保証されている
大量利用
サーバの能力次第
費用面や通信量の問題あり
課題・解決
商用とのハイブリッド運用
サーバ・クライアント間の時刻確認
タイムスタンプ数を減らす工夫
その他
専用ハードやOpenSSLで構築
認定事業者がサービス提供
Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
13
FreeTSAプロジェクト (お試しに!)
OpenSSLコマンドによる簡単タイムスタンプ(RFC3161)サービス
 タイムスタンプって面白そうだから使ってみたい!
 タイムスタンプ クライアントの試験で使えるサーバは?
と言うような要望に応える為にOpenSSL 1.0.0のコマンドを利用して簡易タイム
スタンプサービス(サーバ)の構築手順をまとめた。ラング・エッジのサーバで
稼働させて手軽に使えるタイムスタンプサービスも提供中。プロジェクトとして
は以下の2つ。なお作るには別途TSA証明書は用意が必要。
作る:FreeTSA Project:10分でできるタイムスタンプ局
使う:FreeTSA Service:自由に使えるタイムスタンプ局
http://www.langedge.jp/tsa
 参考 LangEdge Weblog: フリータイムスタンプ局(FreeTSA)のすゝめ
http://www.langedge.jp/blog/index.php?itemid=665
Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
14
タイムスタンプを使ってみよう 1:取得
> openssl ts -query -data test.txt -cert -sha512 -out request.tsq
WARNING: can't open config file: /usr/local/ssl/openssl.cnf
Loading 'screen' into random state - done
> openssl ts -query -text -in request.tsq
Loading 'screen' into random state - done
Version: 1
Hash Algorithm: sha512
Message data:
0000 - d6 f6 44 b1 98 12 e9 7b-5d 87 16
0010 - cd 47 87 fa eb 9b 89 90-c1 e7 60
0020 - 72 57 10 4a 58 d0 33 bc-f1 a0 e0
0030 - eb e5 3e 2d ff 36 e2 48-42 4c 72
Policy OID: unspecified
Nonce: 0xE04C7AA210640013
Certificate required: yes
Extensions:
58
82
94
73
d6
88
5f
11
d3
66
f0
7d
40
4b
64
ac
0e
e7
68
09
..D....{]..X..@.
.G........`..fK.
rW.JX.3....._.dh
..>-.6.HBLrs.}..
> curl -k --data-binary @request.tsq "http://www.langedge.jp/tsa" > resp.tsr
% Total
% Received % Xferd Average Speed
Time
Time
Time Current
Dload Upload Total
Spent
Left Speed
100 2966 100 2864 100 102 20457
728 --:--:-- --:--:-- --:--:-- 20457
>
Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
15
タイムスタンプを使ってみよう 2:確認
> openssl ts -reply -in resp.tsr -text
Status info:
Status: Granted.
Status description: unspecified
Failure info: unspecified
TST info:
Version: 1
Policy OID: X509v3 Any Policy
Hash Algorithm: sha512
Message data:
0000 - d6 f6 44 b1 98 12 e9 7b-5d 87 16 58 d6 d3
0010 - cd 47 87 fa eb 9b 89 90-c1 e7 60 82 88 66
0020 - 72 57 10 4a 58 d0 33 bc-f1 a0 e0 94 5f f0
0030 - eb e5 3e 2d ff 36 e2 48-42 4c 72 73 11 7d
Serial number: 0x0840
Time stamp: Feb 24 01:32:38 2014 GMT
Accuracy: 0x01 seconds, 0x01F4 millis, 0x64 micros
Ordering: yes
Nonce: 0xE04C7AA210640013
TSA: DirName:/C=JP/O=LangEdge/OU=demo user/CN=LE TSA
Extensions:
40
4b
64
ac
0e
e7
68
09
..D....{]..X..@.
.G........`..fK.
rW.JX.3....._.dh
..>-.6.HBLrs.}..
200001
>
Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
16
タイムスタンプを使ってみよう 3:検証
> openssl ts -verify -data test.txt -in res.tsr -CApath root.pem -CAfile root.pem
Verification: OK
> openssl ts -verify -data test.txt -in res.tsr -CApath root.pem -CAfile root.pem
Verification: FAILED
1556:error:2F064067:time stamp routines:TS_CHECK_IMPRINTS:message imprint mismatch
:.¥crypto¥ts¥ts_rsp_verify.c:662:
>
※ タイムスタンプ検証は以下に詳しく説明あり!
自堕落な技術者の日記 2009年04月15日
OpenSSL 1.0.0 beta1 タイムスタンプ検証機能
http://blog.livedoor.jp/k_urushima/archives/875438.html
※ 今後の課題
OpenSSLを使ったタイムスタンプレスポンスから
タイムスタンプトークンの取り出し方が不明
Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
17
効率良い署名・タイムスタンプの付与
オープンデータやビッグデータは対象が多い。
大量の対象に効率良く署名/タイムスタンプを付与。
工夫が必要、例えば…
1.署名数とタイムスタンプ数を減らす。
2.フリーのタイムスタンプをうまく利用する。
既に色々と仕様が策定・検討されています。
また実績もあります。
Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
18
複数対象に1つのXML署名付与1
1.複数のReferenceを利用
<Signature>
<SignedInfo>
<Reference URI="file1.txt">
<DigestValue>u+S...19c=</DigestValue>
</Reference>
<Reference URI="file2.dat">
<DigestValue>XdH...Zab=</DigestValue>
</Reference>
<Reference URI="#SignedProp">
<DigestValue>C6Q...OQ2=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>署名値</SignatureValue>
<KeyInfo>署名鍵情報</KeyInfo>
<Object>
<QualifyingProperties>
<SignedProperties Id="SignedProp">
署名対象データ(長期署名)
</SignedProperties>
<UnsignedProperties>
非署名対象データ(タイムスタンプ等)
</UnsignedProperties>
</QualifyingProperties>
</Object>
</Signature>
Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
テキストファイルも
指定可能
file1.txt
複数指定
が可能
バイナリファイルも
指定可能
file2.dat
19
複数対象に1つのXML署名付与2
2.Manifestを利用
<Signature>
<SignedInfo>
<Reference URI="#manifest1">
<DigestValue>u+S...19c=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>署名値</SignatureValue>
<KeyInfo>署名鍵情報</KeyInfo>
<Object>
<Manifest Id="manifest1">
<Reference URI="file1.txt">
<DigestValue>u+S...19c=</DigestValue>
</Reference>
<Reference URI="file2.dat">
<DigestValue>XdH...Zab=</DigestValue>
</Reference>
</Manifest>
</Object>
</Signature>
署名検証の範囲
file1.txt
複数指定
が可能
署名検証とは別
にハッシュ値を
確認する
file2.dat
 XmlDsigのManifest要素は署名検証の範囲外
 この為に署名検証が容易かつ短時間で終わらせることが可能。
 Manifest から Reference されている署名対象のどれが不正か明確で他の署名対象
に影響がないと言うメリットがある。
Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
20
複数対象に1つのタイムスタンプ付与
1.ハッシュツリーの利用(XMLERS/RFC6284)
ハッシュツリー
ハッシュABCD
ハッシュAB
ハッシュCD
ハッシュA
ハッシュB
ハッシュC
ハッシュD
データA
データB
データC
データD
1つのタイムスタンプ
を複数データ間で
共有できる。
例えばアーカイブ
タイムスタンプ利用。
データAに対するタイムスタンプ検証
アーカイブデータ
データA
データAは
ハッシュAで確認
ハッシュA
ハッシュABCDは
ハッシュA・B・CDで確認
ハッシュB
ハッシュABCD
Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
ハッシュCD
ハッシュABCDで
タイムスタンプ確認
21
複数対象に1つのタイムスタンプ付与
2.ガードタイム方式(非PKI署名)の利用
公表コード:カレンダーを結合して毎月1個のハッシュ値を生成し、新聞に掲載。
検証カレンダー:複数のデータから生成したハッシュ値を結合し世界で毎秒1個のハッシュ値を生成しネット上に公開。
検証:オリジナルデータ・取得したキーレス署名・カレンダーを使って計算したハッシュ値を新聞に公表されたハッシュ値
と照合し、データの非改ざん性を検証。
非PKIの理由は、証明書等
の信頼チェーンでは無く、新
聞に公開されたハッシュ値
を利用して信頼性を確保す
る為。単独で検証が可能。
全て数学的な仕組みの為に
ハッシュアルゴリズムが危
殆化するまでは有効である。
ガードタイム社はシンガポール
に本社があり欧米で使われて
いる。標準化が望まれる。
ハッシュツリーを構築するところ
まではERSとほぼ同じ。
http://www.guardtime.com/
Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
22
参考:
長期署名の形式
(複数のタイムスタンプが必要)
長期署名(長期間有効な電子署名の標準フォーマット)
=電子署名+署名タイムスタンプ+アーカイブタイムスタンプ
•
•
ES / ES-BES (XAdES) = 電子署名文書。
ES-T (XAdES-T) = ESに署名タイムスタンプ(STS)を追加。- JIS定義
署名対象に対して「誰が」と「いつ」を保証することが可能
•
•
•
ES-C (XAdES-C) = ES-Tに検証情報リファレンスを追加。
ES-X Long / ES-XL (XAdES-XL) = ES-T/ES-Cに検証情報を追加。
ES-A (XAdES-A) = ES-XL に保管タイムスタンプ(ATS)を追加。 - JIS定義
署名証明書の有効期限が切れた後も署名対象の内容を保証
ES-Aを重ねていく事で長期間の保証が可能となる
文書
署名属性
STS
署名値
ES (ES-BES)
ES-T
Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
検証
情報
リファ
レンス
ES-C
検証
情報
ES-XL
ATS
ATS
ES-A
ES-A
…
23
ハイブリッド方式のタイムスタンプ付与
独自運用と商用運用を組み合わせて利用。
既に医療分野にてCAdES方式
だが実績がある運用形態。
独自運用の
タイムスタンプサーバ
商用運用の
タイムスタンプサーバ
独自運用と言っても運用規定を
作りきちんとした運用は必要。
データA
ES
(電子署名)
データB
ES
(電子署名)
データC
ES
(電子署名)
ES-T
(署名タイムスタンプ)
ES-T
ES-A
(アーカイブタイムスタンプ)
(署名タイムスタンプ)
ES-T
(署名タイムスタンプ)
アーカイブタイムスタンプ
にERSを利用すると更に
有効。
参考: http://www.jipdec.or.jp/esac/promotion/h24pdf/24-3.pdf
Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
24
まとめ
疑問1:オープンデータに使えるセキュリティは?
電子署名やタイムスタンプの技術はオリジナリティを
維持する為に使えるのではないだろうか。
暗号化はオープンなデータには適用する意味がない。
疑問2:オープンデータにセキュリティは必要?
直接データを取得する1次取得では意味がないかも
しれないが、データが流通する場合は意味がある。
データのオリジナリティや発行元を確認・保証できる。
 タイムスタンプはマッシュアップに利用できる。
 電子署名・タイムスタンプ技術は進歩している。
 適用するデータに最適な仕様を検討できる。
Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
25
Fly UP