news 2026/3/2 14:22:04

连续认证与行为特征认证测试:从静态密码到持续风险感知的攻防演进

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
连续认证与行为特征认证测试:从静态密码到持续风险感知的攻防演进

第一部分:开篇明义 —— 定义、价值与目标

定位与价值

在传统的网络安全体系中,身份认证往往被视为一个单一的、静态的“入口检查点”,如同进入大楼时出示一次门禁卡。然而,在高级持续性威胁(APT)、内部威胁和凭据泄露泛滥的当下,这种“一次认证,全程通行”的模式已显得漏洞百出。连续认证与行为特征认证正是应对这一挑战的下一代身份安全范式。它们将认证从一个离散事件,转变为贯穿整个会话生命周期的、动态的、基于风险评分的持续过程。在渗透测试与防御构建的视角下,理解并测试这一体系,不仅关乎能否绕过前沿防御,更关乎如何为企业构建真正以身份为中心、自适应式的安全架构。本文旨在深入这一前沿领域,解析其原理,并站在攻击者与防御者的双重角度,提供系统的测试方法论与加固指南。

学习目标

读完本文,你将能够:

  1. 阐述连续认证与行为特征认证的核心概念、驱动因素及其在现代安全架构(尤其是零信任)中的战略价值。
  2. 剖析行为特征认证的关键技术原理,包括常见行为维度、特征提取方法与风险评估模型的工作机制。
  3. 构建一个最小化的实验环境,并使用自定义脚本模拟用户行为、提取特征、训练简易模型并进行绕过测试。
  4. 设计并执行针对连续认证系统的渗透测试方案,涵盖数据收集、模型欺骗、会话劫持与逻辑绕过等多个攻击面。
  5. 分析与制定在开发和运维层面,可落地的、多层次的防御、检测与响应策略。

前置知识

· 身份认证与授权基础:了解认证(Authentication)与授权(Authorization)的区别,熟悉常见的认证协议(如OAuth 2.0, SAML)。
· HTTP与Web应用基础:理解会话(Session)、Cookie、Token等概念。
· 基本的机器学习概念:了解特征、模型、训练与推理的基本含义,无需深入算法细节。

第二部分:原理深掘 —— 从“是什么”到“为什么”

核心定义与类比

· 连续认证:指在用户初始登录后,在整个会话期间持续、透明地验证其身份真实性的过程。它并非要求用户反复输入密码,而是通过持续分析用户上下文(如IP地址、设备指纹、地理位置)和行为(如鼠标移动、打字节奏)来动态计算风险分数。类比:就像一位经验丰富的管家。客人进门时(初始认证)核查了请柬(密码)。但在宴会全程,管家会持续观察客人的举止、谈吐是否符合其声称的身份,一旦发现异常(如用词粗俗、走向禁止区域),便会礼貌地上前再次核实。
· 行为特征认证:是连续认证的核心技术实现之一。它通过收集和分析用户交互设备时产生的独特行为模式,来构建用户的“行为指纹”。类比:类似于笔迹鉴定。每个人写字的力度、速度、连笔习惯都是独特的。行为特征认证就是实时“鉴定”用户操作键盘、鼠标、触摸屏的“数字笔迹”。

根本原因分析:为何需要“持续”认证?

  1. 传统认证的静态性失效:密码、令牌、甚至生物识别(指纹/面部)都是一次性的“静态凭证”。一旦在会话中被窃取(如通过XSS窃取Cookie, 中间人攻击),攻击者便可完全冒充用户。
  2. 内部威胁与账户共享:恶意内部人员或好心的账户共享行为,使得仅凭初始凭证无法区分合法用户与滥用者。
  3. 零信任架构的必然要求:零信任的核心理念是“从不信任,持续验证”。连续认证是实现“持续验证”这一原则的关键技术支柱,确保访问权限随风险动态调整。

可视化核心机制:连续认证系统架构

下图展示了一个典型的基于行为特征的连续认证系统如何运作。它清晰地揭示了从数据收集到执行决策的完整链条,也是我们后续攻击面分析的蓝图。

第3层:策略与执行层

第2层:处理与分析层

第1层:数据收集层

采集原始交互行为
击键时序、鼠标轨迹、触摸手势

收集设备上下文信息

生成特征向量
如:平均击键间隔=215ms, 按键时长方差=32ms²

输出异常程度分数
0-100分, 分数越高风险越大

分数 < 30
低风险/置信度高

30 ≤ 分数 < 70
中等风险

分数 ≥ 70
高风险/异常行为检测

用户设备

前端探针/JS SDK

行为事件流
格式:时间戳, 键码, 按压时长等

设备指纹
IP地址、User-Agent、屏幕分辨率、时区等

特征提取引擎
将原始事件转化为数值特征

行为特征库
存储用户历史行为档案

上下文风险引擎
计算静态风险分数
基于:地理位置异常、VPN使用、设备变更等

风险评估模型
系统'大脑'
机器学习模型(One-Class SVM/Isolation Forest/深度学习)

风险决策引擎
综合行为风险分和上下文风险分

风险决策点
对比分数与预设阈值

允许继续访问
无感通过, 用户无感知

触发Step-up认证
如:MFA推送、安全问答、行为挑战

终止会话/锁定账户
生成安全告警, 启动调查

SIEM/SOAR系统
告警聚合、自动化响应、取证分析

第1层

第2层

第3层

图例与流程说明:

  1. 数据收集层:通过浏览器JavaScript、移动端SDK或终端代理,无声地收集用户交互行为(C)和设备上下文(D)。
  2. 处理与分析层:
    · 特征提取:将原始行为事件(如[timestamp, keycode, press_time, release_time])转化为有意义的数值特征(如“平均击键间隔”、“按键时长方差”),形成特征向量。
    · 风险评估模型(H):这是系统的“大脑”。它接收当前会话的特征向量,并与该用户的历史行为档案(F)进行比较。模型(通常是机器学习模型,如One-Class SVM、Isolation Forest或深度学习网络)输出一个代表“异常程度”或“置信度”的分数。
    · 上下文风险引擎(G):并行计算基于上下文的静态风险(例如,从未见过的国家登录、使用匿名VPN)。
  3. 策略与执行层:
    · 风险决策引擎(I):综合行为风险分和上下文风险分,根据预定义策略(J)做出决策。决策是动态、可配置的。
    · 执行动作:从无感通过到强制二次认证,再到会话终止,形成一个梯度响应机制。

第三部分:实战演练 —— 从“为什么”到“怎么做”

本章节我们将扮演攻击者(在授权测试环境下),目标是测试一个模拟的连续认证系统的安全性。我们会搭建环境、编写工具、并尝试多种绕过手段。

环境与工具准备

我们使用Docker构建一个简化的实验环境,包含一个模拟Web应用、一个行为收集服务和一个风险评估服务。

docker-compose.yml

version:'3.8'services:# 模拟前端应用frontend:build:./frontendports:-"8080:80"environment:-BACKEND_URL=http://backend:5000-COLLECTOR_URL=http://collector:8081depends_on:-backend-collector# 模拟后端APIbackend:build:./backendports:-"5000:5000"environment:-REDIS_URL=redis://redis:6379depends_on:-redis# 行为数据收集与特征提取服务collector:build:./collectorports:-"8081:8081"environment:-MODEL_SERVICE_URL=http://risk-engine:8501# 风险评估模型服务 (使用一个简单的预训练模型)risk-engine:build:./risk-engineports:-"8501:8501"# Redis用于会话和临时数据存储redis:image:redis:alpine

核心工具与库:

· 前端:HTML/JS 用于模拟用户交互并发送行为数据。
· 后端(Python Flask):处理业务逻辑和会话。
· 收集器/风险引擎(Python):使用 scikit-learn 库构建一个简单的行为异常检测模型。
· 测试工具:Python + requests + selenium 用于自动化攻击测试。

标准操作流程

步骤1:发现与识别——探测连续认证的存在

  1. 流量分析:使用Burp Suite或浏览器开发者工具监控网络请求。重点关注在登录后,是否持续向某个特定端点(如 /api/behavior, /telemetry)发送包含密集时序数据的POST请求。这些数据包通常较小,但发送频率高。
  2. 静态代码分析:检查前端JavaScript文件,搜索关键词如 keystroke, mousemove, biometric, telemetry, riskScore, ContinuousAuth 等。寻找类似 addEventListener(‘keydown’, …) 或调用特定SDK(如 BioCatch, BehavioSec 等商业方案)的代码。
  3. 响应头与Cookie检查:观察是否在响应头中存在如 X-Risk-Level: Low 的自定义头,或者Cookie中包含风险令牌。

示例请求(模拟):

POST /api/v1/telemetry/behavior HTTP/1.1 Host: target-app.com Content-Type: application/json Cookie: session=abc123 { “event_type”: “keydown”, “key_code”: 65, “timestamp”: 1646789123456, “session_id”: “abc123”, “page_url”: “/dashboard” }

步骤2:利用与分析——攻击面与测试方法

连续认证系统的攻击面可归纳为以下四类:

攻击面A:数据收集层欺骗

· 目标:向系统注入伪造的、符合目标用户特征的行为数据。
· 方法:

  1. 逆向JS SDK:分析前端收集脚本,了解其数据格式和发送逻辑。
  2. 直接API调用:在窃取有效会话Cookie后,直接模拟请求向行为收集端点发送精心构造的数据包。
    · 自动化脚本示例:以下Python脚本在窃取会话后,尝试模拟“合法”用户行为模式(如固定的击键间隔)。
#!/usr/bin/env python3""" 连续认证测试脚本:行为数据注入 警告:仅用于授权测试环境 """importrequestsimporttimeimportjsonimportrandomimportsysclassBehaviorInjector:def__init__(self,target_url,session_cookie):self.target_url=target_url# 行为收集端点self.session_cookie=session_cookie self.headers={‘Content-Type’:‘application/json’,‘Cookie’:f‘session={self.session_cookie}}# 模拟一个“合法”用户的击键特征:平均间隔200ms,标准差30msself.avg_interval=0.2self.interval_std=0.03defgenerate_keystroke_event(self,key_code):"""生成一个模拟的击键事件数据包"""press_time=int(time.time()*1000)# 模拟按键时长,通常在100-200ms之间hold_duration=random.randint(100,200)release_time=press_time+hold_duration event={“event_type”:“keydown”,“key_code”:key_code,“timestamp”:press_time,“press_duration”:hold_duration,“session_id”:self.session_cookie.split(=)[1]if=inself.session_cookieelseself.session_cookie}returneventdefsimulate_typing(self,text):"""模拟输入一段文本的行为序列"""events=[]forcharintext:key_code=ord(char.upper())# 简单映射,实际更复杂event=self.generate_keystroke_event(key_code)events.append(event)# 等待符合特征的间隔时间delay=max(0.01,random.gauss(self.avg_interval,self.interval_std))time.sleep(delay)# 发送事件(实际环境中可能批量发送)resp=requests.post(self.target_url,json=event,headers=self.headers,verify=False)ifresp.status_code!=200:print(f“[!]发送事件失败:{resp.status_code})# 可能触发告警,记录日志用于分析returneventsdefrun(self):print(f“[*]开始向{self.target_url}注入行为数据...)# 模拟输入一段命令或查询self.simulate_typing(“SELECT*FROM users”)print([*]行为注入完成。”)if__name__==“__main__”:iflen(sys.argv)!=3:print(f“用法:{sys.argv[0]}<行为收集URL><会话Cookie>)print(“示例:python3 injector.py https://target.com/api/telemetry ‘session=abc123def456’”)sys.exit(1)TARGET_URL=sys.argv[1]SESSION_COOKIE=sys.argv[2]# 安全警告print([!]警告:此脚本仅用于授权的安全测试环境。滥用此脚本可能导致法律责任。”)confirm=input(“是否继续?(yes/no):)ifconfirm.lower()!=‘yes’:sys.exit(0)injector=BehaviorInjector(TARGET_URL,SESSION_COOKIE)injector.run()

攻击面B:特征与模型层攻击

· 目标:破坏行为特征档案的完整性,或欺骗风险评估模型。
· 方法:

  1. 模型投毒:在系统学习阶段(例如新用户适应期),刻意提供“混淆”的行为数据,让模型无法建立准确的行为基线。例如,在适应期内,交替使用两种完全不同的打字节奏。
  2. 对抗性样本:针对已知的机器学习模型,生成微小的、人眼难以察觉的扰动,添加到行为特征向量中,使模型产生误判(输出低风险)。这需要深入了解模型内部结构。
  3. 概念漂移利用:用户行为会自然变化(换键盘、手受伤、心情烦躁)。攻击者可利用系统对“概念漂移”的适应性,主动诱导缓慢漂移,最终使模型接受攻击者的行为模式。
    · 测试思路:
    · 黑盒测试:使用自动化工具(如Selenium)录制真实用户操作,然后以不同速度、模式回放,观察风险评分变化。
    · 白盒/灰盒测试:如果获得模型信息,可使用ART等对抗性机器学习库生成测试样本。

攻击面C:会话管理与逻辑绕过

· 目标:利用连续认证系统与业务逻辑之间的集成缺陷。
· 方法:

  1. 时间窗口攻击:风险评分更新和策略执行之间存在延迟。攻击者在高风险动作(如转账)前保持“良好行为”,在动作执行的瞬间迅速完成操作,然后立即停止发送行为数据或断开连接,企图在系统反应过来前完成攻击。
  2. API端点绕过:某些关键API(如后台管理、数据导出)可能未被行为监控覆盖。通过模糊测试找出这些“盲区”。
  3. Step-up认证绕过:当触发中等风险要求MFA时,尝试逻辑漏洞,如强制浏览到已验证后的状态页面、篡改MFA验证结果参数等。

攻击面D:隐私与数据泄漏

· 目标:窃取存储的行为特征数据,这些数据本身是高度敏感的生物行为标识符。
· 方法:测试行为数据存储端点和传输过程是否存在未授权访问、不安全的直接对象引用、缺乏加密等漏洞。

步骤3:验证与深入

· 成功验证:在实施上述攻击时,监控以下指标以验证是否成功绕过:

  1. 高风险操作(如修改密码、大额交易)在没有触发额外认证的情况下完成。
  2. 后台日志中,对应会话的风险评分始终维持在“低”或“中”以下,未出现异常告警。
  3. 能够使用窃取的会话,在长时间无活动或行为模式突变后,仍保持访问状态。
    · 组合攻击思考:将连续认证测试与其它攻击链结合。例如:利用XSS窃取会话Cookie 并 注入行为数据;或利用CSRF在用户不知情时触发高风险操作,而此时行为数据来自合法用户,系统可能认为风险较低。

第四部分:防御建设 —— 从“怎么做”到“怎么防”

作为防御方,我们的目标是将连续认证系统从“可被欺骗的监控”转变为“强大的自适应安全层”。

开发侧修复:安全编码范式

危险模式 vs 安全模式

· 数据收集与传输
· 危险模式:前端明文发送行为数据,无完整性校验。

// 前端 - 危险fetch(/api/telemetry’,{method:POST,body:JSON.stringify(behaviorData)// 明文,可被篡改});

· 安全模式:使用令牌签名、HTTPS传输,并在后端验证。

// 前端 - 安全import{signData}from ‘./authUtils’;// 使用会话密钥派生出的临时密钥constpayload={data:behaviorData,timestamp:Date.now(),sessionId:getSessionId()};constsignature=awaitsignData(payload,sessionDerivedKey);fetch(/api/telemetry’,{method:POST,headers:{‘Content-Type’:‘application/jwt’},body:signature+.+base64urlEncode(JSON.stringify(payload))});
# 后端 - 安全验证fromflaskimportrequest,abortdefverify_behavior_data(signed_data):try:sig,payload_enc=signed_data.split(.’,1)payload=json.loads(base64url_decode(payload_enc))# 1. 验证时间戳新鲜度(防重放)ifabs(time.time()-payload[‘timestamp’]/1000)>5:abort(400)# 2. 根据sessionId取出对应密钥,验证签名expected_sig=sign_payload(payload,get_key(payload[‘sessionId’]))ifnotconstant_time_compare(sig,expected_sig):abort(401)# 3. 才处理数据returnpayload[‘data’]exceptException:abort(400)

· 模型安全与更新
· 危险模式:使用静态模型,从不更新;对新用户使用通用基线。
· 安全模式:
1. 持续学习与监控:定期用新数据重新训练模型,并监控模型性能指标(如准确率下降可能意味着遭受攻击或概念漂移)。
2. 对抗性训练:在模型训练阶段,主动加入模拟的攻击数据,提升模型鲁棒性。
3. 置信度阈值动态调整:对于高价值操作,自动提高风险阈值;在检测到攻击活动期间,全局提高安全级别。

运维侧加固:配置与架构

  1. 分层架构与隔离:
    · 将行为数据收集服务、风险决策引擎与核心业务API分离。风险引擎的决策通过内部API传递给业务网关。
    · 对行为特征数据库进行严格加密和访问控制,视同生物识别信息进行保护(符合GDPR、CCPA等法规)。
  2. 纵深防御策略:
    · 不要依赖单一特征:结合行为、设备、上下文(IP信誉、时间)进行综合风险评估。
    · 链路追踪:为每个请求分配唯一ID,将行为数据、风险分数、业务操作日志串联起来,便于事后溯源分析。
    · 默认拒绝未知:对于风险引擎暂时无法判断或模型置信度极低的情况,采取保守策略(如要求认证)。
  3. 配置加固示例 (Nginx 作为风险决策网关):
    # 在业务API的location块前加入一个auth请求阶段 location /api/secure/ { auth_request /risk-auth; auth_request_set $risk_level $upstream_http_x_risk_level; proxy_pass http://backend_app; # 根据风险级别设置头信息,传递给后端 proxy_set_header X-Risk-Level $risk_level; } location = /risk-auth { internal; # 只接受内部请求 proxy_pass http://risk_engine:8501/v1/assess; # 风险引擎评估端点 proxy_pass_request_body off; # 不需要传递请求体,风险引擎根据会话ID评估 proxy_set_header Content-Length “”; proxy_set_header X-Session-ID $cookie_session; proxy_set_header X-Original-URI $request_uri; proxy_set_header X-Original-Method $request_method; }

检测与响应线索

  1. 关键日志:
    · 行为数据源日志:同一会话ID的行为数据速率异常剧增或剧降(可能表明自动化脚本接管或数据注入)。
    · 风险引擎日志:记录每次评估的输入特征摘要、模型输出分数及最终决策。关注分数在短时间内剧烈波动的会话。
    · 业务日志:记录高风险操作执行时的最终风险分数和上下文。
  2. SIEM检测规则示例 (Splunk SPL):
    index=behavior_auth (source=“/var/log/risk-engine.log”) | stats values(risk_score) as scores by session_id | where max(scores) - min(scores) > 50 | table session_id, scores
    这条规则用于检测单个会话内风险评分剧烈波动的情况。
  3. 威胁狩猎起点:
    · 寻找那些设备指纹频繁变更但行为模式却保持稳定的会话。这可能表明攻击者在用不同工具模拟同一用户。
    · 分析在非工作时间(根据用户历史模式)进行高价值操作的会话,即使其行为风险分数不高。
  4. 事件响应剧本:
    · 触发条件:会话风险分数持续超过阈值X,或触发了强制注销。
    · 响应动作:
    1. 立即通知安全运营中心。
    2. 自动隔离该会话(使后续令牌失效)。
    3. 冻结关联账户的敏感操作权限。
    4. 留存该会话的所有行为数据、网络日志用于取证。
    5. 根据情况决定是否通知用户。

第五部分:总结与脉络 —— 连接与展望

核心要点复盘

  1. 范式转变:连续认证代表了从静态、基于凭证的认证向动态、基于风险的认证的根本性转变。安全边界从网络周边移至每个用户和每个会话。
  2. 核心机制:其核心是通过持续分析用户行为特征和上下文信号,利用机器学习模型动态计算信任度,并依据策略执行梯度响应。
  3. 行为特征的双重性:它既是强大的身份标识符(用于防御),也可能成为新的隐私泄露点和攻击面(如模型欺骗、数据窃取)。
  4. 对抗演进:针对连续认证系统的攻击是典型的“AI vs AI”对抗。防御者必须预期攻击者会尝试数据注入、模型投毒和逻辑绕过,并据此设计更鲁棒的架构。

知识体系连接

· 前序基础:本文建立在 [身份与访问管理基础]、[Web应用会话安全]、[机器学习安全简介] 等文章的知识之上。理解OAuth、JWT、会话固定等是理解认证流程的基础。
· 横向关联:本文与 [零信任架构实战]、[内部威胁检测]、[UEBA实战] 高度相关。连续认证是零信任“持续验证”原则的具体实现,也是检测内部威胁和用户实体行为异常的关键技术。
· 后继进阶:在掌握本文内容后,可进一步深入研究 [对抗性机器学习在安全中的应用]、[隐私计算与联邦学习](如何在保护隐私的前提下进行行为建模)、[生物特征识别安全与绕过] 等深度专题。

进阶方向指引

  1. 无感连续认证:研究如何进一步降低行为数据收集对用户体验的影响,以及如何利用更底层的系统信号(如电源模式、进程列表)进行辅助判断。
  2. 联邦学习行为建模:探索在数据不出域(不离开用户设备)的前提下,通过联邦学习技术协同训练一个全局风险模型,以解决隐私和数据孤岛问题。
  3. 量子安全与后量子行为模型:展望未来,当前加密算法可能被量子计算破解。研究基于后量子密码学的行为数据安全传输与存储,以及抗量子攻击的机器学习模型。

文章自检清单

· 是否明确定义了本主题的价值与学习目标? —— 在开篇即阐明其在零信任和对抗现代威胁中的核心价值,并列出5个具体学习目标。
· 原理部分是否包含一张自解释的Mermaid核心机制图? —— 已提供“连续认证系统架构”图,清晰展示数据流、处理层和决策层。
· 实战部分是否包含一个可运行的、注释详尽的代码片段? —— 提供了完整的 BehaviorInjector Python类,包含数据生成、模拟、发送及明确的安全警告。
· 防御部分是否提供了至少一个具体的安全代码示例或配置方案? —— 提供了前端签名/后端验证的JWT模式代码对比,以及Nginx作为风险网关的配置示例。
· 是否建立了与知识大纲中其他文章的联系? —— 在总结部分明确指出了与前序、横向、后继文章的关联。
· 全文是否避免了未定义的术语和模糊表述? —— 所有关键技术术语(如连续认证、行为特征认证、风险决策引擎)均在首次出现时加粗并给出清晰定义或类比。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/1 1:44:17

软件工程毕业设计选题指南:基于 Web 管理系统的项目方向解析

本文面向正在准备毕业设计选题的计算机专业本科生与专科生&#xff0c;尤其是对项目方向感到迷茫、担心题目难度失控或无法顺利通过开题的同学。我在过去为多位同学提供毕业设计规划指导时&#xff0c;发现大家普遍卡在“题目该不该偏工程”“系统要做到什么复杂程度”“导师更…

作者头像 李华
网站建设 2026/3/1 16:50:23

【牛客网-小红的k次方】:避免大数问题

题目描述 小红拿到了一个长为 n 的数组 a&#xff0c;定义数组中所有元素的乘积为 x。小红想知道&#xff0c;最大的满足 x 是 30 的 k 次方的倍数&#xff08;形式化的&#xff0c;x \mod 30^k 0&#xff09;的 k 是多少&#xff1f; 题目链接&#xff1a;小红的k次方_牛客…

作者头像 李华
网站建设 2026/2/26 2:12:47

共生与赋能:产品与运营的一体化逻辑——以AI智能名片链动2+1模式S2B2C商城系统为例

摘要 在数字化商业快速迭代的当下&#xff0c;AI智能名片链动21模式S2B2C商城系统作为融合技术赋能与模式创新的典型载体&#xff0c;其发展实践深刻印证了产品与运营的共生关系。本文基于“劣质产品无运营可救、优质产品需运营赋能”两大核心认知&#xff0c;结合该商城系统的…

作者头像 李华
网站建设 2026/2/26 12:14:02

从桌面到产线:工业级3D打印设备如何重塑现代制造流程

宝鹿车业的生产车间里&#xff0c;一台不起眼的设备正安静运行&#xff0c;而它旁边的白板上记录着令人惊讶的数字——30%的成本降低&#xff0c;以及从设计到验证的时间缩短了一半。 当设备指示灯由蓝变绿&#xff0c;工程师熟练地取出刚完成打印的汽车零部件原型。这个曾经需…

作者头像 李华
网站建设 2026/2/26 7:19:10

小白到精通:一文搞懂大模型、AIGC、RAG、Agent和MCP的关系

文章介绍了大语言模型(LLM)及相关技术&#xff0c;包括AIGC(单模态和多模态)、RAG技术(解决实时性问题)、Function Calling(赋予工具调用能力)、智能体Agent(实现思考规划决策执行闭环)&#xff0c;以及MCP协议(作为AI"USB-C接口"&#xff0c;解决模型与外部工具集成…

作者头像 李华
网站建设 2026/2/27 18:56:05

STM32 SPI读取写入W25Q64JVSSIQ

w25q64.h #ifndef __W25Q64_H #define __W25Q64_H#include "main.h" #include "spi.h"// 引脚定义 #define W25Q64_CS_PIN GPIO_PIN_15 #define W25Q64_CS_PORT GPIOA// W25Q64指令集 #define W25Q64_WRITE_ENABLE 0x06 #define W25Q64_WRI…

作者头像 李华