网络安全加密

server/2024/12/24 19:50:42/
  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/server/152855.html

相关文章

【AI】✈️问答页面搭建-内网穿透公网可访问!

目录 &#x1f44b;前言 &#x1f440;一、后端改动 &#x1f331;二、内网穿透 &#x1f49e;️三、前端改动 &#x1f379;四、测试 &#x1f4eb;五、章末 &#x1f44b;前言 小伙伴们大家好&#xff0c;上次本地搭建了一个简单的 ai 页面&#xff0c;实现流式输出问答…

c++--------------------------------接口实现

引用参数 引用的基本概念 在C中&#xff0c;引用是一个别名&#xff0c;它为已存在的变量提供了另一个名字。引用的声明格式为类型& 引用名 变量名;。例如&#xff0c;int num 10; int& ref num;&#xff0c;这里ref就是num的引用&#xff0c;对ref的操作等价于对nu…

C# 文件系统I/O操作--File类与FileInfo类

File和FileInfo两个功能基本相同&#xff0c;他们都是基于System.IO命名空间的文件操作类。File 和 FileInfo 都是 .NET 基于System.IO命名空间中用于处理文件的类&#xff0c;但它们的设计理念和使用方式有所不同&#xff1a; File是静态类&#xff0c;它不属于特定对象&…

Mac系统下 idea中如何创建maven项目

首先点击顶部的File&#xff0c;然后将鼠标移至New&#xff0c;会显示Project&#xff0c;点击Project&#xff0c;如下图所示。 然后选择Empty Project&#xff0c;填写项目名称&#xff0c;选择项目存放地址&#xff0c;点击Create&#xff0c;完成空项目的创建&#xff0c;…

CSS的样式计算过程

先看一段代码&#xff0c; a标签是什么颜色&#xff1f; <html><head><title>CSS</title><style>.wrapper {color: red;}</style></head><body><div class"wrapper"><a href"#">我是一个a标…

【漏洞-Oracle】未设置口令复杂度校验、密码有效期

1.场景描述 三方漏洞扫描&#xff1a; 2.详细描述 安全问题&#xff1a;Oracle未设置系统的口令复杂度校验、密码有效期。 危害分析结果&#xff1a;存在使用口令被恶意用户猜测获得&#xff0c;合法用户身份被仿冒&#xff0c;导致系统被非授权访问的可能性。 整改建议&…

41.在Vue3中使用OpenLayers实现读取WKT数据,输出GML、Polyline、GeoJSON

引言 随着地理信息系统&#xff08;GIS&#xff09;应用的不断发展&#xff0c;Web地图和地理数据的处理已经成为许多前端开发者的重要任务之一。在Vue 3框架中结合OpenLayers进行地理数据的可视化展示是一种常见的解决方案。OpenLayers是一个开源的Web地图API&#xff0c;支持…

在Visual Studio 2022中配置C++计算机视觉库Opencv

本文主要介绍下载OpenCV库以及在Visual Studio 2022中配置、编译C计算机视觉库OpenCv的方法 1.Opencv库安装 ​ 首先&#xff0c;我们需要安装OpenCV库&#xff0c;作为一个开源库&#xff0c;我们可以直接在其官网下载Releases - OpenCV&#xff0c;如果官网下载过慢&#x…