当前位置: 首页 > news >正文

区块链 | NFT 水印:Review on Watermarking Techniques(三)

🍍原文:Review on Watermarking Techniques Aiming Authentication of Digital Image Artistic Works Minted as NFTs into Blockchains



一个 NFT 的水印认证协议

可以引入第三方实体来实现对交易的认证,即通过使用 R S A \mathsf{RSA} RSA 加密协议来验证水印的有效性。 R S A \mathsf{RSA} RSA 加密是一种广为人知的公钥加密技术,它被广泛应用于保障数据传输的安全性。

作品的所有者 o w n e r \mathsf{owner} owner 和认证实体使用自己的私钥和公钥,在艺术作品中嵌入一个 s i g n a t u r e \mathsf{signature} signature 签名,也就是 w a t e r m a r k \mathsf{watermark} watermark 水印,从而增强了作品本身、创作者 c r e a t o r \mathsf{creator} creator 身份和认证实体的真实性。

个人理解:作品的所有者可以是 c r e a t o r \mathsf{creator} creator 创作者,也可以是创作者委托的 s e l l e r \mathsf{seller} seller 卖家。不过,水印中始终包含的是 c r e a t o r \mathsf{creator} creator 创作者的信息。

除此之外,可以把水印 w a t e r m a r k \mathsf{watermark} watermark 的校验和 c h e c k s u m \mathsf{checksum} checksum 也记录在区块链上,以注册 r e g i s t e r \mathsf{register} register 交易以获得额外的安全性,同时维持 NFT 和数字货币的去中心化特性。

后文会对水印认证协议进行详细的阐述。

通过运用 R S A \mathsf{RSA} RSA 加密技术,可以创建一个水印 W W W,将其嵌入到作品中,以此来验证创作日期 D A T E C R E A \mathsf{DATECREA} DATECREA、所有者标识 U S E R I D \mathsf{USERID} USERID 以及其他相关信息。

假设我们采用了一种 R S A \mathsf{RSA} RSA 对称加密方法,该方法包括两个过程:

  • 名为 P U B ( K e y P U B , ⋅ ) \mathsf{PUB(Key_{PUB},\ \cdot\ )} PUB(KeyPUB,  ) 的加密过程;
  • 名为 P R I V ( K e y P R I V , ⋅ ) \mathsf{PRIV(Key_{PRIV},\ \cdot\ )} PRIV(KeyPRIV,  ) 的解密过程;

它们分别与公钥 K e y P U B \mathsf{Key_{PUB}} KeyPUB 和私钥 K e y P R I V \mathsf{Key_{PRIV}} KeyPRIV 相对应,使得以下等式成立:

W = P R I V ( K e y P R I V , P U B ( K e y P U B , W ) ) W=\mathsf{PRIV(Key_{PRIV},PUB(Key_{PUB},} W \mathsf{))} W=PRIV(KeyPRIV,PUB(KeyPUB,W))

个人理解:在我们使用公钥 K e y P U B \mathsf{Key_{PUB}} KeyPUB 对水印 W W W 进行签名后,可以使用私钥 K e y P R I V \mathsf{Key_{PRIV}} KeyPRIV 将签名值还原为 W W W 水印。

为了确保消息被准确地加密和解密,上述流程必须依赖公、私钥。公钥负责加密,它可以安全地公开传播,而不会削弱系统的安全性。相对地,私钥则必须严格保密,仅被信息的发送者或作品的创作者与所有者所知。接下来,本文将阐述一个用于验证作品真实性及其创作者所有权的认证协议。



1 水印认证协议的提出

设想存在一个认证实体,它通过展示和处理艺术作品来增加艺术家的信誉,同时将交易注册 r e g i s t e r \mathsf{register} register 到区块链上,以便进行公开审计和验证嵌入的水印。这个实体可以是现有的市场,它负责将作品的 URL 和其他相关信息注册到区块链上,通常采用以太坊区块链。

简而言之,“认证实体” 可以由 NFT 市场来充当。

作品的所有者可以利用市场提供的服务来生成一对私钥和公钥,其中私钥需要安全地存储在用户的数字钱包中。同时,市场平台也需要为该笔交易创建一对私钥和公钥。

各自的公私钥如下:

  • 卖家:私钥 K e y P R I V U S E R \mathsf{Key_{PRIVUSER}} KeyPRIVUSER 和公钥 K e y P U B U S E R \mathsf{Key_{PUBUSER}} KeyPUBUSER
  • 市场:私钥 K e y P R I V M K T \mathsf{Key_{PRIVMKT}} KeyPRIVMKT 和公钥 K e y P U B M K T \mathsf{Key_{PUBMKT}} KeyPUBMKT

所有者的私钥必须对市场保密,市场的私钥也必须对所有者保密。

说明:所有者可以是卖家也可以是创作者,我这里写卖家纯粹是为了对齐文字😇



1.1 水印的嵌入

水印的嵌入和提取过程是公开的。

水印的生成依赖于:

  • 市场在创建所有者账户时提供的用户身份 U S E R I D \mathsf{USERID} USERID
  • 作品的创作日期 D A T E C R E A \mathsf{DATECREA} DATECREA
  • 交易日期(即作品被铸造成区块链记录的日期) D A T E M I \mathsf{DATEMI} DATEMI

这些信息通过连接操作符 ∣ \mid 结合。

所有者将使用市场的公钥来加密其水印部分 W 1 W_1 W1,而市场则使用所有者的公钥来加密其水印部分 W 2 W_2 W2。最终生成的水印 W W W 是通过将这两部分进行异或操作 ⊕ \oplus 结合而成的:

  • 卖家: W 1 = P U B ( K e y P U B M K T , U S E R I D ∣ D A T E C R E A ) W_1 = \mathsf{PUB(Key_{PUBMKT},USERID\mid DATECREA)} W1=PUB(KeyPUBMKT,USERIDDATECREA)
  • 市场: W 2 = P U B ( K e y P U B U S E R , U S E R I D ∣ D A T E M I ) W_2 = \mathsf{PUB(Key_{PUBUSER},USERID\mid DATEMI)} W2=PUB(KeyPUBUSER,USERIDDATEMI)
  • 水印: W = W 1 ⊕ W 2 W = W_1 \oplus W_2 W=W1W2

将水印 W = W 1 ⊕ W 2 W = W_1 \oplus W_2 W=W1W2 嵌入到作品当中,并在 IPFS 中保存加了水印的作品。注意,可以选择多种水印技术之一来嵌入水印 W W W,例如前面所述的扩散频谱技术和 LSB 技术。

个人理解: W 1 W_1 W1 W 2 W_2 W2 只是在对关键信息进行签名,最后才是通过水印技术把 W W W 嵌入到作品当中。



1.2 水印的提取

在必要时,市场可以通过异或 ⊕ \oplus 操作的可逆性,利用已知的 W 2 W_2 W2 水印和提取出的水印 W W W 来生成未知的 W 1 W_1 W1 水印:

W 1 = W 2 ⊕ W W_1 = W_2 \oplus W W1=W2W

同样地,所有者也可以采用相同的方法生成 W 2 W_2 W2 水印。

此外,可以使用现有的算法 [16] 生成水印的校验和 C H E C K S U M \mathsf{CHECKSUM} CHECKSUM。这个校验和会被添加到即将铸造成区块链的数据 D A T A M I N T \mathsf{DATAMINT} DATAMINT 中, D A T A M I N T \mathsf{DATAMINT} DATAMINT 包含作品在 IPFS 中的 URL 和其他相关信息。为了降低燃料费用,校验和 C H E C K S U M \mathsf{CHECKSUM} CHECKSUM 应该比水印本身更小,其功能是为嵌入的水印提供真实性验证。

所提出的认证协议如下图所示:

在这里插入图片描述



2 嵌入水印后的验证流程

设想市场系统利用取证工具发现某件已发布作品存在复制或极其相似的情况。或者,作品的所有者察觉到其作品遭受了盗窃,且在该作品原版被铸造成区块链之后,被盗版本也完成了铸币。

通过从涉嫌的作品中提取出透明水印,并利用私钥对相关信息进行解密,可以确认作者的身份。具体来说,通过区块链上的校验和来验证水印,通过水印来验证创作日期、铸币日期和用户的身份信息。这些信息将作为有关争议作品的可靠法律证据。因此,建议的市场流程可以由市场实施,从而为艺术家提供更高质量、更安全的服务。

请注意,验证过程依赖于市场和所有者对交易及作品本身的了解。两个实体(所有者和市场)可以核对水印 W = W 1 ⊕ W 2 W = W_1 \oplus W_2 W=W1W2 的对应部分,并验证所有权。通过对比这两部分信息,可以全面验证可能存在的欺诈行为。为了进一步增加对 NFT 交易的信心,并提升艺术品市场的价值,可以提出这一协议的变种。此外,可见水印和多种透明技术可以与先进的半脆弱水印技术相结合使用。



相关文章:

区块链 | NFT 水印:Review on Watermarking Techniques(三)

🍍原文:Review on Watermarking Techniques Aiming Authentication of Digital Image Artistic Works Minted as NFTs into Blockchains 一个 NFT 的水印认证协议 可以引入第三方实体来实现对交易的认证,即通过使用 R S A \mathsf{RSA} RSA…...

初识C语言——第十九天

for循环 1.简单概述 2.执行流程 3.建议事项:...

软件需求工程习题

1.(面谈)是需求获取活动中发生的需求工程师和用户间面对面的会见。 2.使用原型法进行需求获取,(演化式)原型必须具有健壮性,代码质量要从一开始就能达到最终系统的要求 3.利用面谈进行需求获取时&#xf…...

Win10弹出这个:https://logincdn.msauth.ne

问题描述: Win10脚本错误 Windows10家庭版操作系统开机后弹出这个 https://logincdn.msauth.net/shared/1.0/content/js/ConvergedLogin_PCore_vi321_9jVworKN8EONYo0A2.js 解决方法: 重启计算机后手动关闭第三方安全优化软件,然后在任务管理…...

Vue2 动态路由

VUE CLI 项目 router.js import Vue from "vue"; import Router from "vue-router"; import base from "/view/404/404.vue";const originalPush Router.prototype.push Router.prototype.push function push (location) {return originalPu…...

LeetCode746:使用最小花费爬楼梯

题目描述 给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。 你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。 请你计算并返回达到楼梯顶部的最低花费。 代码 …...

DockerFile介绍与使用

一、DockerFile介绍 大家好,今天给大家分享一下关于 DockerFile 的介绍与使用,DockerFile 是一个用于定义如何构建 Docker 镜像的文本文件,具体来说,具有以下重要作用: 标准化构建:提供了一种统一、可重复…...

Java基础知识(六) 字符串

六 字符串 6.1 String字符串 1、String类对象创建 定义String类对象格式:** 1)String 字符串变量名“字符串常量”; 2)String 字符串变量名new String(字符串常量); 3)String 字符串变量名; 字符串变量名“字符串常…...

为什么跨境电商大佬都在自养号测评?看完你就懂了!

在跨境电商的激烈竞争中,各大平台如亚马逊、拼多多Temu、shopee、Lazada、wish、速卖通、煤炉、敦煌、独立站、雅虎、eBay、TikTok、Newegg、Allegro、乐天、美客多、阿里国际、沃尔玛、Nike、OZON、Target以及Joom等,纷纷成为商家们竞相角逐市场份额的焦…...

AtCoder Beginner Contest 353

A 题意&#xff1a;检查是否有比第一个数大的数 #include<bits/stdc.h>using namespace std;int main() {int n;cin>>n;int a;cin>>a;int f0;for(int i2;i<n;i){int k;cin>>k;if(k>a){cout<<i<<endl;f1;break;}}if(f0){cout<&l…...

深度解读《深度探索C++对象模型》之虚继承的实现分析和效率评测(一)

目录 前言 具有虚基类的对象的构造过程 通过子类的对象存取虚基类成员的实现分析 接下来我将持续更新“深度解读《深度探索C对象模型》”系列&#xff0c;敬请期待&#xff0c;欢迎左下角点击关注&#xff01;也可以关注公众号&#xff1a;iShare爱分享&#xff0c;或文章末…...

计算机Java项目|Springboot房产销售系统

作者主页&#xff1a;编程指南针 作者简介&#xff1a;Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、腾讯课堂常驻讲师 主要内容&#xff1a;Java项目、Python项目、前端项目、人工智能与大数据、简…...

学习3D几何和特征一致的高斯溅射目标去除

earning 3D Geometry and Feature Consistent Gaussian Splatting for Object Removal 学习3D几何和特征一致的高斯溅射目标去除 Yuxin Wang 王玉欣 HKUST &Qianyi Wu Monash University &Guofeng Zhang Zhejiang University &Dan Xu HKUST 香港科技大学&吴倩…...

PHP 使用常量实现枚举类

PHP 使用常量实现枚举类 <?php abstract class Enum {private static $constCacheArray NULL;private static function getConstants() {if (self::$constCacheArray NULL) {self::$constCacheArray [];}$calledClass get_called_class();if (!array_key_exists($call…...

Linux操作系统基础题库

一. 单选题&#xff08;共2题&#xff0c;40分&#xff09; 1. (单选题)Linux操作系统自诞生至今&#xff0c;有数十万的程序开发人员参与到了它的开发与完善中&#xff0c;如今Linux已发展成为是一个成熟、稳定的操作系统。从以下选项中选出关于Linux特点描述完全正确的一项。…...

Java抽象类:为何它是你代码架构的基石?

目录 1、抽象类的概念 2、抽象类语法 3、抽象类特性 4、抽象类的作用 5、 完结散花 个人主页&#xff1a;秋风起&#xff0c;再归来~ 文章专栏&#xff1a;javaSE的修炼之路 个人格言&#xff1a;悟已往之不谏&#xff0c;知来者犹可追 克…...

Flutter 中的 ToggleButtons 小部件:全面指南

Flutter 中的 ToggleButtons 小部件&#xff1a;全面指南 在 Flutter 中&#xff0c;ToggleButtons 是一种允许用户在一组选项中进行切换选择的控件。它通常用于展示一组相关选项&#xff0c;让用户可以快速切换选择。ToggleButtons 是一种水平排列的按钮集合&#xff0c;其中…...

【MYSQL】一颗B+树可以保存多少条数据

引言 事万物都有自己的单元体系&#xff0c;若干个小单体组成一个个大的个体。就像拼乐高一样&#xff0c;可以自由组合。所以说&#xff0c;如果能熟悉最小单元&#xff0c;就意味着我们抓住了事物的本事&#xff0c;再复杂的问题也会迎刃而解。 存储单元 存储器范围比较大…...

ssm125四六级报名与成绩查询系统+jsp

四六级报名与成绩查询系统的设计与实现 摘 要 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。针对四六级报名信息管理混乱&am…...

【Unity从零开始学习制作手机游戏】第01节:控制3D胶囊体运动

1. 新建Project L01 使用3D Mobile模板。 2. 建立一个平面&#xff0c;用来承载物体 3. 导入Unity库内的胶囊体 下载 StandardAssets https://download.unitychina.cn/download_unity/e80cc3114ac1/WindowsStandardAssetsInstaller/UnityStandardAssetsSetup-5.6.7f1.exe …...

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

PHP和Node.js哪个更爽?

先说结论&#xff0c;rust完胜。 php&#xff1a;laravel&#xff0c;swoole&#xff0c;webman&#xff0c;最开始在苏宁的时候写了几年php&#xff0c;当时觉得php真的是世界上最好的语言&#xff0c;因为当初活在舒适圈里&#xff0c;不愿意跳出来&#xff0c;就好比当初活在…...

python如何将word的doc另存为docx

将 DOCX 文件另存为 DOCX 格式&#xff08;Python 实现&#xff09; 在 Python 中&#xff0c;你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是&#xff0c;.doc 是旧的 Word 格式&#xff0c;而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...

爬虫基础学习day2

# 爬虫设计领域 工商&#xff1a;企查查、天眼查短视频&#xff1a;抖音、快手、西瓜 ---> 飞瓜电商&#xff1a;京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空&#xff1a;抓取所有航空公司价格 ---> 去哪儿自媒体&#xff1a;采集自媒体数据进…...

Razor编程中@Html的方法使用大全

文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...

AxureRP-Pro-Beta-Setup_114413.exe (6.0.0.2887)

Name&#xff1a;3ddown Serial&#xff1a;FiCGEezgdGoYILo8U/2MFyCWj0jZoJc/sziRRj2/ENvtEq7w1RH97k5MWctqVHA 注册用户名&#xff1a;Axure 序列号&#xff1a;8t3Yk/zu4cX601/seX6wBZgYRVj/lkC2PICCdO4sFKCCLx8mcCnccoylVb40lP...

基于江科大stm32屏幕驱动,实现OLED多级菜单(动画效果),结构体链表实现(独创源码)

引言 在嵌入式系统中&#xff0c;用户界面的设计往往直接影响到用户体验。本文将以STM32微控制器和OLED显示屏为例&#xff0c;介绍如何实现一个多级菜单系统。该系统支持用户通过按键导航菜单&#xff0c;执行相应操作&#xff0c;并提供平滑的滚动动画效果。 本文设计了一个…...

2025年- H71-Lc179--39.组合总和(回溯,组合)--Java版

1.题目描述 2.思路 当前的元素可以重复使用。 &#xff08;1&#xff09;确定回溯算法函数的参数和返回值&#xff08;一般是void类型&#xff09; &#xff08;2&#xff09;因为是用递归实现的&#xff0c;所以我们要确定终止条件 &#xff08;3&#xff09;单层搜索逻辑 二…...

Canal环境搭建并实现和ES数据同步

作者&#xff1a;田超凡 日期&#xff1a;2025年6月7日 Canal安装&#xff0c;启动端口11111、8082&#xff1a; 安装canal-deployer服务端&#xff1a; https://github.com/alibaba/canal/releases/1.1.7/canal.deployer-1.1.7.tar.gz cd /opt/homebrew/etc mkdir canal…...

PydanticAI快速入门示例

参考链接&#xff1a;https://ai.pydantic.dev/#why-use-pydanticai 示例代码 from pydantic_ai import Agent from pydantic_ai.models.openai import OpenAIModel from pydantic_ai.providers.openai import OpenAIProvider# 配置使用阿里云通义千问模型 model OpenAIMode…...