【论文阅读】CAN网络中基于时序信道的隐蔽认证算法

文章目录

  • 摘要
  • 一、引言和动机
    • A 相关工作
  • 二、背景及实验设置
    • A 以前工作中的时钟偏差和局限性
    • B.最坏到达时间
    • C.安装组件
  • 三、优化流量分配
    • A.问题陈述
    • B.优化帧调度
  • 四、协议和结果
    • A.主协议
    • B.对手模型
    • C. 优化流量和单一发送者的结果
    • D.多发送方情况和噪声信道

摘要

以前的研究工作已经认可了使用延迟和时钟偏移来检测在CAN总线上通信的入侵或指纹识别控制器。最近,CAN帧的定时特性也被用于建立一种隐蔽通道进行密码认证,通过这种方式巧妙地消除了在数据帧短负载中需要密码材料的需求。然而,这种方法的主要缺点是现有的CAN总线流量上可以实现的安全级别有限。在这项工作中,我们通过依赖优化算法来调度CAN帧并在优化的CAN流量上部署隐蔽通道,从而显著提高了安全性。在实际的总线分配下,我们能够从每个帧中提取3-5位的认证数据,这导致了一种有效的入侵检测和认证机制。通过累积连续几个帧的隐蔽通道数据,我们可以实现与当前现实世界需求相符的更高安全级别。为了证明我们的方法的正确性,我们在汽车级控制器(即Infineon Aurix)上进行了实验,并使用行业标准工具(即CANoe)进行了总线测量。

一、引言和动机

在模拟环境中对车辆总线进行攻击的小型演示,最早可以追溯到[1]的工作。最近的一些工作,如[2]–[4]等,已经明确证明了攻击现实世界中的车辆的可行性。车载网络的大部分安全问题源于控制器局域网(CAN)没有内在的安全机制这一事实。CAN总线能够在单个帧中传输多达8字节的数据,最大位速率为1Mbit/s。CAN帧的结构如图1所示。为了避免冲突,基于ID字段进行仲裁,该字段使用帧的前11位(如果使用扩展标识符,则为29位),而15位CRC(循环冗余校验)有助于识别传输错误。CAN还使用比特填充来避免长序列中相同值的比特同步丢失,即在连续五个相同位之后,引入一个相反值的额外位以强制转换。研究界已经提出了数十种保护CAN总线的方案。正如预期的那样,其中大多数依赖于使用密码消息认证码(MAC)(例如,[5]–[7],[8]或最近[9]和许多其他)。但由于CAN帧的大小有限,即64位,因此在文献中通常讨论了两种选项:截断MAC以便它们与合法数据一起适应帧内或将MAC作为单独的数据包发送。最后一个选项会创建额外的问题,因为每个常规帧都发送一个新的认证帧会增加总线负载,并且无法满足我们稍后在分析中讨论的实时需求。第一个过程,MAC截断,得到了AUTOSAR [10]架构中引入的较新的安全规范的支持,该规范要求为CAN帧提供24位的安全性。然而,从64位CAN帧有效载荷中保留24位用于安全性可能不太方便,因为这代表了37%的有效载荷。此外,标准规定新鲜度参数需要8位,导致32位预留用于安全目的,因此50%的帧变得无法用于常规数据。总的来说,似乎将密码材料包含在CAN帧中仍然有些问题,因为CAN的小数据包大小很难应对所需的安全级别。第三种选择是使用替代物理层(例如CAN+ [11])隐藏认证位,这是CAN的一种扩展。这种方法在[12]中提出。然而,车载设备中不存在CAN+收发器,而且由于向CAN-FD的迁移,汽车工业似乎不太可能采用CAN+。

在这里插入图片描述
上下文和动机。在最近的工作中,我们通过设计一种隐蔽的定时信道用于密码认证,以上下文和动机。在最近的工作中,我们通过设计一种隐蔽的定时信道用于密码认证,以建设性的方式利用了定时器-计数器电路的精细控制[13]。这个提议的优点在于允许认证数据被承载在CAN帧有限的64位有效载荷之外。然而,[13]中工作的问题是在现有的CAN总线流量上放置隐蔽通道时,性能会显著下降。在[14]中可以找到一种基于帧到达时间创建隐蔽认证通道的类似方法,但实现的安全级别非常有限,每个CAN帧只有1个隐蔽比特。此外,[14]中的认证仅针对发送方,而不是帧的内容。
在这里插入图片描述
通过优化CAN通信,我们的方法可以在隐蔽通道上获得更高的数据速率。当然,在多个发送者的情况下,这需要发送者之间的时间同步。传统的CAN实现假设节点的异步行为和缺乏共同的时间基准。然而,根据[15]的AUTOSAR标准规范,来自行业的最新方法为所有三种主要的车载总线(以太网、CAN和FlexRay)提供了时间同步的支持。最近的AUTOSAR关于CAN上的时间同步的规范,对时间主设备、网关甚至从设备的最大精度提出了警告,将其设定为10μs,即[16]的第4.1节。这表明我们的方法的需求是现实的,并与行业当前的趋势一致。在TT-CAN(Time-triggered CAN)的时间触发通信中,时间同步也是必需的,因此在现实世界的应用中存在。

设计意图。我们创建一个隐蔽的身份验证通道,该通道保持CAN帧的位不变,并通过依赖有效的帧调度来提高通道的数据速率。所处理的场景在图2中简要概述。为了避免使图形过载,只描绘了两个ECU(电子控制单元)和一个外部设备(可能是一个CANcase),但我们的场景对ECU或外部设备的数量没有限制。ECU以通常的方式在预定义的周期i, i = 1. . n(对于总线上定义的每个ID,我们假设有n个这样的ID)进行消息通信,其中添加了一个小的漂移i和一个小型的身份验证延迟ξ(更多详细信息将在后续部分给出)。在CAN总线上创建隐蔽身份验证通道的主要优点如下:

  • 它不会消耗帧数据字段中的比特,该字段限制在64位。
  • 它在携带数据的帧中隐蔽地嵌入认证数据,而无需额外的认证帧。
  • 由于认证数据隐藏在延迟中,因此它不会增加总线负载。

我们为CAN上的消息认证创建的秘密通道必须被视为与基于MAC的常规解决方案相辅相成,而不是与之竞争。显然,使用常规MAC更为高效,但不可否认的是,数据字段(64位)的有限大小使得包含此类MAC变得困难,而MAC截断是唯一的选择,这反过来又会显著降低安全级别(因为我们稍后会讨论,所以添加额外的认证帧可能是不现实的)。相反,秘密认证通道可以在不影响现有流量的情况下带来额外的保护层。事实上,我们讨论的优化流量分配直接改善了真实帧的最坏情况到达时间,因为总线上发生了更少或希望没有的帧冲突。比较秘密通道和常规、预期通信通道的容量将是具有偏见的,因为前者建立在后者微小的物理波动之上(不足为奇的是,秘密通道确实具有较小的数据速率)。

在我们的提案中,帧认证工作的主要概念是:在延迟中编码认证数据并添加针对帧时序的优化。这些细节可以在图3中找到。CAN帧由标识符字段ID表示,以循环方式到达总线(为了避免过于复杂,我们省略了数据字段,但在消息认证码中使用了ID)。虽然事件帧也可能存在于CAN总线上,但CAN流量的大多数性质是循环的,因此我们专注于对此类流量进行身份验证。我们为三种不同的延迟(10ms、20ms和50ms)描绘了标识符。每个延迟都添加了一个漂移ξ,它以隐蔽的方式携带认证数据。原则上,ξ是加密消息认证码(MAC)的最后一字节。该MAC在整个帧的内容上计算,并且对于每一帧来说都是唯一的,假设适当的新鲜度参数被使用,例如时间戳或计数器。为了避免过于复杂,我们在图形轮廓中省略了这些细节。由于CAN流量分配不当,可能需要同时发送多个数据包(灰色高亮的数据包所暗示的那样)。这些重叠可能从传输的角度来看不是问题,但是它们会影响预期到达时间和因此覆盖通道的数据速率。为了避免这种情况,我们使用额外的延迟i,i = 1. . 3来以最佳方式分配流量并保持帧间距离最大。图4提供了关于为什么未优化的流量对秘密时序通道来说是问题的更清晰的图像。图的左侧显示了记录在现实世界车辆中的帧之间的传输时间。尽管整个流量是循环的,但帧之间的传输时间是嘈杂的,并且与预期到达的偏差很常见。为了提高性能,我们进一步依赖优化算法。图4右侧显示了经过优化后的传播时间。相同的总线负载和相同的ID数量被使用,但传输时间现在遵循一个更清晰的模式。如预期并由实验证明,秘密通道将比优化过的流量具有更高的比特率。

A 相关工作

在计算机网络中,隐蔽定时信道已经得到了很好的探索,例如[17]–[19]。但是,除了上述最近的论文[13]和[14]之外,我们不知道这种信道是否用于保护车载通信。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
表I尝试对CAN总线上的现有两个隐蔽定时信道提案[13]和[14]进行比较总结。我们试图以一种统一的方式从TACAN [14]和INCANTA [13]中提取比较结果。这两个工作都使用通过改变单个ID的到达时间来创建的信道进行实验。特别是,TACAN [14]使用在10ms广播的载体ID并编码了到达时间中的1位信息,而INCANTA [13]使用在100ms广播的载体ID并编码了5位信息。为了增加数据速率,TACAN [14]还使用了最低有效位信道,通过该信道修改数据字段的最后一位,但这并不是定时隐蔽信道,因此我们没有将其包含在此分析中,只关注TACAN的到达时间间隔(IAT)版本。对于[14],误码率(BER)小于1%,提到这个BER值是通过近似超过4帧获得的(否则BER可能会显著高达40%左右)。对于[13],BER值为1.75%,适用于高优先级ID轻松赢得仲裁的情况。在吞吐量方面,[14]报告为22.5 bps,我们可以计算[13]的数据速率为57 bps,尽管其ID的周期性较慢,即[13]为100ms vs. [14]为10ms,但[13]使用的ID漂移更高,即220ns,公差为20,000ns,这导致每条消息提取约5位。无论是[14]还是[13]都没有用多个ID进行隐蔽数据的实验,而且由于较低优先级ID的到达时间的不可预测性增加,性能不太可能随着ID数量的增加呈线性扩展。相反,在CANTO中,我们使用来自总线的所有ID作为定时隐蔽信道。来自CANTO的最佳流量分配使我们能够实现所有ID的相同结果,从而实现大约5047 bps的数据速率和0.95%的误码率,我们在实验部分稍后会展示这一点。

尽管如此,许多近期的研究工作都集中在使用帧到达时间,即我们用来创建隐蔽通道的延迟,以检测入侵,例如[24]和[25]。通过使用布隆过滤器[26],帧到达时间也与帧内容相结合,以过滤[27]中的恶意活动。最近,帧周期性被利用来提取时钟偏差,这由于振荡器中的物理缺陷而在[28]中用于为每个设备创建独特的指纹。这为CAN节点的物理指纹识别提供了空间。十多年来,时钟偏差的使用已被[29]的工作探索用于对计算机进行指纹识别,并且不出所料,它也应用于智能手机[30]。不幸的是,基于时钟偏差的识别机制在嵌入式设备的精细粒度的时间触发中断控制下变得无效,这使它们有可能伪造它们的时钟偏差,如[31]所示。所有这些工作都在利用控制器中时钟电路的精度,这也是我们在这里提出的建议的核心。

在这里插入图片描述
为了从数据字段中节省比特,其他工作已经建议使用标识符字段,即[32]、[33]、[34]和[35],但这需要特别小心,因为标识符字段对于仲裁至关重要,也用于过滤目的。另一种在不损害CAN帧的比特的情况下识别发送方的方法是使用物理信号特性,例如[36]–[38],但这些方法可能容易受到总线阻抗的小变化的影响。

二、背景及实验设置

这部分内容简要概述了CAN网络上的延迟和时钟偏移。尽管如此,我们还是讨论了先前关于CAN总线隐蔽定时信道的工作中的局限性。然后,我们描述了我们设置的组成部分。

A 以前工作中的时钟偏差和局限性

在图5中,我们展示了当三个ECUs以固定的时间间隔δ广播时,时钟偏差如何累积。由于时钟精度问题,尽管延迟δ是固定的,但每个ECU测量的时间实际上是δ1、δ2和δ3。如果第一个ECU测量从第二个和第三个ECU接收到的帧的到达时间,那么这些延迟就会累积。结果是一个代表时钟偏差的斜率。图6显示了在一个Infineon板上测量的延迟与CANoe之间的图形描述,这是另一个Infineon板周期性广播帧的情况。这个描述是根据我们之前的工作[13]进行的。延迟被强制设置为±100、±250、±500个时钟滴答(1个滴答是10ns),因此在图片中可以看到几个斜率。我们在CAN总线上创建隐蔽通道的前期工作的主要限制是现有的流量(分配不良)阻碍了隐蔽通道的数据速率。图7显示了根据[13]记录的四个Infineon TriCore板上没有(左)和有(右)现有网络流量时的延迟变化(延迟表示为预期到达时间和记录到达时间之间的分数)。在存在流量的情况下,一些帧会显著延迟到达,使它们与随机延迟发送的帧无法区分。这些延迟会导致入侵检测机制的误报。正如我们在这项工作中所讨论和展示的,流量优化是解决这个问题的唯一方法。

B.最坏到达时间

CAN消息的最坏到达时间对于评估CAN网络中特定消息周期分配的可行性至关重要。
在这里插入图片描述
请注意,由于其基于ID的仲裁机制,低优先级ID的到达可能会被高优先级ID显著延迟。为了证明我们方法的可行性并概述总线的带宽限制,我们现在简要介绍一下CAN调度性的背景。为此,我们将使用[39]中提出的理论框架。特别是,我们使用[39]中定义的消息m的繁忙时间段t和最坏排队延迟w:
在这里插入图片描述
我们保持[39]中的原始符号,并将m解释为定义其优先级的消息的ID。在先前的关系中,Bm是由较低优先级消息传输引起的阻塞延迟,Jk是消息k的排队抖动,Tk是消息k的周期,Ck是消息k的传输时间,q是消息m的实例,τbit是总线上传单个位的时间。通过hp(m),我们表示具有高于m的优先级的消息,即ID较低的消息。t和w都通过n的递归来解决(更多详细信息请参阅[39]),直到t和w的值收敛,即t n+1 m = t n m 和 wn+1 m (q) = wn m(q)。

我们现在展示通过将先前的方法应用于我们特定的40个ID分配所获得的结果。我们选择了ID及其周期性,以获得40%的总线负载,这是真实世界车辆的特征。这些ID的周期为10、20、50和100ms(在即将到来的部分中给出了对此分配的更多评估)。我们固定了以下参数,这些参数是我们设置的特征:τbit = 2μs用于我们使用的500kbps CAN,Ck = 270μs,这是总线上最长消息的持续时间(根据[39],这是计算为(55 + 10B)τbit,其中B是消息中的字节数),Bm = 270μs,除了优先级最低的ID之外,Bm = 0。图8显示了左侧的繁忙期和右侧的每个40个ID的最坏情况排队延迟(蓝色圆圈)。一些ID的值被描绘为标签,但这些值并不重要,这些值只是被分配得更快的ID具有更高的优先级,并且对于相同的周期性连续编号,以便我们可以更轻松地直观跟踪它们。然后我们用红色圆圈描绘了当ID数量翻倍时这些值的变化,例如我们需要发送带有认证数据的额外帧的情况。在原始实例中,有40个ID的情况下,广播时间为10ms的ID的总线繁忙期将在0.2-1.2ms之间,而广播时间为100ms的ID将在5.4-8ms之间。排队时间保持在0.52-11.96ms的范围内。对于一个周期为100ms的帧来说,11.96ms的漂移可能有点高。然而,当ID数量翻倍时,繁忙期和最坏情况排队延迟增加的范围为0.52-34.06ms,最坏情况下增加了3倍。通过使总线负载翻倍,最坏情况到达时间的增加高于预期的两倍,这表明添加额外的帧几乎不是替代方案。优化流量分配也将在这方面有所帮助。
在这里插入图片描述

C.安装组件

我们使用AURIX TC224 TFT应用套件实施和评估流量分配的优化。开发板具有一个运行频率高达133 MHz的TC224 32位TriCore CPU,提供1MB的FLASH内存和96kB的RAM内存。我们的基于TriCore的实施所传输的CAN帧使用CANoe(一种用于分析和测试汽车网络的软件工具)进行记录。为了实现这一点,CANoe运行的PC通过VN CAN到PC适配器与开发板接口,如图9所示。离线使用Mathematica分析记录的跟踪。

根据描述的机制,由于CAN帧必须在特定的时间槽中传输,节点需要实现一个保持时间的功能。我们在TC224上使用捕获/比较单元6定时器(CCU6)模块实现了这个功能,该模块被配置为每1微秒触发一次中断,作为我们本地时钟的基本滴答。在几次实验中,我们使用计算MAC值的最后7位来表示认证延迟。此延迟添加到消息周期时间加上 ,当足够的CCU6定时器的滴答过去时,消息将在总线上发送。

在这里插入图片描述
所有消息数据字节、配置的消息周期时间和每个消息选择的 值都在MultiCAN+模块中配置。MultiCAN+模块还负责将帧数据以指定的波特率为500 kbps发送到CAN收发器。

执行初始硬件设置后,为每条消息计算初始MAC值。在运行时,基于CCU6定时器中递增的计数器值,发送所有帧的周期时间和 值,但如前所述会有一个小的延迟。帧交付将在CCU6定时器的ξ个滴答过期后发生。每次帧交付后,消息计数器递增,并根据消息数据和消息计数器计算新的MAC值。

三、优化流量分配

A.问题陈述

B.优化帧调度

四、协议和结果

A.主协议

B.对手模型

C. 优化流量和单一发送者的结果

D.多发送方情况和噪声信道

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/208919.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

TCP三次握手过程

什么是TCP tcp是一个面向连接的、可靠的、基于字节流的传输层通信协议 面向连接:TCP连接是一对一的,不能实现一对多或多对一,TCP在通信前要首先建立连接,连接成功后才能开始进行通信可靠的:TCP连接要保证通信过程的可靠…

WebSocket 前端使用vue3+ts+elementplus 实现连接

1.配置连接 websocket.ts文件如下 import { ElMessage } from "element-plus";interface WebSocketProps {url: string; // websocket地址heartTime?: number; // 心跳时间间隔,默认为 50000 msheartMsg?: string; // 心跳信息,默认为pingr…

利用 NRF24L01 无线收发模块实现传感器数据的无线传输

NRF24L01 是一款常用的无线收发模块,适用于远程控制和数据传输应用。本文将介绍如何利用 NRF24L01 模块实现传感器数据的无线传输,包括硬件的连接和配置,以及相应的代码示例。 一、引言 NRF24L01 是一款基于 2.4GHz 射频通信的低功耗无线收发…

PG14归档失败解决办法archiver failed on wal_lsn

案例1:pg_wal下有wal_lsn文件 案例1适用于以下场景: pg_wal下有该wal_lsn文件而归档目录下无该wal_lsn文件pg_wal和归档目录下同时都有该wal_lsn文件 问题描述 昨晚RepmgrPG14主备主库因wal日志撑爆磁盘,删除主库过期wal文件重做备库后上午进行主备状…

Find My文件袋|苹果Find My技术与文件袋结合,智能防丢,全球定位

文件袋是指用于对自己的私人物品或身份文件保管等、资料袋、白卷宗。款式分为扣式和文件套式。文件袋通常具有足够的容量,可以容纳大量文件。当需要长期存档文件时,文件袋是一个方便的选择,可以将文件整理好放入文件袋中,便于存放…

[github全教程]github版本控制最全教学------- 大厂找工作面试必备!

作者:20岁爱吃必胜客(坤制作人),近十年开发经验, 跨域学习者,目前于新西兰奥克兰大学攻读IT硕士学位。荣誉:阿里云博客专家认证、腾讯开发者社区优质创作者,在CTF省赛校赛多次取得好成绩。跨领域…

【笔记】2023最新Python安装教程(Windows 11)

🎈欢迎加群交流(备注:csdn)🎈 ✨✨✨https://ling71.cn/hmf.jpg✨✨✨ 🤓前言 作为一名经验丰富的CV工程师,今天我将带大家在全新的Windows 11系统上安装Python。无论你是编程新手还是老手&…

C语言错误处理之 “<errno.h>与<error.h>”

目录 前言 错误号处理方式 errno.h头文件 error.h头文件 参数解释: 关于的”__attribute__“解释: 关于“属性”的解释: 实例一: 实例二: error.h与errno.h的区别 补充内容: 前言 在开始学习…

Redis——某马点评day01——短信登录

项目介绍 导入黑马点评项目 项目架构 基于Session实现登录 基本流程 实现发送短信验证码功能 controller层中 /*** 发送手机验证码*/PostMapping("code")public Result sendCode(RequestParam("phone") String phone, HttpSession session) {// 发送短信…

支持Upsert、Kafka Connector、集成Airbyte,Milvus助力高效数据流处理

Milvus 已支持 Upsert、 Kafka Connector、Airbyte! 在上周的文章中《登陆 Azure、发布新版本……Zilliz 昨夜今晨发生了什么?》,我们已经透露过 Milvus(Zilliz Cloud)为提高数据流处理效率, 先后支持了 Up…

JOSEF约瑟 DY-34 型电压继电器,15-30V 柜内安装,板前接线

DY-30系列电压继电器 DY-32电压继电器; DY-36电压继电器; DY-33电压继电器; DY-37电压继电器; DY-34电压继电器; DY-38电压继电器; DY-31电压继电器; DY-35电压继电器; DY-32/60C电压…

HarmonyOS——解决本地模拟器无法选择设备的问题

在使用deveco studio进行鸿蒙开发的时候,可能会遇到本地模拟器已经启动了,但是仍然无法选择本地模拟器中的设备,尤其在MAC环境中尤为常见。 解决办法: 先打开IDE启动本地模拟器,等模拟器启动后,退出IDE重新…

蓝桥杯每日一题2023.12.1

题目描述 蓝桥杯大赛历届真题 - C 语言 B 组 - 蓝桥云课 (lanqiao.cn) 题目分析 对于此题目而言思路较为重要&#xff0c;实际可以转化为求两个数字对应的操作&#xff0c;输出最前面的数字即可 #include<bits/stdc.h> using namespace std; int main() {for(int i 1…

ARM64版本的chrome浏览器安装

这一快比较玄学&#xff0c;花个半个小时左右才能安装好&#xff0c;也不知道是个什么情况。 sudo snap install chromium只需要以上这个命令&#xff0c;当然&#xff0c;也可以自己去找安装包进行安装&#xff0c;但是测试后发现并没有那么好装&#xff0c;主要是两个部分 一…

第九节HarmonyOS 常用基础组件-Text

一、组件介绍 组件&#xff08;Component&#xff09;是界面搭建与显示的最小单位&#xff0c;HarmonyOS ArkUI声名式为开发者提供了丰富多样的UI组件&#xff0c;我们可以使用这些组件轻松的编写出更加丰富、漂亮的界面。 组件根据功能可以分为以下五大类&#xff1a;基础组件…

Unity中Shader指令优化

文章目录 前言一、解析一下不同运算所需的指令数1、常数基本运算2、变量基本运算3、条件语句、循环 和 函数 前言 上一篇文章中&#xff0c;我们解析了Shader解析后的代码。我们在这篇文章中来看怎么实现Shader指令优化 Unity中Shader指令优化&#xff08;编译后指令解析&…

C语言之联合和枚举

C语言之联合和枚举 文章目录 C语言之联合和枚举1. 联合体1.1 联合体的声明1.2 联合体的特点1.3 结构体和联合体对比1.4 联合体大小的计算1.5 联合体小练习 2. 枚举2.1 枚举类型的声明2.2 枚举类型的优点2.3 枚举类型的使用 1. 联合体 1.1 联合体的声明 像结构体⼀样&#xff…

AI PC行业深度报告:格局演变、发展趋势、产业链及相关公司深度梳理

今天分享的是AI PC系列深度研究报告&#xff1a;《AI PC行业深度报告&#xff1a;格局演变、发展趋势、产业链及相关公司深度梳理》。 &#xff08;报告出品方&#xff1a;慧博智能投研&#xff09; 报告共计&#xff1a;21页 一、AI PC的产生 1、端侧 AI 是 AI 发展下一阶段…

【ASP.NET CORE】数据迁移 codefirst

已经写好实体类&#xff0c;使用add-migration生成数据迁移语句&#xff0c;注意如果项目中有多个dbcontext需要使用 -context 名称&#xff0c;指定下需要使用的dbcontext add-Migration Address -context mvcsqlcontext运行后会生成两个文件 2. 使用Update-Database语句更…

Postman如何导入和导出接口文件

本文介绍2种导出和导入的操作方法&#xff1a;一种是分享链接&#xff0c;导入链接的方式&#xff08;需要登录&#xff09;&#xff1b;另一种是导出json文件&#xff0c;再次导入。下面将详细介绍。 由于第一种分享链接&#xff0c;导入链接的方式需要登录&#xff0c;所以推…
最新文章