当前位置: 首页 > news >正文

《Password Guessing Using Large Language Models》——论文阅读

1.研究背景

LLM在文本生成和理解方面表现出色,但直接用于密码猜测存在以下问题:

  • 密码与自然语言的差异(短、无语法、需精确匹配)

  • 生成效率低、重复率高

  • 伦理限制(如GPT-4拒绝生成大量密码)

2.本文研究

        提出PASSLLM框架,它通过“少量高效微调 + 专用生成算法 + 知识蒸馏”三步走策略。

  • 将LoRA(低秩适应)微调技术引入LLM密码猜测,构建通用框架,支持trawling(广撒网)和三种targeted(精准)攻击场景(基于个人信息,密码重用,结合PII和密码重用)。
  • 同时为trawling场景设计两阶段BFS算法,支持大规模并行生成。为targeted场景设计动态beam search算法,提高生成效率。
  • 将知识蒸馏技术用于LLM密码猜测,压缩模型参数,在不损耗性能的情况下,提升推理速度。

3.相关知识

LoRA(低秩适应):是一种“只改一点点,就能让大模型学会新任务”的参数高效微调技术,其核心思想为:冻结原模型,外挂“小补丁”——用极少量可训练参数,近似全参数微调的效果。

4.具体步骤

(1)数据处理与模型输入构建

        数据格式

  • 每条训练数据是一个序列:seq_i = [INFO_i, pw_i]。

  • INFO_i:可用的辅助信息(如PII、姊妹密码)。pw_i:目标密码。

        双词汇表设计

  • 辅助信息部分:使用LLM原有的词汇表(通常包含数万个token)进行编码,以保留其语言理解能力。

  • 密码部分:使用一个自定义的字符级词汇表,仅包含95个可打印ASCII字符和一个EOS(End-of-Sequence) token,共96个符号。

(2)基于LoRA的高效模型微调

        LoRA注入:在Transformer的自注意力层中的Query, Key, Value投影矩阵上注入LoRA模块。

        训练目标:标准的下一个token预测(自回归)。损失函数仅计算密码部分的交叉熵,而不计算辅助信息部分。

(3)针对不同场景的密码生成算法

  ①trawling场景的两阶段生成算法

        前缀生成:使用一个优先队列(最大堆),从初始提示开始,基于累积概率广度优先地生成一系列互不为前缀的字符序列。

        并行子字典生成:将第一阶段得到的前缀集合中的每一个前缀,与初始提示词组合,形成新的输入;对每个新输入,并行地使用带概率剪枝的BFS算法生成以该前缀开头的密码子字典;最后将所有子字典合并,按概率排序,得到最终的拖网密码字典。

        优势:该设计将一个大任务分解为大量可并行执行的子任务,极大提高了生成效率,易于在消费级GPU上实现大规模密码生成。

targeted场景的动态束搜索算法

        动态束宽:允许在不同生成长度(深度)设置不同的束宽(beam width),更灵活地平衡资源。

        EOS终止阈值:引入一个阈值 ε,只有当模型生成EOS token的概率大于 ε时,才认为该密码序列完成并被输出。

        KV缓存共享:关键性能优化,辅助信息 INFO的KV缓存只需计算一次,然后在所有beam中共享。只需为不断增长的密码前缀维护KV缓存。

(4)模型蒸馏

        教师模型:训练好的 7B参数 PAssLLM (Mistral)

        学生模型:一个更小号的模型(如 0.5B参数的 Qwen2.5)

        训练目标:学生模型的训练损失是两种损失的加权和,蒸馏损失(让学生模型的输出分布尽可能接近教师模型的输出分布)和任务损失(标准的交叉熵损失,让学生模型也能直接学习到正确的下一个字符

http://www.dtcms.com/a/349526.html

相关文章:

  • 企业级Java项目整合ELK日志收集分析可视化
  • [论文阅读]RQ-RAG: Learning to Refine Queries for Retrieval Augmented Generation
  • 大模型知识--MCP
  • 无人机芯片休眠模式解析
  • Linux系统的网络管理(一)
  • 血缘元数据采集开放标准:OpenLineage Integrations Apache Spark Main Concepts Installation
  • 05 开发环境和远程仓库Gitlab准备
  • 【spring进阶】spring应用内方法调用时长统计
  • 【数据结构】串——(一)
  • 36 NoSQL 注入
  • Docker 部署 GitLab 并开启 SSH 使用详解
  • 【Java后端】Java 多线程:从原理到实战,再到高频面试题
  • Claude Code 使用及配置智能体
  • 【科研绘图系列】R语言绘制代谢物与临床表型相关性的森林图
  • 从零到一:现代化充电桩App的React前端参考
  • 将FGUI的Shader全部预热后,WebGL平台没有加载成功
  • 基于MalConv的恶意软件检测系统设计与实现
  • 大模型 transformer 步骤
  • 《拉康精神分析学中的欲望辩证法:能指的拓扑学与主体的解构性重构》
  • 计算机大数据技术不会?医院体检数据可视化分析系统Django+Vue全栈方案
  • 不止效率工具:AI 在文化创作中如何重构 “灵感逻辑”?
  • 【DFS 或 BFS 或拓扑排序 - LeetCode】329. 矩阵中的最长递增路径
  • 【图像算法 - 23】工业应用:基于深度学习YOLO12与OpenCV的仪器仪表智能识别系统
  • 基于视觉的果园无人机导航:一种基于干预模仿学习与VAE控制器的真实世界验证
  • 机器人中的李代数是什么
  • 抖音多账号运营新范式:巨推AI如何解锁流量矩阵的商业密码
  • 量子计算驱动的Python医疗诊断编程前沿展望(下)
  • 数据结构:单向链表的逆置;双向循环链表;栈,输出栈,销毁栈;顺序表和链表的区别和优缺点;0825
  • 平安产险青海分公司启动2025年“乡风文明100行动” 首站落地海东市乐都区土官沟村
  • 【C++详解】哈希表概念与实现 开放定址法和链地址法、处理哈希冲突、哈希函数介绍