如何防止NFC标签克隆?

2023-12-30

我正在使用 NFC 标签制作一个应用程序,并且必须防止 NFC 标签被克隆。我见过许多其他 NFC 标签,当尝试克隆时,会显示弹出消息“克隆受到限制,标签由密钥保护”,我希望我的 NFC 标签具有相同的安全性。


这取决于您使用的标签类型以及您想要的防克隆保护级别。

  1. NFC 标签(由NFC论坛 http://www.nfc-forum.org)没有针对克隆的保护。此类标签旨在作为可自由读取的数据(所谓的 NDEF 消息)的容器。任何人都可以从一个标签读取 NDEF 消息并将其复制到另一个标签。

  2. 许多 NFC 标签还包含由标签制造商预编程的唯一标识符,并且无法在普通标签上进行修改。您可以使用此唯一标识符来确定标签是由您颁发的(即您知道其 ID)还是伪造的(即您不知道其 ID)。您还可以在标签的 ID 及其数据上创建数字签名,而不是使用真实 ID 列表。这样,您就可以查明数据和签名是否在具有不同唯一标识符的标签上使用。但是,仍然可以从您的标签中提取所有数据。因此,您应该意识到这样一个事实,即可以使用专用硬件(例如 Proxmark 等)和现成的标签,攻击者可以将唯一标识符更改为您的标签 id 的值。所以这当然不是完美的克隆保护。

  3. 您可以使用提供通信加密和基于共享密钥的访问控制的非接触式智能卡/标签(例如 MIFARE DESFire)。通过这种方法,您可以将不希望攻击者克隆的数据存储在受密钥保护的内存区域中。但是,如果您希望能够从应用程序内读取该数据(即没有直接与卡通信的在线后端),则需要存储密钥以访问应用程序内的内存区域。最后,离线场景下(即存储在应用程序中的密钥),攻击者可能能够提取该密钥并使用它来克隆标签。

  4. 您可以使用包含秘密非对称密钥并提供使用该密钥签署加密质询的命令的标签/智能卡。在这种情况下,为了验证标签是否真实,您可以向标签请求此类签名以进行随机质询,并根据标签相应的公钥验证签名。这肯定是最安全的解决方案,因为您不需要在应用程序中存储任何共享秘密。提供此类功能的唯一现成的 NFC 标签解决方案(据我目前所知)似乎是 Inside Secure 的 VaultIC。尽管您可以根据非接触式智能卡(例如 Java 卡)的非对称加密功能自行创建一个。

请注意,对于上述所有克隆保护方案,您必须创建一个应用程序来检查标签是真实的还是克隆的。默认情况下,NFC 手机仅使用 (1) 中的信息,因此不执行任何此类检查。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何防止NFC标签克隆? 的相关文章

  • GCM 向主题发送消息:TOO_MANY_TOPICS 错误

    以前 GCM 每个应用程序有 100 万个主题订阅的限制 我发现他们现在已经取消了这一限制 基于发布 订阅模型 主题消息支持 每个应用程序无限订阅 https developers google com cloud messaging to
  • Android第一次动画不流畅

    我正在尝试一个动画将 imageView 从屏幕底部滑动到屏幕中心 但是当我第一次执行此动画时 它不平滑 但当第二次执行动画时 它是正常且平滑的 我几乎尝试了所有方法 但无法解决我的问题 这是我的动画文件
  • Android 应用程序在后台运行时保存数据

    目前我正在开发 xmmp 客户端 当应用程序位于前台时 该客户端工作得很好 但由于事实上 当应用程序处于后台时 我在 Application 类中保存了大量数据 复杂的 ArrayList 字符串和布尔值作为公共静态 每个字段都被垃圾收集
  • 如何更新 Firebase 中的节点密钥?

    如何重命名14 04 2017 node 没有用于重命名节点的 API 您必须获取节点的值 使用新名称将其保存到数据库并删除旧节点
  • (Ionic 2)尝试回退到 Cordova-lib 执行时发生错误:TypeError:无法读取未定义的属性“then”

    Edit 使用 ionic 2 时会发生这种情况 我知道它还不稳定 但我认为可能有一些解决方案 因为其他人似乎没有遇到这个问题 Edit end 由于某种原因 我在尝试使用 ionic build android 和 ionic build
  • 接近语法错误(代码1)插入Android SQLite

    我正在创建一个通讯录应用程序 用户可以在其中输入姓名 电子邮件地址和号码 我希望将此数据保存在数据库中 但我似乎无法使插入方法起作用 我收到的错误是 android database sqlite SQLiteException near
  • 如果我们使用后退按钮退出,为什么 Android 应用程序会重新启动?

    按住主页按钮并返回应用程序时 应用程序不会重新启动 为什么使用后退按钮会重新启动 如果我们使用后退按钮退出 有什么方法可以解决在不重新启动的情况下获取应用程序的问题吗 请帮忙 当您按下Home按钮 应用程序将暂停并保存当前状态 最后应用程序
  • 线程自动利用多个CPU核心?

    假设我的应用程序运行 2 个线程 例如渲染线程和游戏更新线程 如果它在具有多核 CPU 当今典型 的移动设备上运行 我是否可以期望线程在可能的情况下自动分配给不同的核心 我知道底层操作系统内核 Android linux内核 决定调度 我的
  • Android Studio 在编译时未检测到支持库

    由于 Android Studio 将成为 Android 开发的默认 IDE 因此我决定将现有项目迁移到 Android studio 中 项目结构似乎不同 我的项目中的文件夹层次结构如下 Complete Project gt idea
  • 如何查找 Android 设备中的所有文件并将它们放入列表中?

    我正在寻求帮助来列出 Android 外部存储设备中的所有文件 我想查找所有文件夹 包括主文件夹的子文件夹 有办法吗 我已经做了一个基本的工作 但我仍然没有得到想要的结果 这不起作用 这是我的代码 File files array file
  • 如何在 sqlite 中将 2 列合并为新列

    我有一个包含 3 列的表 我必须将 2 列中的值按降序排列到一列中 A B C z 1 2 f 5 7 s 9 5 使用此示例 输出会将 B 列和 C 列中的值放入其中 如下所示 A B s 9 f 7 f 5 s 5 z 2 z 1 我当
  • Firebase:如何在Android应用程序中设置默认通知渠道?

    如何设置default通知渠道通知消息当应用程序在后台运行时会出现什么情况 默认情况下 这些消息使用 杂项 通道 如你看到的在官方文档中 https firebase google com docs cloud messaging andr
  • ROOM迁移过程中如何处理索引信息

    CODE Entity tableName UserRepo indices Index value id unique true public class GitHubRepo PrimaryKey autoGenerate true p
  • 如何在C(Linux)中的while循环中准确地睡眠?

    在 C 代码 Linux 操作系统 中 我需要在 while 循环内准确地休眠 比如说 10000 微秒 1000 次 我尝试过usleep nanosleep select pselect和其他一些方法 但没有成功 一旦大约 50 次 它
  • Android构建apk:控制MANIFEST.MF

    Android 构建 APK 假设一个 apk 包含一个库 jar 例如 foo jar 该库具有 META INF MANIFEST MF 这对于它的运行很重要 但在APK中有一个包含签名数据的MANIFEST MF 并且lib jar
  • 如何在不更改手机语言的情况下更改Android应用程序语言?

    我希望用户在应用程序内选择一种语言 选择语言后 我希望字符串使用特定语言 如果我更改手机语言 那么我的应用程序将以设置的语言运行 我无法找到任何在不更改手机语言的情况下设置语言的方法 此外 一旦设置了语言 更改就应该反映出来 有人可以建议一
  • 如何创建像谷歌位置历史记录一样的Android时间轴视图?

    我想设计像谷歌位置历史这样的用户界面 我必须为我正在使用的应用程序复制此 UIRecyclerView 每行都是水平的LinearLayout其中包含右侧的图标 线条和视图 该线是一个FrameLayout具有圆形背景和半透明圆圈Views
  • Android 设备上的静默安装

    我已经接受了一段时间了 在 Android 上静默安装应用程序是不可能的 也就是说 让程序安装捆绑为 APK 的应用程序 而不提供标准操作系统安装提示并完成应用程序安装程序活动 但现在我已经拿到了 Appbrain 快速网络安装程序的副本
  • 无法将 admob 与 firebase iOS/Android 项目链接

    我有两个帐户 A 和 B A 是在 Firebase 上托管 iOS Android unity 手机游戏的主帐户 B 用于将 admob 集成到 iOS Android 手机游戏中 我在尝试将 admob 分析链接到 Firebase 项
  • 在 Google 地图上绘制线条/路径

    我很长一段时间都在忙于寻找如何在 HelloMapView 中的地图上的两个 GPS 点之间画一条线 但没有运气 谁能告诉我该怎么做 假设我使用扩展 MapView 的 HelloMapView 我需要使用叠加层吗 如果是这样 我是否必须重

随机推荐

  • 如何将唯一数字附加到字符串列表

    我有这个函数 它可以工作并给出正确的结果
  • 忽略精灵透明区域的像素完美碰撞

    我最近从这个链接中发现了两个精灵之间的像素完美碰撞 http www cocos2d iphone org forum topic 18522 http www cocos2d iphone org forum topic 18522 我只
  • git diff,显示删除和添加的同一行

    我不小心在master上工作 在那里我不得不开设一个新的分支 我几乎把它完全恢复到原来的样子 在一节课上 我得到了以下我无法理解的差异 index 4a9abb8 7c55879 100755 a includes site inc php
  • 将 proguard 与 espresso/androidTest 一起使用

    我正在尝试配置 proguard 以将其与我的 espresso UI 测试风格一起使用 问题是 Proguard 倾向于忽略我的调试 proguard 配置 配置如下 buildTypes debug minifyEnabled true
  • Keras中的自定义损失函数,如何处理占位符

    我正在尝试在 TF Keras 中生成自定义损失函数 如果损失函数在会话中运行并传递常量 则该损失函数可以工作 但是 当编译到 Keras 中时 它会停止工作 成本函数 感谢 Lior 将其转换为 TF def ginicTF actual
  • 水平 recylerview 与 viewpager 滚动同步滚动

    我有一个带有一些值的视图寻呼机 与 recyclerview 上方的 recyclerview 的计数相同 就像 tablayout 一样 我已经使用 snap helper 实现了该功能 并且一切正常 我唯一想要的就是我想将 recycl
  • 无法使用 PowerShell 从远程服务器访问环境变量

    我有一个脚本来查询远程 Windows 服务器列表 以检索我创建的环境变量的值 我可以看到该变量确实存在 因为当我打印所有变量时我可以看到它 EnvObj try Name MY VAR VerbosePreference Continue
  • Typo3 ke_search 扩展致命错误

    我对 Typo3 还很陌生 如果我不明白这里的问题是什么 我很抱歉 我安装了扩展 ke search 并遵循 很多次 给出的基本和简单的说明 https www typo3 macher de en facetted search ke s
  • 将 json 解组为类型

    我得到以下数据 timestamp 1526058949 bids 7215 90 2 31930000 7215 77 1 00000000 通过 websocket 我想将其解组到 type OrderBookItem struct P
  • 如何为 Linux、OS X、Windows 制作 Travis CI 测试包?

    有没有办法告诉 Travis CI 或其他持续集成服务 在不同的操作系统上测试包 使用文件系统 最好仔细检查它是否与平台无关 Update 3 Windows 支持已发布 您现在可以在 Linux macOS 和 Windows 上使用 T
  • 将 vue 组件传递给子组件

    我正在尝试创建一个 Vue 组件 该组件将接受组件作为参数来显示数据 但我无法弄清楚如何使其工作 如果我全局注册显示组件 使用 Vue component 它可以工作 但如果我在本地注册它 则会出现以下错误 Vue warn Unknown
  • Android 任务管理器或系统对话框

    我想知道有没有一种方法可以在显示系统对话框时获取事件 例如任务管理器 关闭警报 我可以通过如下意图从我的活动中关闭系统对话框 Intent closeDialog new Intent Intent ACTION CLOSE SYSTEM
  • 如何查找一个方法中调用的所有方法?

    如何在特定方法中调用其他类的方法 EXAMPLE 方法 getItem1 public String getItem1 throws UnsupportedEncodingException String a 2 a getBytes a
  • 去掉chart js折线图中的竖线

    I am using Chart js to generate maps and have customised it to a good extent But I am not able to remove the vertical gr
  • 鼠标悬停在 html 上更改图像

    我试图让图像在鼠标悬停时发生变化 这段代码适用于 IE 但不适用于其他浏览器 如 chrome opera safari 等 有什么想法吗 a href img src img login button 11 jpg a 您应该使用 ID
  • JavaScript 触发 InputEvent.isTrusted = true

    我正在尝试自动化一些任务JavaScript我需要使用InputEvent 但是当我使用正常事件时 我得到事件 isTrusted false而我的活动什么也没做 这是我的事件代码 var event new InputEvent inpu
  • JavaScript:通过类方法创建和销毁类实例

    我试图弄清楚如何通过类方法删除对象 我希望能够创建一个具有从内存中释放对象的 destroy 方法的类 到目前为止 我所做的研究还没有结论 我知道垃圾收集最终会处理该对象 但我想要一种更明确的方法来销毁它 这可能吗 class constr
  • 如何返回满足特定事件序列的行?

    我正在尝试提取满足特定事件序列的 UserID 的记录 如果用户有一个 JOIN 然后是一个后续的 CANCEL 然后是一个后续的 JOIN 我想在结果集中返回它们 我需要根据需要一次运行此查询一天 或一次运行几天 下表显示了满足和不满足该
  • 如何使用scanf限制输入长度

    在此程序中 我采用了大小为 3 4 的维字符数组 只要我每行输入 3 个字符 它就可以正常工作 例如 如果我输入abc abd abd我得到相同的输出 但如果我在第一行 第二行或第三行输入更多字母 则会出现错误 我应该如何检查二维中的空字符
  • 如何防止NFC标签克隆?

    我正在使用 NFC 标签制作一个应用程序 并且必须防止 NFC 标签被克隆 我见过许多其他 NFC 标签 当尝试克隆时 会显示弹出消息 克隆受到限制 标签由密钥保护 我希望我的 NFC 标签具有相同的安全性 这取决于您使用的标签类型以及您想