X 0164-2:2018 (ISO/IEC 19770-2:2015)
(1)
目 次
ページ
0 序文······························································································································· 1
0.1 概要 ···························································································································· 1
0.2 この規格の目的 ············································································································· 1
1 適用範囲························································································································· 3
2 引用規格························································································································· 4
3 用語,定義及び略語 ·········································································································· 4
3.1 用語及び定義 ················································································································ 4
3.2 略語 ···························································································································· 4
4 適合······························································································································· 5
4.1 SWIDタグの適合 ··········································································································· 5
4.2 適合宣言 ······················································································································ 5
4.3 プラットフォームの適合 ································································································· 5
5 相互運用ガイド ················································································································ 5
5.1 概要 ···························································································································· 5
5.2 SWIDタグの修正 ··········································································································· 6
5.3 SWIDタグの相互関係 ····································································································· 6
6 ソフトウェア識別タグの導入プロセス ·················································································· 8
6.1 一般要求事項及びガイダンス ··························································································· 8
7 プラットフォームの要求事項及びガイダンス ········································································ 14
8 要素······························································································································ 15
8.1 一般 ··························································································································· 15
8.2 要求されている最低限のSWIDタグデータ値 ····································································· 15
8.3 推奨されているSWIDタグデータ値 ················································································· 16
8.4 XML要素及び属性名 ····································································································· 16
8.5 データ値 ····················································································································· 17
8.6 タイプ及び属性の定義 ··································································································· 26
附属書A(参考)改正におけるXSDの変更 ·············································································· 34
附属書B(規定)XMLスキーマの定義(XSD) ········································································ 37
附属書C(参考)SWIDタグスキーマのUML構造 ···································································· 72
附属書D(参考)タグの例 ···································································································· 74
参考文献 ···························································································································· 89
X 0164-2:2018 (ISO/IEC 19770-2:2015)
(2)
まえがき
この規格は,工業標準化法第12条第1項の規定に基づき,一般社団法人情報処理学会(IPSJ)及び一般
財団法人日本規格協会(JSA)から,工業標準原案を具して日本工業規格を制定すべきとの申出があり,
日本工業標準調査会の審議を経て,経済産業大臣が制定した日本工業規格である。
この規格は,著作権法で保護対象となっている著作物である。
この規格の一部が,特許権,出願公開後の特許出願又は実用新案権に抵触する可能性があることに注意
を喚起する。経済産業大臣及び日本工業標準調査会は,このような特許権,出願公開後の特許出願及び実
用新案権に関わる確認について,責任はもたない。
JIS X 0164の規格群には,次に示す部編成がある。
JIS X 0164-1 第1部:プロセス
JIS X 0164-2 第2部:ソフトウェア識別タグ
日本工業規格 JIS
X 0164-2:2018
(ISO/IEC 19770-2:2015)
ソフトウェア資産管理−
第2部:ソフトウェア識別タグ
Information technology-Software asset management-
Part 2: Software identification tag
0
序文
この規格は,2015年に第2版として発行されたISO/IEC 19770-2を基に,技術的内容及び構成を変更す
ることなく作成した日本工業規格である。
なお,この規格で点線の下線を施してある参考事項は,対応国際規格にはない事項である。
0.1
概要
IT資産管理(以下,ITAMという。)のための国際規格ISO/IEC 19770ファミリは,ソフトウェア,ハー
ドウェア及び関連する資産を管理するプロセスと技術の両方とを規定している。今日の世界でITが,全て
の活動において根本的に重要な役割を果たしていることを考慮すると,これらITAMの標準はITの全ての
活動と緊密に連携したものでなければならない。例えば,ソフトウェア識別(以下,SWIDという。)タグ
は,ITAMプロセスに着目した財務及びライセンス遵守以外の他の管理機能を支援することができる。技
術的な展望から,情報構造としてのITAM標準は,ソフトウェア管理のための相互に関連する運用データ
としてだけでなく,ソフトウェア管理においてより効果が期待できるセキュリティのように,多くの関連
する便益のための基礎を提供する。情報構造としてのITAM標準は,また,ソフトウェア認証の改善及び
ぜい(脆)弱性情報の識別と関連付けられたより自動化された識別及び緩和のように,IT機能の重要な自
動化を促進する。
0.2
この規格の目的
この規格は,ソフトウェア識別タグの国際標準を提供する。ソフトウェア識別タグは,新しく,自動化
管理機能をサポートするソフトウェア製品についての識別情報を含む標準化されたデータ構造である。ソ
フトウェア識別タグ構造の中で提供される製品情報は,多くの場合XMLデータファイルにより提供され
るが,同様なSWIDタグの製品情報は,管理されたコンピューティングデバイスに依存した他のものを通
して提供されることもある。
SWIDタグはSWIDタグ製作者,例えば,ソフトウェアを開発し配付するソフトウェア開発者又はツー
ル及び/又はサービスの提供者によって生成される。SWIDタグデータは,例えば,ライセンス遵守,ソ
フトウェアセキュリティ,又はロジスティックス活動のようないろいろな目的のためにコンピュータデバ
イスから情報を収集する検出ツール又はサービスでSWIDタグ使用者によって利用される。認証され,詳
細が記述されたソフトウェア識別情報は,ソフトウェア管理費用を削減させ,セキュリティ,コンプライ
アンス及びロジスティックス分野のITプロセスの自動化を支援する。
この規格は,ソフトウェア識別タグを利用することで,タグを使用するアプリケーションのセキュリテ
ィ,コンプライアンス及びロジスティックス自動化のような,ITプロセスの自動化を容易にする目的で開
2
X 0164-2:2018 (ISO/IEC 19770-2:2015)
発された。この規格は,(エディション及び俗称バージョン名のように)人間が理解できることを容易にす
る情報を含んでいるが,専門家又は一般利用者のツールに組み込んだ自動化機能を使用することなしに,
ソフトウェア識別タグ情報を生成,管理及び利用することは非現実的である。専門的な商用製品,オープ
ンソースタイプの製品又はプラットフォーム自身によって提供される機能の進展は,市場の開発動向に依
存する。
この規格は,ISO/IEC 19770-1に定義されるソフトウェア資産管理プロセスを支援する。この規格は,
また,権利スキーマのための国際標準を提供するISO/IEC 19770-3と協調するように設計されている。
注記1 対応国際規格では“software entitlement schema”となっていたが改訂され“software”がなく
なり“権利スキーマ”となっているので修正した。
注記2 ISO/IEC 19770-1:2006に対応したJIS X 0164-1:2010がある。
ソフトウェア識別タグは,生産,ライセンス,配付,リリース,インストール,及び動作中のソフトウ
ェアの管理を含め全ての利害関係者に便益を与える。ソフトウェア識別タグによる主な効果を次に示す。
a) ライセンス,セキュリティ,ロジスティックス又は依存性の記述のような,あらゆる目的に対して管
理される必要があるソフトウェア製品を識別する一貫した権威のある能力を提供する。ソフトウェア
識別タグは,他のソフトウェア識別技術より,より正確な識別をサポートするのに必要なメタデータ
を提供する。
b) 個々のソフトウェア製品と同じ方法でグループ又はスイートのソフトウェア製品を識別し,個々の製
品と同様な柔軟性で全体のグループ又はスイートソフトウェア製品を管理することができる。
c) インストールされているソフトウェアとパッチのインストール,構成の問題,又は他のぜい(脆)弱
性のような情報とを自動的に関連付けることができる。
d) 異なるソフトウェア開発者,異なるソフトウェアプラットフォーム,異なるIT管理ツール,及びソフ
トウェア開発組織内と同様に,SWIDタグ製作者及びSWIDタグ利用者間のソフトウェア情報の相互
運用性を促進する。
e) ソフトウェア識別タグ及びISO/IEC 19770-3で規格される権利スキーマの両方の情報を使ったライセ
ンス遵守アプローチへの自動化を促進する。
f)
製品の構造的フットプリントの包括的な情報構造を提供する。例えば,ソフトウェアコンポーネント
のファイルのリスト及びファイルが修正されているかどうかを識別する製品のシステム設定など。
g) ソフトウェア開発者,ソフトウェアライセンス提供者,パッケージ作成者,ソフトウェア利用者の外
部販売代理店のような各種組織と同様にインストールベース及び実行ベースで製品管理を行っている
ソフトウェア利用者のような様々な組織を識別する包括的な情報構造を提供する。
h) ソフトウェア識別タグを生成した組織によるデジタル認証のオプション利用で,情報が信ずべきもの
で悪意のある改ざん(竄)がなされていないことを証明することができる。
i)
レガシーソフトウェア及びソフトウェア識別タグを自分で生成しないソフトウェア開発者のソフトウ
ェアのためにオリジナルのソフトウェア開発者以外の組織(例えば,独立系業者,社内人材)がソフ
トウェア識別タグを生成することができる。
この規格は,次のような箇条及び附属書に分かれている。
− 箇条1 適用範囲の定義
− 箇条2 必須の引用規格の説明
− 箇条3 この規格で利用されている用語,定義及び略語の説明
− 箇条4 適合の定義
3
X 0164-2:2018 (ISO/IEC 19770-2:2015)
− 箇条5 相互運用ガイドの提供
− 箇条6 ソフトウェア識別タグの導入プロセスの説明
− 箇条7 プラットフォーム実装要件及びガイダンス
− 箇条8 タグの要素の説明
− 附属書A タグスキーマの改正がなぜ必要だったかの説明
− 附属書B タグのXMLスキーマの定義
− 附属書C SWIDタグスキーマのUML構造の説明
− 附属書D タグの例の説明
1
適用範囲
この規格は,ソフトウェアの識別及び管理を最適化するためのソフトウェアのタグ化の仕様を規定する。
この規格は,次に適用する。
a) タグ製作者 これらの組織及び/又はツールが,市場における他の組織によって利用されるソフトウ
ェア識別タグを生成する。タグ製作者は,ソフトウェア開発者の組織,ソフトウェアライセンス提供
者の組織,又は第三者組織(サードパーティー)の場合がある。これらの組織及び/又はツールは,
大きく,次のカテゴリに分けられる。
1) プラットフォーム提供者 ソフトウェアをインストール又は実行することができる,コンピュータ
又はハードウェアデバイス,及び/又は関連するオペレーティングシステム,仮想環境,又はアプ
リケーションプラットフォームに責任のある者。この規格をサポートしているプラットフォーム提
供者は,さらに,プラットフォーム又はオペレーティングシステムのレベルでも,タグ管理機能を
提供することができる。
2) ソフトウェア提供者 ソフトウェアを製作し,ライセンスし,配付する者。例えば,ソフトウェア
の開発者,独立系ソフトウェア開発者,コンサルタント,及び以前に製造されたソフトウェアの再
販業者をいう。ソフトウェア開発者は,組織内のソフトウェア開発者の場合もある。
3) タグツール提供者 ソフトウェア識別タグを製作するためのツールを提供する者。例えば,ソフト
ウェア識別タグを生成する開発環境にあるツール,又はインストールプロセスに代わってタグを製
作するインストールツール,及び/又はもともとソフトウェア識別タグがなくインストールされて
いるソフトウェアのためにタグを製作するデスクトップ管理ツール。
b) タグ使用者 SWIDタグからの情報を利用する一連のツール及び/又は組織であり,通常,次のよう
な二つの大きなカテゴリに分類される。
1) ソフトウェア使用者 ソフトウェアを購入し,インストールし,及び/又は使用する者。
2) IT検出及び処理ツール提供者 ソフトウェア識別タグを収集し,保管し,処理するためのツールを
提供する者。これらのツールは,ソフトウェアセキュリティ,コンプライアンス,及びロジスティ
ックスなど様々な異なる市場分野を対象とすることができる。
注記 “IT discovery and processing tool”を“IT検出及び処理ツール”と訳しているが,我が国で
は一般にインベントリーツールと呼ばれている。
この規格は,IT資産管理(ITAM),又はその他のIT関連プロセスが要求する,ソフトウェア識別タグ
によるソフトウェアの権利の調整,又はその他のIT要求事項については,規定していない。
この規格は,製品のアクティベーション又は起動の制御については,規定していない。
この規格は,いかなる組織の方針,手続,若しくは基準,又は国若しくは国際的な法律及び規制に矛盾
4
X 0164-2:2018 (ISO/IEC 19770-2:2015)
することを意図していない。
注記 この規格の対応国際規格及びその対応の程度を表す記号を,次に示す。
ISO/IEC 19770-2:2015,Information technology−Software asset management−Part 2: Software
identification tag(IDT)
なお,対応の程度を表す記号“IDT”は,ISO/IEC Guide 21-1に基づき,“一致している”
ことを示す。
2
引用規格
次に掲げる規格は,この規格に引用されることによって,この規格の規定の一部を構成する。これらの
引用規格のうちで,西暦年を付記してあるものは,記載の年の版を適用し,その後の改正版(追補を含む。)
は適用しない。西暦年の付記がない引用規格は,その最新版(追補を含む。)を適用する。
ISO/IEC 19770-5,Information technology−IT asset management−Part 5: Overview and vocabulary
IEEE 1003.1:2013,Standard for Information Technology−Portable Operating System Interface (POSIX (R))
W3C Recommendation,XML Schema Part 2: Data types (Second Edition)
IETF RFC 3986,Uniform Resource Identifier (URI): Generic Syntax
3
用語,定義及び略語
3.1
用語及び定義
この規格で用いる主な用語及び定義は,ISO/IEC 19770-5によるほか,次による。
3.1.1
パッチ(patch)
インストール時に,バージョン番号又は関連するソフトウェアコンポーネントのリリース内容を変更す
ることなしに,異なるソフトウェアコンポーネントに関係するファイル又はデバイスの設定を直接変更す
るソフトウェアコンポーネント。
3.1.2
プラットフォーム提供者(platform provider)
プラットフォームの供給責任をもつ組織。
注記1 プラットフォーム提供者は,通常,関連する,オペレーティングシステム,仮想環境,又は
アプリケーションプラットフォームのベンダーである。
3.1.3
タグ識別子(tagId)
全てのSWIDタグに対して世界的に一意に生成されなければならないグローバルユニーク値。
注記1 グローバルユニーク値は,16バイトのGUID,又はタグ生成者によって定義された別のグロ
ーバルユニーク値を使用することができる。
3.2
略語
API
アプリケーションプログラミングインタフェース(application programming interface)
GUID
世界的にユニークな識別子(global unique identifier)
IETF
インターネット技術特別委員会(Internet Engineering Task Force)
MD5
メッセージダイジェスト5(message digest 5)
regid
登録識別子(registration identifier)
5
X 0164-2:2018 (ISO/IEC 19770-2:2015)
RPC
リモートプロシージャコール(remote procedure call)
SAM
ソフトウェア資産管理(software asset management)
SHA
安全なハッシュアルゴリズム(secure hash algorithm)
SWID
ソフトウェア識別又はソフトウェア識別タグ(software identification,or software identification tag)
URI
統一資源識別子(uniform resource identifier)
URL
統一資源位置指定子(uniform resource locator)
VAR
付加価値再販業者(value added reseller)
W3C
ワールドワイド ウェブ コンソーシアム(World Wide Web Consortium)
XML
拡張可能なマーク付け言語(extensible markup language)
XSD
XMLスキーマ定義(XML schema definition)
4
適合
4.1
SWIDタグの適合
ソフトウェア識別タグは,そのタグのデータ構造が,この規格で規定された全ての規範的な制約に従っ
ている場合に,この規格に適合している。
4.2
適合宣言
適合宣言は,構文及び意味論の両面を含む。
− この規格への適合を宣言しているタグ使用者は,SWIDタグへのいかなる適合も拒絶してはならない。
− この規格への適合を宣言しているタグ製作者は,この規格に適合するSWIDタグを提供できなければ
ならない。
− この規格への適合を宣言しているタグ使用者は,この規格の定義に一致する方法で,SWIDタグの情
報を取り扱わなければならない。宣言書は,SWIDタグの全ての情報の処理に従うことを要求しない
が,その情報は,この規格の定義に従って作成されなければならない。
− この規格への適合を宣言しているタグ使用者は,必要なときに,SWIDタグで利用されているXML
スキーマ(XSD)のバージョンを識別し,XSDのバージョンに矛盾しない方法で,SWIDタグの古い
バージョン情報を処理できなければならない。
4.3
プラットフォームの適合
プラットフォームは,SWIDタグデータを追加,復旧,列挙及び削除するためのプログラムインタフェ
ースが提供され,及び/又はSWIDタグが,特定の機器に保存され,ストレージ環境から取り出す仕組み
が提供されているならば,この規格に適合している。
5
相互運用ガイド
5.1
概要
各種のタグがツール及びユーザによって使用され,SWIDタグ使用者がSWIDタグ内に定義された関係
を正確に理解できるように,SWIDタグ製作者は,一貫した方法でSWIDタグのデータ構造を生成するこ
とが重要である。このことは,ツール及びユーザの要求及びSWIDタグ製作者の相互理解が可能な方法で
タグが生成されることを要求している。
この箇条は,どのようにSWIDタグが生成されるか,SWIDタグにおいて定義された幾つかの関係が何
を意味しているか,及びその情報がツール及びユーザによってどのように解釈されるのかについて詳細を
定める。
6
X 0164-2:2018 (ISO/IEC 19770-2:2015)
5.2
SWIDタグの修正
主タグか追加タグかに関係なく,全てのSWIDタグは,最初にタグを生成した組織によってだけ修正さ
れなければならない。これはデータ(特にデジタル署名されたデータ)が,タグ生成者の直接責任が問わ
れないところで修正されないことを確実にするためである。一方,追加データが,既存のSWIDに関連付
けられることを必要とする場合が多くあるため,SWID構造は,どのような組織でも他のSWIDタグ(主
タグ,又は追加タグのいずれでもよい。)を参照する彼ら自身の追加SWIDタグを生成することを可能と
している。これは,例えば,ソフトウェアを調達する組織が,ソフトウェアタイトルに対してユーザ又は
デバイスに関する特定のライセンスデータを関連付けることを可能にしている。
多くの場合,SWIDタグは,ソフトウェア開発者によって生成され,維持される。しかし,SWIDをも
たないソフトウェアが検出されたときに,検出ツールがデバイス上のソフトウェアを識別し,SWIDタグ
を生成する場合もある。いずれの場合も,最初のSWIDタグを生成する組織は,主SWIDタグを生成し,
タグに提供されるデータは,組織の役割属性"role"で"tagCreator"の役割が指定された組織以外のいかなる組
織によっても修正されてはならない(8.5.2参照)。検出ツールによってタグが生成される例は,D.4を参照。
追加の情報が既存の主SWIDタグに関連付けられることを必要とする場合も多い。SWIDタグは役割が
"tagCreator"である組織以外のいかなる者も修正できず,セキュア署名したSWIDタグの項目の修正は困難
なので,追加タグが,追加データを提供するために使われる。追加タグは,ソフトウェアアクティベーシ
ョン情報のような詳細,又は情報技術基盤ライブラリ(ITIL)基準に基づく特定のソフトウェア製品のリ
リース試験及びロールアウトの詳細のような,特定の顧客に関連する情報を提供するためにも使うことが
できる。
注記 “discovery tool”を検出ツールと訳しているが,我が国では一般にインベントリーツールと呼
ばれている。
5.3
SWIDタグの相互関係
5.3.1
概要
SWIDタグは,ソフトウェア製品の一部であるソフトウェアの要素を表すために使われる。ソフトウェ
ア製品を構成する様々なコンポーネントだけではなくソフトウェア製品に関連するパッチなどソフトウェ
ア製品を定義する様々な異なるSWIDタグが存在する。これらの様々なタグ間の関係はSWIDデータ構造
の一部であるSWIDのリンク要素"Link"で定義される。
SWIDタグに独自に定義された関係の三つの特別なタイプがある。三つのタイプは,プリインストール
データ,ソフトウェアパッチ及び追加タグデータのためのSWID属性である。
5.3.2
プリインストールデータの属性
ソフトウェア発行者からソフトウェアが配付されるとき,一般的に“プリインストール”形態において
インストールスクリプトを含んで提供される。この配付方法では,リムーバブルメディアによって,又は
ファイルダウンロードを通して配付される。これらの場合,タグ使用者はインストールで有効になるソフ
トウェアの詳細を事前に知りたいことがある。ソフトウェアのプリインストール配付を識別するSWIDタ
グが提供されており,属性"corpus"が真(true)かどうかで識別することができる(8.5.1参照)。
注記 この規格で定義された“プリインストール”は,我が国でよく言われるハードウェアに事前に
インストールされているライセンスのソフトウェアという意味ではなく,言葉どおりにインス
トール前のCD又はダウンロードサーバに格納されたインストール前のソフトウェア状態を言
っている。
7
X 0164-2:2018 (ISO/IEC 19770-2:2015)
5.3.3
SWIDのパッチ属性
パッチがSWIDタグで識別される場合,値が真(true)の属性"patch"を含まなければならない(8.5.1参
照)。
パッチのSWIDタグは,パッチを当てる製品又は製品群の"Link"要素(8.5.4参照)と同様に現在のパッ
チが関係している他のパッチへの"Link"要素も含まなければならない。パッチによって利用できる関係
(8.6.7参照)は,次のとおりである。
− “patches” 全てのパッチのSWIDタグは,パッチを当てる製品への"Link"要素を含み,"Link"要素は,
属性"rel"に“patches”を使わなければならない。
− “requires” 新たなパッチが,以前のパッチがまず導入されることを要求する。この場合,新たなパ
ッチは以前のパッチがインストールされているときだけインストールできる。
− “supersedes” 新たなパッチは,以前のパッチからの全てのファイルを含んでいる。新たなパッチ(旧
パッチに置き換わる。)は,それ自身でインストールしてもよいし,又は以前のパッチの後にインスト
ールされてもよい。そして,いずれもパッチのインストールでもパッチが当てられたソフトウェア製
品は結果として同じ状態になる。
要素"Link"で属性"rel"が“supersedes”又は“requires”のいずれも定義されていないパッチは,お互いに
独立して順不同でインストールしてよい。図1に,パッチ処理についてSWIDタグがどのようになるかの
例を示す。
8
X 0164-2:2018 (ISO/IEC 19770-2:2015)
図1−パッチと製品との関係性描写
5.3.4
SWIDの追加属性
追加タグデータは,特定のソフトウェア製品の主タグに直接関連付けられるデータである。しかし,様々
な理由で,追加タグに含まれるデータは主SWIDタグに含まれない。SWIDタグデータは,タグ生成者に
よってだけ修正することができる。言い換えるとソフトウェア開発者が彼らの製品の主SWIDタグを生成
した場合,ソフトウェアを導入し管理しているソフトウェア使用者は,主SWIDタグのいかなるデータも
修正することは許されない。この場合,ソフトウェアタグの使用者は,参照している主タグに関する特定
の詳細を提供する追加タグを生成することができる[属性"supplemental"に真(true)の値を設定する(8.5.1
参照)]。この追加タグは,ソフトウェアのインストールに伴って展開されるか,デバイス管理プロセス,
又はソフトウェアアクティベーションプロセスの一部としてその後に追加される。
追加タグは,タグ生成者によって,ソフトウェアタイトルの特定のインストールに関連する追加情報を
追加するために提供されることもある。
6
ソフトウェア識別タグの導入プロセス
6.1
一般要求事項及びガイダンス
6.1.1
XML及びXSD
ソフトウェア識別タグファイルは,XMLのデータ構造で定義されなければならない。この版で規定され
9
X 0164-2:2018 (ISO/IEC 19770-2:2015)
るXMLスキーマ定義(XSD)は,http://standards.iso.org/iso/19770/-2/2015/schema.xsdからダウンロードで
きる。
発行後に修正された場合についても,最新バージョンのダウンロード場所は,
http://standards.iso.org/iso/19770/-2/2015-current/schema.xsdとなる。
6.1.2
ISO/IEC 19770-2:2009のSWIDタグについて
ソフトウェア製品の一部としてインストールされたSWIDタグは,そのリリースの一部としてインスト
ールされたソフトウェアコンポーネントが何らかの方法で変更されるまで存在することがある。タグ利用
者は,古いソフトウェア製品とstandards.iso.orgに掲載されている古いスキーマに対応した古いXMLスキ
ーマ定義(XSD)とが存在することに注意することが望ましい。
この版に適合してタグを生成するタグ製作者及びタグ使用者は,古い版に適合したSWIDタグを提供す
る必要はない。
6.1.3
SWIDタグのインストール及び削除
ソフトウェア製品がデバイスにインストールされる場合に,この規格に適合するソフトウェアライセン
ス提供者は,主SWIDタグがインストール媒体に含まれ,ソフトウェアがインストールされると同時にイ
ンストールされることを確実にしなければならない。
ソフトウェアがアンインストール,又は異なるリリースに変更されたときには,古いSWIDタグはデバ
イスから削除されなければならない。
パッチがインストールされる場合には,パッチがインストールされるときに対応するパッチのSWIDタ
グがインストールされる。そして,パッチがアンインストールされるか,製品がアンインストールされる
か,又は別のリリースに変更される際には,削除される。パッチのタグが削除されるべきかそうでないか
は,所有者"ownership"属性(8.6.4)で記述される追加のデータに基づいて決定される。
注記 対応国際規格では(8.6.3)となっていたが,明らかに編集上の誤りと思われるのでこの規格で
は修正した。
ソフトウェア発行者によって提供される(ソフトウェア製品との関係を識別するために利用される)追
加タグは,ソフトウェア製品がアンインストールされたときにデバイスから削除されるなど,主タグ及び
パッチタグと同じように管理されなければならない。
6.1.4に記載しているとおり,SWIDタグは,アプリケーションがインストールされるディレクトリと同
じディレクトリに配置する。アプリケーションのアンインストールに伴いディレクトリが削除されたとき
には,アプリケーションに関連するSWIDタグ(主タグ,追加タグ及びパッチタグを含む。)は削除され
る。
6.1.4
SWIDデータ格納場所及び伝達
SWIDタグを取得するためのAPIが用意されていないファイルシステムのデバイスでは,SWIDタグデ
ータはXMLファイルに格納され,それらが表しているソフトウェアコンポーネントのインストール場所
と同じファイルディレクトリか,又はサブディレクトリに存在する"swidtag"(全て小文字)で名付けられ
るファイルシステムに格納しなければならない。推奨はアプリケーションがインストールされた最上位階
層にswidtagディレクトリを配置することであるが,必須事項ではない。記述される"payload"情報につい
てはSWIDタグが格納されている場所を起点に相対パスでファイルを参照しなければならない。
ファイルシステムをもたないデバイスの場合,SWIDタグデータはそのデバイスのプラットフォーム提
供者によって定義され,管理されるデータストレージに格納されなければならない。この方法によって格
納されたSWIDタグデータでは,場合によっては他のフォーマットを使用して送信されることがある。こ
10
X 0164-2:2018 (ISO/IEC 19770-2:2015)
れはSWIDタグ情報を格納及び呼び出しをするAPI,及び/又はXML以外のデータ交換フォーマットを
利用するコンピュータデバイスを含むことがある。
ソフトウェアインストールのファイルシステム及びSWIDタグファイルにアクセスするAPIの両方が使
えるデバイスの場合,SWIDタグデータAPIが管理するリポジトリだけでなく,システム上のファイルと
しても格納しておくことを推奨する。これは,APIを利用しない従来の検出ツールがデバイスに置かれた
SWIDタグファイルを特定できるようにするためである。
最後に,SWIDタグデータはURI又はその他の手段[例えば,参考文献[12]の一般情報モデル(CIM)
の使用]を通してアクセスできる場合もある。
プラットフォーム提供者がAPI,RPC,コマンドラインインタフェース又は他のプログラム手段を通し
て,SWIDタグにアクセスする手段を提供する場合がある。
6.1.5
固有登録識別子(regid)
6.1.5.1
概要
ソフトウェア識別タグは異なる組織によって作成され,集中登録認定機関を求めてはいない。さらに,
この規格ではソフトウェアコンポーネントを作成していない組織が,ソフトウェア識別タグを作成するこ
と(組織内部でのソフトウェア検出プロセスにおいて,ソフトウェア識別タグを生成するなど)を認めて
いる。これらの要求事項に適合させるため,この規格ではregidを使用する。regidは固有名称としての識
別子を提供する。
6.1.5.2
regidの構造
regidはURIリファレンス(IETF RFC 3986を参照)を使用しなければならない。組織が定めた当該組
織のソフトウェアのためのregidは当該組織の全てのソフトウェアで一貫して使用されなければならない。
オープンソースプロジェクトのサポート及び第三者のタグの一貫性を認める相互運用性の確保のために
は,regidを作成するときに,次の推奨事項を適用する。
− 特に断りがない限り,URIはhttpスキーマを使用する。
− httpスキーマを使用した場合,"http://"はregidの文字列から削除する(URIスキーマのない文字列は
"http://"スキーマを使っているものとして定義される。)。
− 別途必要な場合を除き,URIはドメイン名のような認証機関を含む絶対URIを使用する。
− 一貫性を保つために,絶対URIは必要な最小限の文字列を使用する(例えば,www.example.comの代
わりにexample.comを使用する。)。
6.1.5.3
regidの例
ソフトウェアを開発し販売する会社のregidは,当該会社のHTTP参照という形になる。Fabrikam社の
regidは,次のようになる。
"fabrikam.com"
sourceMyProject.netから提供されている“SampleProject”という名称のオープンソースプロジェクトの
regidは,次のいずれかのようになる。
sampleproject.sourcemyproject.net
又は
sourcemyproject.net/sampleproject
又は
sourcemyproejct.net/?projectname=sampleproject
プロジェクトで選択する適切なregidは,特定のプロジェクトのホスティングサイトによって使用され
11
X 0164-2:2018 (ISO/IEC 19770-2:2015)
ている既定の参照形式に依存する。
6.1.6
タグ識別子
一意性のために,"tagId"はグローバルで一意な値でなければならず,その値は生成された全てのSWID
タグで一意でなければならない。"tagId"には最小16桁からなるグローバルユニークID(GUID)を推奨す
るが,タグ提供者又はその他のグローバルで一意の値を使って作られた文字列であってもよい。文字列構
造を使用する場合,"tagId"は“IETF RFC 3986,characters”で指定されているURI文字使用の制限に従わ
なければならない。ユニバーサルユニーク識別子(GUIDはUUIDの一種)については,[2]を参照。
6.1.7
一意なソフトウェア識別タグのファイル名
SWIDタグファイルは,インストールメディア内又はソフトウェアのインストール先のデバイスに格納
される。プリインストール状態とインストールされたソフトウェア又は検出されたソフトウェアをコンピ
ュータデバイスに設定されたタグとを比較してソフトウェアを識別するために異なったファイル名を使用
する必要はない。プリインストール状態にあるソフトウェアとインストールされたソフトウェアのSWID
タグとの違いは,プリインストール状態のソフトウェアが,属性"corpus"の値を"true"にすることで区別す
る。
ファイル名を作成する際には,次のルール及び推奨値を使用しなければならない。
ファイル名については,プラットフォーム間の互換性を最大限確保ため,“IEEE 1003.1:2013の3.278”
で定義されている“Portable Filename Character Set”で提示される文字を使用する。もしこの制限が厳しい
ようであれば,タグ生成者は,ファイル名で指定されている文字が,SWIDタグが格納されているファイ
ルシステムの全てのプラットフォームで有効であることを確認しなければならない。
SWIDタグの基になるファイル名(すなわち,拡張子".swidtag"がないファイル名)は,タグ生成者及び
製品にとってグローバルに一意なものでなければならない。
SWIDタグ生成者は,SWIDタグのファイル名の基になる部分の定義について異なるアプローチを使用
してもよいが,仮にファイル名が次の構造に沿う場合,ファイル名は製品にとってグローバルで一意なも
のとなり,システム管理者が認識できるものとなる。
<タグ生成者の名前> + <プロダクト名>.swidtag
ファイル拡張子".swidtag"は,全てのソフトウェア識別タグで使用されなければならない。
6.1.8
ソフトウェア識別タグの検出
SWIDタグの必須要件は,該当ソフトウェアパッケージが適正な特権ユーザ及び/又は検出プロセスに
よって,インストールされたマシン,配布メディア及び/又は仮想環境から読取可能なことである。この
要件には,ソフトウェアがシステムにインストールされる前にインストールファイルを検証できるように
するため,該当するSWIDタグの情報を使用できるようにすることも含まれている。
6.1.9
言語
この規格は,ソフトウェア開発者がソフトウェアに特定の言語用のビルドを提供することを認めると同
時に他のソフトウェア開発者がソフトウェアにアドオンとしての“言語パック”導入のビルドを提供する
ことを認めている。ただし,この規格は,同じ製品の異なる言語のバージョンを認識するためのソフトウ
ェア識別タグは要求してはいない。言語情報については,特定の言語のサポート及び主SWIDタグの参照
を示している追加タグを利用することでより効率的に管理される。
追加タグの例については,附属書Dを参照。
エンコードのために,この規格で作成されたソフトウェア識別タグにおいては,UTF-8(IETF RFC 3628
を参照)を使用することを推奨する([14]を参照)。
12
X 0164-2:2018 (ISO/IEC 19770-2:2015)
6.1.10 ソフトウェア識別タグの真正性
ソフトウェア識別タグの真正性,例えば,検出プロセスで収集されたソフトウェア識別タグの検証にお
いて,改ざん(竄)されたタグの特定要素がなかったことを証明するために,タグ内にあるデジタル署名
を利用することがある。
署名は,ソフトウェア識別タグ標準における必須項目ではなく,タグが修正されていないことの保証及
び/又は署名者の認証を要求される場合に任意のタグ製作者が使用可能なものである。仮にソフトウェア
識別タグに署名が含まれている場合,W3C勧告にあるXML署名構文のメッセージ完全性認証と同様に任
意のデータタイプに対応した署名者認証に従わなければならない。
W3C勧告,“XML Signature Syntax, and Processing Version 1.1”は,デジタル署名のために正規化バージョ
ン1.1のアルゴリズムとともに利用されることを推奨している。ツール提供者は,バージョン1.1の署名プ
ロセスがSWIDタグの認証要素内にある空白に変更があれば署名破損を起す可能性があることを理解して
おくことが望ましい。これは,検出ツール及びシステムで考慮すべき主要な事項である。少なくとも一つ
のマスターにおいて,署名の検証目的のために各SWIDタグの改ざん(竄)されていないコピーがツール
のデータベースに保持されていることを推奨する。
SWIDタグのために署名が利用されるとき,署名はエンベロープ(enveloped)署名であり,信頼できる
タイムスタンプサーバにおいて発行されたタイムスタンプがデジタル署名に含まれなければならない。こ
のタイムスタンプは,XAdES-T様式を使用して提供されなければならない。この様式のタイムスタンプに
ついての情報は,[13]で参照できる。SWIDタグは,また,署名団体によって発行された公開署名を含まな
ければならない。
デジタル署名されたSWIDタグの要件は,SWIDタグの使用者が,デジタル署名が信頼できる認証局(CA)
によって発行され,署名の有効期間中に署名され,署名されていないデータは修正されることを確実にす
るSWIDタグによってカプセル化されたデータを使用できなければならないことである。これらの全ての
確認は,外部ネットワーク接続を行わずとも完了できるものでなければならない。仮にSWIDタグの利用
者が,デジタル証明書が失効されていないことを検証する必要があった場合,失効情報を提供可能な外部
ネットワーク又はデータソースへのアクセスが求められる場合がある。
デジタル署名についての更なる情報及びデジタル署名の動作仕様,アメリカ連邦政府の利用における最
小限の要件については,[6]を参照。
6.1.11 ファイルハッシュ定義
業界で利用されているファイルハッシュのアルゴリズムは複数ある。これらのアルゴリズムは,多様な
有益性をもち,多様な異なる組織で利用されている。この規格は,一つのハッシュのアルゴリズムに限定
していない。現在使われている代表的なハッシュのアルゴリズムのXML名前空間の例を次に示す。
− xmlns:MD5="http://www.w3.org/2001/04/xmldsig-‐more#md5"
− xmlns:SHA-1="http://www.w3.org/2000/09/xmldsig#sha1"
− xmlns:SHA-224="http://www.w3.org/2001/04/xmldsig‐more#sha224"
− xmlns:SHA-256="http://www.w3.org/2001/04/xmlenc#sha256"
− xmlns:SHA-384="http://www.w3.org/2001/04/xmldsig‐more#sha384"
− xmlns:SHA-512="http://www.w3.org/2001/04/xmlenc#sha512"
− xmlns:RIPEMD-160="http://www.w3.org/2001/04/xmlenc#ripemd160"
追加のハッシュのアルゴリズムは,時とともに,開発され,利用され,組織のニーズに合った適切なハ
ッシュのアルゴリズムが使われる。
13
X 0164-2:2018 (ISO/IEC 19770-2:2015)
セキュリティに重点をおいた利用では,この規格の公開時点で最低限SHA-256のアルゴリズムを使用す
ることを推奨する。最低限のハッシュのアルゴリズムは,開発され,検証され,プログラムライブラリが
有効になった新しいアルゴリズムに変更してよい。
6.1.12 XSD定義における標準データタイプの利用
ソフトウェア識別タグで用いられる標準化されたタイプ(型)には,W3C勧告の“XML Schema Part 2: Data
types (Second Edition)”で指定されたフォーマットに合致しなければならない特定の日付/時間エントリが
幾つかある。W3C勧告で指定されたこれらのタイプ(型)を使用することで,ソフトウェア識別タグは,
提供されたデータに対して,より一貫した構造を必要とする自動化された検証ステップを利用することが
できる。
6.1.13 "Evidence"又は"Payload"の使用
デバイス上にインストールされたリソース又は検出されたリソースに関する情報(ファイル,実行プロ
セス,他のシステム設定など)を含むという点で,"Evidence"要素(8.5.3)は,"Payload"要素(8.5.6)と
類似しているが,"Payload"と"Evidence"とには根本的な違いがある。
"Payload"要素は,ソフトウェアがインストールされたときのデバイスにインストールされたリソースを
規定する。この子要素のデータは,例えば,ディレクトリ要素のファイルの情報が,ソフトウェアコンポ
ーネント又はソフトウェア製品がインストールされるときに計画されたファイルと一致するかどうかを決
めるのに使用することができる。
"Evidence"要素は,SWIDタグをもたないソフトウェアを識別する検出ツールに使用され,検出データに
基づいてSWIDタグを作成する。この場合,要素"Evidence"はデバイス上で検出されたものを示すが,最
初にSWIDタグがないので,ファイル情報が発行者の示したものと一致するかどうかを決定するために使
用できるデータではない。"Evidence"要素は,動的にソフトウェアを検出し,サーバにデータを提供して
いるシステムによって提供されるか,又は発見した何かの証拠としてサーバにデータを送信するシステム
によって使用される。"Evidence"要素をもっているSWIDタグがサーバに送信される場合,エビデンス要
素からのデータは,手動又は自動的な方法で分析され,SWIDタグが,収集した証拠として適切に識別さ
れたと判断される。このSWIDタグは,サーバが検出ツールによって特定したソフトウェアコンポーネン
ト又は製品が識別されたデバイスのクライアントに送り返される。
6.1.14 再配付可能なソフトウェアコンポーネント
ソフトウェアの開発者は,定期的に他の組織が再配付するソフトウェアコンポーネントを開発している。
再配付は権利を介して行われ,再配付可能なライブラリを作る組織,及びOEMソフトウェアを作る組織
を含むことができるが,それだけに限定されるものではない。
いずれの場合も,再配付可能なパッケージに含まれている詳細事項(例えば,ソフトウェア開発者及び
タグ生成者などのリスト)は,関係当事者間で合意されているものであり,この規格で対処されるもので
はない。
一度合意し,再配付可能なソフトウェアコンポーネントを介して配付されるSWIDタグは,他のSWID
タグが"Link"要素を使用して参照されているのと同様に参照される。これによって,例えば,オペレーテ
ィングシステムの製造元から再配付されている言語ライブラリは,ライブラリとの関係を識別する"Link"
要素を含むツールで,ツール提供者によって配付可能であることを示している。"Link"要素の詳細は,8.5.4
を参照。再配布可能パッケージがどのようにソフトウェア製品に参照されるかは,附属書Dを参照。
14
X 0164-2:2018 (ISO/IEC 19770-2:2015)
7
プラットフォームの要求事項及びガイダンス
ソフトウェア識別タグの中に含まれる情報は,タグの参照情報がインストールされたソフトウェアコン
ポーネントのプラットフォームに依存しないことが望ましい。プラットフォーム,例えば,オペレーティ
ングシステム,仮想環境,又はアプリケーションプラットフォームは,これらのソフトウェア識別タグの
格納及び取り出しのためのプロセスを効率的に支援していることを推奨する。
ソフトウェア識別タグは,SWIDタグ管理に有効なプラットフォームと同様にSWIDタグ管理に利用さ
れるソフトウェアインストールプロセスのように,異なった方法を採用して管理してよい。表1に示す選
択肢は,全てのプラットフォームで,時間の経過とともに,より多くのプラットフォーム及び多くのソフ
トウェアインストールスクリプトがSWIDタグの管理及び報告のために効率的な方法で利用される期待を
示している。
表1−SWIDタグのアクセスに対するプラットフォームガイダンス
方法
定義
プログラムインタ
フェース
(SWIDtagAPIs)
特定のプラットフォームからSWIDタグを管理するオペレーティングシステムレベルのサー
ビスを利用するアプリケーションソフトウェアのプログラムインタフェース。
プログラムインタフェースがサポートされ,ファイルシステムの概念がサポートされる場合で
も,SWIDタグは,ファイルにアクセスするタグ使用者が適切にSWIDタグデータを処理できる
ことを確実にするために,ソフトウェアアプリケーションプログラムのファイルディレクトリ
(6.1.4を参照)におけるファイルとして格納されることが望ましい。SWIDタグに追加されるデ
ータは,プラットフォーム所有者によって設計及び開発されたデータストレージに格納される。
このアプローチを用いて,インストールプロセスでこのインタフェースを使えば,追加情報は
全てのソフトウェアがインストール,パッチ適用,更新及びシステム削除において,追跡され保
持される。追加される情報として次のものを含むことができる。
− ソフトウェアコンポーネントのインストール又は削除で利用されるユーザID
− インストールプロセスがローカルシステム又はリモートシステムで起動されたかどうか。
− インストールのインスタンスID(一つ以上のインストールがある場合)
− インストールソフトウェアの場所
− ソフトウェアがデバイスにインストール又は削除された日時
プログラムインタフェースは,より効果的,強力な,そして効率的なソフトウェア検出プロセ
スとしても提供することができる。効率性として次のものを含むことができる。
− 全ての通知されるSWIDタグデータの圧縮
− データ変更時のSWIDタグデータの通知
− デバイス上の全てのソフトウェアがタグ使用者の方針(例えば,全てのSWIDタグがデジタ
ル署名されていることを確実にする。)によって定義された適切なレベルのSWIDタグをも
つことの自動検査
− 実行ファイルがデバイス上に格納されているが,SWIDタグのパッケージ痕跡が存在しない
ことの自動検査
インストールアプ
リケーションと一
緒に格納される
SWIDタグファイ
ル
アプリケーションのファイルシステムにSWIDタグが格納される場合には,SWIDタグファイ
ルはデバイスの"swidtag"(全て小文字)で名付けられたサブディレクトリのファイルシステムに
置かなければならない。その場所は,SWIDタグに記述されたソフトウェアコンポーネントのイ
ンストール場所の同じファイルディレクトリか又はサブディレクトリでなければならない。
"swidtag"のディレクトリは,可能ならばアプリケーションインストールディレクトリツリーのト
ップにあることを推奨するが必須ではない。"Payload"要素の情報は,SWIDタグが格納された場
所の相対パスを用い,参照ファイルを提供しなければならない。
例えば,デバイスの“c:¥Program Files¥Fabrikam Suite”ディレクトリにインストールされた
Fabrikam Suiteのプログラムの呼び出す場合,SWIDタグは次のディレクトリに置かなければなら
ない。
C:¥Program Files¥Fabrikam Suite¥swidtag
15
X 0164-2:2018 (ISO/IEC 19770-2:2015)
8
要素
8.1
一般
タグ製作者が全ての製品のリリースで作成されるソフトウェア識別タグの集中的なリポジトリを維持す
ることを推奨する。このリポジトリは,GUIDs(ISO/IEC 19770-5及び8.5.1のtagIdの詳細を参照)の一
意性を証明し,他の要素が"softwareCreator","tagCreator"及び"licensor"という役割のように標準化されるこ
とを証明するために使用できる。この規格は,ソフトウェア識別タグの外部登録機関を必要としないため,
それぞれのタグの一意性の確保はタグ製作者に任されている。
データ値及びタイプは,8.5及び8.6で定義される。ソフトウェア識別タグ作成に使用しなければならな
い形式をもつXML構文が例示されている。どの情報がデータ値に含まれるべきかという付加的な用例も
示されている。
データ値(8.5参照)は,ソフトウェアコンポーネントについて特定の識別情報を提供する
"SoftwareIdentity"のXML要素である。データ値は,ソフトウェアコンポーネントの名称,バージョン,ソ
フトウェアコンポーネントがパッチであるかどうかなどの詳細を含んでいる。
データタイプ(8.6参照)は,要素及び属性のデータで使用されるXMLのタイプである。
8.2
要求されている最低限のSWIDタグデータ値
SWIDタグの生成で複数の使用事例を識別するため,SWIDタグの最低限のデータ要件は比較的少ない。
SWIDタグがXMLスキーマの要件を満たして“有効”とみなされるために必須の(唯一の)項目(value)
は,次によらなければならない。
− SoftwareIdentity(8.5.1)
− name
− tagId
− Entity(8.5.2)
− "TagCreator"のrole(最低限)
− "TagCreator"のregid(最低限)
− "TagCreator"のname(最低限)
また,"SoftwareIdentity"要素の中の幾つかのSWIDタグ属性は省略値をもつ。これらには,次のものが
ある。
− SoftwareIdentity(8.5.1)
− Entity.regid 省略値は"http://invalid.unavailable"
− patch 省略値は 偽(false)
− supplemental 省略値は 偽(false)
− tagVersion 省略値は"0"
− version 省略値は"0.0"
− versionScheme 省略値は"multipartnumeric"
これらの省略値は,その属性に値が含まれない場合,SWIDタグが主タグの最初のバージョンであり,
ソフトウェア製品のバージョン番号が0.0であるということを示す。
ソフトウェアコンポーネントの"name","tagId"及び"TagCreater"だけを特定するSWIDタグは有効な
SWIDファイルであるが,その情報がSWIDタグを使うプロセスにおいて十分であるとはいえない。8.3は
IT組織がSWIDタグに含まれること期待しているSWIDタグデータの詳細を記述する。
16
X 0164-2:2018 (ISO/IEC 19770-2:2015)
8.3
推奨されているSWIDタグデータ値
SWタグが適用される種々の使用事例のため,それらはある事例において利用できないため,多くのデ
ータ属性はオプションとして特定される(例えば,ある組織は製品のバージョン番号を記述しない場合が
ある。これは一般的ではないが,ソフトウェア製品のSWIDタグを生成するツール又はサービスプロバイ
ダによって,この要素が特定されないか又は不明な場合がある。)。
しかし,ほとんどのソフトウェア製品について,次に示すデータ要素は,可能な限り利用できるように
することが望ましい。このことが,組織に対しITプロセスのより完全な自動化を可能にする。
a) SoftwareIdentity(8.5.1)
1) name
2) tagVersion
3) tagId
4) version
5) versionScheme
b) Entity(8.5.2)
1) name
2) regid
3) role[最低限の要件は"tagCreator"(タグ生成者)の役割が指定されることである。]
同様に,次のデータはITの自動化プロセスを支援するために可能な限り提供されることが望ましい。
a) SoftwareIdentity(8.5.1)
1) patch(このタグがパッチに関するデータを提供する場合)
2) supplemental(このタグが別のタグに追加情報を提供する場合)
b) Entity(8.5.2,可能な限り属性"role"が"softwareCreater"及び"licenser"のデータも同様に提供)
c) Meta(8.5.5)
1) product(製品名だけで,エディション,俗称的なバージョン又はサービスパックの情報は含まない。)
このSWIDに特定されたソフトウェアが次のような命名構造を使用する場合,それらは人間の利便性と
他のITシステムとが自動化のために情報を利用できるという両方のために提供されることを推奨する。
− edition
− colloquialVersion
− revision
8.4
XML要素及び属性名
8.4.1
概要
ソフトウェア識別タグの内容は,8.5で定義されるXML要素及び属性に従って記述されなければならな
い。この命名の要件は,タグデータの生成者又は使用者に関係なく,ソフトウェア識別タグの内容の一貫
した相互運用性を保証する。
SWIDタグのデータ値は,XML要素(XML属性を含む。)又はXML属性(実際のデータ値を含む。)と
して構造化できる。8.5及び8.6の表説明の左列に対する次の規則は属性及び要素を区別する。
要素はパスカルケース(最初が大文字)で記述する(ThisIsAnExample)。
属性はキャメルケース(最初が小文字)で記述する(anotherExampleIsLikeThis)。
さらに,必須の要素は太字で示される。
17
X 0164-2:2018 (ISO/IEC 19770-2:2015)
特に断りのない限り,要素はSWIDタグ生成者の要求によって複数回繰り返すことができる。
8.4.2
許可されている追加の属性
この規格は,次のようなW3C属性を任意の要素に対して使うことができる。
− lang この属性は,指定された要素で指定された文字列の言語を指定し,特に指定しない限り,全て
の子要素のlangを定義する。
− id この属性は,XMLファイル内で一意の要素に一意のidを提供する。id属性は,XML XPATH引数,
又はツールベンダーが要求する他のXML処理が使用できる。
− <namespace:any> 属性が名前空間で定義されている場合は,要素に他の属性を含めることができる。
これによって,ベンダー,顧客,及びツールに,市場で一般に知られているかいないかにかかわらず,
独自の属性を含めることができる。
注記 この細分箇条は,“ISO/IEC 19770-2 Ed2 DCor1”において承認された内容を追加したものであ
る。国際規格としての正誤は確定していないが,この規格ではこれを独自に追加したものであ
る。B.2のXMLスキーマにも“BaseElement"タイプに"id"属性を追加している。
8.5
データ値
8.5.1
SoftwareIdentity
要素名
SoftwareIdentity
説明
ソフトウェアコンポーネントに関するデータを指定するルート要素を示す。
注記 ソフトウェア製品は,一つ以上のソフトウェアコンポーネントで構成される。また,ソフトウ
ェアコンポーネントは,一つ以上のコンポーネントで構成される。各コンポーネントは,自身
のSWIDタグをもち,どのコンポーネントにも一つだけ"SoftwareIdentity"が存在する。
属性又は要素 タイプ
必須/省略値
定義
Entity
Entity
(8.5.2参照)
役
割
が
"tagCreator"の
場合には必須,
他は任意
このSWIDタグに対し責任をもつ組織を特定する要
素。
Evidence
ResourceCollection
注記 "Evidence"
と
"Payload"との区別に
ついては,Evidence
のセクションを参
照。
"Evidence"
は
"ResourceCollenction"
に加えて二つの値,
日付及びデバイスを
使用する(8.5.3参
照)。
任意
この要素は,SWIDタグをもたないソフトウェアが発
見されたシステムスキャンの結果を提供するために
使用される。この情報はソフトウェア開発者からは
提供されず,代わりにシステムがスキャンされた時
に生成される。そして,ソフトウェアがデバイスに
インストールされたと判断される理由についての証
拠が"Evidence"要素にて提供される。
注記 "Evidence"は,証拠が取集された日付及びデバ
イスを含むこと以外は"Payload"と同等である。
18
X 0164-2:2018 (ISO/IEC 19770-2:2015)
Link
Link(8.5.4参照)
任意
他のアイテムを参照するための要素[ソフトウェア
をダウンロードできる場所の情報,ぜい(脆)弱性
データベース関連,使用権などのSWIDタグに関連
する詳細情報を含めることができる。]。
注記1 これは,HTML[LINK]要素に直接一致するよ
うにモデル化されている。これらは,一貫性
を維持するソフトウェア検出シナリオの合
理化のために重要である。
注記2 "Link"要素は必須項目になっていないが,
"patch"属性が真(true)の場合には定義しな
ければならないことが5.3.3に規定されてい
る。この点,XSDの定義では宣言されてい
ないが注意する。
Meta
SoftwareMeta(8.6.11参照) 任意
このSWIDに関連する任意のキー/値のペアのデー
タを示す要素。
配下に示す属性は,業界を通じて共通の使用方法を
保証するために事前に定義されている。新しい属性
のための業界規範が定義され,可能な範囲で従うこ
とが推奨されているが,スキーマはSWIDタグに含
まれる任意の追加属性を許している。
Payload
ResourceCollection
注記 "Payload"
と
"Evidence"との区別
については,Payload
のセクションを参
照。
"Payload"
は
"ResourceCollection"
を使用する(8.5.6参
照)。
任意
ソフトウェアがインストールされるときにデバイス
にインストールする項目を特定する要素。"Payload"
は,インストールされる項目の上位集合であるが,
デバイスの最適化システムに依存するので,ソフト
ウェアがインストールされるとき,デバイス上に生
成又は実行される全ての項目を含んでいることもい
ないこともあることに注意する。
一般的に,ペイロード(payload)はソフトウェア製
品とともにインストールされるファイルを示すため
に利用され,大抵はそれらのファイルの上位集合で
ある(すなわち,ある特定の任意のコンポーネント
がインストールされない場合,そのコンポーネント
に関連するファイルはPayloadに含まれるが,デバイ
スにはインストールされない。)。
corpus
boolean
偽(false)
真(true)の場合,この属性はこのSWIDタグがソフ
トウェアコンポーネントのプリインストールデータ
を記述した情報の集合であることを示す。
patch
boolean
偽(false)
真(true)の場合,この属性はこのSWIDタグがある
製品のパッチ又は異なるソフトウェア要素への修正
であることを示す。
media
string
(Media)
任意
"media"はこのSWIDタグが適用されるプラットフォ
ームの特性を記述する方法を示す(8.5.4の"Link"要
素の"media"属性を参照)。
name
string
必須
この属性は通常の参照で使われるソフトウェアコン
ポーネントの名称を提供する。例えば,Windowsデ
バイス上の追加及び削除(現在のプログラム及び機
能)ダイアログ内で参照される名称,又はLinuxデバ
イス上でパッケージソフトウェア製品又はパッチ識
別名として表示される名称である。
19
X 0164-2:2018 (ISO/IEC 19770-2:2015)
supplemental
boolean
偽(false)
真(true)の場合,このタグは,ソフトウェア情報の
完全な記録を作成するために主タグデータに集約で
きる追加タグのデータであることを示す。
追加タグは,しばしばインストール時に提供され,
異なる組織(タグ使用者又は付加価値再販業者のよ
うな)によって提供される。
tagId
string
必須
"tagId"はグローバルに一意な識別子でなければなら
ず,GUIDが割り当てられることを推奨する(GUID
の定義について,ISO/IEC 19770-5を参照)。
"tagId"は製品,バージョン,エディション,リビジョ
ンなどの判別に使われる。
二つの"tagId"が等しく,かつ,"tagCreater"が同じであ
る場合,それらが表す基礎となる製品が同じである
と予想される。あるソフトウェアリリースが複数の
プラットフォームで使用可能な場合,それぞれのプ
ラットフォームでユニークな"tagId"をもつことを推
奨する。しかし,幾つかの既存の開発過程で,異な
るプラットフォーム上で利用可能な同じリリース製
品に対して同じ"tagId"を使用することが認められて
いる。
このことは,ソフトウェア台帳で容易に利用可能な
特定の"tagId"の値を参照することによって,あるソフ
トウェア項目(例えば,あるパッチ)がインストー
ルされているかどうかを識別するITシステムを簡単
化する。
可能ならば,この領域に16バイトのGUIDを利用す
ることを推奨する。これは,記憶域に対し重大の負
荷をかけることなくグローバルな一意性を提供す
る。
16バイトのGUIDが使えないならば,テキストベー
スのグローバルに一意なIDを作る必要がある。この
IDは,"tagCreater"のための一意な命名機関と"tagId"
とがソフトウェア製品,バージョン,エディション,
リビジョンなどに対して一意であるために十分に追
加された詳細情報を含む必要がある。これは次のよ
うなものが考えられる(+は文字列の連結記号)。
regid + productName + version + edition + revision + …
tagVersion
integer
0
"tagVersion"は,ソフトウェア製品のある特定のリリ
ースがそのリリースを表すことができる一つ以上の
タグをもつことを示す。これは,ソフトウェアのタ
グ製作者が正しくないタグを生成してリリースし,
後から修正を希望するが,SWIDタグが表す製品に根
本的な変更が伴わない場合である。例えば,あるパ
ッチが,適用できる様々なソフトウェアリリースの
全ては網羅していないLink参照をもって配布された
場合に起こり得る。そのパッチのための新しいSWID
が生成され,"tagVersion"の値はデータが修正された
ことを示すために加算される。
version
string
0.0
ソフトウェアコンポーネントの基礎となる開発バー
ジョン。
20
X 0164-2:2018 (ISO/IEC 19770-2:2015)
versionScheme VersionScheme
(8.6.13参照)
multipartnumeric
バージョン番号に使用されるスキーマ。
例
<SoftwareIdentity
xmlns=”http://standards.iso.org/iso/19770/-2/2015/schema.xsd”
xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
xmlns:ds=”http://www.w3.org/2000/09/xmldsig#”
xsi:schemaLocation=”http://standards.iso.org/iso/19770/-2/2015/schema.xsd”
name=”ACME System Protection”
tagId=”iso-sid-app-acme-endpoint-protection-v12-1-mp1”
version=”12.1.1”
versionScheme=”multipartnumeric”/>
次に“corpus”タグの例を示す。
<?xml version=”1.0” encoding=”utf-8”?>
<SoftwareIdentity
xmlns=”http://standards.iso.org/iso/19770/-2/2015/schema.xsd”+
xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
xmlns:ds=”http://www.w3.org/2000/09/xmldsig#”
xmlns:SHA256=”http://www.w3.org/2001/04/xmlenc#sha256”
xsi:schemaLocation=”http://standards.iso.org/iso/19770/-2/2015/schema.xsd”
name=”ACME System Protection”
tagId=”iso-sid-app-acme-endpoint-protection-v12-1-mp1”
version=”12.1.1”
versionScheme=”multipartnumeric”
corpus=”true”>
<Payload>
<File name=”EPV12.cab”size=”1024000”
SHA256:hash=”a314fc2dc663ae7a6b6bc6787594057396e6b3f569cd50fd5d-
db4d1bbafd2b6a” />
<File name=”installer.exe” size=”524012”
SHA256:hash=”54e6c3f569cd50fd5ddb4d1bbafd2b6ac4128c2dc663ae-
7a6b6bc67875940573” />
</Payload>
</SoftwareIdentity>
8.5.2
Entity
要素名
Entity
説明
このSWIDタグによって参照されるソフトウェアコンポーネントに関連する組織を特定する。
属性又は要素 タイプ
必須/省略値
定義
Meta
Meta
任意
組織に関する任意のメタデータである要素の無制限の集
まり。
name
string
必須
SWIDタグ内で特定の"role"を宣言した組織の名称。
regid
string
http://invalid.unavailable
組織の"regid"。"regid"が分からない場合,
http://invalid.unavailableが省略値。
(この値の詳細については,参考文献[4]を参照)
role
Role
NMTOKENS
(8.6.10参照)
"tagCreator"の役割は
必須
この組織とこのタグとの関係。例えば,softwareCreator(ソ
フトウェア開発者),licensor(ライセンス提供者),
tagCreator(タグ生成者)など。
tagCreatorの役割"role"属性は,全てのSWIDタグに必須と
される。
役割"role"属性は任意の値を含んでいてもよいが,あらか
じめ定義された役割"role"属性の値には次のものがある。
− aggregator
21
X 0164-2:2018 (ISO/IEC 19770-2:2015)
− distributor
− licensor
− softwareCreator
− tagCreator
他の役割"role"属性は,市場がSWIDタグを使用する際に
定義される。
thumbprint
string
任意
SWIDタグが署名されている場合,この値は組織証明のハ
ッシュ値(又は指紋)を含む16進数の文字列を提供する。
これによって,デジタル署名を指定された組織に直接関連
付けることができる。指紋を含むSWIDのentity要素は,
関係の正当性を明らかにするために署名に含まれなけれ
ばならない。
例
<Entity
name="Acme, Inc."
regid=" acme.com"
role="softwareCreator licensor tagCreator"/>
<Entity
name=”Fabrikam, Inc."
regid="fabrikam.com"
role="distributor"/>
8.5.3
Evidence
要素名
Evidence
(二つの追加データ要素をもつResourceCollectionタイプ)
説明
Evidence要素は,SWIDタグ内に一つのエントリだけ定義できる。
Evidenceは,Payloadと非常に似た構造になっており,Evidence及びPayloadは両方とも
ResourceCollectionタイプ(8.6.9参照)を使っている。Evidenceには,証拠が集められたときの
date及びdeviceIDの属性を追加している。
この要素は,SWIDタグをもっていないソフトウェアが検出されたとき,システムのスキャンか
ら結果を提供するために使用される。この情報は,ソフトウェアの開発者によって提供されてい
ないが,代わりにシステムがスキャンされたときに生成され,ソフトウェアがデバイスにインス
トールされた証拠としてEvidence要素に提供される。
Evidence要素を含んだSWIDタグは使用するツールに基づいており,これらのタグは,一時的で
あるか(証拠を含んだタグがサーバに返したとき又はツールが,その後,デバイスにインストー
ルされたタグを識別した場合。),又は永久的である(タグデータをより動的又はクライアント中
心でSWIDタグがどうあるべきかを識別するために利用されている場合。)。
属性又は要素
タイプ
必須/省略値
定義
date
datetime
任意
証拠が集められた日付及び時刻。
deviceId
string
任意
証拠が集められたデバイスの識別子。
attributes from
ResourceCollection
ResourceCollection
(8.6.9参照)
任意
"Evidence"データを定義するときに使わなければならない
"ResourceCollection"(8.6.9)からの要素。
注記 対応国際規格では,"Payload"となっていたが,明ら
かに"Evidence"の誤りである。
22
X 0164-2:2018 (ISO/IEC 19770-2:2015)
例 この例では,次のような追加の名前空間が,XMLの記述に追加されており,次の名前空間の定義を用いてファイ
ルのハッシュが識別されている。
− xmlns:SHA256="http://www.w3.org/2001/04/xmlenc#sha256"
− xmlns:MD5="http://www.w3.org/2001/04/xmldsig-more#md5"
− xmlns:SHA1="http://www.w3.org/2000/09/xmldsig#sha1"
<Evidence date="08‐18‐2013" deviceId="pc123.corp.somecompany.com" >
<File name="foo.txt"
SHA256:hash="9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08"
MD5:hash="098f6bcd4621d373cade4e832627b4f6"
SHA1:hash="a94a8fe5ccb19ba61c4c0873d391e987982fbbd3" />
</Evidence>
8.5.4
Link
要素名
Link
説明
任意の他の項目に対する参照[ソフトウェアダウンロードの場所,ぜい(脆)弱性データベース関連,
使用権などの詳細のようなSWIDタグに関する詳細を含むことができる。]。
注記 これは,直接HTML[LINK]要素に合わせてモデル化される。これらは矛盾ないソフトウェア検
出のシナリオを合理化するポイントとなる。参考文献[3]参照。
属性又は要素 タイプ
必須/省略値 定義
artifact
string
任意
インストールメディア(rel="installationmedia")。対象資源の正規名を
記述する。
同じartifactの名前をもつものは,お互いのミラーサイトとみなされ
る。
href
anyURI
必須
参照されている項目へのリンク。
注記1 hrefは幾つかの異なるものを指定でき,次のようなものが挙
げられる。
− 文脈に応じて解釈される相対URI(スキームなし)。
(例 ./folder/supplemental.swidtag)
− システムで許容されるURIスキームによる物理的なフ
ァイルの位置(例 file:// http:// https:// ftp:// ...など)
− スキームとして“swid:…”と一緒に使うURIでtagIdに
よって他のswidを参照する。このURIは,他のswidtag
ファイルを調べることができるソフトウェアによるシ
ステムで解決される必要がある(例
"swid:2df9de35-0aff-4a86-ace6f7dddd1ade4c")。
− スキームとして“swidpath:…”と一緒に使うURIで
XPATHクエリを含む。このURIは,他のswidtagを調べ
ることができ,XPATHクエリに基づく適切なswidtagを
選択できるソフトウェアによってシステムで解決され
る必要がある。
例
・ swidpath://SoftwareIdentity[Entity/@regid=
'http://contoso.com']は,regidが“contoso”であ
る組織がもつ全てのswidtagを参照できる。
・ swidpath://SoftwareIdentity[Meta/@persistentId=
'b0c55172-38e9-4e36-be86-92206ad8eddb']は,特定
のpersistentIdに合う全てのSWIDタグを解決でき
る。
W3C勧告,XML Path Language (XPath) 2.0 (Second Edition)を参照。参
考文献[12]。
Link要素ごとに一つだけのhref属性が付けられるが,複数のLink要
23
X 0164-2:2018 (ISO/IEC 19770-2:2015)
素をSWIDタグに記述できるので,複数URIを参照できる。
注記2 対応国際規格では,参考文献[12]が直接記載されている。
media
string (Media)
任意
リンクの対象が現在のプラットフォーム(ホスト環境)に適用してい
るかどうかの判定に使える表現。
リンクコンポーネントが使えないときに幾つかを無視できるかシス
テムに通知する最適化のヒントとして使う。
このストリング形式はW3C勧告,媒体参照でモデル化されている。
参考文献[12]参照。
注記 対応国際規格では,参考文献[12]が直接記載されている。
これは一つのOPERATORで接続された一つ以上のEXPRESSIONで
ある。
media="EXPRESSION [[OPERATOR] [EXPRESSION]...]"
EXPRESSIONは,大文字・小文字を区別しない,次の両方の定義が
可能。
(ENVIRONMENT)
環境(OS)の存在を示す
又は
([PREFIX-]ENVIRONMENT.ATTRIBUTE:VALUE)
環境(OS)の属性比較を示す
ENVIRONMENTは,ソフトウェア,ハードウェアの機能又は意図し
た動作をしているソフトウェアのシステムを識別するテキスト識別
子である。
共通のENVIRONMENTには次のものが含まれる(制限はない)。
− linux
− windows
− java
− powershell
− ios
− chipset
− peripheral
ATTRIBUTEは特別な値をもつENVIRONMENTの一つの特性であ
る。
共通の属性には次のものが含まれる(制限はない)。
− version
− vendor
− architecture
PREFIXは次の一つで定義する。
− MIN # VALUEの最小値をもつ特性
− MAX # VALUEの最大値をもつ特性
もし,PREFIXがない場合,特性は等しくなければならない。
VALUE OPERATORは次の一つで定義する。
− AND
− NOT
例
media="(windows)"
# applies to only systems that identify themselves as
'Windows'
media="(windows) not (windows.architecture:x64)"
24
X 0164-2:2018 (ISO/IEC 19770-2:2015)
# applies to only systems that identify
# themselves as windows and are not for an x64 cpu
media="(windows) and (min-windows.version:6.1)"
# applies to systems that identify themselves as
# windows and at least version 6.1
media="(linux) and (linux.vendor:redhat) and
(min-linux.kernelversion:3.0)"
# applies to systems that identify themselves as
# linux, made by redhat and with a kernel version of at
least 3.0
media="(freebsd) and (min-freebsd.kernelversion:6.6)"
# applies to systems that identify themselves as
# freebsd, with a kernel version of at least 6.6
media="(powershell) and (min-powershell.version:3.0)"
# applies to systems that have powershell 3.0 or greater
プロパティは,多くの処理をすることなく,ホスト環境によって解決
することができる。
ownership
Ownership
(8.6.4参照)
任意
対象ソフトウェアのownershipの相対的強度を決める。
rel
NMTOKEN
(8.6.7参照)
必須
このSWIDタグと対象コンポーネントとの関係を格納する。
関係はIANAレジストレイションライブラリを参照する。参考文献[7]
を参照。
注記 対応国際規格では,必須項目が太字で記述されていなかったの
で修正した。
type
string
(MediaType)
任意
hrefの対象についてIANAが定めるMediaTypeで指定する。これは,
SWIDタグ使用者に何が使えるかという知識を与える。
リンクタイプの詳細は参考文献[8]を参照。
use
Use
(8.6.12参照)
任意
対象コンポーネントの必要性を示す。
注記 対応国際規格では,"use"属性の“タイプ”列の参照が“(see
8.7.7)”となっているが,“(8.6.12参照)”の誤りなので修正し
た。
例
<Link
rel=”component”
href=”swid:iso-sid-cmp-acme-endpoint-protection-manager-v12-1-mp1”
use=”required”
ownership=”private”/>
“artifact”値を使用した例。同じ”artifact”値の参照はそれぞれ別の場所のインストールファイルをアクセスする。次
の例は二つの異なるインストールの選択がある。
<!-- インストール媒体へのリンク。 ʻartifactʼが同じ要素は,同じ製品が異なる場所にあることを意味する -->
<Link rel=”installationmedia” media=”(windows) and (windows.architecture:x64)”
artifact=”windows-installer-x64”
href=”http://fabrikam.com/downloads/webserver-2.2-x64.msi” />
<Link rel=”installationmedia” media=”(windows) and (windows.architecture:x64)”
artifact=”windows-installer-x64”
href=”http://mirror.fabrikam.com/downloads/webserver-2.2-x64.msi” />
<Link rel=”installationmedia” media=”(windows) and (windows.architecture:x64)”
25
X 0164-2:2018 (ISO/IEC 19770-2:2015)
artifact=”windows-installer-x64”
href=”http://downloads.contoso.com/downloads/webserver-2.2-x64.msi” />
<!-- インストール媒体へのリンク。 ʻartifactʼが同じ要素は,同じ製品が異なる場所にあることを意味する -->
<Link rel=”installationmedia” media=”(windows) and (windows.architecture:x86)”
artifact=”windows-installer”
href=”http://fabrikam.com/downloads/webserver-2.2.msi” />
<Link rel=”installationmedia” media=”(windows) and (windows.architecture:x86)”
artifact=”windows-installer”
href=”http://mirror.fabrikam.com/downloads/webserver-2.2.msi”/>
<Link rel=”installationmedia” media=”(windows) and (windows.architecture:x86)”
artifact=”windows-installer”
href=”http://downloads.contoso.com/downloads/webserver-2.2.msi” />
8.5.5
Meta
要素名
Meta(8.6.11のSoftwareMeta参照)
説明
このSWIDに関連するキー/値データは無制限の集まりである。
SoftwareIdentityで使用されるMetaは,SoftwareMetaタイプで指定された属性の使用を認めている。
そしてこの標準/XSDで定義されているかどうかに関係なく,追加の属性も許可している。
これによって,必要に応じて追加のメタデータを含むことでタグ生成者(tagCreator)に柔軟性を与
えている。
注記 追加のMeta属性に対する宣言は"lax"として定義される。
属性又は要素
タイプ
必須/省略値
定義
<any>
定義による
任意
名前空間で定義される追加属性。このことは,タグ生成者が
拡張して定義できるMeta値を可能にしている。
attributes from
SoftwareMeta
SoftwareMeta
任意
この要素は"SoftwareIdentity"要素の範囲内で使用される場
合,SofwareMeta(8.6.11)の属性が,正規化の目的であらか
じめ定義されている。
8.5.6
Payload
要素名
Payload(ResourceCollectionタイプ)
説明
"Payload"要素は,SWIDタグ内に一つだけ定義できる。
注記 対応国際規格では,"Evidence element"となっていたが,明らかに"Payload element"の誤りで
あり,この規格でも修正した。
ソフトウェアがインストールされるときデバイスにインストールされる項目である。"Payload"は,
インストールされる項目の上位集合であり,デバイスの最適化システムに依存するので,ソフト
ウェアがインストールされたデバイス上で生成又は実行される全ての項目を含むか又は含まない
かに注意する。
一般に,ペイロード(payload)は,ソフトウェア製品と一緒にインストールされるべきファイル
を示すために使われ,それらの上位集合である(すなわち,特別な選択コンポーネントがインス
トールされないならば,そのコンポーネントに関連したファイルはペイロードに含まれ,デバイ
スにはインストールされていないことになる。)。
属性又は要素
タイプ
必須/省略値
定義
ResourceCollection
からの属性
ResourceCollection
(8.6.9参照)
任意
Payloadデータを定義するときに使われる
ResourceCollection(8.6.9)からの要素。
26
X 0164-2:2018 (ISO/IEC 19770-2:2015)
例 この例では,次の追加の名前空間は,XMLの使用中に添加し,次の名前空間の定義を用いてファイルのハッシュ
が識別されている。
- xmlns:SHA256=”http://www.w3.org/2001/04/xmlenc#sha256”
- xmlns:MD5=”http://www.w3.org/2001/04/xmldsig-more#md5”
-xmlns:SHA1=”http://www.w3.org/2000/09/xmldsig#sha1”
<Payload>
<File name=”foo.txt” size=10354
SHA256:hash=”9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd-
15d6c15b0f00a08”
MD5:hash=”098f6bcd4621d373cade4e832627b4f6”
SHA1:hash=”a94a8fe5ccb19ba61c4c0873d391e987982fbbd3” />
</Payload>
8.6
タイプ及び属性の定義
8.6.1
Directory
名前
Directory
データのタイプ
Complex Type
FileSystemItemの拡張(8.6.3参照)
定義
Payload又はEvidence要素の中で定義されたファイルに対して,ディレクトリ構造を適用するため
の機能を提供する。
定義値
値
タイプ
意味
Directory
Directory
(8.6.1参照)
Directory要素は,ファイル構造の中で一つ以上のディレクトリ
定義を可能とする。
File
File
(8.6.2参照)
File要素は,指定された位置に対して一つ以上のファイル指定を
可能とする。
FileSystemItem
の属性
FileSystemItem
(8.6.3参照)
このファイルに関する追加のMetaデータ。
例 次の例は,Microsoft Windowsプラットフォーム向けに作成されている。しかしながら,どんなプラットフォーム
でも同様の方法で使用することができる。既知のディレクトリとしてシステム変数が存在する場合は,それらの
変数を使用することができる。また,その他のインスタンスでは,環境変数を使用してもよい。次の例で
は,%programdata%が“c:¥programdata”を参照している場合,いずれの例も次のファイルを参照する。
c:¥programdata¥printerco¥printermodel¥colordriver.dll
<Payload>
<Directory root=”%programdata%” name=”printerco”>
<Directory name=”printermodel”>
<File name=”colordriver.dll” size=”234824”
SHA256:hash=”186a46b8d7645ec498d5efc02f53e3f5e1df1710796db4e2b071108f654ba02a” />
</Directory>
</Directory>
</Payload>
-or-
<Payload>
<Directory root=”%programdata%”>
<Directory name=”printerco”>
<Directory name=”printermodel”>
<File name=”colordriver.dll” size=”234824”
SHA256:hash=”186a46b8d7645ec498d5efc02f53e3f5e1df1710796db4e2b071108f654ba02a” />
</Directory>
</Directory>
</Directory>
</Payload>
27
X 0164-2:2018 (ISO/IEC 19770-2:2015)
8.6.2
File
名前
File
データのタイプ
Complex Type
FileSystemItemの拡張(8.6.3参照)
定義
ファイルの検証,ファイルが存在するかどうかの識別,あるアプリケーションとの関連ファイルな
ど,様々なIT要求事項に対して使うことができる,ファイル情報を提供する。
Evidence及び/又はPayloadデータとして使用することができる。
定義値
値
タイプ
意味
name
string(必須)
パス文字がないファイル名。
注記 "name"属性がこの表で説明されているが,実際の
スキーマでは"FileSystemItem"の属性として宣言さ
れている。また,string(必須)となっていること
から太字にすべきだが,8.6.3のFileSystemItemで
説明しているので修正しないこととした。
size
integer
バイト単位のファイルサイズ。
version
string
指定可能な場合,ファイルのバージョン。
FileSystemItemの属性 FileSystemItem
(8.6.3参照)
ファイルに関する追加のMetaデータ。
例 ファイルはファイル名,ファイルサイズ及びハッシュコードが全て一致することで,ファイルがどのような方法
でも変更されていないことを,各種レベルで保障するハッシュ値も含めることができる。これらハッシュの値は,
追加の属性の中で,アルゴリズム種別を定義するための特別の名前空間を使用することによって提供される。次
の例では,追加の属性及びハッシュ値がSWIDタグファイルにどのように含まれるかについての詳細を示す。
<File name=”foo.txt” size=10354
SHA256:hash=”9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd-15d6c15b0f00a08”
MD5:hash=”098f6bcd4621d373cade4e832627b4f6”
SHA1:hash=”a94a8fe5ccb19ba61c4c0873d391e987982fbbd3” />
8.6.3
FileSystemItem
名前
FileSystemItem
データのタイプ
Complex Type
定義
Directory及びFileのための特定の属性を提供するだけでなく,属性を拡張するために使用される任
意の値を使用できるようにする(例えば,まだ定義されていないハッシュ値のような,様々なハッ
シュ値など。)。
定義値
値
タイプ
意味
key
boolean
ソフトウェアコンポーネントを利用する際に,ディレクトリが重要とみな
されるか,又は要求された場合,真(true)を指定する。典型的なkeyデ
ィレクトリは,もしシステムで利用可能でない場合,ソフトウェアが実行
できない原因となるものである。
Keyディレクトリは一般に,SWIDタグで参照されるソフトウェアが実際
に特定のコンピュータデバイス上にインストールされたことを明確にす
るために利用される。
location string
ファイルが見つかったか,又は位置が予測できるディレクトリ又は場所。
name
string(必須) パス文字列を除いたファイル又はディレクトリ名。
注記 対応国際規格では,"name"属性が,"String"となっていたが“string
(必須)”で太字表示に修正した。
root
string
システム固有のルートフォルダであり,"location"属性はルートフォルダか
らの相対位置となる。これが定義されなかった場合,"root"はSWIDタグ
の場所と同じフォルダとみなされるか,又はSWIDタグ要素の"Directory"
で囲まれた場所である。
28
X 0164-2:2018 (ISO/IEC 19770-2:2015)
<any>
<any>
SWIDタグ製作者が規約を拡張することができるように,追加の値が許可
される。
注記 <any>は,MetaがFileSystemItemのためのベースとなる型
(base="Meta")であるという事実に基づいている。
例 次の例は,Microsoft Windowsプラットフォーム向けに作成されている。しかしながら,どんなプラットフォーム
でも同様の方法で使用することができる。既知のディレクトリとしてシステム変数が存在する場合は,それらの
変数を使用することができる,また,その他のインスタンスでは,環境変数を使用してもよい。
次の例では,%programdata%が“c:¥programdata”を参照している場合,どちらの例も次のファイルを参照する。
c:¥programdata¥printerco¥printermodel¥colordriver.dll
<Payload>
<Directory root=”%programdata%” name=”printerco”>
<Directory name=”printermodel”>
<File name=”colordriver.dll” size=”234824”
SHA256:hash=”186a46b8d7645ec498d5efc02f53e3f5e1df1710796db4e2b071108f654ba02a” />
</Directory>
</Directory>
</Payload>
-or-
<Payload>
<Directory root=”%programdata%”>
<Directory name=”printerco”>
<Directory name=”printermodel”>
<File name=”colordriver.dll” size=”234824”
SHA256:hash=”186a46b8d7645ec498d5efc02f53e3f5e1df1710796db4e2b071108f654ba02a”
/>
</Directory>
</Directory>
</Directory>
</Payload>
8.6.4
Ownership
名前
ownership(列挙値)
注記 対応国際規格では,“名前”行が"Ownership(enumerated values)"となっていたが,誤植なので
修正した。
データのタイプ
NMTOKEN
定義
組織がこのSWIDタグにどのように関連しているかを指定する。この種別がどのように使われてい
るかの例は8.5.4を参照。
定義値
列挙値
意味
abandon
このSWIDタグが参照している項目がアンインストールされた場合,インストールされ
ている[Link]ソフトウェアは残す。
private
このSWIDタグが参照している項目がアンインストールされた場合,[Link]ソフトウェ
アも削除されることが望ましい。
shared
このSWIDタグが参照している項目がアンインストールされた場合,[Link]ソフトウェ
アは,他のソフトウェア項目がそのソフトウェアを共有していなければ,削除されるこ
とが望ましい。
例
<Link
rel=”component”
href=”swid:iso-sid-cmp-acme-endpoint-protection-manager-v12-1-mp1”
use=”required”
ownership=”private”/>
29
X 0164-2:2018 (ISO/IEC 19770-2:2015)
8.6.5
NMTOKEN及びNMTOKENS
NMTOKEN及びNMTOKENSはXMLのタイプでW3C勧告,XML Schema Part 2: Datatypes (Second
Edition)で定義されている。
DMTF(Distributed Management Task Force)の仕様,HTTP経由の共通情報モデル(CIM)の操作は,
(http://www.dmtf.org/sites/default/files/standards/documents/DSP200.html)W3Cコンソーシアムを参照。
NMTOKENは,string値,又はASCII文字で制限されたトークン(token)であり,NMTOKENSはその
値の組,又はASCIIの空白文字(#0x20)で区切られた複数のトークンである。更なる詳細はW3C勧告を
参照する。
8.6.6
Process
名前
Process
データのタイプ
Complex Type
定義
デバイスのプロセステーブルに現れるデータとしてのプロセス情報を提供する。
定義値
値
タイプ
意味
name
string(必須) デバイスのプロセステーブルで見つかるプロセス名。
注記 必須項目を太字に修正した。対応国際規格の誤植。
pid
integer(任意) 実行中プロセスのプロセスID。Process要素がEvidenceの一部として
含まれるときに,一般的に提供されるだけということに注意する。
8.6.7
Rel
名前
rel(列挙値)
データのタイプ
NMTOKEN
定義
[LINK]のターゲットがこのSWIDとどのように関連するかの指定。
定義値
値
意味
ancestor
このソフトウェアの継承元を定義しているSWIDタグへの参照。アップグレー
ドに使用される。
component
この製品のコンポーネント。
feature
"feature"は,どの物理ファイルも変更する必要がなく,個別に使用可能又は使用
不可にすることができるソフトウェア製品の一部を説明するための方法である。
installationmedia
このSWIDタグで識別されるソフトウェアのインストールに使用されるインス
トール媒体への[Link]。
packageinstaller
[Link]で参照されるソフトウェアパッケージのインストールに必要とされるツ
ール又は個人。
parent
[Link]参照するSWIDタグがこのSWIDタグの親であることを示す。
patches
パッチが適用される製品への参照。
requires
追加ソフトウェアインストールは,このSWIDタグに参照されるタイトルが適
切に機能するために必要とされる。追加ソフトウェアは,このSWIDタグを生
成したものとして同じグループ又は組織で管理されても,されなくてもよい(例
C/C++ランタイム,仮想マシンなど)。
SoftwareIdentity.patchが真(true)ならば,このパッチはまずインストールされる
べき他のパッチを必要とすることをrelを使用して示す。
see-also
このSWIDタグで識別するソフトウェアに関連するソフトウェアのその他の事
項。これらは,デバイスのユーザ及び管理者にとって関心のありそうなアドオン,
又は他の拡張とすることができる。
supersedes
このrel値はSoftwareIdentity.patchが真(true)で,このパッチを置き換える他の
パッチへのリンクの指定とともに使われる。
supplemental
このSWIDの追加情報を表す。これは,インストール目的のような,コンプラ
イアンス マネージャにヒントを提供することができる,ソフトウェア製品のた
めの追加情報を提供するために使われる。
30
X 0164-2:2018 (ISO/IEC 19770-2:2015)
<any>
追加の関係が使用できる。参考文献[7]を参照。
8.6.8
Resource
名前
Resource
データのタイプ
Complex Type
定義
デバイスにインストールされたアプリケーション,又はデバイスから収集した証拠についての任意
のリソース情報を提供するために利用することができる。
定義値
値
タイプ
意味
type
string(必須) レジストリキー,ポート,ルートURLなどの情報が記載されるリ
ソースの種別。
注記 必須項目を太字に修正した。対応国際規格の誤植。
<any>
<any>
ResourceはSWIDタグで含まれる任意の属性を許可する。
8.6.9
ResourceCollection
名前
ResourceCollection
データのタイプ
Complex Type
定義
Payloadで使われるこのタイプはデバイスに何がインストールされたかの詳細を提供する。Evidence
で使われるときは,何がデバイスの検証プロセスで発見されたかを示す。
定義値
値
タイプ
意味
Directory
(8.6.1参照)
Directory
ディレクトリ要素には,ファイル構造として定義された一つ以上
のディレクトリを指定できる。
File
(8.6.2参照)
File
インストールされたファイル。
Process
(8.6.6参照)
Process
デバイスで見つかったプロセス。
Resource
(8.6.8参照)
Resource
インストールで含まれる,追加生成される一般的なリソース(/dev
のエントリ,レジストリー設定,など)。
8.6.10 Role
名前
role
データのタイプ
NMTOKENS
定義
組織がこのソフトウェアに対してどのように関係するかを指定する。
注記 使用に際して事前に定義された値を推奨するが,新しい役割は市場ニーズの変化に応ずるこ
とが求められる。このタイプは要求に応じて追加の値を定義できる機能が求められる。
定義値
値
意味
aggregator
自社及び/又は他の組織のソフトウェアを異なる配布プロセス(仮想化の場合),
又は特定のタスクを達成するための完成したシステム(付加価値再販業者の場合)
にカプセル化する組織又はシステム。
distributor
マーケティングを促進し,販売及び/又は製造元の場所から最終ユーザまでソフ
トウェア,パッケージ又はラベルを修正することなく配布する団体。
licensor
ソフトウェアライセンス提供者(ISO/IEC 19770-5を参照)
softwareCreator
ソフトウェア開発者(ISO/IEC 19770-5を参照)
tagCreator
タグ生成者(ISO/IEC 19770-5を参照)
<any>
SWIDタグ製作者が拡張を許した追加の値。
31
X 0164-2:2018 (ISO/IEC 19770-2:2015)
8.6.11 SoftwareMeta
要素名
SoftwareMeta
説明
"SoftwareMeta"は,このSWIDに関連するキー/値データの無制限の集まり。
次に説明する属性は業界標準である。スキーマは任意の追加属性をSWIDタグで定義できるが,新
たな属性のために業界標準が定義され,可能な程度に追従されることが推奨される。
注記 追加のSoftwareMeta属性に対する宣言は"lax"として定義される。
属性又は要素
タイプ
必須/省略値 定義
activationStatus
string
任意
このソフトウェアタイトルのアクティベーション状態の識別(例えば,
Trial,Serialized,Licensed,Unlicensedなど)。通常は,追加タグに記入
される。
channelType
string
任意
このソフトウェアの想定する流通経路の情報を指定する(例えば,
Volume,Retail,OEM,Academicなど)。通常は,追加タグに記入される。
colloquialVersion string
任意
このソフトウェアの非公式又は俗称的なバージョン名を格納する(すな
わち,"2013")。このバージョンは,ソフトウェア製品の複数のリリース
を通して同じであることに注意する。"SoftwareIdentity"で定義されるバー
ジョンは,より多くの記述があり,ソフトウェアのリリースごとに変化
する。
このバージョンの表現は典型的に同じリリース及びサポートされたイン
フラの一部である特別なソフトウェアのリリースのグループを識別する
のに使われる(すなわち,Fabrikam Office 2013)ことに注意する。この
バージョンはストリング比較としてだけ使われ,前か後かのリリースで
あることのためには比較されない(そのような比較は"SoftwareIdentity"
のバージョンで行われる。)。
注記 "SoftwareIdentity"のところは,対応国際規格で,"SoftwareEntity"と
なっていたが,対応国際規格の誤植である。
description
string
任意
ソフトウェアのより長い,詳細の仕様を記述する。この記述は複数の文
が許される(非常に短く,1文で記述する"summary"との違いはここにあ
る。)。
edition
string
任意
この製品のエディション(例えば,"Extended","Enterprise","Professional",
"Standard"など)。
entitlementData
Required
boolean
任意
ソフトウェアライセンスのひも付けが完了したときに権利の証明がある
かどうかを決定する識別子。
entitlementKey
string
任意
権利証明のひも付けに使えるベンダーの特別なキー文字列(例えば,シ
リアル番号,プロダクト又はライセンスキー)。
generator
string
任意
SWIDタグを生成したツールのソフトウェア名。この要素はタグが,コ
ンピュータデバイスで検出されたデータの解析に基づき,自動的に作成
されたか,又はカタログに基づくものかの判定に使える。
persistentId
string
任意
製品に関係するが,異なったバージョンでもよいインストールされる製
品を表すのに使われるGUID。
product
string
任意
製品の名前(例えば,Office,Creative Suite,Websphereなど)
productFamily
string
任意
このソフトウェアが属する製品ファミリー名を記述する。製品ファミリ
ーはスイート製品の名称を識別するために使用されないが,関連がある
一組の製品の全てが複数の異なるデバイス上にインストールされると
き,その代わりに使われる。
例えば,ある企業のバックアップシステムがバックアップサーバ及び複
数の異なるバックアップシステムからなり,そのシステムがメールサー
バ,データベース及びERPシステムと同様にクライアントデバイスの個
別ソフトウェアファイルのバックアップもサポートしている。この場合,
バックアップシステムの全てのソフトウェアタイトルは,レポートシス
テムにおいてグルーピングされた同じ"productFamily"の名前で管理され
る。
32
X 0164-2:2018 (ISO/IEC 19770-2:2015)
revision
string
任意
この製品の非公式又は俗称的な補助バージョン名を格納する(例えば,
SP1,R2,RC1,Beta 2など)。"SoftwareIdentity.version"は正確なバージョ
ンを提供し,revisionは,ソフトウェアの非公式又は俗称的な報告が重要
であるような環境での使用を意図している(例えば,あるビジネスの過
程である組織が全てのデバイスでインストールされる製品のサービスパ
ック1かそれより新しいバージョンをもたなければならない場合,この
要件に合わないデバイスを簡単に見つけるために"revision"を使うことが
できる。)。
ソフトウェア組織がどのように改版を配付するかに依存するが,この値
は,(アップグレードとして配付されるならば,)主SWIDタグ又は(パ
ッチとして配付されるならば,)追加SWIDタグで識別できる。
summary
string
任意
ソフトウェアの短い(1文)説明。
unspscCode
string
任意
このSWIDタグを識別する,ソフトウェア製品の8桁のUNSPSC商品分
類コードを指定する。詳細は,参考文献[5]を参照。
unspscVersion
string
任意
unspscCodeに記述した際に参照した,UNSPSC商品分類コードの版数を
格納する。詳細は,参考文献[5]を参照。
<any>
定義に
よる
任意
名前空間で定義される追加属性。このことは,タグ生成者が拡張して定
義できるMeta値を可能にしている。
注記 persisitentId値の一つの表現として,Windowsインストールプロセスではアップグレードコードと呼ばれる。
http://msdn.microsoft.com/en-us/library/aa372375(v=vs.85).aspxはこの値の使い方の1例である。
<Meta
product=”Office”
edition=”Professional”
colloquilVersion=”2013”
revision=”SP1”/>
8.6.12 Use
名前
Use(列挙値)
注記 対応国際規格では,“名前”行が"Use (enumerated values)"となっていたが,誤植なので修正し
た。
データのタイプ
NMTOKEN
定義
[Link]で識別されたソフトウェアがインストールされたときの追加のヒントを提供する。
定義値
列挙値
意味
required
ソフトウェアのインストールで絶対的に要求される[Link]ソフトウェア。
recommended
絶対的な要求ではない。特に明記しなければ[Link]のソフトウェアがインストール
される。
optional
絶対的な要求ではない。明記してあるときだけ[Link]のソフトウェアがインストー
ルされる。
33
X 0164-2:2018 (ISO/IEC 19770-2:2015)
8.6.13 VersionScheme
名前
VersionScheme(列挙値)
注記 対応国際規格では,“名前”行が"VersionScheme (enumerated values)"となっていたが,誤植な
ので修正した。
データのタイプ
string
定義
バージョン番号で使用されるバージョンのスキーマのタイプを宣言する。
定義値
値
意味
multipartnumeric
ドットで区切られた数字で数字は整数と解釈される(例えば,1.2.3,1.4.5,
1.2.3.4.5.6.7など。)。
multipartnumeric+suffix
ドットで区切られた数字で,数字は追加の文字列接尾辞をもつ整数として
解釈される(すなわち,1.2.3aなど。)。
alphanumeric
厳密には文字列で,ソートは英数字で行われる。
decimal
浮動小数点の番号(例えば,1.25は1.3より小さい。)。
semver
セマンティックバージョン番号(semver.org)に従う。
unknown
この規格で定義されたバージョンに合わない,その他の未知のバージョン
のスキーマ。
<any>
市場でよく使われる他のバージョンのスキーマ。
34
X 0164-2:2018 (ISO/IEC 19770-2:2015)
附属書A
(参考)
改正におけるXSDの変更
A.1 概要
SWIDタグのXSD定義は,この規格の対応国際規格の初版(ISO/IEC 19770-2:2009)と今回の版との間
で著しい変更が行われている。これらの変更の理由は幾つかあるが,大きなものは次の三つの領域に大別
できる。
− データの管理及び効率化
− 市場での利用及びニーズの反映
− 市場での採用
それぞれの領域は,次の箇条で要約される。
この規格の今回の版では,新しいXSDへの移行において複数の方法が検討された。この分析の結果,既
にリリースされたソフトウェアのSWIDデータは変更されないことから,XSDの2009年版のSWIDタグ
でリリースされているソフトウェアは,変更せずに同じタグを使い続けることになる。さらに,新しいツ
ール及びソフトウェア発見の過程で使われる手順は,使用されている古いXSD構造を識別でき,古いSWID
タグからSWIDデータを使うことができることも明らかになった。SWIDタグはソフトウェアがアップデ
ートされるか,又はパッチ適用されるまで修正されないため,新しい規格のSWIDタグを発見するツール
は,いつでも利用できる状態にある異なるバージョンのSWIDデータ構造を認識することが重要である。
例えば,2009年版のSWIDタグのソフトウェア製品は,2009年版のSWIDタグ構造を使い続けるし,ま
た,この規格の今回の版を利用したパッチを含めることもできる。
この版のSWIDタグスキーマを利用したSWIDタグでリリースされたソフトウェア製品は,以前のタグ
を重複してもってはならない。
さらに,SWIDタグ生成ツールは新しくより効率的なXSDデータ構造をより容易に採用でき,利用者が
採用したSWIDタグに追加の値を加える能力が拡張されている。これらのツールが,複数の異なるSWID
タグ構造を作成することは期待できない。むしろ一つのバージョンのSWIDタグだけを作成する。市場状
況として新しいバージョンのSWIDタグの生成ツールの必要性を示すことによって,利用するXSDのバ
ージョンをアップグレードすることが期待できる。
A.2 データの管理及び効率化
2009年版のSWIDのXSDは,SWIDタグデータの管理又は解釈の効率のために最適化されていないし,
最低限の履歴管理も提供できていない。これらの問題は,小規模のソフトウェア開発者,又はツール提供
者にとって致命的ではないかもしれないが,企業市場に注目しているツール及びソフトウェアの開発者並
びにモノのインターネット(IoT)のサポートに注目している組織にとっては大きな影響がある。
この規格の今回の版は,2009年版で別々の要素であったデータ値をXML属性に整理統合するだけでな
く,ソフトウェア開発者が作成する全てのSWIDタグの共通情報を削除することによって,これらの問題
に焦点を当て,更にSWIDタグのサイズを縮小させている。
新しい要素及び属性の構造を使用することは,また,IT処理でSWIDタグデータのより効率的な処理を
可能とする。
35
X 0164-2:2018 (ISO/IEC 19770-2:2015)
A.3 市場での利用及びニーズの反映
多くのタグ生成ツール及びソフトウェア開発者は,ツール及びプロセスでSWIDタグを含めている。ほ
とんどの場合,プロセスは,自動化されているか自動化が望まれる。これは,新規又はアップグレードさ
れるツールの導入が,処理プロセス又はテストにほとんど影響しない容易なものであることを意味してい
る。一般的なニーズの反映では,既存のツールが新しいツールとして動作する限り長く投入されることで
ある。そして,新ツールの全体的な変更は低コストで管理が容易であることが望ましい。
さらに,現在,デバイスにインストールされているソフトウェアのSWIDタグを生成することができる
サードパーティのツール又は古いバージョンのXSDで識別されている全ての最小値を提供できないよう
なソフトウェア認識ライブラリもある。これらの製品又はライブラリを管理している組織は,例えば,2009
年版のXSDで記述された全ての必須要素が記述できるデータをもっていないときでさえ,適合するSWID
タグを生成することを要求する。
最終的に,デバイスにインストールされた実際のソフトウェアを利用者が適切に識別することを助ける
SWIDタグを含めるために,ソフトウェア開発者から強力な支援があった。以前のXSD構造をテスト及び
モデリング演習に使用する際に,取り組むべき幾つかの問題が明確になってきた。次に三つを列挙する(こ
の規格の今回の版において適切に管理される。)。
− SWIDタグを効果的かつ効率的に作成するために,ソフトウェア開発者はソフトウェア構築プロセス
で自動化されたサブプロセスとしてSWIDタグを生成(そして,できればデジタル署名)するプロセ
スを含めることが望ましい。この要求の大きな点は,ISO/IEC 19770-2の2009年版のXSDで求めら
れるあるデータ値が,ソフトウェア構築プロセスにおける実行させることが必要となるポイントで自
動的に提供できないということであった(例えば,権利情報が要求されているかどうか。)。
− ソフトウェア開発者によって展開されるソフトウェアの関係性は,従属性を識別するためにより柔軟
であることが要求される。これらの関係性は,ソフトウェアは特別な製品のバージョンX.Y又はより
新しいバージョンで使用する(例えば,version≧X.Y)というような論理演算子を要求する。
− 今日のソフトウェアにはばく(莫)大な数のバージョン戦略が使われている。バージョンをもたない
ソフトウェア製品もある。2009年版のXSDはバージョン番号に対して1〜4の数値の使用に限ってい
るので,この問題は,バージョンを詳細に管理する異なるアプローチを要求している。
2009年版のこの規格を導入している組織からの市場ニーズの反映,加えて,SWIDタグをサポートする
ことに関心をもつ組織によって行われたテスト及びデータモデリングの努力に直接関連しているこれらの
問題及び他の問題が,XSD構造を変更した理由である。
A.4 市場での採用
ソフトウェア開発者及び検出ツール提供者はソフトウェア開発者によるSWIDタグの提供による明確な
ビジネスの事例に強い興味をもっている。SWIDタグをサポートするより多くの組織及びそれらのタグに
よるより多くの価値が市場全体に提供される。SWIDタグが付加価値を与えることのできる領域は資産管
理以外にも多く,結果として他の市場セグメントにSWIDタグへの関心が広がっている。
この付加価値の代表的な例は,装置に現在インストールされているソフトウェアタイトルに関連して追
加のソフトウェアを識別するSWIDタグの機能である。これにはイメージ編集又はブラウザソフトウェア
製品に利用できるプラグインのようなものを含めることができる。オープンソースのタイトルのために,
色々なオプションの詳細な記述がデスクトップ管理ソフトウェア製品で参照できるようになる。
SWIDタグにソフトウェア開発者の追加の理由を提供することで,より迅速にこの規格を採用すること
36
X 0164-2:2018 (ISO/IEC 19770-2:2015)
のインセンティブを提供し,劇的に市場に対する価値を増加することができる。
A.5 結論
この規格の今回の版で重大なXSDの変更をすることは多くの利点がある一方,データ構造を変えること
によって生じる問題は非常に少ない。上記では僅かな利点しか記述していない。利点はこれらの変更によ
る問題をりょうが(凌駕)している。
37
X 0164-2:2018 (ISO/IEC 19770-2:2015)
附属書B
(規定)
XMLスキーマの定義(XSD)
B.1
導入
次のXSDはソフトウェア識別タグの定義を示している。このXSDファイルは,次の場所にある。
http://standards.iso.org/iso/19770/-2/2015/schema.xsd
出版後に識別される欠陥の可能性のために,次の場所で最新の欠陥修正版の代替ダウンロードを示す。
http://standards.iso.org/iso/19770/-2/2015-current/schema.xsd
B.2で記述されているXMLスキーマと本文のテキストとの間で検出され,又は認識された不一致がある
場合には,B.2のテキストが優先される(より正確であるため)。しかし,上記のURLで有効なファイル
はこの規格より頻繁に修正されるため,最新の定義については確認することを推奨する。
B.2
XMLスキーマ
<?xml version="1.0" encoding="utf-8"?>
<xs:schema
xmlns="http://standards.iso.org/iso/19770/-2/2015/schema.xsd"
xmlns:swid="http://standards.iso.org/iso/19770/-2/2015/schema.xsd"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
xmlns:xml="http://www.w3.org/XML/1998/namespace"
targetNamespace="http://standards.iso.org/iso/19770/-2/2015/schema.xsd"
elementFormDefault="qualified">
<xs:import
namespace="http://www.w3.org/2000/09/xmldsig#"
schemaLocation="http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd" />
<xs:import
namespace="http://www.w3.org/XML/1998/namespace"
schemaLocation="http://www.w3.org/2001/xml.xsd" />
<xs:annotation>
<xs:documentation>
Schema for ISO-IEC 19770-2 Software Identification Tags
http://standards.iso.org/iso/19770/-2/2015/schema.xsd
Copyright 2015 ISO/IEC, all rights reserved
Copyright notice: ISO and IEC grant the users of this Standard the right
38
X 0164-2:2018 (ISO/IEC 19770-2:2015)
to use this XSD file free of charge for the purpose of implementing the
present Standard.
Disclaimer: In no event shall ISO and/or IEC be liable for any damages
whatsoever (including, but not limited to, damages for loss of profits,
business interruption, loss of information, or any other pecuniary
loss) arising out of or related to the use of or inability to use the
XSD file. ISO and IEC disclaim all warranties, express or implied,
including but not limited to warranties of merchantability and fitness
for a particular purpose.
</xs:documentation>
<xs:appinfo>
<version>2.0</version>
</xs:appinfo>
</xs:annotation>
<xs:element name="SoftwareIdentity" type="SoftwareIdentity">
<xs:annotation>
<xs:documentation>
Represents the root element specifying data about a software component
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:complexType name="BaseElement">
<xs:annotation>
<xs:documentation>
Attributes common to all Elements in this schema
</xs:documentation>
</xs:annotation>
<xs:attribute ref="xml:lang">
<xs:annotation>
<xs:documentation>
Allow xml:lang attribute on any element.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute ref="xml:id" >
39
X 0164-2:2018 (ISO/IEC 19770-2:2015)
<xs:annotation>
<xs:documentation>
Allow xml:id attribute on any element.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:anyAttribute
namespace="##other"
processContents="lax">
<xs:annotation>
<xs:documentation>
Allows any undeclared attributes on any element as long as the
attribute is placed in a different namespace.
</xs:documentation>
</xs:annotation>
</xs:anyAttribute>
</xs:complexType>
<xs:complexType name="Entity">
<xs:complexContent>
<xs:extension base="BaseElement">
<xs:annotation>
<xs:documentation>
Specifies the organizations related to the software component
referenced by this SWID tag.
</xs:documentation>
</xs:annotation>
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element
name="Meta"
type="Meta">
<xs:annotation>
<xs:documentation>
An open-ended collection of elements that can be used to attach
arbitrary metadata to an Entity.
</xs:documentation>
</xs:annotation>
40
X 0164-2:2018 (ISO/IEC 19770-2:2015)
</xs:element>
</xs:sequence>
<xs:attribute
name="name"
use="required"
type="xs:string">
<xs:annotation>
<xs:documentation>
The name of the organization claiming a particular role in the
SWID tag.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute
name="regid"
type="xs:anyURI"
use="optional"
default="http://invalid.unavailable">
<xs:annotation>
<xs:documentation>
The regid of the organization. If the regid is unknown, the
value "invalid.unavailable" is provided by default (see
RFC 6761 for more details on the default value).
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute
name="role"
type="xs:NMTOKENS"
use="required">
<xs:annotation>
<xs:documentation>
The relationship between this organization and this tag e.g. tag,
softwareCreator, licensor, tagCreator, etc. The role of
tagCreator is required for every SWID tag.
EntityRole may include any role value, but the pre-defined roles
41
X 0164-2:2018 (ISO/IEC 19770-2:2015)
include: aggregator, distributor, licensor, softwareCreator,
tagCreator
Other roles will be defined as the market uses the SWID tags.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute
name="thumbprint"
use="optional"
type="xs:string">
<xs:annotation>
<xs:documentation>
this value provides a hexadecimal string that contains a hash
(or thumbprint) of the signing entities certificate.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="Evidence">
<xs:complexContent>
<xs:extension base="ResourceCollection">
<xs:annotation>
<xs:documentation>
The element is used to provide results from a scan of a system
where software that does not have a SWID tag is discovered.
This information is not provided by the software creator, and
is instead created when a system is being scanned and the
evidence for why software is believed to be installed on the
device is provided in the Evidence element.
</xs:documentation>
</xs:annotation>
<xs:attribute
name="date"
type="xs:dateTime">
42
X 0164-2:2018 (ISO/IEC 19770-2:2015)
<xs:annotation>
<xs:documentation>
Date and time the evidence was gathered.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute
name="deviceId"
type="xs:string">
<xs:annotation>
<xs:documentation>
Identifier for the device the evidence was gathered from.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="FilesystemItem">
<xs:complexContent>
<xs:extension base="Meta">
<xs:annotation>
<xs:documentation>
Represents an individual file
</xs:documentation>
</xs:annotation>
<xs:attribute
name="key"
type="xs:boolean">
<xs:annotation>
<xs:documentation>
Files that are considered important or required for the use of
a software component. Typical key files would be those which,
if not available on a system, would cause the software not to
execute.
43
X 0164-2:2018 (ISO/IEC 19770-2:2015)
Key files will typically be used to validate that software
referenced by the SWID tag is actually installed on a specific
computing device
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute
name="location"
type="xs:string">
<xs:annotation>
<xs:documentation>
The directory or location where a file was found or can expected
to be located. does not include the filename itself. This can
be relative path from the 'root' attribute.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute
name="name"
type="xs:string"
use="required">
<xs:annotation>
<xs:documentation>
The filename without any path characters
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute
name="root"
type="xs:string">
<xs:annotation>
<xs:documentation>
A system-specific root folder that the 'location'
attribute is an offset from. If this is not specified
the assumption is the 'root' is the same folder as
the location of the SWIDTAG.
</xs:documentation>
44
X 0164-2:2018 (ISO/IEC 19770-2:2015)
</xs:annotation>
</xs:attribute>
<xs:anyAttribute
processContents="lax">
<xs:annotation>
<xs:documentation>
Permits any user-defined attributes in file tags
</xs:documentation>
</xs:annotation>
</xs:anyAttribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="Directory">
<xs:complexContent>
<xs:extension base="FilesystemItem">
<xs:annotation>
<xs:documentation>
Provides the ability to apply a directory structure to the files
defined in a Payload or Evidence element.
</xs:documentation>
</xs:annotation>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element
name="Directory"
type="Directory">
<xs:annotation>
<xs:documentation>
A Directory element allows one or more directories to be
defined in the file structure.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element
name="File"
type="File">
45
X 0164-2:2018 (ISO/IEC 19770-2:2015)
<xs:annotation>
<xs:documentation>
A File element that allows one or more files to be specified
for a given location.
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:choice>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="File">
<xs:complexContent>
<xs:extension base="FilesystemItem">
<xs:annotation>
<xs:documentation>
Represents an individual file
</xs:documentation>
</xs:annotation>
<xs:attribute
name="size"
type="xs:integer">
<xs:annotation>
<xs:documentation>
The file size in bytes of the file
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute
name="version"
type="xs:string">
<xs:annotation>
<xs:documentation>
The file version
</xs:documentation>
</xs:annotation>
46
X 0164-2:2018 (ISO/IEC 19770-2:2015)
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="Process">
<xs:complexContent>
<xs:extension base="Meta">
<xs:annotation>
<xs:documentation>
Provides process information for data that will show up in a
devices process table.
</xs:documentation>
</xs:annotation>
<xs:attribute
name="name"
type="xs:string"
use="required">
<xs:annotation>
<xs:documentation>
The process name as it will be found in the devices process
table.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute
name="pid"
type="xs:integer">
<xs:annotation>
<xs:documentation>
The process ID for the executing process - note that this will
typically only be provided when the Process element is included as part
of Evidence.
</xs:documentation>
</xs:annotation>
</xs:attribute>
47
X 0164-2:2018 (ISO/IEC 19770-2:2015)
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="Resource">
<xs:complexContent>
<xs:extension base="Meta">
<xs:annotation>
<xs:documentation>
A container that can be used to provide arbitrary resource
information about an application installed on a device, or
evidence collected from a device.
</xs:documentation>
</xs:annotation>
<xs:attribute
name="type"
type="xs:string"
use="required">
<xs:annotation>
<xs:documentation>
The type of resource (ie, registrykey, port, rootUrl)
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="ResourceCollection">
<xs:complexContent>
<xs:extension base="BaseElement">
<xs:annotation>
<xs:documentation>
This type is used by Payload to provide details on what may rbe
installed on a device, and by Evidence to indicate what an
inventory process discovered on a device.
</xs:documentation>
</xs:annotation>
48
X 0164-2:2018 (ISO/IEC 19770-2:2015)
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element
name="Directory"
type="Directory">
<xs:annotation>
<xs:documentation>
One or more directory elements
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element
name="File"
type="File">
<xs:annotation>
<xs:documentation>
One or more File elements
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element
name="Process"
type="Process">
<xs:annotation>
<xs:documentation>
One or more Process elements
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element
name="Resource"
type="Resource">
<xs:annotation>
<xs:documentation>
One or more generic resource elements
</xs:documentation>
</xs:annotation>
49
X 0164-2:2018 (ISO/IEC 19770-2:2015)
</xs:element>
</xs:choice>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="Link">
<xs:complexContent>
<xs:extension base="BaseElement">
<xs:annotation>
<xs:documentation>
A reference to any another item (can include details that are
related to the SWID tag such as details on where software
downloads can be found, vulnerability database associations,
use rights, etc).
This is modeled directly to match the HTML [LINK] element; it is
critical for streamlining software discovery scenarios that
these are kept consistent.
</xs:documentation>
</xs:annotation>
<xs:attribute
name="artifact"
type="xs:string"
use="optional">
<xs:annotation>
<xs:documentation>
For installation media (rel="installationmedia") - dictates the
canonical name for the file.
Items with the same artifact name should be considered mirrors
of each other (so download from wherever works).
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute
name="href"
50
X 0164-2:2018 (ISO/IEC 19770-2:2015)
type="xs:anyURI"
use="required">
<xs:annotation>
<xs:documentation>
The link to the item being referenced.
The href can point to several different things, and can be any
of the following:
- a RELATIVE URI (no scheme) - which is interpreted depending on
context (ie, "./folder/supplemental.swidtag" )
- a physical file location with any system-acceptable
URI scheme (ie, file:// http:// https:// ftp:// ... etc )
- an URI with "swid:" as the scheme, which refers to another
swid by tagId. This URI would need to be resolved in the
context of the system by software that can lookup other
swidtags.( ie, "swid:2df9de35-0aff-4a86-ace6-f7dddd1ade4c" )
- an URI with "swidpath:" as the scheme, which refers to another
swid by an XPATH query. This URI would need to be resolved in
the context of the system by software that can lookup other
swidtags, and select the appropriate one based on an XPATH
query. Examples:
swidpath://SoftwareIdentity[Entity/@regid='http://contoso.com']
would retrieve all swidtags that had an entity where the
regid was Contoso
swidpath://SoftwareIdentity[Meta/@persistentId='b0c55172-38e9-4e36-be86-92206ad8eddb']
would retrieve swidtags that matched the persistentId
See XPATH query standard : http://www.w3.org/TR/xpath20/
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute
name="media"
51
X 0164-2:2018 (ISO/IEC 19770-2:2015)
type="Media"
use="optional">
<xs:annotation>
<xs:documentation>
An attribute defined by the W3C Media Queries Recommendation
(see http://www.w3.org/TR/css3-mediaqueries/).
A hint to the consumer of the link to what the target item is
applicable for.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute
name="ownership"
type="Ownership"
use="optional">
<xs:annotation>
<xs:documentation>
Determines the relative strength of ownership of the target
piece of software.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute
name="rel"
type="xs:NMTOKEN"
use="required">
<xs:annotation>
<xs:documentation>
The relationship between this SWID and the target file.
Relationships can be identified by referencing the IANA
registration library -
https://www.iana.org/assignments/link-relations/link-relations.xhtml.
</xs:documentation>
</xs:annotation>
</xs:attribute>
52
X 0164-2:2018 (ISO/IEC 19770-2:2015)
<xs:attribute
name="type"
type="MediaType"
use="optional">
<xs:annotation>
<xs:documentation>
The IANA MediaType for the target file; this provides the
consumer with intelligence of what to expect.
See http://www.iana.org/assignments/media-types/media-types.xhtml
for more details on link type.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute
name="use"
type="Use"
use="optional">
<xs:annotation>
<xs:documentation>
Determines if the target software is a hard requirement or not
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="Meta">
<xs:complexContent>
<xs:extension base="BaseElement">
<xs:annotation>
<xs:documentation>
An open-ended collection of key/value data related to this SWID.
</xs:documentation>
</xs:annotation>
<xs:anyAttribute
53
X 0164-2:2018 (ISO/IEC 19770-2:2015)
processContents="lax">
<xs:annotation>
<xs:documentation>
Permits any user-defined attributes in Meta tags
</xs:documentation>
</xs:annotation>
</xs:anyAttribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="SoftwareIdentity">
<xs:complexContent>
<xs:extension base="BaseElement">
<xs:choice maxOccurs="unbounded">
<xs:element
name="Entity"
type="Entity"
minOccurs="1"
maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>
Specifies the organizations related to the software component
referenced by this SWID tag.
This has a minOccurs of 1 because the spec declares that
you must have at least a Entity with role='tagCreator'
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element
name="Evidence"
type="Evidence"
minOccurs="0"
maxOccurs="1">
<xs:annotation>
<xs:documentation>
This element is used to provide results from a scan of a
54
X 0164-2:2018 (ISO/IEC 19770-2:2015)
system where software that does not have a SWID tag is
discovered. This information is not provided by the
software creator, but is instead created when a system
is being scanned and the evidence for why software is
believed to be installed on the device is provided in the
Evidence element.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element
name="Link"
type="Link"
minOccurs="0"
maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>
A reference to any another item (can include details that
are related to the SWID tag such as details on where software
downloads can be found, vulnerability database associations,
use rights, etc).
Note: This is modelled directly to match the HTML [LINK]
element; it is critical for streamlining software discovery
scenarios that these are kept consistent.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element
name="Meta"
type="SoftwareMeta"
minOccurs="0"
maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>
An open-ended collection of key/value data related to this SWID.
</xs:documentation>
</xs:annotation>
</xs:element>
55
X 0164-2:2018 (ISO/IEC 19770-2:2015)
<xs:element
name="Payload"
type="ResourceCollection"
minOccurs="0"
maxOccurs="1">
<xs:annotation>
<xs:documentation>
The items that may be installed on a device when the software is
installed. Note that Payload may be a superset of the items
installed and, depending on optimization systems for a device,
may or may not include every item that could be created or
executed on a device when software is installed.
In general, payload will be used to indicate the files that
may be installed with a software product and will often be a
superset of those files (i.e. if a particular optional
component is not installed, the files associated with that
component may be included in payload, but not installed on
the device).
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:any
namespace="##other"
processContents="lax"
minOccurs="0"
maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>
Allows any undeclared elements in the SoftwareIdentity element
as long as the element is placed in a different namespace.
As xs:any supercedes an xs:element declaration, this continues
to support digital signatures using the ds:Signature element:
Signatures are not a mandatory part of the software
identification tag standard, and can be used as required
by any tag producer to ensure that sections of a tag are not
56
X 0164-2:2018 (ISO/IEC 19770-2:2015)
modified and/or to provide authentication of the signer. If
signatures are included in the software identification tag,
they shall follow the W3C recommendation defining the XML
signature syntax which provides message integrity
authentication as well as signer authentication services for
data of any type.
</xs:documentation>
</xs:annotation>
</xs:any>
</xs:choice>
<xs:attribute
name="corpus"
type="xs:boolean"
use="optional"
default="false">
<xs:annotation>
<xs:documentation>
Set to true, if this attribute specifies that this SWID tag is a
collection of information that describes the pre-installation
data of software component.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute
name="patch"
type="xs:boolean"
use="optional"
default="false">
<xs:annotation>
<xs:documentation>
Set to true if this SWID describes a product patch or
modification to a different software element.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute
57
X 0164-2:2018 (ISO/IEC 19770-2:2015)
name="media"
type="Media"
use="optional">
<xs:annotation>
<xs:documentation>
media is a hint to the tag consumer to understand what this
SWID tag applies to (see the [Link] tags media attribute).
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute
name="name"
type="xs:string"
use="required">
<xs:annotation>
<xs:documentation>
This attribute provides the software component name as it would
typically be referenced. For example, what would be seen in the
add/remove dialog on a Windows device, or what is specified as
the name of a packaged software product or a patch identifier
name on a Linux device.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute
name="supplemental"
type="xs:boolean"
use="optional"
default="false">
<xs:annotation>
<xs:documentation>
Specifies that this tag provides supplemental tag data that can
be merged with primary tag data to create a complete record of
the software information.
Supplemental tags will often be provided at install time and may
be provided by different entities (such as the tag consumer, or
a Value Added Reseller).
58
X 0164-2:2018 (ISO/IEC 19770-2:2015)
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute
name="tagId"
type="xs:string"
use="required">
<xs:annotation>
<xs:documentation>
tagId shall be a globally unique identifier and should be
assigned a GUID reference (see ISO/IEC 19770-5 definition
for GUID).
The tagID provides a unique reference for the specific product,
version, edition, revision, etc (essentially, the same binary
distribution). If two tagIDs match and the tagCreator is the
same, the underlying products they represent are expected to be
exactly the same.
This allows IT systems to identify if a software item (for
example, a patch) is installed simply by referencing the
specific tagID value which is likely to be readily available
in a software inventory.
It is recommended, when possible, that a 16 byte GUID
be used for this field as this provides global uniqueness without
a significant amount of overhead for space.
If use of a 16 byte GUID is not possible, a text based globally
unique ID may be constructed, this ID should include a unique
naming authority for the tagCreator and sufficient additional
details that the tagId is unique for the software product,
version, edition, revision, etc. This would likely look as
follows (+ is used as a string concatenation symbol):
regid + productName + version + edition + revision + ...
</xs:documentation>
</xs:annotation>
</xs:attribute>
59
X 0164-2:2018 (ISO/IEC 19770-2:2015)
<xs:attribute
name="tagVersion"
type="xs:integer"
use="optional"
default="0">
<xs:annotation>
<xs:documentation>
The tagVersion indicates if a specific release of a software
product has more than one tag that can represent that specific
release. This may be the case if a software tag producer creates
and releases an incorrect tag that they subsequently want to fix,
but with no underlying changes to the product the SWID tag
represents. This could happen if, for example, a patch is
distributed that has a Link reference that does not cover all the
various software releases it can patch. A newer SWID tag for that
patch can be generated and the tagVersion value incremented to
indicate that the data is updated.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute
name="version"
type="xs:string"
use="optional"
default="0.0">
<xs:annotation>
<xs:documentation>
Underlying development version for the software component.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute
name="versionScheme"
type="xs:NMTOKEN"
default="multipartnumeric">
<xs:annotation>
<xs:documentation>
60
X 0164-2:2018 (ISO/IEC 19770-2:2015)
Scheme used for the version number.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="SoftwareMeta">
<xs:complexContent>
<xs:extension base="Meta">
<xs:annotation>
<xs:documentation>
An open-ended collection of key/value data related to this SWID.
The attributes included in this Element are predefined attributes
to ensure common usage across the industry. The schema allows for
any additional attribute to be included in a SWID tag, though it is
recommended that industry norms for new attributes are defined and
followed to the degree possible.
</xs:documentation>
</xs:annotation>
<xs:attribute
name="activationStatus"
type="xs:string"
use="optional">
<xs:annotation>
<xs:documentation>
Identification of the activation status of this software title
(e.g. Trial, Serialized, Licensed, Unlicensed, etc). Typically,
this is used in supplemental tags.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute
name="channelType"
type="xs:string"
61
X 0164-2:2018 (ISO/IEC 19770-2:2015)
use="optional">
<xs:annotation>
<xs:documentation>
Provides information on which channel this particular
software was targeted for (e.g. Volume, Retail, OEM,
Academic, etc). Typically used in supplemental tags.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute
name="colloquialVersion"
type="xs:string"
use="optional">
<xs:annotation>
<xs:documentation>
The informal or colloquial version of the product (i.e. 2013).
Note that this version may be the same through multiple releases
of a software product where the version specified in
SoftwareEntity is much more specific and will change for each
software release.
Note that this representation of version is typically used to
identify a group of specific software releases that are part of
the same release/support infrastructure
(i.e. Fabrikam Office 2013). This version is used for string
comparisons only and is not compared to be an earlier or later
release (that is done via the SoftwareEntity version).
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute
name="description"
type="xs:string"
use="optional">
<xs:annotation>
<xs:documentation>
A longer, detailed description of the software. This description
can be multiple sentences (differentiated from summary which is
62
X 0164-2:2018 (ISO/IEC 19770-2:2015)
a very short, one-sentence description).
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute
name="edition"
type="xs:string"
use="optional">
<xs:annotation>
<xs:documentation>
The variation of the product (Extended, Enterprise, Professional,
Standard etc)
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute
name="entitlementDataRequired"
type="xs:boolean"
use="optional">
<xs:annotation>
<xs:documentation>
An indicator to determine if there should be accompanying proof
of entitlement when a software license reconciliation is
completed.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute
name="entitlementKey"
type="xs:string"
use="optional">
<xs:annotation>
<xs:documentation>
A vendor-specific textual key that can be used to reconcile the
validity of an entitlement. (e.g. serial number, product or
license key).
</xs:documentation>
63
X 0164-2:2018 (ISO/IEC 19770-2:2015)
</xs:annotation>
</xs:attribute>
<xs:attribute
name="generator"
type="xs:string"
use="optional">
<xs:annotation>
<xs:documentation>
The name of the software tool that created a SWID tag. This
element is typically used if tags are created on the fly, or
based on a catalogue based analysis for data found on a
computing device.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute
name="persistentId"
type="xs:string"
use="optional">
<xs:annotation>
<xs:documentation>
A GUID used to represent products installed where the products
are related, but may be different versions. See one
representation of this value through the use of what, in a
windows installation process is referred to as an upgradeCode
- http://msdn.microsoft.com/en-us/library/aa372375(v=vs.85).aspx
as one example of the use of this value.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute
name="product"
type="xs:string"
use="optional">
<xs:annotation>
<xs:documentation>
The base name of the product (e.g. Office, Creative Suites,
64
X 0164-2:2018 (ISO/IEC 19770-2:2015)
Websphere, etc).
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute
name="productFamily"
type="xs:string"
use="optional">
<xs:annotation>
<xs:documentation>
The overall product family this software belongs to. Product
family is not used to identify that a product is part of a
suite, but is instead used when a set of products that are all
related may be installed on multiple different devices.
For example, an Enterprise backup system may consist of a backup
server, multiple different backup systems that support mail
servers, databases and ERP systems as well as individual software
items that backup client devices. In this case all software
titles that are part of the backup system would have the same
productFamily name so they can be grouped together in reporting
systems.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute
name="revision"
type="xs:string"
use="optional">
<xs:annotation>
<xs:documentation>
The informal or colloquial representation of the sub-version of
the given product (ie, SP1, R2, RC1, Beta 2, etc). Note that the
SoftwareIdentity.version will provide very exact version details,
the revision is intended for use in environments where reporting
on the informal or colloquial representation of the software is
important (for example, if for a certain business process, an
organization recognizes that it must have ServicePack 1 or later
65
X 0164-2:2018 (ISO/IEC 19770-2:2015)
of a specific product installed on all devices, they can use the
revision data value to quickly identify any devices that do not
meet this requirement).
Depending on how a software organizations distributes revisions,
this value could be specified in a primary (if distributed as an
upgrade) or supplemental (if distributed as a patch) SWID tag.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute
name="summary"
type="xs:string"
use="optional">
<xs:annotation>
<xs:documentation>
A short (one-sentence) description of the software.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute
name="unspscCode"
type="xs:string"
use="optional">
<xs:annotation>
<xs:documentation>
An 8 digit code that provides UNSPSC classification of the
software product this SWID tag identifies. For more
information see, http://www.unspsc.org/
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute
name="unspscVersion"
type="xs:string"
use="optional">
<xs:annotation>
66
X 0164-2:2018 (ISO/IEC 19770-2:2015)
<xs:documentation>
The version of the UNSPSC code used to define the UNSPSC code
value. For more information see, http://www.unspsc.org/.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:simpleType name="Media">
<xs:annotation>
<xs:documentation>
An expression that the document evaluator can use to determine if the
target of the link is applicable to the current platform (the host
environment)
Used as an optimization hint to notify a system that it can
ignore something when it's not likely to be used.
The format of this string is modeled upon the MediaQuery definition at
http://www.w3.org/TR/css3-mediaqueries/
This is one or more EXPRESSIONs where the items are connected
with an OPERATOR:
media="EXPRESSION [[OPERATOR] [EXPRESSION]...]"
EXPRESSION is processed case-insensitive and defined either :
(ENVIRONMENT)
indicates the presence of the environment
or
([PREFIX-]ENVIRONMENT.ATTRIBUTE:VALUE)
indicates a comparison of an attribute of the environment.
ENVIRONMENT is a text identifier that specifies any software,hardware
feature or aspect of the system the software is intended to run in.
Common ENVIRONMENTs include (but not limited to):
linux
67
X 0164-2:2018 (ISO/IEC 19770-2:2015)
windows
java
powershell
ios
chipset
peripheral
ATTRIBUTE is a property of an ENVIRONMENT with a specific value.
Common attributes include (but not limited to):
version
vendor
architecture
PREFIX is defined as one of:
MIN # property has a minimum value of VALUE
MAX # property has a maximum value of VALUE
if a PREFIX is not provided, then the property should equal VALUE
OPERATOR is defined of one of:
AND
NOT
Examples:
media="(windows)"
# applies to only systems that identify themselves as 'Windows'
media="(windows) not (windows.architecture:x64)"
# applies to only systems that identify
# themselves as windows and are not for an x64 cpu
media="(windows) and (min-windows.version:6.1)"
# applies to systems that identify themselves as
# windows and at least version 6.1
media="(linux) and (linux.vendor:redhat) and (min-linux.kernelversion:3.0)"
# applies to systems that identify themselves as
# linux, made by redhat and with a kernel version of at least 3.0
media="(freebsd) and (min-freebsd.kernelversion:6.6)"
68
X 0164-2:2018 (ISO/IEC 19770-2:2015)
# applies to systems that identify themselves as
# freebsd, with a kernel version of at least 6.6
media="(powershell) and (min-powershell.version:3.0)"
# applies to systems that have powershell 3.0 or greater
Properties are expected to be able to be resolved by the host
environment without having to do significant computation.
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string" />
</xs:simpleType>
<xs:simpleType name="MediaType">
<xs:annotation>
<xs:documentation>
The IANA MediaType for the target href; this provides the SWID tag
consumer with intelligence of what to expect.
See http://www.iana.org/assignments/media-types/media-types.xhtml
for more details on link type.
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string" />
</xs:simpleType>
<xs:simpleType name="Ownership">
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="abandon">
<xs:annotation>
<xs:documentation>
Determines the relative strength of ownership of the target
piece of software.
</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="private">
<xs:annotation>
69
X 0164-2:2018 (ISO/IEC 19770-2:2015)
<xs:documentation>
If this is uninstalled, then the [Link]'d software should be removed
too.
</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="shared">
<xs:annotation>
<xs:documentation>
If this is uninstalled, then the [Link]'d software should be removed
if nobody else is sharing it
</xs:documentation>
</xs:annotation>
</xs:enumeration>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Use">
<xs:annotation>
<xs:documentation>
Determines if the target software is a hard requirement.
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="required">
<xs:annotation>
<xs:documentation>
The [Link]'d software is absolutely required for installation
</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="recommended">
<xs:annotation>
<xs:documentation>
Not absolutely required, but install unless directed not to
</xs:documentation>
70
X 0164-2:2018 (ISO/IEC 19770-2:2015)
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="optional">
<xs:annotation>
<xs:documentation>
Not absolutely required, install only when asked
</xs:documentation>
</xs:annotation>
</xs:enumeration>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="VersionScheme">
<xs:annotation>
<xs:documentation>
The different version schemes used
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="alphanumeric">
<xs:annotation>
<xs:documentation>
Strictly a string, sorting alphanumericaly
</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="decimal">
<xs:annotation>
<xs:documentation>
A floating point number : ( ie, 1.25 is less than 1.3 )
</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="multipartnumeric">
71
X 0164-2:2018 (ISO/IEC 19770-2:2015)
<xs:annotation>
<xs:documentation>
Numbers seperated by dots, where the numbers are interpreted as
integers (ie, 1.2.3 , 1.4.5.6 , 1.2.3.4.5.6.7 )
</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="multipartnumeric+suffix">
<xs:annotation>
<xs:documentation>
Numbers seperated by dots, where the numbers are interpreted as
integers with an additional string suffix: (ie, 1.2.3a)
</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="semver">
<xs:annotation>
<xs:documentation>
Follows the semver.org spec
</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="unknown">
<xs:annotation>
<xs:documentation>
Unknown, no attempt should be made to order these
</xs:documentation>
</xs:annotation>
</xs:enumeration>
</xs:restriction>
</xs:simpleType>
</xs:schema>
72
X 0164-2:2018 (ISO/IEC 19770-2:2015)
附属書C
(参考)
SWIDタグスキーマのUML構造
図C.1は,SWIDタグスキーマの概要を示すUMLダイアグラムである。
73
X 0164-2:2018 (ISO/IEC 19770-2:2015)
図
C
.1
−
S
W
ID
U
M
L
ダ
イ
ア
グ
ラ
ム
74
X 0164-2:2018 (ISO/IEC 19770-2:2015)
附属書D
(参考)
タグの例
D.1 サンプルタグの概要
この附属書には,市場に実装されるであろうと予想されるSWIDタグの完全な例を幾つか示す。
D.2 スイート製品の例
注記1 この附属書におけるFabrikam社及び全てのFabrikam製品は,架空の名前であり,単なる例
として使用している。
附属書のこの箇条では,Fabrikam社のFabrikam Officeという仮想のソフトウェア製品のタグの完全なセ
ットを扱う。
次に示すタグはスイート製品だけではなく要求コンポーネントをも含むSWIDタグの完全なセットであ
る。
例は,製品のパッチ,及び組織が必要とするならばアクティベーション情報をどのように付加的な方法
で取り込めるかについても示している。
注記2 次の例におけるtagIdは,読解しやすいようにGUIDとして記述されていない。現実のタグに
はGUIDを使用する。
この例で取り上げられるFabrikam Office 2013のスイート製品のSWIDタグ及びその他のタグの構造を図
D.1に示す。
75
X 0164-2:2018 (ISO/IEC 19770-2:2015)
図D.1−サンプルSWIDタグの論理表現
この例では,必要であればインストールできるスタンドアロンのWebサーバアプリケーションを含んで
いることに注意する。WebサーバのSWIDタグは,Web上のどこからインストール用ファイルをダウンロ
ード及びインストールすることができるかの詳細情報を提供する。
D.2.1 Fabrikam Office 2013 Standard EditionスイートのSWID
Fabrikam Office 2013は,Fabrikam Writer 2013,Fabrikam Spreadsheet 2013,Fabrikam Presentation 2013の
三つの個別の製品で構成されている。さらに,Fabrikam Office 2013はC++ runtimeを必要とする。
この例において,製品が参照するC++ runtimeは,persistentIdを見ることで行われ,任意のバージョン
のC++ runtimeが要求を満たすことが分かる。
このアプリケーションは実際のファイルを含まないので,Payload要素は含まない。
76
X 0164-2:2018 (ISO/IEC 19770-2:2015)
最後に,この例では,Fabrikam Office 2013がインストールされたとき,製品をアクティベートするのに
プロダクトキーが使われる。このキーは,別のSWIDタグファイルに記載され,このSWIDタグファイル
は,ここで示す主SWIDタグの追加SWIDタグに記載される。
<?xml version=”1.0” encoding=”UTF-8” standalone=”no”?>
<SoftwareIdentity
xmlns=”http://standards.iso.org/iso/19770/-2/2015/schema.xsd”
xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
xmlns:ds=”http://www.w3.org/2000/09/xmldsig#”
name=”Fabrikam Office 2013”
tagId=”{GUID}FabrikamOffice-2013”
version=”12.1.1”
versionScheme=”multipartnumeric”>
<!-- このソフトウェアは,同一の組織によって作成,ライセンス許諾及びタグ付けされた。 -->
<Entity
name=”Fabrikam Corporation”
regid=”fabrikam.com”
role=”softwareCreator licensor tagCreator” />
<!--このソフトウェアが構成されているコンポーネントのリスト -->
<Link
rel=”component”
href=”swid: {GUID}FabrikamWriter-2013”
use=”recommended” />
<Link
rel=”component”
href=”swid: {GUID}FabrikamSpreadsheet-2013”
use=”recommended” />
<!-- このコンポーネントはオプションとして含まれる -->
<Link
rel=”component”
href=”swid: {GUID}FabrikamPresentation-2013”
use=”optional” />
<!-- C++ runtimeも必要 -->
<!-- これは,persistentIdが示すランタイムを参照し,任意のバージョンのランタイムで動作する。 -->
<!-- 次のLinkでは,パーセント記号ʻ%ʼに続く,2桁の16進数の特別な文字がURLエンコーディングで使われてい
る。この標記では,%5Bは始め角括弧ʻ[ʼを,%5Dは終わり角括弧ʻ]ʼを意味する。 -->
<Link
rel=”requires”
77
X 0164-2:2018 (ISO/IEC 19770-2:2015)
href=”swidpath:/SoftwareIdentity/Meta%5B@persistentId=ʼEAB2F277-0920-4F8C-B466-6FE0CA7D59DFʼ%5D”
ownership=”shared” />
<!--付加データは追加タグにて示される。 -->
<Link
rel=”supplemental”
href=”./FabrikamOfficeLicense.swidtag” />
<!-- このソフトウェアは使用権が必要という識別情報をもつ。 -->
<Meta entitlementDataRequired=”true”/>
<!-- この製品に関する主要な外形的情報 -->
<Meta
product=”Fabrikam Office”
edition=”Standard”
revision=””
colloquialVersion=”2013”
summary=”The premier suite for documents, spreadsheets and presentations”
description=”Fabrikam Office is ... ʻvery long text about productʼ”
channelType=”Retail” />
<!-- ベンダーのデータ -->
<Meta
SKU=”FabrikamOfficeStandard-2013-Retail” />
</SoftwareIdentity>
D.2.2 Fabrikam Office 2013 追加SWIDタグ
Fabrikam Office 2013をインストールする際,利用者は製品を有効化するためにプロダクトキーを入力す
る必要がある。この場合,発行者はプロダクトキーを含む追加のSWIDタグを動的に生成する。このデー
タはネットワーク経由で別のファイルとして配布されるか,又はインストーラによって書き込まれる可能
性があるため,一般的には主タグには含まれない。
このファイルは,FabrikamOfficeLicense.swidtagと名付けられる。
<?xml version=”1.0” encoding=”UTF-8” standalone=”no”?>
<SoftwareIdentity
xmlns=”http://standards.iso.org/iso/19770/-2/2015/schema.xsd”
xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
xmlns:ds=”http://www.w3.org/2000/09/xmldsig#”
name=”Fabrikam Office 2013”
tagId=”{GUID}FabrikamOffice-2013”
version=”12.1.1”
versionScheme=”multipartnumeric”
supplemental=”true” >
<!-- このソフトウェアは,同一の組織によって作成,ライセンス許諾及びタグ付けされた。 -->
<Entity
78
X 0164-2:2018 (ISO/IEC 19770-2:2015)
name=”Fabrikam Corporation”
regid=”fabrikam.com”
role=”softwareCreator licensor tagCreator” />
<!-- この製品のプロダクトキー -->
<Meta entitlementKey=”IDFKK-A9123-PG123-SFA97-CCADV”/>
</SoftwareIdentity>
D.2.3 Fabrikam Office 2013言語の追加SWIDタグ
ソフトウェア製品をコンピュータデバイスにインストールした後に,他言語サポートを追加することが
ある。次の例では,Fabrikam Officeにフランス語サポートを加える追加タグの例を示す。
<?xml version=”1.0” encoding=”UTF-8” standalone=”no”?>
<SoftwareIdentity
xmlns=”http://standards.iso.org/iso/19770/-2/2015/schema.xsd”
xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
xmlns:ds=”http://www.w3.org/2000/09/xmldsig#”
name=”Fabrikam Office 2013 Languge Pack - French”
tagId=”{GUID}FabrikamOffice-2013-French”
version=”12.1.1”
versionScheme=”multipartnumeric”
supplemental=”true” >
<Link
rel=”parent”
href=”swid:{GUID}FabrikamOffice-2013” />
<!-- このソフトウェアは,同一の組織によって作成,ライセンス許諾及びタグ付けされた。 -->
<Entity
name=”Fabrikam Corporation”
regid=”fabrikam.com”
role=”softwareCreator licensor tagCreator” />
D.2.4 Fabrikam Writer 2013
Fabrikam Writer 2013はFabrikam Office 2013の一部である。この製品は二つのファイル(writer.exe及び
writer.dll)からなる。
<?xml version=”1.0” encoding=”UTF-8” standalone=”no”?>
<SoftwareIdentity
xmlns=”http://standards.iso.org/iso/19770/-2/2015/schema.xsd”
xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
xmlns:ds=”http://www.w3.org/2000/09/xmldsig#”
xmlns:SHA256=”http://www.w3.org/2001/04/xmldsig-more#rsa-sha256”
name=”Fabrikam Writer 2013”
79
X 0164-2:2018 (ISO/IEC 19770-2:2015)
tagId=”{GUID}FabrikamWriter-2013”
version=”12.1.1”
versionScheme=”multipartnumeric”>
<!-- このソフトウェアは,同一の組織によって作成,ライセンス許諾及びタグ付けされた。 -->
<Entity
name=”Fabrikam Corporation”
regid=”fabrikam.com”
role=”softwareCreator licensor tagCreator” />
<!-- このソフトウェアにはC++ runtimeが必要 -->
<!-- 次のLinkでは,パーセント記号ʻ%ʼに続く,2桁の16進数の特別な文字がURLエンコーディングで使われてい
る。この標記では,%5Bは始め角括弧ʻ[ʼを,%5Dは終わり角括弧ʻ]ʼを意味する。 -->
<Link
rel=”requires”
href=”swidpath:/SoftwareIdentity/Meta%5B@persistentId=ʼEAB2F277-0920-4F8C-B466-6FE0CA7D59DFʼ%5D”
ownership=”shared” />
<!-- この製品に関する主要な外形的情報 -->
<Meta
product=”Fabrikam Writer”
edition=””
revision=””
colloquialVersion=”2013”
summary=”Document editor provided with Fabrikam Office.”
description=”Fabrikam Writer is ... ʻvery long text about productʼ”
channelType=”Retail” />
<Payload>
<File name=”writer.exe” size=”1024000” location=”../bin/”
SHA256:hash=”c4128c2dc663ae7a6b6bc6787594057396e6b3f569cd50fd5ddb4d1bbafd2b6a” />
<File name=”writer.dll” size=”524012” location=”../bin/”
SHA256:hash=”96e6b3f569cd50fd5ddb4d1bbafd2b6ac4128c2dc663ae7a6b6bc67875940573” />
</Payload>
</SoftwareIdentity>
D.2.5 Fabrikam Spreadsheet 2013
Fabrikam Spreadsheet 2013はFabrikam Office 2013の一部である。この製品は二つのファイル
(spreadsheet.exe及びspreadsheet.dll)からなる。また,Fabrikam Spreadsheet 2013はC++ runtimeに依存し
ているが,この例では,C++ runtimeの特定のバージョン(1004100)又はこれより新しいものを必要とす
80
X 0164-2:2018 (ISO/IEC 19770-2:2015)
る。
<?xml version=”1.0” encoding=”UTF-8” standalone=”no”?>
<SoftwareIdentity
xmlns=”http://standards.iso.org/iso/19770/-2/2015/schema.xsd”
xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
xmlns:ds=”http://www.w3.org/2000/09/xmldsig#”
xmlns:SHA256=”http://www.w3.org/2001/04/xmldsig-more#rsa-sha256”
name=”Fabrikam Spreadsheet 2013”
tagId=”{GUID}FabrikamSpreadsheet-2013”
version=”12.1”
versionScheme=”multipartnumeric”>
<!-- このソフトウェアは,同一の組織によって作成,ライセンス許諾及びタグ付けされた。 -->
<Entity
name=”Fabrikam Corporation”
regid=”fabrikam.com”
role=”softwareCreator licensor tagCreator” />
<!-- このソフトウェアにはC++ runtimeが必要 -->
<!-- しかし,このルーチンはあるバージョン又はより新しいものを要求している。 -->
<!-- 次のLinkでは,パーセント記号ʻ%ʼに続く,2桁の16進数の特別な文字がURLエンコーディングで使われてい
る。 この標記では,%3Eは不等号(より大)ʻ>ʼを,%5Bは始め角括弧ʻ[ʼを,%5Dは終わり角括弧ʻ]ʼを意味する
-->
<Link
rel=”requires”
href=”swidpath:/SoftwareIdentity%5BMeta/@int64Version%3E= 10041000 and
Meta/@persistentId=ʼEAB2F277-0920-4F8C-B466-6FE0CA7D59DFʼ%5D”
ownership=”shared” />
<!-- この製品に関する主要な外形的情報 -->
<Meta
product=”Fabrikam Spreadsheet”
edition=””
revision=””
colloquialVersion=”2013”
summary=”Document spreadsheet provided with Fabrikam Office.”
description=”Fabrikam Spreadsheet is ... ʻvery long text about productʼ”
channelType=”Retail” />
81
X 0164-2:2018 (ISO/IEC 19770-2:2015)
<Payload>
<File name=”Spreadsheet.exe” size=”924000” location=”../bin/”
SHA256:hash=”c2dc663ae7a6b6bc6787594057396e6b3f569cd50fd5ddb4d1bbafd2b6ac4128” />
<File name=”spreadsheet.dll” size=”224011” location=”../bin/”
SHA256:hash=”057396e6b3f569cd50fd5ddb4d1bbafd2b6ac4128c2dc663ae7a6b6bc6787594” />
</Payload>
</SoftwareIdentity>
D.2.6 Fabrikam Presentation 2013
Fabrikam Presentation 2013はFabrikam Office 2013の一部である。この製品は二つのファイル(present.exe
及びpresent.dll)からなる。また,このソフトウェアは特定のpersistentIdをもつ任意のバージョンのC++
runtimeに依存する。
<?xml version=”1.0” encoding=”UTF-8” standalone=”no”?>
<SoftwareIdentity
xmlns=”http://standards.iso.org/iso/19770/-2/2015/schema.xsd”
xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
xmlns:ds=”http://www.w3.org/2000/09/xmldsig#”
xmlns:SHA256=”http://www.w3.org/2001/04/xmldsig-more#rsa-sha256”
name=”Fabrikam Presentation 2013”
tagId=”{GUID}FabrikamPresentation-2013”
version=”12.1”
versionScheme=”multipartnumeric”>
<!-- このソフトウェアは,同一の組織によって作成,ライセンス許諾及びタグ付けされた。 -->
<Entity
name=”Fabrikam Corporation”
regid=”fabrikam.com”
role=”softwareCreator licensor tagCreator” />
<!-- このソフトウェアにはC++ runtimeが必要 -->
<!-- 次のLinkでは,パーセント記号ʻ%ʼに続く,2桁の16進数の特別な文字がURLエンコーディングで使われてい
る。この標記では,%5Bは始め角括弧ʻ[ʼを,%5Dは終わり角括弧ʻ]ʼを意味する。 -->
<Link
rel=”requires”
href=”swidpath:/SoftwareIdentity/Meta%5B@persistentId=ʼEAB2F277-0920-4F8C-B466-6FE0CA7D59DFʼ%5D”
ownership=”shared” />
<!-- この製品に関する主要な外形的情報 -->
<Meta
product=”Fabrikam Presentation”
82
X 0164-2:2018 (ISO/IEC 19770-2:2015)
edition=””
revision=””
colloquialVersion=”2013”
summary=”Document presentation provided with Fabrikam Office.”
description=”Fabrikam presentation is ... ʻvery long text about productʼ”
channelType=”Retail” />
<Payload>
<File name=”Present.exe” size=”194000” location=”../bin/”
SHA256:hash=”c4128c2dc663ae7a6b6bc6787594057396e6b3f569cd50fd5ddb4d1bbafd2b6a” />
<File name=”Present.dll” size=”224011” location=”../bin/”
SHA256:hash=”7594057396e6b3f569cd50fd5ddb4d1bbafd2b6ac4128c2dc663ae7a6b6bc678” />
</Payload>
</SoftwareIdentity>
D.2.7 C++ 2010 Runtime Version 10.0.41233
この例では,SWIDタグはC++ Runtimeの所有者によって作成され,C++ runtimeの再配布に含めて配布
される。このような依存関係があらかじめ結ばれていない場合には,Fabrikam社は,同じ情報をもつSWID
タグを提供できるが,tagCreatorはFabrikamとなる。
このSWIDタグは,この製品を一意に特定する追加のMetaデータも含んでいる。
<?xml version=”1.0” encoding=”UTF-8” standalone=”no”?>
<SoftwareIdentity
xmlns=”http://standards.iso.org/iso/19770/-2/2015/schema.xsd”
xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
xmlns:ds=”http://www.w3.org/2000/09/xmldsig#”
xmlns:SHA256=”http://www.w3.org/2001/04/xmldsig-more#rsa-sha256”
xmlns:coding=”http://fabrikam.com/myDevXSD”
name=”C++ 2010 Runtime”
tagId=”75E7AA2F-3E69-444C-AB72-629B206E25E9”
version=”10.0.41233”
versionScheme=”multipartnumeric”>
<!-- このソフトウェアは,同一の組織によって作成,ライセンス許諾及びタグ付けされた。 -->
<Entity
name=”Fabrikam Corporation”
regid=”fabrikam.com”
role=”softwareCreator licensor tagCreator” />
<Payload>
<File name=”cr100.dll” size=”2245924”
SHA256:hash=”0cb44e2b07110df48fe801e196a569acac498d5efc02f53e3f5e1df1710796db” />
83
X 0164-2:2018 (ISO/IEC 19770-2:2015)
</Payload>
<Meta
product=”C++ Runtime”
edition=””
revision=””
int64Version=”10041233”
persistentId=”EAB2F277-0920-4F8C-B466-6FE0CA7D59DF”
<!-- タグ生成者は属性を追加してよいが,タグ使用者はこれを認識してもよいし,しなくてもよい -->
coding:projectCodename=”pomegranate” />
</SoftwareIdentity>
D.2.8 C++ 2010 Runtime Version 10.0.52233
この例では,作成されたSWIDタグはC++ runtimeの再配布に含めて配布される。複数の異なるバージ
ョンのC++ 2010 runtimeをインストールすることができるため,デバイス上にインストールされた複数の
バージョンを識別する複数のSWIDタグがあり得る。
このSWIDタグは,この製品を一意に特定する追加のMetaデータを含んでいる。
<?xml version=”1.0” encoding=”UTF-8” standalone=”no”?>
<SoftwareIdentity
xmlns=”http://standards.iso.org/iso/19770/-2/2015/schema.xsd”
xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
xmlns:ds=”http://www.w3.org/2000/09/xmldsig#”
xmlns:SHA256=”http://www.w3.org/2001/04/xmldsig-more#rsa-sha256”
name=”C++ 2010 Runtime”
tagId=”F72FA02A-D7B6-43C7-B9A5-6609DF2E3998”
version=”10.0.52233”
versionScheme=”multipartnumeric”>
<!-- 同時に複数のバージョンのランタイムがインストールされている可能性があるため,この製品のパッチを特定
しない。 -->
<!-- このソフトウェアは,同一の組織によって作成,ライセンス許諾及びタグ付けされた。 -->
<Entity
name=”Fabrikam Corporation”
regid=”fabrikam.com”
role=”softwareCreator licensor tagCreator” />
<!-- この継承元リンクは同じパッケージの任意の旧バージョンを指し示す。 -->
<!-- 次のLinkでは,パーセント記号ʻ%ʼに続く,2桁の16進数の特別な文字がURLエンコーディングで使われてい
る。 この標記では,%3C は不等号(より小)ʻ<ʼを,%5Bは始め角括弧ʻ[ʼを,%5Dは終わり角括弧ʻ]ʼを意味す
84
X 0164-2:2018 (ISO/IEC 19770-2:2015)
る -->
<Link
rel=”ancestor”
href=”swidpath:/SoftwareIdentity%5BMeta/@int64Version %3C 10052233 and
Meta/@persistentId=ʼEAB2F277-0920-4F8C-B466-6FE0CA7D59DFʼ%5D”
ownership=”shared” />
<Payload>
<File name=”cr100.dll” size=”2246024”
SHA256:hash=”190cb46a569acac498d5efc02f53e3f5e1df1710796db4e2b07110df48fe801e” />
</Payload>
<Meta
product=”C++ Runtime”
edition=””
revision=””
int64Version=”10052233”
persistentId=”EAB2F277-0920-4F8C-B466-6FE0CA7D59DF” />
</SoftwareIdentity>
D.2.9 Fabrikam Writer 2013のパッチ
このSWIDタグは,Fabrikam Writer 2013製品に対するパッチを記述している。パッチは,一つのファイ
ルwriter.dllの情報をもっている。
このパッチはパッチで一意な自身のtagIdをもっている点に注意する。一つのパッチは多くの異なる製
品に適用できるので,このtagIdによってパッチが当てられる製品の関連性を識別できない点にも注意す
る。
SWIDタグの"patch"属性が真(true)であることでパッチであることを識別する。パッチが適用される製
品(又は製品群)の関連性はLink要素でなされる。つまり,このパッチはLinkのhrefでの特定のtagId
(FabrikamWritier-2013)と関連することを示している。
<?xml version=”1.0” encoding=”UTF-8” standalone=”no”?>
<SoftwareIdentity
xmlns=”http://standards.iso.org/iso/19770/-2/2015/schema.xsd”
xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
xmlns:ds=”http://www.w3.org/2000/09/xmldsig#”
xmlns:SHA256=”http://www.w3.org/2001/04/xmldsig-more#rsa-sha256”
name=”Fabrikam Writer 2013 FP13-4”
tagId=”{GUID}FabrikamWriter-2013-FP13-4”
version=”1.0”
versionScheme=”multipartnumeric”
85
X 0164-2:2018 (ISO/IEC 19770-2:2015)
patch=”true” >
<!-- このソフトウェアは,同一の組織によって作成,ライセンス許諾及びタグ付けされた。 -->
<Entity
name=”Fabrikam Corporation”
regid=”fabrikam.com”
role=”softwareCreator licensor tagCreator” />
<Link
rel=”patches”
href=”swid: {GUID}FabrikamWriter-2013” />
<Payload>
<File name=”writer.dll” size=”550012” location=”../bin/”
SHA256:hash=”db4d1bbafd2b6ac41296e6b3f569cd50fd5d8c2dc663ae7a6b6bc67875940573” />
</Payload>
</SoftwareIdentity>
D.3 オプションのインストールパッケージ
次の例は,SWIDタグがどのようにダウンロード可能なインストール媒体へリンクできるかを示してい
る。この例では,Windowsの64 bit及び32 bitの両環境のためのソフトウェアがFabricam社のWebサーバ
で利用可能である。
<?xml version=”1.0” encoding=”UTF-8” standalone=”no”?>
<SoftwareIdentity
xmlns=”http://standards.iso.org/iso/19770/-2/2015/schema.xsd”
xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
xmlns:ds=”http://www.w3.org/2000/09/xmldsig#”
xmlns:SHA256=”http://www.w3.org/2001/04/xmldsig-more#rsa-sha256”
name=”Fabrikam Webserver 2.2”
tagId=”{GUID}FabrikamWebserver-2.2”
version=”2.2.0.0”
versionScheme=”multipartnumeric”
xsi:schemaLocation=”http://standards.iso.org/iso/19770/-2/2015/schema.xsd
SoftwareIdentity.xsd”>
<!-- このソフトウェアは,同一の組織によって発行,ライセンス許諾及びタグ付けされた。 -->
<Entity name=”Fabrikam Corporation” regid=”fabrikam.com” role=”softwareCreator
licensor tagCreator”/>
86
X 0164-2:2018 (ISO/IEC 19770-2:2015)
<!-- インストール媒体へのリンク。 ʻartifactʼが同じ要素は,同じ製品が異なる場所にあることを意味する。
-->
<Link rel=”installationmedia” media=”(windows) and (windows.architecture:x64)”
artifact=”windows-installer-x64”
href=”http://fabrikam.com/downloads/webserver-2.2-x64.msi” />
<Link rel=”installationmedia” media=”(windows) and (windows.architecture:x64)”
artifact=”windows-installer-x64”
href=”http://mirror.fabrikam.com/downloads/webserver-2.2-x64.msi” />
<Link rel=”installationmedia” media=”(windows) and (windows.architecture:x64)”
artifact=”windows-installer-x64”
href=”http://downloads.contoso.com/downloads/webserver-2.2-x64.msi” />
<!-- インストール媒体へのリンク。 ʻartifactʼが同じ要素は,同じ製品が異なる場所にあることを意味する。
-->
<Link rel=”installationmedia” media=”(windows) and (windows.architecture:x86)”
artifact=”windows-installer”
href=”http://fabrikam.com/downloads/webserver-2.2.msi” />
<Link rel=”installationmedia” media=”(windows) and (windows.architecture:x86)”
artifact=”windows-installer”
href=”http://mirror.fabrikam.com/downloads/webserver-2.2.msi”/>
<Link rel=”installationmedia” media=”(windows) and (windows.architecture:x86)”
artifact=”windows-installer”
href=”http://downloads.contoso.com/downloads/webserver-2.2.msi” />
</SoftwareIdentity>
D.4 検出ツールによって生成されたSWIDタグ
これは,検出ツールがデバイス上のソフトウェアとソフトウェアに関するSWIDタグをもたないソフト
ウェアとを識別する例である。この例では,検出ツールはコンピュータデバイス上に他のツール及びIT
プロセスで利用可能な主タグを生成してもよい。
次にこの場合のタグの例を示す。この例は,検出ツールがFabrikam Writer 2010製品を識別したことに基
づいている。この特定のシナリオでは,Fabrikam 2010製品群はSWIDタグをもたないが,Fabrikam 2013
製品群はSWIDタグをもつ(D.2参照)。
この例に使われているツールはLitWareInc社が開発したLitWareDiscoveryである(いずれも架空の名称)。
<?xml version=”1.0” encoding=”UTF-8” standalone=”no”?>
<!- このSWIDタグは検出ツールによって生成された role要素のうち,softwareCreator及びlicensorはD.2で示した
ようにFabrikam社,tagCreatorはLitWareInc社と指定されること,メタデータセクションに“generator”要素を含む
こと,及びファイル情報は“Payload”の代わりに“Evidence”要素を使用することに注意する。 -->
87
X 0164-2:2018 (ISO/IEC 19770-2:2015)
<SoftwareIdentity
xmlns=”http://standards.iso.org/iso/19770/-2/2015/schema.xsd”
xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
xmlns:ds=”http://www.w3.org/2000/09/xmldsig#”
xmlns:SHA256=”http://www.w3.org/2001/04/xmldsig-more#rsa-sha256”
name=”Fabrikam Writer 2010”
tagId=”{GUID}FabrikamWriter-2010”
version=”11.1.0”
versionScheme=”multipartnumeric”>
<!-- このソフトウェアは,Fabrikam社によって作成,ライセンス許諾された。 -->
<Entity
name=”Fabrikam Corporation”
regid=”fabrikam.com”
role=”softwareCreator licensor” />
<!-- このタグは,LitWareInc社のツールによって作成された。 -->
<Entity
name=”LitWareInc”
regid=”litwareinc.com”
role=”tagCreator “ />
<!-- このソフトウェアにはC++ runtimeが必要 -->
<!-- 次のLinkでは,パーセント記号ʻ%ʼに続く,2桁の16進数の特別な文字がURLエンコーディングで使われてい
る。 この標記では,%5Bは始め角括弧ʻ[ʼを,%5Dは終わり角括弧ʻ]ʼを意味する。 -->
<Link
rel=”requires”
href=”swidpath:/SoftwareIdentity/Meta%5B@persistentId=ʼEAB2F277-0920-4F8C-B466-6FE0CA7D59DFʼ%5D”
ownership=”shared” />
<!-- この製品に関する主要な外形的情報 -->
<Meta
product=”Fabrikam Writer”
edition=””
revision=””
colloquialVersion=”2010”
summary=”Document editor provided with Fabrikam Office.”
description=”Fabrikam Writer is ... ʻvery long text about productʼ”
generator=”LitWareDiscovery”/>
88
X 0164-2:2018 (ISO/IEC 19770-2:2015)
<Evidence
date=”1999-07-25”
deviceId=”pc123.corp.somecompany.com” >
<File name=”writer.exe” size=”1010760” location=”../bin/”
SHA256:hash=”2413fb3709b05939f04cf2e92f7d0897fc2596f9ad0b8a9ea855c7bfebaae892” />
<File name=”writer.dll” size=”407212” location=”../bin/”
SHA256:hash=”7528ec87861b87460da327a5dbd5e50b778e61c56d8f0cf9cc4c8f3a9300a2fa” />
</Evidence>
</SoftwareIdentity>
89
X 0164-2:2018 (ISO/IEC 19770-2:2015)
参考文献
[1] ISO/IEC 8601,Data elements and interchange formats−Information interchange−Representation of dates and
times
[2] IETF RFC 4122,A Universally Unique IDentifier (UUID) URN Namespace
(http://www.ietf.org/rfc/rfc4122.txt)
[3] IETF RFC 5988,Web Linking (http://tools.ietf.org/html/rfc5988)
[4] IETF RFC 6761,Special-Use Domain Names (http://tools.ietf.org/html/rfc6761)
[5] United Nations Development Programme. United Nations Standard Products and Services Code (UNSPSC),
(http://unspsc.org/)
[6] Federal Information Processing Standards Publication (FIPS Pub) 186-4, Digital Signature Standard (DSS)
(http://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-4.pdf)
[7] IANA. Link Relations (http://www.iana.org/assignments/link-relations/link-relations.xhtml)
[8] IANA. Media Types (http://www.iana.org/assignments/media-types/media-types.xhtml)
[9] W3C Recommendation,XML Path Language (XPath) 2.0 (Second Edition) (http://www.w3.org/TR/xpath20/)
[10] W3C
Recommendation
,
XML
Signature
Syntax
and
Processing
(Second
Edition)
(http://www.w3.org/TR/xmldsig-core1/)
[11] W3C Recommendation,Media Queries (http://www.w3.org/TR/css3-mediaqueries/)
[12] Specification D.M.T.F. CIM operations over HTTP
(http://www.dmtf.org/sites/default/files/standards/documents/DSP200.html)
[13] W3C Note,XML Advanced Electronic Signatures (XAdES) (http://www.w3.org/TR/XAdES/)
[14] W3C Internationalization,Character encodings (http://www.w3.org/International/O-charset)
[15] IETF RFC 3629,UTF-8, a transformation format of ISO 10646 (http://www.ietf.org/rfc/rfc3629.txt)