Comments
Description
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