当前位置:首页 » 操作系统 » ak算法

ak算法

发布时间: 2023-05-07 23:36:52

算法竞赛 AK 是什么意思

all kill的简写,表示通过了所有题目

⑵ 常见认证机制总结

阅读这篇文档你可以了解到一些常见的认证方式及其优缺点,在实际场景中该如何去搭配各种认证方式​。​

了解 Authorization 前,需要先了解渗改以下术语

认证是对身份的一种确认过程;也可以说是身份有效性的确认;Are you who you say you are?

授权是指对行为或资源允许的过程;Are you allowed to do this action?
对应的是鉴权,是对行为或资源是否丛盯判允许的确认过程

资源的拥有者,一般都是用户自己

资源的认证服务器,提供 Authorization Endpoint 及 Token endpoint

请求 authorization API

请求 access_token API

资源服务器,具体的 Service 上的 API

需要申请访问资源的应用,可以是 APP、JS APP、Server 等

Access token 是由 Authorization Server 通过安全认证后,生成临时用于访问 Resource 的凭证;
JWT 就是一种具体的实现方式.
可以标识身份;
也可以是 self-contain 认证权限信息;
一般有效期较短;
用于 Resource Server 的请求中

可以参考 JWT ,
有个使用中的小问题,记录下
Base64URL 与 Base64 算法
Base64 有三个字符+、/和=,在 URL 里面有特殊含义,所以要被替换掉:=被省略、+替换成-,/替换成_ 。这就是 Base64URL 算法。JWT 会使用 Base64URL 编码的,主要是考虑到一般 jwt Token 会直接被放在 URL 上。

Refresh token 是由 Authorization Server 通过则雀安全认证后,生成用于长时间内获取 access_token 的凭证;
仅用于 Authorization Server 的请求中(不可传输给其他服务);
若 access_token expire 了,则使用 Refresh token 去 Authorization Server 重新获取;
refresh token 可以管理 access token,防止 access_token 被多个 client 使用;

参考

参考

该方式在调用 API 前需要先在该 API Provider 那申请一个(对)API key,如 APPID 和 APPSecret,在请求的过程中在 query 或 header 中加上这个(对)API key;其中 APPSecret 一般都是在 Server-to-Server 的场景中使用,而 APPID 可通过终端 JS 传递到后端服务器,然后获取内存中的 APPSecret,一起放在 query 或 header 中转发到 API 服务;

图中因为仅考虑认证的机理。
优点:
这种认证模式的好处就是简单且能识别 API 调用者的身份;
有 APPSecret,所以一般都是在 Server-to-Server 的场景中使用;

该方式其实就是采用了 base64 对 username 及 password 进行混淆编码后放在 header 中,形如

该方式比较简单,但是如果在互联网传输,那么需要保证协议是 https 的,防止被拦截解码获取明文。

该方式是一种更高级别、更安全的授权方式,API provider 与 API caller 事先约定一个 Secret Key 及算法,然后保证只有双方知道,Caller 在调用 API 时,按照双方规定的算法对请求进行签名,得到 signature,并将该 signature 一并发到 Server 端,Server 端同理对请求进行签名,也得出一个 signature,然后对比两个 signature 是否 match,match 则认证通过,否则拒绝;

该方式重点就是在保存 Secret Key,所以一般 Web 或能直接查看到 JS 源码的场景都不适用;一般在 IOS、Android 等 Native 应用中使用场景较多;

优点:

OAuth2.0 主要是解决了在互联网上 Resource Owner 与 Client Application、third-parties 访问数据安全的问题。提供了一套安全的认证标准。

该认证方式是一种较安全的认证方式(虽然流程看起来复杂),其中主要是涉及到两个步骤一个是授权服务请求 authorization 过程,另一个是 Application client 请求 access_token 过程(这里有 CORS 问题,所以 Authorization Server CORS 必须是 allow 的),在网上找到以下图,完美使用了 Authorization Code 的认证方式;

解析

虽然目前 Authorization Code 的方式还是使用的比较多,但据 APP 开发童靴了解到,在 APP 端恶意的 APP 的确能拦截到 Authorization Endpoint 的响应,获取到 code,然后去获取 access_token 的问题。具体的问题可参考 IETF,感兴趣童鞋可搜索【IOS 逆向安全】相关话题。

下图是 Authorization Code 认证方式扩展后的认证方式即 PKCE,主要差异有两点:

该方式是一种 Authorization Code 的简化后的认证方式,它将交换 Authorization Code 请求直接简化(删除),Application Client 直接携带 client_id 去发起 request access_token 的请求,即省略了图中的 ⑥⑦ 步骤,直接跳到 ⑧ 返回 access_token。

【前世今生】
该方式最初是为了给 Native APP 和 JS APP 使用的,它所出现的原因是因为最初浏览器有 CORS 的困扰,POST 请求只能在同 domain 下访问 Authorization Server(见图中 ⑤ 输入账号密码后向自己的 AuthorizationServer 请求认证)而 ⑦ 步骤是 POST 请求且跨域,无法实现,所以省略了 ⑥⑦ 步骤,是一种妥协的方案;而如今 CORS 已不是什么问题,只要 Server 允许就可以访问,但现在已经推荐使用 PKCE 的方式去实现。
authorization 请求

其 response 仅仅是采用了 access_token

IETF 规定 Authorization Server 上 Authorization Endpoint 必须同时支持 POST 和 GET 请求,而 Token Endpoint 必须仅支持 POST 请求。

认证流程,如图

逻辑相对较简单,对于用户而言,基本没有授权可言(可能用户就不知道有后面这一步)。
2 中请求

认证流程,如图,该认证方式一般在安全可信且是 https 的 server-to-server 场景中使用

1 中请求

目前在国内大部分云厂商都是采用 AK/SK 的认证模式;一般都是先在云厂商平台注册应用,并生成一对 access key 和 access secret,然后对请求参数及其它按照云厂商提供的算法生成签名,签名与 access key 一起发送到服务器端,然后使用相同的算法生成签名,比较。这种方式相对其它的认证方式会更安全,一般使用场景是在 machine-to-machine(M2M),保证了 access secret 不会被泄露且不会在网络中传输,一般情况下生成签名的算法也都是不可逆的,所以即使被拦截也无法篡改数据;

大致描述了 AK/SK 的简单过程,signature 的算法也可以参考该地址
可以与 HMAC 进行对比下,可能会发现比较相似,可以认为是升级版。

最后推荐一个网站,需要设计 Authorization Portal 的可以参考一波。

https://aaronparecki.com/oauth-2-simplified/

https://tools.ietf.org/html/rfc7636#section-1.1 PKCE
https://www.ibm.com/support/knowledgecenter/zh/SSPREK_9.0.4/com.ibm.isam.doc/config/concept/oauth_pkce.html PKCE

https://oauth.net/2/ OAuth

https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Access_control_CORS CORS

https://tools.ietf.org/html/rfc6749#page-21 Token Endpoint 及 Authorization Endpoint

https://support.huaweicloud.com/devg-apisign/api-sign-algorithm.html AK/SK

https://juejin.im/post/5c9ada58e51d453fea4a99bc

https://jwt.io/introction/ JWT

https://tools.ietf.org/html/rfc7519 JWT

⑶ 公有云API的认证方式:Token认证和AK/SK认证

公有云API的认证方式

一般有以下几种认证方式:
Token认证
AK/SK认证
RSA非对称加密方式

Token认证
使用Token认证方式完成认证鉴权时,用户首先需要获取token,在调用接口时增加“X-XXX-Token”到业务接口请求消息头中。
流程

原理:任何请求,都附带token;服务端根据token判断请求是否合法。
缺点:若是报文在中途被劫持,那么token就泄露了,这时(token有效期内)黑客就能够构造任意的请求了。

2 AK/SK认证
2.1 AK/SK 原理
云主机需要通过宽乱使用Access Key Id / Secret Access Key加密的方法来验证某个请求的发送者身份。
Access Key Id(运巧改AK)用于标示用户,Secret Access Key(SK)是用户用于加密认证字符串和云厂商用来验证认证字符串的密钥,其中SK必须保密。 AK/SK原理使用对称加解密。

2.2 AK/SK使用机制
云主机接收到用户的请求后,系统将使用AK对应的相同的SK和同样的认证机制生成认证字符串,并与用户请求中包含的认证字符串进行比对。如果认证字符串相同,系统认为用户拥有指定的操作权限,并执行相关操作;如果认证字符串不同,系统将忽略该操作并返回错误码。
2.3 流程
判断用户请求中是否包含Authorization认证字符串。如果包含认证字符串,则执行下一步操作。
基于HTTP请求信息,使用相同的算法,生成Signature字符串。
使用服务器生成的Signature字符串与用户提供的字符串进行比对,如果内容不一致,则认为旁判认证失败,拒绝该请求;如果内容一致,则表示认证成功,系统将按照用户的请求内容进行操作。

原理:

⑷ [转载]公有云API的认证方式:AK/SK 简介

一般有以下几种认证方式:

下面主要介绍AK/SK。

云主机需要通过使用 Access Key Id / Secret Access Key 加密的方法来验证某个请求的发送者身份。

其中SK必须保密。熟悉非对称加密的的话,举个例子:AK相当于非对称加密的公钥,而SK相当于非对称加密的私钥。 公钥加密信息,只能由对应的私钥才能解密,这是基知哗判本原理。 AK/SK也是如此。

云主机接收到用户的请求后,系统将使用相同的SK和同样的认证机制生成认证字符串,并与用户请求中包含的认证字符串进行比对。如果认证字符串相同,系统认为用户拥有指定的操作权限,并执行相关操作;如果认证芦伍字符串不同,系统将忽略该操作并返回错误码。

判断用户请求中是否包含Authorization认证字符串。如果包含认证字符串,则执行下一步操作。
基于HTTP请求信息,使用相同的算法,生成Signature字符串。
使用服务器生成的Signature字符串与用户提供的字符串进行比对,如果内容不一致,则认为认搭改证失败,拒绝该请求;如果内容一致,则表示认证成功,系统将按照用户的请求内容进行操作。

原文: https://blog.csdn.net/makenothing/article/details/81158481

⑸ AK/SK【HMAC】 认证

1. 客户端需要在认证服务器中预先申请 AK 和 SK
2. 在调用 API 的时候,除传递请求必要的参数之外,还需要传输一个通过 HMAC 算法生成的一个签名串【签名串的生成方法后面讲】
3. 服务器通过预先留存的 AK 和 SK 进行同样的摘要算法计算,得到衫埋的结果与客户端传输的额外的参数进行比对,如果一致,则认为该请求是有效的;否则将拒绝处理这次请求,并返回 HTTP 403

假设请求的 URL 格式为 https://.com/gate/move/?c=2&b=1

目前的实现方式无法抵御重放攻击;因此我们需要在签名时放入一下干扰信息
在业界标准中解决这个问题有两种典型的做法
1)质疑/应答算法【OCRA: OATH Challenge-Response Algorithm】
质疑/应答算法需要预先客户端先请求一次服务器,获得 HTTP 状态码为 401 未认证的返回,并得到一个随机字符串(nonce)。将 nonce 附加到按照上面说到的方法袜卜进行 HMAC_SHA1 签名,服务器使用预先分配的 nonce 同样进行签名校验,这个 nonce 在服务器只会被使用一次【当然你可以给这个nonce设置一个有效期,只要在有效期之内均可以使用】,因此可以提供唯一的摘要

2)timestamp+nonce方案
nonce 指唯一的随机字符串,用来标识每个被签名的请求,通常为每个请求提供一个唯一的标识符,服务器能够防止请求被多次使用【记录所有用过的 nonce 以阻止它们被二次使用】;但是对于服务器永久存储所有接收到的 nonce 的代价非常大,因此可以通过 timestamp 配合 nonce 进行优化
假设客户端和服务端最多能存在或好蚂 1 分钟的时间差;服务端需要记录客户端所有的 nonce 请求集合,当有新的请求进来后,检测当前携带的 nonce 是否在集合中存在;
如果不存在,则记录该 nonce 的值,有效期为 1分钟;
如果存在,则说明客户端在一分钟内进行了重复的请求,则拒绝服务;

⑹ AK替换算法

在数学中,序列就是按照

一定的顺序排列的一列数,

其实就是数列的意思。

序列{ak}就是数列:闭困

a1,a2,a3,…,ak,戚核…

(这里仅仅是把平时习惯

写成n的序号写成了轿仔念K而已)。

可能是你习惯了数列的叫法,

说成序列一时不适应罢了。

⑺ 免疫算法的算法流程

1. 随机产生初始父代种群A1,根据先验知识抽取疫苗;
2. 若当前群体中包含最佳个体,则算法停止运行并输出结果;否则,继续;
3.对当前第k代父本种群Ak进行交叉操作,得到种群Bk;
4. 对Bk进行变异操作,得到种群Ck;
5. 对Ck进行接种疫苗操作,得到种群Dk;
6. 对Dk进行免疫选择操作,得到新一代父本Ak+1,转至第二步。

热点内容
6m宽带上传速度 发布:2025-09-15 04:40:39 浏览:400
php9 发布:2025-09-15 04:26:11 浏览:863
python全套教程下载 发布:2025-09-15 03:59:44 浏览:359
国语脚本 发布:2025-09-15 03:56:03 浏览:783
vivo文件夹字体 发布:2025-09-15 03:35:45 浏览:980
解压文件发送到u盘可以吗 发布:2025-09-15 03:00:08 浏览:253
手机app反编译教程 发布:2025-09-15 02:51:06 浏览:174
存储器连续写 发布:2025-09-15 02:46:49 浏览:733
我的世界服务器地址分享 发布:2025-09-15 02:46:48 浏览:966
电脑当时钟服务器 发布:2025-09-15 02:35:25 浏览:621