一、什么是大语言模型(LLM)安全?
大语言模型(LLM)安全侧重于保护大型语言模型免受各种威胁,这些威胁可能会损害其功能、完整性和所处理的数据。这涉及实施措施来保护模型本身、它使用的数据以及支持它的基础设施。目标是确保这些模型按预期运行,而不会暴露敏感信息或被恶意操纵。
在实践中,大语言模型(LLM)安全包括一系列策略,包括输入净化、数据加密、异常检测和访问控制。这些措施有助于防止未经授权的访问、数据泄露以及与在现实世界应用程序中部署大型语言模型相关的其他风险。
二、大语言模型(LLM)安全的重要性
大语言模型(LLM)安全对于防止未经授权的访问和滥用敏感数据至关重要。由于这些模型处理大量信息,数据泄露可能会导致严重的隐私侵犯和知识产权盗窃。通过加密、访问控制和定期审计确保数据保护有助于降低这些风险,保护大语言模型(LLM)处理的信息的完整性和机密性。
此外,强大的大语言模型(LLM)安全性对于维护人工智能应用程序的信任和可靠性至关重要。易受操纵的模型可能会产生有偏见或有害的内容,可能会损害组织的声誉并导致法律后果。通过实施全面的安全措施,开发或使用大语言模型(LLM)的组织可以确保它们产生准确和值得信赖的输出,增强用户信心,并在人工智能部署中坚持道德标准。
三、大语言模型(LLM)安全的核心组件
大语言模型(LLM)安全的三个主要组成部分是保护数据、模型、基础设施,并确保符合道德考虑。
1. 数据安全
大语言模型(LLM)中的数据安全涉及保护这些模型所训练的信息,以及它们在为用户查询提供服务时处理的数据。这包括以下措施:
1)数据加密 - 确保数据保持机密,未经授权的用户无法访问。
2)访问控制 - 限制谁可以与数据和模型交互,防止未经授权的修改或访问。
3)定期审计 - 有助于识别漏洞并确保符合数据保护标准。
数据安全的另一个关键方面是降低与训练数据集相关的风险。大语言模型(LLM)经常使用大量公开数据,这可能会引入偏见或无意中包含敏感信息。差分隐私和安全多方计算等技术可用于保护这些数据集中的单个数据点,同时保持用于训练目的的整体效用。
2. 模型安全
模型安全侧重于保护大型语言模型的完整性和功能,防止篡改和未经授权的修改。这涉及实施稳健的措施来保护模型的架构和参数,确保只进行授权的更改。访问控制、验证过程和校验和等技术对于维护模型输出的可信度和防止潜在的操纵至关重要。
模型安全的另一个关键方面是防御旨在利用模型漏洞的对抗性攻击。这些攻击可能包括试图通过向模型提供恶意输入来诱导有偏见或有害的输出。定期审计和异常检测系统对于及早识别此类威胁至关重要。
3. 基础设施安全
基础设施安全对于大型语言模型(LLM)的稳定运行至关重要。这涉及到保护托管这些模型的硬件、服务器和网络连接。实施防火墙、入侵检测系统和加密协议等强大的安全措施有助于防止未经授权的访问和潜在威胁。
基础设施安全的另一个关键方面是维护数据处理和存储的安全环境。定期审计和更新系统的安全协议对于解决新出现的漏洞至关重要。确保数据中心的物理安全、实施访问控制和监控大语言模型(LLM)基础设施的网络流量非常重要。
4. 伦理考虑
大语言模型(LLM)安全中的伦理考虑包括防止产生有害内容、错误信息和有偏见的输出。这需要在模型训练和部署阶段进行严格的监督,以确保使用的数据是多样化和有代表性的。
从人类反馈中强化学习(RLHF - Reinforcement Learning from Human Feedback)等技术可用于使模型输出与人类价值观相一致,从而降低生成可能延续刻板印象或煽动仇恨言论的内容的风险。
透明度和问责制在管理道德风险方面至关重要。组织必须记录其数据源和模型培训流程,以促进审计并确保符合当前和未来的监管标准。实施稳健的监控系统有助于尽快检测和纠正意外行为。
四、OWASP十大大语言模型(LLM)安全风险
开放Web应用程序安全项目(OWASP - The Open Web Application Security Project)以其十大应用程序安全风险列表而闻名,最近发布了一份与大语言模型(LLM)应用程序特别相关的新安全风险列表。让我们回顾一下OWASP十大安全风险。
1、快速输入(Prompt Injection)
当攻击者通过精心设计的输入操纵大型语言模型(大语言模型(LLM)),导致其执行意外操作时,就会发生提示注入。这可以通过“越狱”系统提示直接实现,也可以通过操纵外部输入间接实现:
- 直接输入 - 在直接提示输入中,攻击者覆盖或显示系统提示,可能通过与不安全的功能和数据存储进行交互来利用后端系统。
- 间接输入 - 当大语言模型(LLM)处理来自攻击者控制的外部源的输入时,会发生间接提示输入,嵌入恶意指令,劫持对话上下文并导致不可预测或有害的输出。
影响:成功的快速注入攻击的后果可能从数据泄露和未经授权的行为到社会工程漏洞。例如,恶意用户可能会制作一个直接的提示注入,指示大语言模型(LLM)返回敏感信息或执行未经授权的操作。间接攻击可能涉及在大语言模型(LLM)处理的网络内容或文档中嵌入恶意指令,导致未经授权的购买或泄露敏感数据等行为。
缓解措施:可以通过对大语言模型(LLM)访问进行权限控制、将外部内容与用户提示隔离以及在关键操作期间保持人工监督等措施来缓解这种风险。
2、输出处理不安全 (Insecure Output Handling)
不安全的输出处理是指在将大型语言模型(大语言模型(LLM))生成的输出传递给下游其他系统之前,对其进行不充分的验证、净化和管理。风险的产生是因为大语言模型(LLM)生成的内容通常由提示控制。当应用程序不能正确处理大语言模型(LLM)输出时,它就会暴露在可能危及前端和后端系统的潜在漏洞中。
影响:此漏洞可能导致严重的安全问题,如跨站点脚本(XSS)、跨站点请求伪造(CSRF)、服务器端请求伪造(SSRF)、权限升级和远程代码执行。
缓解:为了减轻这些风险,将模型视为零信任框架内的用户,对模型的响应应用严格的输入验证。遵循OWASP应用程序安全验证标准(ASVS)指南可确保有效的输入验证和净化。在将模型输出发送回用户之前对其进行编码可以防止不必要的代码执行。
3. 训练数据中毒 (Training Data Poisoning)
训练数据中毒涉及篡改模型预训练、微调或嵌入阶段使用的数据,以引入漏洞。这种有毒数据不仅会影响输出的准确性,还会给使用这些模型的组织带来下游软件利用和声誉受损等风险。
影响:这种操纵可能会导致模型安全性受损、性能下降和输出偏差。攻击者可能会将伪造或恶意信息注入训练数据集中,然后这些信息可以反映在模型的响应中。
缓解措施:防止训练数据中毒需要严格验证数据源,并实施沙盒等措施来控制数据摄入。通过ML-BOM(机器学习物料清单)等技术确保训练数据集的合法性可以帮助维护模型的完整性。此外,使用对抗性鲁棒性策略和持续监测异常可以及早发现和减轻中毒企图。
4. 模型拒绝服务 (Model Denial of Service - DoS)
当攻击者利用大型语言模型(LLM)消耗过多的计算资源时,就会发生对大型语言模型的模型拒绝服务(DoS)攻击。攻击者可以通过发送大量复杂或资源密集型的查询来实现这一点,从而使系统的容量不堪重负。
递归上下文扩展(其中输入被精心设计以重复触发模型的上下文窗口扩展)和可变长度输入洪水(通过利用处理不同输入长度的低效率来对模型造成压力)等技术是这些攻击中常用的方法。
影响:这种攻击可能导致基于LLM的系统的服务质量下降或完全无响应。
缓解措施:实施严格的输入验证和净化有助于确保用户输入符合预定义的限制,并排除恶意内容。限制每个请求的资源使用并强制执行API速率限制可以防止单个用户用过多的请求淹没系统。持续监控资源利用率对于检测指示DoS攻击的异常峰值至关重要。
5. 供应链漏洞 (Supply Chain Vulnerabilities)
LLM中的供应链漏洞可能会损害训练数据、模型和部署平台的完整性。这些漏洞通常来自第三方组件,如预训练的模型和数据集,这些组件可能会被篡改或中毒。使用过时或弃用的软件会进一步加剧这些风险。
常见的例子包括使用受损的Python库、有毒的众包数据,或使用易受攻击的预训练模型进行微调。
影响:攻击者可以利用这些弱点引入有偏见的结果、安全漏洞,甚至导致整个系统故障。攻击场景包括利用PyPi等包注册表分发恶意软件,以及毒害对某些实体有利的数据集。
缓解措施:预防措施包括彻底审查供应商,通过软件物料清单(SBOM)维护最新的组件库存,并对插件和外部模型进行严格的安全检查。定期监测和异常检测对于及时识别和减轻这些威胁至关重要。
6. 敏感信息披露
大语言模型(LLM)中的敏感信息披露发生在这些模型无意中通过其输出泄露机密数据、专有算法或其他关键细节时。
影响:这种风险可能导致未经授权访问敏感信息、侵犯隐私和合规风险。
缓解措施:为了减轻这种风险,大语言模型(LLM)应用程序必须实施强大的数据净化技术,防止用户数据进入训练模型。此外,制定明确的使用条款政策可以告知用户他们的数据是如何处理的,并提供选择不将数据纳入培训的选项。
减轻敏感信息泄露还涉及在消费者和大语言模型(LLM)应用程序之间建立双向信任边界。这意味着,如果没有适当的验证和过滤机制,来自客户端的输入和来自LLM的输出都不能被固有地信任。
7. 不安全的插件设计 (Insecure Plugin Design)
不安全的插件设计是指插件与大型语言模型(LLM)交互方式产生的漏洞。这些插件通常在没有严格的应用程序控制的情况下自动执行,这使得它们容易受到恶意输入的影响。
影响:一个重要的问题是缺乏输入验证和类型检查,这使得攻击者能够精心制作有害的请求,从而导致远程代码执行或数据泄露。此外,插件之间的访问控制不足可能会导致未经授权的操作,增加权限升级和其他安全漏洞的风险。
缓解措施:为了减轻这些风险,开发人员必须强制执行严格的参数验证,并对输入实施分层安全检查。利用OWASP的应用程序安全验证标准(Application Security Verification Standard-ASVS)等标准可确保有效的输入净化。使用静态应用程序安全测试(Static Application Security Testing-SAST)、动态应用程序安全检测(Dynamic Application Security Testing-DAST)和交互式应用程序安全性检测(IAST)进行彻底测试对于识别此漏洞非常重要。
8、过度代理 (Excessive Agency)
当基于LLM的系统被赋予过多的自主权或功能时,就会出现大型语言模型(LLM)中的过度代理,从而导致潜在的滥用。此漏洞允许模型由于输出不明确或恶意输入而执行意外操作。
这种风险的根本原因包括LLM插件或工具中过多的功能、权限和自主权。例如,插件可能提供超出其预期操作所需的更多功能,例如不仅允许读取文档,还允许修改和删除文档。
影响:过度代理可能是一个重大风险,影响与LLM交互的系统的机密性、完整性和可用性。随着LLM系统变得越来越强大,风险和可能后果的程度预计会增加。
缓解:为了减轻这种风险,开发人员应将LLM功能和权限限制在特定任务所需的最低限度。此外,在需要人工批准的高影响行动中实施人在环控制可以防止意外行动。定期监控和记录插件活动对于识别和应对潜在威胁也至关重要。
9、过度依赖 (Overreliance)
当用户或系统在没有适当监督的情况下信任这些模型的输出时,就会过度依赖大型语言模型(LLM)。在LLM生成的内容面向公众或持续使用的情况下,风险更大,例如在撰写新闻文章或生成软件代码等应用程序中。
影响:这可能会导致重大问题,因为LLM在权威性地呈现信息时可能会产生错误、不恰当或不安全的信息。这种“幻觉”会传播错误信息,造成法律问题,损害声誉。
缓解:为了减轻过度依赖的风险,定期监控和审查LLM输出非常重要,例如通过自我一致性技术或投票机制,并过滤掉不准确的信息。将模型输出与可信的外部源进行交叉检查,增加了一层验证。通过微调或嵌入来增强模型可以提高输出质量并减少错误。此外,组织必须向用户明确传达风险。
10、模型盗窃 (Model Theft)
模型盗窃是指恶意行为者或高级持久性威胁(APT)未经授权访问和提取大型语言模型(LLM)。这可能涉及物理窃取、复制或提取模型的权重和参数,以创建功能等效物。
模型盗窃的常见攻击媒介包括通过配置错误或安全设置薄弱来利用基础设施中的漏洞。内部威胁也是一个令人担忧的问题,心怀不满的员工可能会泄露模型工件。其他复杂的方法包括使用特制的输入查询模型API,以收集足够的输出来创建影子模型。
影响:模型盗窃可能导致重大经济损失、品牌声誉受损、竞争优势侵蚀以及未经授权使用或访问模型中的敏感信息。
缓解措施:为了减轻这些风险,组织必须采取强有力的安全措施,包括访问控制、加密和持续监控。使用具有严格访问控制和定期安全审计的集中式机器学习模型清单非常重要。
五、保护大语言模型(LLM)应用程序的最佳实践
1、使用AI安全框架 (Use AI Safety Frameworks)
利用人工智能安全框架对于确保大型语言模型(LLM)的安全和道德部署至关重要。这些框架提供了结构化的指导方针和最佳实践,以降低与人工智能系统相关的风险。
人工智能安全框架包括各种技术,例如差异隐私,它有助于保护训练数据集中的单个数据点,以及对抗鲁棒性,它增强了模型对恶意输入的抵抗力。
2、建立信任边界 (Establish Trust Boundaries)
在LLM应用程序中建立信任边界对于防止未经授权的操作和确保不同组件之间的安全交互至关重要。信任边界定义了数据和命令被认为安全可靠的范围。
实现这些边界涉及隔离用户输入、系统提示和外部数据源,以控制信息在系统中的流动方式。例如,将用户生成的内容与系统级操作隔离开来可以帮助防止操纵LLM行为的注入攻击。
3、记录和监控 (Logging and Monitoring)
日志记录和监控对于维护大型语言模型(LLM)的安全性和可靠性至关重要。有效的日志记录包括记录与LLM的所有交互,包括提示、响应、API请求和系统级事件。这些日志有助于跟踪活动、识别异常和诊断问题。
监控通过持续分析这些日志来补充日志记录,以实时检测异常模式或潜在的安全漏洞。实施稳健的日志记录机制可确保LLM运营的透明度和问责制。
4、错误处理 (Error Handling)
大型语言模型(LLM)中的错误处理对于维护人工智能应用程序的可靠性和安全性至关重要。有效的错误处理涉及识别、管理和减轻模型运行过程中出现的错误。
这包括实施稳健的验证检查,以确保输入和输出符合预定义的标准,这有助于防止错误数据通过下游系统传播。此外,应生成明确的错误消息,告知用户和开发人员问题,以便及时解决。
5、插件设计 (Plug-in Design)
大型语言模型(LLM)的有效插件设计需要严格的安全措施来防止漏洞:
输入验证和净化对于确保插件只处理安全和预期的数据至关重要。
严格的参数检查和类型验证有助于降低注入攻击或执行恶意数据的风险。
最小权限原则限制了插件可以执行的操作,从而减少了利用漏洞造成的潜在损害。
应采用OAuth2等强大的身份验证机制来安全地管理插件访问。
6、查询和访问控制 (Query and Access Controls)
查询和访问控制对于维护大型语言模型(LLM)的安全性和完整性至关重要。这些控制确保只有授权用户才能与模型交互,防止未经授权的访问和潜在的滥用。
实施强大的身份验证机制,如OAuth2,有助于在授予对LLM功能的访问权限之前验证用户身份。此外,基于角色的访问控制(role-based access control - RBAC)可用于为不同的用户角色定义特定权限,限制他们根据授权级别执行某些操作的能力。
此外,速率限制可以通过限制用户在给定时间范围内可以进行的查询数量来防止滥用。输入验证确保查询遵循预定义的格式并排除恶意内容。
7、保障API安全 (Secure APIs)
保护大型语言模型(LLM)使用的API对于保护客户端和服务器之间交换的数据的完整性和机密性至关重要。这首先要实现强大的身份验证机制,如OAuth2,它确保只有授权的用户和应用程序才能访问API端点。
此外,使用传输层安全性(Transport Layer Security-TLS)对传输中的数据进行加密,防止恶意行为者拦截或篡改。速率限制和节流通过控制在给定时间范围内可以发出的请求数量来帮助减轻拒绝服务攻击。
六、推荐阅读
1. 大预言模型基础
Embeddings 101: The foundation of large language modelsThis blog provides a comprehensive introduction to embeddings and their role in LLMshttps://datasciencedojo.com/blog/embeddings-and-llm/2. 专家教你如何应对网络攻击
MicroSecure - Cybersecurity SpecialistsBased in the Montreal area, MicroSecure specializes in cybersecurity and offers services adapted to small and medium-sized businesses.https://www.microsecure.com/en/home/3. 斯坦福大学预言 - 大语言模型如何改变科学、社会和人工智能
How Large Language Models Will Transform Science, Society, and AIScholars in computer science, linguistics, and philosophy explore the pains and promises of GPT-3.https://hai.stanford.edu/news/how-large-language-models-will-transform-science-society-and-ai