Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
その画像、 誰が‧いつ‧どこで‧どう作った? モバイルアプリで扱うC2PAとコンテンツの来歴
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Shuhei Shitamori
August 28, 2026
Programming
23
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
その画像、 誰が‧いつ‧どこで‧どう作った? モバイルアプリで扱うC2PAとコンテンツの来歴
026/08/28 SAPPORO ENGINEER BASE #16 モバイル開発 の発表資料です。
Shuhei Shitamori
August 28, 2026
More Decks by Shuhei Shitamori
See All by Shuhei Shitamori
Photography is Dead?
shitamori1272
1
99
Vision Proで実現する 『ながら運動』健康促進術
shitamori1272
0
150
時差×英語×リモートでの コミュニケーション術
shitamori1272
0
90
写真はもう信用できない?フェイク検出から来歴証明へ
shitamori1272
1
92
Apple SharePlayで 非対称クロスプレイ チャレンジ (SharePlay使ってみた編)
shitamori1272
0
200
Foundation Models触ってみた - iPhone Dev Sapporo — WWDC25 Recap
shitamori1272
0
140
Vision Proで広告フリーな世界を実現したい
shitamori1272
0
250
Wallet API, Verifier APIで実現するIDカード on iPhoneの世界
shitamori1272
1
3.6k
Other Decks in Programming
See All in Programming
AI時代に学ぶ 好きなルール 嫌いなルール Linter編
shorty5121
0
190
生成AIで帳票OCRが「簡単に」作れる時代になった?
kon_shou
0
1.2k
わからない話を追いかけたら、プログラミング言語を作る側にいた
ydah
3
560
Press start. Python's next generation.
willingc
PRO
3
240
AWS Transform Customによる Spring Boot 2.xから4.xへのVerUp
satoshi256kbyte
2
110
言葉の格闘技のススメ~紙とペンと言葉から始める、キャリアの描き方~
progresscicada
2
180
Gmail/Google DriveをトリガーにAIエージェントを動かそう! / Run AI agents with Gmail/Google Drive as triggers!
har1101
2
450
Go 1.27からのGODEBUG / Go 1.27 リリースパーティ #go127party
mazrean
0
250
ソフトウェアラスタライザ
fadis
1
710
Cloudflare is Agents
chimame
0
180
自動化したのに回らない テスト運用の壁―AI時代の品質責任と生産性
mfunaki
0
520
初めての模倣学習とVLA
natsutan
0
300
Featured
See All Featured
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
500
Testing 201, or: Great Expectations
jmmastey
46
8.2k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
201
75k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
490
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
240
A designer walks into a library…
pauljervisheath
211
24k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.7k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.8k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.4k
Transcript
その画像、 誰が‧いつ‧(どこで)‧どう作った? モバイルアプリで扱うC2PAとコンテンツの来歴 下森 周平 2026/08/28 SAPPORO ENGINEER BASE #16
モバイル開発
下森 周平 / したもり • ひとり法⼈として活動するiOSエンジニア • デジタルIDに関するアプリの開発 • 結婚を期に、2年前から札幌
• 先⽉ Sapporo.swiftを開催 @forestunder_dev
近況 Sapporo.swift向けにAI画像⽣成機能を 使ったアプリを作った • 参加者に割り当てた隠れプロンプトを 当てるゲーム ◦ 参加者の名札をスキャンして 隠れプロンプトを集める ◦
集めたプロンプトで画像を⽣成 ◦ ⽣成した画像から各参加者のプロンプトを推測する
今⽇話すこと 1. コンテンツの信ぴょう性を判断するために⾒た⽬ではなく 「誰が、いつ、どうやって」などの来歴を確かめる 2. C2PA規格は来歴を署名付きで扱う標準規格 3. モバイルアプリは、来歴をユーザーに届ける重要な存在 積極的にC2PA企画に対応しよう
どちらが本物の時計台 写真でしょう? A B
どちらが本物の時計台 写真でしょう? ✅ ❌ Proofmode iOS アプリ ChatGPT 生成画像
データから「⾒破る」が困難な時代 現代は ◦ 個⼈や組織があらゆる⽬的で、 ◦ ⾼品質なAIコンテンツを⽣成し、 ◦ SNSやメディアで⼤量に拡散される時代 「本物」のコンテンツまで疑われるように
「⾒破る」から「来歴を⾒る」へ 「⾒破る」限界 「来歴を⾒る」仕組みへ 本物そっくりなコンテンツを⽣成されたら ⾒分けることはできない 必要なのは、コンテンツの⾒た⽬ではなく 「誰が‧いつ‧どのように」 作成したかを確認する仕組み
C2PA規格 コンテンツの来歴を扱う業界標準規格 • 「誰が‧いつ‧どのように作成‧編集したか」などの 来歴情報をコンテンツに紐付け可能 • デジタル署名により改ざん不可能なため、信頼できる情報源として扱える • 画像‧動画‧⾳声‧⽂書など多くのフォーマットに対応 ⽣成来歴を記録
⽣成ツール 編集来歴を記録 編集ツール ⽣成‧編集来歴を活⽤ 利⽤ツール
多くの団体がC2PAに参画している Steering Committee Members General Members(⽇本企業を中⼼に抜粋) Source: C2PA Membership(2026年8⽉27⽇参照)
C2PA対応製品‧サービスの例 撮影‧作成 編集 配信‧変換 表⽰ Leica M11-P Adobe Photoshop Cloudflare
Images Youtube 撮影時に来歴を署名 出⼒時に来歴を付与 変換後も保持‧再署名 AI⽣成かラベル表⽰
スマホのC2PA対応例 Androidの⼀部機種から、機種カメラのC2PA対応が進む • Pixel10 ~ (写真) • Pixel 8 ~
(動画) • Galaxy S25 ~ (AI編集した写真のみ)
データから「⾒破る」が困難な時代 現代は ◦ 個⼈や組織があらゆる⽬的で、 ◦ ⾼品質なAIコンテンツを⽣成し、 ◦ SNSやメディアで⼤量に拡散される時代 「本物」のコンテンツまで疑われるように
データから「⾒破る」が困難な時代 現代は ◦ 個⼈や組織があらゆる⽬的で、 ◦ ⾼品質なAIコンテンツを⽣成し、 もしC2PA⽣成情報が コンテンツデータに ◦ SNSやメディアで⼤量に拡散される時代
紐づいていたら 判断の重要な証拠に! 「本物」のコンテンツまで疑われるように
C2PAデータをみてみる Proofmode iOSアプリで撮影した写真 • 公式Viewer ◦ https://verify.contentauthenticity.org/ • ⾮公式の詳細の確認ができるViewer ◦
https://c2paviewer.com/
C2PAデータをみてみる ChatGPTで⽣成したフェイク画像 • 公式Viewer ◦ https://verify.contentauthenticity.org/ • ⾮公式の詳細の確認ができるViewer ◦ https://c2paviewer.com/
C2PAデータをみてみる C2PA付き写真を改ざんした画像 • 公式Viewer ◦ https://verify.contentauthenticity.org/ • ⾮公式の詳細の確認ができるViewer ◦ https://c2paviewer.com/
C2PAの注意点① C2PA付きコンテンツからC2PAデータを取り除くと 来歴の確認が不可能に C2PAデータを 取り除いた UFO画像 • SNSへのアップロードによりメタデータごと削除 • C2PA未対応ツールでの編集により消失
• 悪意あるユーザーによる意図的な削除 UFOが嘘か 判断できなくな る C2PAエコシステムの拡⼤が不可⽋
C2PAの注意点② • 暗号的に検証できるのは 「どのツールがその来歴を記録し、その後に変更がないか」 • ツールが記録した内容が「真実」とは保証できない 僕が作ったアプリで、 カメラで作成した来歴を持つ ツチノコ画像を作れるぞ! ◦
悪意あるコンテンツ提供者が嘘の来歴を記録 ◦ ツールの不具合により、誤った来歴が記録 ツール提供元も確認して総合的に判断することが⼤事 (https://spec.c2pa.org/conformance-explorerからC2PA公式が承認したツールを探せる)
なぜC2PA規格の話をモバイル開発の場でするのか • アプリは、コンテンツとユーザーの接点 ◦ モバイルアプリで「写真の撮影や編集」などのコンテンツ作成を⾏うユーザーが多い ◦ モバイルアプリで「動画や⾳楽」などのコンテンツ利⽤するユーザーが多い • スマホ⾃体のC2PA対応が発展途上 ◦
iPhoneの代わりに、アプリ層でC2PA来歴を扱わないとユーザーに届かない アプリがC2PA対応しないと、多くユーザーが来歴の価値を受け取れない
C2PA規格の対応ができるアプリ コンテンツ作成アプリは来歴記録 コンテンツ編集アプリは来歴保持‧記録 コンテンツ共有アプリは来歴保持 コンテンツ表⽰アプリは来歴活⽤
C2PA規格をモバイルアプリで扱う 準公式SDKで、モバイルアプリから読み取り‧検証‧書き込み‧署名まで扱える https://github.com/contentauth/c2pa-swift https://github.com/contentauth/c2pa-android
C2PA来歴を読み取る コンテンツのURLから来歴をJSON⽂字列として読み取ることができる // Swift import C2PA // Kotlin import org.contentauth.c2pa.*
do { let manifestJSON: String = try C2PA.readFile(at: imageURL) print("C2PA manifest: \(manifestJSON)") } catch { print("Error reading C2PA data: \(error)") } try { val manifest = C2PA.readFile("/path/to/image.jpg") println("Manifest: $manifest") } catch (e: C2PAError) { println("Error reading manifest: $e") }
C2PA来歴を読み取る ⽣成AI画像⼊⼒時の出⼒データの⼀部 { "manifests": { "title": "image.png", "assertions": [ {
"label": "c2pa.actions.v2", "data": { "actions": [ { "action": "c2pa.created", "when": "2026-08-27T00:00:00Z", "softwareAgent": { "name": "gpt-image", "version": "2.0" }, "digitalSourceType": "http://cv.iptc.org/newscodes/digitalsourcetype/trainedAlgorithmicMedia" }, … ] }, "created": true } ], "signature_info": { "alg": "Es256", "issuer": "OpenAI OpCo, LLC", "common_name": "OpenAI Media Service", "cert_serial_number": "471440979205905794604524502504016020624908622401", "time": "2026-08-27T05:31:13.536137+00:00" }, "label": "urn:c2pa:94b278d2-fa5b-4bfe-8bb3-29a9874f16b0", "claim_version": 2 } }, … "validation_state": "Trusted" }
デモ1: 編集履歴のない写真だけ投稿できるSNSアプリ 投稿前にC2PA来歴データを確認する • C2PA来歴があるか • C2PA来歴が改ざんされていないか • カメラで作成された画像か •
編集来歴が存在しないか ノンフィクションコンテンツアプリが作れる!
C2PA来歴を書き込む JSON形式の来歴を署名⽤の鍵を渡してC2PA付きコンテンツを書き出す // Swift let signerInfo = SignerInfo( algorithm: .es256,
certificatePEM: certificatePEM, privateKeyPEM: privateKeyPEM, tsaURL: nil ) // Kotlin val signerInfo = SignerInfo( algorithm = SigningAlgorithm.ES256, certificatePEM = certsPem, privateKeyPEM = privateKeyPem, tsaURL = "https://timestamp.server.com" ) let manifestJSON = """ { "claim_generator": "MyApp/1.0", "title": "Signed Image", "format": "image/jpeg" } """ val manifest = """{ "claim_generator": "my_app/1.0", "assertions": [ {"label": "c2pa.actions", "data": {"actions": [{"action": "c2pa.created"}]}} ] }""" try C2PA.signFile( source: inputURL, destination: outputURL, manifestJSON: manifestJSON, signerInfo: signerInfo ) try C2PA.signFile( sourcePath = "/path/to/input.jpg", destPath = "/path/to/output.jpg", manifest = manifest, signerInfo = signerInfo )
デモ2: C2PA来歴を書き込む 冒頭の画像⽣成アプリに、⽣成画像にC2PA来歴を書き込む機能を追加 • ⽣成AI製であること • ⽣成⽇時 • ⽣成アプリ名 •
スキャンしたユーザーと隠れプロンプト 作成時の特別なコンテキストが埋め込まれた思い出深い画像を作るアプリに!
そのほか実装で気を付けること • C2PA来歴が消失しないよう、不要なデータ変換を避ける ◦ 例: 来歴付きPNG Data → UIImage →
PNG Dataで来歴が消失 • プライバシーな情報は、必要でない限りC2PA来歴に書き込まない ◦ 例: Pixel 10カメラも位置情報はC2PA来歴に⼊れていない
まとめ 1. コンテンツの信ぴょう性を判断するために 「誰が、いつ、どうやって」の来歴を確かめる 2. C2PA規格は来歴をデジタル署名付きで扱う標準規格 3. モバイルアプリは、来歴をユーザーに届ける重要な存在 ⾃分のアプリを信頼してもらうために、積極的にC2PA規格を活⽤しよう
おまけ: Google SlidesもC2PA対応してた!