An open API service indexing awesome lists of open source software.

https://github.com/zhhaogen/dynamicauth


https://github.com/zhhaogen/dynamicauth

Last synced: about 2 months ago
JSON representation

Awesome Lists containing this project

README

        

# 一种基于同态加密的动态密码授权
## 前提
传统密码登录、授权,使用的是固定密码,安全问题很大,容易被窃取。想支付宝、银行卡等的支付密码更是使用少得可伶数字作为密码,在公众场合存在被偷窥窃取的风险。生物指纹等不仅有唯一性,更是不可更改性,易被社会工程学方式盗取,一旦被窃取将面临巨大安全。
基于同态加密算法的安全授权,可以做到使用简单原始密令的情况下,大大增强安全性,并且每次授权都是随机不同的。
## 特性
* PIN被加密,即使服务器数据库被泄露,也可保证PIN安全
* 随机验证码,即使被窃取输入结果,也无法得知实际PIN
## 示例
servlet?spring boot?微服务?,请参见example
## 流程
```mermaid
sequenceDiagram
客户端->>服务端:1 .请求生成秘钥对
服务端->>服务端:generateKeyPair
服务端->>服务端:保存PublicKey
服务端->>客户端:返回KeyPair
客户端->>服务端:2 .设置PIN
服务端->>服务端:ePin=Enc(PIN,d),d为加密随机数
服务端->>服务端:保存ePin与d
客户端->>服务端:3 .设置运算函数f
服务端->>服务端:保存f
客户端->>服务端:4 .请求授权
服务端->>服务端:生成验证码code
服务端->>客户端:返回code、d
客户端->>客户端:计算b=Enc(PIN+f(code),d)
客户端->>服务端:5 .进行授权,发送a
服务端->>服务端:计算eCode=Enc(f(code),d)
服务端->>服务端:计算a=Add(ePin,eCode,d)
服务端->>服务端:比较a==b,即Enc(PIN+Code)==Enc(PIN)⊕Enc(Code)
服务端->>客户端:返回授权结果
```
注释:
Enc为加密函数,d为加密随机数
Add,⊕为自定义加法函数