@prefix schema: <https://schema.org/> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix ks: <https://comcomponent.com/vocab/> .

<https://comcomponent.com/blog/2026/05/10/000-windows-smartscreen-code-signing-guide/#article>
    schema:about <https://comcomponent.com/knowledge/smartscreen/>, <https://comcomponent.com/knowledge/code-signing-cert/> ;
    schema:mentions <https://comcomponent.com/knowledge/msix/>, <https://comcomponent.com/knowledge/clickonce/>, <https://comcomponent.com/knowledge/microsoft-store/>, <https://comcomponent.com/knowledge/ev-certificate/>, <https://comcomponent.com/knowledge/ov-certificate/>, <https://comcomponent.com/knowledge/azure-artifact-signing/>, <https://comcomponent.com/knowledge/self-signed-cert/>, <https://comcomponent.com/knowledge/trusted-publisher-store/>, <https://comcomponent.com/knowledge/signtool/>, <https://comcomponent.com/knowledge/code-signing-timestamp/>, <https://comcomponent.com/knowledge/certificate-expiry/>, <https://comcomponent.com/knowledge/app-control-for-business/>, <https://comcomponent.com/knowledge/managed-installer/>, <https://comcomponent.com/knowledge/audit-mode/>, <https://comcomponent.com/knowledge/intune/>, <https://comcomponent.com/knowledge/group-policy/>, <https://comcomponent.com/knowledge/unsigned-binary/>, <https://comcomponent.com/knowledge/blocked-app-startup-failure/> .

<https://comcomponent.com/knowledge/smartscreen/> a skos:Concept ;
    skos:prefLabel "Windows SmartScreen"@ja ;
    skos:definition "評判の悪いファイルを警告する仕組み。既定ではユーザーが突破できるが、管理ポリシーで突破自体を禁止すると実質的にブロックとして働く。"@ja ;
    skos:altLabel "SmartScreen" ;
    ks:configuredBy <https://comcomponent.com/knowledge/group-policy/> ;
    ks:configuredBy <https://comcomponent.com/knowledge/intune/> .

<https://comcomponent.com/knowledge/code-signing-cert/> a skos:Concept ;
    skos:prefLabel "コード署名証明書"@ja ;
    skos:definition "ソフトウェアの発行元を証明し、改ざんを検出するための証明書。"@ja ;
    skos:altLabel "Authenticode証明書"@ja ;
    ks:verifiedBy <https://comcomponent.com/knowledge/signtool/> .

<https://comcomponent.com/knowledge/ev-certificate/> a skos:Concept ;
    skos:prefLabel "EVコード署名証明書"@ja ;
    skos:definition "発行元のより厳格な本人確認を経て発行されるコード署名証明書。現在はSmartScreenの初回警告を自動的に回避する挙動を持たない。"@ja ;
    skos:altLabel "EV証明書"@ja ;
    skos:altLabel "Extended Validation証明書"@ja ;
    skos:broader <https://comcomponent.com/knowledge/code-signing-cert/> ;
    ks:notRecommendedFor <https://comcomponent.com/knowledge/smartscreen/> .

<https://comcomponent.com/knowledge/group-policy/> a skos:Concept ;
    skos:prefLabel "グループポリシー"@ja ;
    skos:definition "Active Directoryドメイン環境でWindowsの設定を集中構成する仕組み。"@ja ;
    skos:altLabel "GPO" ;
    skos:altLabel "Group Policy" .

<https://comcomponent.com/knowledge/intune/> a skos:Concept ;
    skos:prefLabel "Microsoft Intune"@ja ;
    skos:definition "クラウドからPC・モバイルデバイスを管理するMicrosoftのMDMサービス。"@ja ;
    skos:altLabel "Intune" .

<https://comcomponent.com/knowledge/msix/> a skos:Concept ;
    skos:prefLabel "MSIX"@ja ;
    skos:definition "package identityを持つ、Windowsのモダンなアプリパッケージング形式。"@ja ;
    skos:altLabel "MSIX" ;
    ks:requires <https://comcomponent.com/knowledge/code-signing-cert/> .

<https://comcomponent.com/knowledge/microsoft-store/> a skos:Concept ;
    skos:prefLabel "Microsoft Store"@ja ;
    skos:definition "アプリの配布・更新を担うWindows標準のストアアプリで、LTSCには含まれない。"@ja ;
    skos:altLabel "ストア"@ja ;
    ks:mitigates <https://comcomponent.com/knowledge/smartscreen/> .

<https://comcomponent.com/knowledge/azure-artifact-signing/> a skos:Concept ;
    skos:prefLabel "Azure Artifact Signing"@ja ;
    skos:definition "Microsoftが提供するクラウド型のコード署名サービス(旧Trusted Signing)。物理USBトークンを使わずCI/CDに組み込め、本番配布のMSIX署名で推奨される選択肢に位置付けられるが、利用可能な地域は法人が米国・カナダ・EU・英国、個人が米国・カナダに限られ、日本の開発者は利用できない。"@ja ;
    skos:altLabel "Trusted Signing" ;
    skos:altLabel "Artifact Signing" ;
    ks:recommendedFor <https://comcomponent.com/knowledge/msix/> .

<https://comcomponent.com/knowledge/ov-certificate/> a skos:Concept ;
    skos:prefLabel "OVコード署名証明書"@ja ;
    skos:definition "発行元の組織確認を経て発行される標準的なコード署名証明書。EV証明書と同様、評判が配布実績に応じて蓄積される前提で扱われる。"@ja ;
    skos:altLabel "OV証明書"@ja ;
    skos:altLabel "Organization Validation証明書"@ja ;
    skos:broader <https://comcomponent.com/knowledge/code-signing-cert/> ;
    ks:recommendedFor <https://comcomponent.com/knowledge/msix/> .

<https://comcomponent.com/knowledge/self-signed-cert/> a skos:Concept ;
    skos:prefLabel "アドホックな自己署名証明書"@ja ;
    skos:definition "検証用にツールで自前発行したサーバー/クライアント証明書。鍵管理の仕組みを持たず、検証環境限定・期限つきでの利用が原則。適切に運用される社内CAのルート証明書(これも技術的には自己署名)とは区別する。"@ja ;
    skos:altLabel "自己署名証明書"@ja ;
    ks:recommendedFor <https://comcomponent.com/knowledge/msix/> .

<https://comcomponent.com/knowledge/trusted-publisher-store/> a skos:Concept ;
    skos:prefLabel "信頼された発行元ストア"@ja ;
    skos:definition "信頼する発行元のコード署名証明書を登録する論理ストア。"@ja ;
    skos:altLabel "TrustedPublisher" ;
    skos:broader <https://comcomponent.com/knowledge/certificate-store/> .

<https://comcomponent.com/knowledge/clickonce/> a skos:Concept ;
    skos:prefLabel "ClickOnce"@ja ;
    skos:definition ".NETのWindowsデスクトップアプリを、利用者単位で簡単に配り、自動更新まで含めて回すための配布技術。マニフェストを中心に配布・更新・キャッシュ管理をまとめて扱う配布モデル。"@ja ;
    skos:altLabel "ClickOnce配布"@ja .

<https://comcomponent.com/knowledge/signtool/> a skos:Concept ;
    skos:prefLabel "SignTool"@ja ;
    skos:definition "コード署名とRFC 3161タイムスタンプの付与、および署名の検証を行うWindows SDK付属のコマンドラインツール。"@ja ;
    skos:altLabel "signtool.exe" .

<https://comcomponent.com/knowledge/code-signing-timestamp/> a skos:Concept ;
    skos:prefLabel "コード署名のタイムスタンプ"@ja ;
    skos:definition "署名時刻をRFC 3161タイムスタンプサーバーで証明する付与情報。証明書の期限が切れても署名の有効性を保つ。"@ja ;
    skos:altLabel "RFC 3161タイムスタンプ"@ja ;
    ks:mitigates <https://comcomponent.com/knowledge/certificate-expiry/> .

<https://comcomponent.com/knowledge/certificate-expiry/> a skos:Concept ;
    skos:prefLabel "証明書の期限切れ"@ja ;
    skos:definition "証明書の有効期間(NotAfter)を過ぎて検証に失敗する状態。"@ja ;
    skos:altLabel "有効期限切れ"@ja .

<https://comcomponent.com/knowledge/app-control-for-business/> a skos:Concept ;
    skos:prefLabel "App Control for Business(旧WDAC)"@ja ;
    skos:definition "Windows 10で「Device Guard」として登場した実行制御機能の現在の名称。ポリシーはマシン全体・全ユーザーに適用され、MSRCのサービス基準を満たすセキュリティ機能として設計されている。"@ja ;
    skos:altLabel "WDAC" ;
    skos:altLabel "Windows Defender Application Control" ;
    skos:altLabel "構成可能なコード整合性"@ja ;
    skos:altLabel "Device Guard" ;
    ks:configuredBy <https://comcomponent.com/knowledge/intune/> .

<https://comcomponent.com/knowledge/managed-installer/> a skos:Concept ;
    skos:prefLabel "マネージドインストーラー"@ja ;
    skos:definition "App Controlのルールの根拠の1つ。IntuneやConfiguration Managerなどの配布エージェントを管理者が明示的に構成すると、そのインストーラー経由で入ったバイナリを許可できる。"@ja ;
    skos:altLabel "Managed Installer" .

<https://comcomponent.com/knowledge/audit-mode/> a skos:Concept ;
    skos:prefLabel "監査モード"@ja ;
    skos:definition "ブロックせずに「強制していたらブロックされていたもの」だけを記録するAppLocker/App Controlの運用モード。強制切り替え前に一巡分のイベントを集めるために使う。"@ja ;
    skos:altLabel "Audit Mode" ;
    skos:altLabel "監査のみ"@ja ;
    ks:shouldPrecede <https://comcomponent.com/knowledge/app-control-for-business/> .

<https://comcomponent.com/knowledge/unsigned-binary/> a skos:Concept ;
    skos:prefLabel "未署名バイナリ"@ja ;
    skos:definition "コード署名が付いていない実行ファイル・DLL・インストーラー。Smart App Controlや発行者ルール運用下ではそれだけでブロック対象になり得る。"@ja ;
    skos:altLabel "未署名の実行ファイル"@ja .

<https://comcomponent.com/knowledge/blocked-app-startup-failure/> a skos:Concept ;
    skos:prefLabel "実行制御によるアプリ起動失敗"@ja ;
    skos:definition "AppLocker・App Control・Smart App Control・SmartScreenのいずれかによって、業務アプリがエラーダイアログなしに起動を止められる事象。"@ja .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/code-signing-cert/> ;
    rdf:predicate ks:mitigates ;
    rdf:object <https://comcomponent.com/knowledge/smartscreen/> ;
    schema:description "コード署名は発行元不明という要因を減らすが、ファイルや発行元の評判が蓄積されるまではSmartScreen警告が出ることがある"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/apps/package-and-deploy/smartscreen-reputation> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/ev-certificate/> ;
    rdf:predicate ks:notRecommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/smartscreen/> ;
    schema:description "EV証明書はもはやSmartScreenをバイパスしないため、初回警告の即時回避だけを目的にEV証明書を選ぶことは推奨されない"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/apps/package-and-deploy/smartscreen-reputation> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/smartscreen/> ;
    rdf:predicate ks:configuredBy ;
    rdf:object <https://comcomponent.com/knowledge/group-policy/> ;
    schema:description "Microsoft Defender SmartScreenの動作はグループポリシー設定で構成できる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/security/operating-system-security/virus-and-threat-protection/microsoft-defender-smartscreen/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/smartscreen/> ;
    rdf:predicate ks:configuredBy ;
    rdf:object <https://comcomponent.com/knowledge/intune/> ;
    schema:description "Microsoft Defender SmartScreenの動作はMicrosoft Intune設定でも構成できる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/security/operating-system-security/virus-and-threat-protection/microsoft-defender-smartscreen/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/msix/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/code-signing-cert/> ;
    schema:description "Windowsはインストール前にMSIXパッケージが有効なコード署名証明書で署名されていることを必須とする"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/msix/package/signing-package-overview> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/microsoft-store/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/msix/> ;
    schema:description "MSIXパッケージとして提出する場合、Microsoft Storeはアプリの識別やストア配布・更新チャネルの単位としてMSIXパッケージ形式を利用する。StoreはMSI/EXEのアンパッケージWin32アプリの提出も受け付けており、その場合MSIXは介さない"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/msix/overview> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/microsoft-store/> ;
    rdf:predicate ks:mitigates ;
    rdf:object <https://comcomponent.com/knowledge/smartscreen/> ;
    schema:description "Storeに提出されたMSIXパッケージはMicrosoftが無償で再署名するため、SmartScreen面で最も安定しやすい配布経路になる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/msix/package/signing-package-overview> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/azure-artifact-signing/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/msix/> ;
    schema:description "Azure Artifact SigningはMSIXの本番配布向け署名として推奨される選択肢である"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/msix/package/signing-package-overview> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/ov-certificate/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/msix/> ;
    schema:description "OVコード署名証明書はMSIXの本番配布署名における代替の選択肢として使える"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/msix/package/signing-package-overview> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/self-signed-cert/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/msix/> ;
    schema:description "自己署名証明書は開発・ローカルテスト用途のMSIX署名として使える"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/msix/package/signing-package-overview> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/self-signed-cert/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/trusted-publisher-store/> ;
    schema:description "自己署名証明書で配布したアプリを警告なしに動かすには、対象PC側であらかじめ証明書を信頼済みとして登録しておく必要がある。警告なしに動かしたい端末側であらかじめ信頼済みとして登録する運用を採る場合の話である"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/visualstudio/deployment/clickonce-security-and-deployment> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/clickonce/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/code-signing-cert/> ;
    schema:description "発行元の真正性を検証させたい本番配布では、ClickOnceはAuthenticode証明書でアプリケーションマニフェストと配置マニフェストを署名する。署名なしで発行することもでき、その場合は発行元不明の扱いになる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/visualstudio/deployment/clickonce-security-and-deployment> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/signtool/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/code-signing-timestamp/> ;
    schema:description "SignToolは/trと/tdオプションでRFC 3161タイムスタンプサーバーへの署名時刻証明を付与する。/trで タイムスタンプサーバーを明示的に指定した場合に限る"@ja ;
    ks:evidence <https://learn.microsoft.com/ja-jp/dotnet/framework/tools/signtool-exe> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/code-signing-cert/> ;
    rdf:predicate ks:verifiedBy ;
    rdf:object <https://comcomponent.com/knowledge/signtool/> ;
    schema:description "コード署名済みファイルはsigntool verifyコマンドで署名の妥当性を確認できる"@ja ;
    ks:evidence <https://learn.microsoft.com/ja-jp/dotnet/framework/tools/signtool-exe> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/code-signing-timestamp/> ;
    rdf:predicate ks:mitigates ;
    rdf:object <https://comcomponent.com/knowledge/certificate-expiry/> ;
    schema:description "署名時にタイムスタンプを付与しておくと、証明書の有効期限が切れた後もその時点で有効だったことが検証でき、署名の有効性が保たれる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/msix/package/signing-package-overview> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/app-control-for-business/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/managed-installer/> ;
    schema:description "managed installerポリシーを構成した場合、App Control for Businessは、管理者が明示的に構成した配布エージェント(managed installer)経由で入ったバイナリを許可の根拠にできる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/intune/device-configuration/endpoint-security/manage-app-control> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/audit-mode/> ;
    rdf:predicate ks:shouldPrecede ;
    rdf:object <https://comcomponent.com/knowledge/app-control-for-business/> ;
    schema:description "App Controlのポリシー変更は、まず監査モードで展開してブロックイベントが想定どおりか確認したうえで強制モードへ広げるべきである"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/security/application-security/application-control/app-control-for-business/deployment/appcontrol-deployment-guide> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/app-control-for-business/> ;
    rdf:predicate ks:configuredBy ;
    rdf:object <https://comcomponent.com/knowledge/intune/> ;
    schema:description "App Control for Businessのmanaged installerポリシーは、Intuneで配布エージェントを明示的に構成することで有効化できる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/intune/device-configuration/endpoint-security/manage-app-control> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/unsigned-binary/> ;
    rdf:predicate ks:mayCause ;
    rdf:object <https://comcomponent.com/knowledge/blocked-app-startup-failure/> ;
    schema:description "未署名の実行ファイルは、App Controlなど社内の実行制御ポリシーによってエラーダイアログなしに起動を止められることがある"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/security/application-security/application-control/app-control-for-business/deployment/appcontrol-deployment-guide> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/smartscreen/> ;
    rdf:predicate ks:mayCause ;
    rdf:object <https://comcomponent.com/knowledge/blocked-app-startup-failure/> ;
    schema:description "SmartScreenは評判の低いファイルの実行を警告・停止し、管理ポリシーで突破を禁止すると業務アプリの起動が止まる原因になり得る"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/security/operating-system-security/virus-and-threat-protection/microsoft-defender-smartscreen/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .
