当前位置: 首页 > 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 …...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘

美国西海岸的夏天&#xff0c;再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至&#xff0c;这不仅是开发者的盛宴&#xff0c;更是全球数亿苹果用户翘首以盼的科技春晚。今年&#xff0c;苹果依旧为我们带来了全家桶式的系统更新&#xff0c;包括 iOS 26、iPadOS 26…...

MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例

一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

FFmpeg 低延迟同屏方案

引言 在实时互动需求激增的当下&#xff0c;无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作&#xff0c;还是游戏直播的画面实时传输&#xff0c;低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架&#xff0c;凭借其灵活的编解码、数据…...

【Linux】C语言执行shell指令

在C语言中执行Shell指令 在C语言中&#xff0c;有几种方法可以执行Shell指令&#xff1a; 1. 使用system()函数 这是最简单的方法&#xff0c;包含在stdlib.h头文件中&#xff1a; #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

centos 7 部署awstats 网站访问检测

一、基础环境准备&#xff08;两种安装方式都要做&#xff09; bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats&#xff0…...

在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module

1、为什么要修改 CONNECT 报文&#xff1f; 多租户隔离&#xff1a;自动为接入设备追加租户前缀&#xff0c;后端按 ClientID 拆分队列。零代码鉴权&#xff1a;将入站用户名替换为 OAuth Access-Token&#xff0c;后端 Broker 统一校验。灰度发布&#xff1a;根据 IP/地理位写…...

【单片机期末】单片机系统设计

主要内容&#xff1a;系统状态机&#xff0c;系统时基&#xff0c;系统需求分析&#xff0c;系统构建&#xff0c;系统状态流图 一、题目要求 二、绘制系统状态流图 题目&#xff1a;根据上述描述绘制系统状态流图&#xff0c;注明状态转移条件及方向。 三、利用定时器产生时…...

Python爬虫(一):爬虫伪装

一、网站防爬机制概述 在当今互联网环境中&#xff0c;具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类&#xff1a; 身份验证机制&#xff1a;直接将未经授权的爬虫阻挡在外反爬技术体系&#xff1a;通过各种技术手段增加爬虫获取数据的难度…...

C++中string流知识详解和示例

一、概览与类体系 C 提供三种基于内存字符串的流&#xff0c;定义在 <sstream> 中&#xff1a; std::istringstream&#xff1a;输入流&#xff0c;从已有字符串中读取并解析。std::ostringstream&#xff1a;输出流&#xff0c;向内部缓冲区写入内容&#xff0c;最终取…...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包&#xff08;Closure&#xff09;&#xff1f;闭包有什么应用场景和潜在问题&#xff1f;2.解释 JavaScript 的作用域链&#xff08;Scope Chain&#xff09; 二、原型与继承3.原型链是什么&#xff1f;如何实现继承&a…...