网络安全加密

news/2024/12/28 3:07:30/
  1. 介绍

    1. 一个认证和密钥交换系统,它用来在不可靠的网络中保护口令和交换密钥。
    2. 通过消除了在网络上发送明文口令的需要,并且通过安全的密钥交换机制来使用加密,改进了安全性。
    3. 服务器不保存密码或密码的散列值, 防止字典攻击. 而只是保存验证因子(verifier).
    4. 客户端和服务器可以各自计算出一个会话秘钥(session key), 其值相同. 防止窃听和会话劫持.
    5. 好多游戏服务端用SRP认证,比如魔兽世界。
  2. 优点

    1. 防窃听
    2. 防暴力破解,字典攻击, 弱口令也不容易被破解
    3. 即使口令数据库被公之于众,攻击者仍然需要一个庞大的字典去搜索来获得口令。
    4. 速度快,不需要证书和第三方认证机构
  3. 缺点

    1. 浏览器不支持,得自己实现

原理

N     一个安全的大质数, 比如N=2q+1,q 是一个素数
g     一个以N为模的生成元,对任何X,有0 < X < N,存在一个值x,使得g^x % N == X。
k     k = H(N,G) 在 SRP6 中 k = 3
s     User’s Salt
I     用户名
p     明文密码
H()   单向 hash 函数
^     求幂运算
u     随机数
a,b   保密的临时数字
A,B   公开的临时数字
x     私有密匙(从 p 和 s 计算得来)
v     密码验证数字N和g的值必须由双方讨论来达成一致。它们可以被提前设置好,或者主机把它们发送给客户端。服务器存储如下信息
x = H(s, p)               (s is chosen randomly)
v = g^x                   (computes password verifier)服务器的数据库保存 {I, s, v} 整个验证流程如下:User -> Host:  I, A = g^a                  (标识自己是谁, a是随机数)
Host -> User:  s, B = kv + g^b             (把salt发送给user, b是随机数)Both:  u = H(A, B)User:  x = H(s, p)                 (用户输入密码)User:  S = (B - kg^x) ^ (a + ux)   (计算会话密钥)User:  K = H(S)Host:  S = (Av^u) ^ b              (计算会话密钥)Host:  K = H(S)这样双方都有一个会话密钥S, 后续的消息传输可以用S做加解密,从而保证安全。
为了完成认证过程,双方还得向对方证明自己拥有正确的S,
S不能让第三方知道,所以不能直接传输给对方做比较,一个可能的办法是:User -> Host:  M = H(H(N) xor H(g), H(I), s, A, B, K)
Host -> User:  H(A, M, K)双方需要做如下保障1. 如果客户端收到B == 0 (mod N) 或u == 0, 客户端停止认证。2. 如果服务器发现 A == 0 (mod N)则停止认证。3. 用户必须得证明自己拥有正确的K,否则服务器就会终止认证。

用密钥加密用户密码

  1. 介绍:
    1. 本机生成一个密钥key存磁盘上,对称加密密钥。
    2. 创建用户时,用户提供password, 然后数据库里保存db_password = encrypt(key, hash(password))
    3. 这样黑客把数据库拖走后,因为没有key解开用db_password,所以用户密码还是安全的。
    4. 用户登录时提供密码password, 哈希后是hash(password), 然后uncrypt(key, db_password),
      1. 两者比较,一致就是认证通过
      2. 不一致就是终止认证
  2. 优点:
    1. 防止拖库
  3. 缺点
    1. key丢了就完蛋了,谁也登录不上了。

http://www.ppmy.cn/news/1558677.html

相关文章

aws(学习笔记第十九课) 使用ECS和Fargate进行容器开发

aws(学习笔记第十九课) 使用ECS和Fargate进行容器开发 学习内容&#xff1a; 使用本地EC2中部署docker应用使用ECS的EC2模式进行容器开发使用ECS的Fargate模式进行容器开发 1. 使用本地EC2中部署docker应用 docker整体 这里展示了docker的整体流程。 开发阶段 编写dockerfile…

Kibana安装教程——Linux

Kibana安装教程——Linux 一、安装 下载安装包&#xff1a; 官网下载地址&#xff1a;https://www.elastic.co/cn/downloads/kibana 上传包到linux 切换到安装目录下 解压&#xff1a;tar -zxvf kibana-7.17.1-linux-x86_64.tar.gz 重命名安装文件夹 mv kibana-7.17.1-linux-x…

向量检索+大语言模型,免费搭建基于专属知识库的 RAG 智能助手

随着生成式人工智能技术的飞速发展&#xff0c;越来越多的人和企业开始应用AI到日常的工作和生活中。但公域的AI助手其数据来自互联网上的大量公开文本&#xff0c;虽然具有广泛的知识&#xff0c;但在面对一些特定领域的专业问题时&#xff0c;可能会出现回答不够准确或深入的…

R 和 Origin 完成细菌 OTU 表、土壤理化性质数据的微生物 Beta 多样性分析

使用 R 进行分析与可视化 1. 数据准备 假设已经有细菌 OTU 表&#xff08;以表格形式存储&#xff0c;行是样本&#xff0c;列是 OTU&#xff09;和土壤理化性质表&#xff08;行是样本&#xff0c;列是不同的理化性质指标&#xff09;。 # 读取数据 otu_table <- read.c…

MAE 随机掩码自编码器:高掩码率 + 非对称编码器-解码器架构,解决视觉数据冗余特征、计算冗余消除

MAE 随机掩码自编码器&#xff1a;高掩码率 非对称编码器-解码器架构&#xff0c;解决视觉数据冗余特征、计算冗余消除 论文大纲理解1. 确认目标2. 问题分解3. 实现步骤4. 效果展示5. 金手指 观察和假设观察现象提出假设验证过程 解法拆解1. 技术拆解2. 逻辑链分析3. 隐性方法…

SDK 作为虚拟示波器配备的一个 Windows 标准 DLL 接口,通过这个接口可以直接控制虚拟示波器,并获得示波器采集的数据

SDK参考手册 1.简介 SDK 作为虚拟示波器配备的一个 Windows 标准 DLL 接口&#xff0c;通过这个接口可以直接控制虚拟示波器&#xff0c;并获得示波器采集的数据。该 SDK 支持 MDSO、MDSO-LA、HDSO、DDSO、ISDS205、 ISDS210、ISDS220 和 SDS2062 设备。 2.初始化和结束 调用In…

数字存在科学计数法后的转换方法

最近在开发中&#xff0c;发现了客户的数据使用了科学计数法&#xff0c;但是前端直接显示的话不太好看&#xff0c;因此写了转化回数字的方法 如下&#xff1a; function zhnum(x) { if (Math.abs(x) < 1.0) { var e parseInt(x.toString().split(‘e-’)[1]); if (e) { …

自然语言处理与知识图谱的融合与应用

目录 前言1. 知识图谱与自然语言处理的关系1.1 知识图谱的定义与特点1.2 自然语言处理的核心任务1.3 二者的互补性 2. NLP在知识图谱构建中的应用2.1 信息抽取2.1.1 实体识别2.1.2 关系抽取2.1.3 属性抽取 2.2 知识融合2.3 知识推理 3. NLP与知识图谱融合的实际应用3.1 智能问答…