专利:2018115530668一种基于属性密文重加密的属性基云服务访问控制方法

申请公布号:

CN109818923A

摘要:

本发明提供了一种基于属性密文重加密的属性基云服务访问控制方法,包括:用户属性分配中心根据用户申请云服务的用户信息为用户分配属性并加密存储,得到用户属性密文;云服务属性分配中心根据云服务申请公开上传的各项信息为云服务分配属性并加密存储,得到云服务属性密文;通过代理服务器对用户属性密文和云服务属性密文重加密,并通过可信第三方的秘钥对重加密的密文进行解密;验证中心读取解密后的用户属性密文与云服务属性密文,并根据权限树理论为用户分配访问云服务的权限,本发明可以确保用户属性与访问云服务所需的属性得到有效的保护,防止攻击者攻击与内部人员的操作导致的用户与云服务的属性数据泄露。

http://epub.cnipa.gov.cn/

Spring Security 5中 PasswordEncoder的使用

在最新的 Spring Security 5发布版本中, 出于安全性的考虑调整了PasswordEncoder的实现与使用策略.

1.以前常用的实现 StandardPasswordEncoder, MessageDigestPasswordEncoder, StandardPasswordEncoder 不再推荐使用, 全加上了@Deprecated ,并有具体的说明

1

推荐使用BCryptPasswordEncoder, Pbkdf2PasswordEncoder, SCryptPasswordEncoder等

 

2.增加 PasswordEncoderFactories 类提供一个静态方法 createDelegatingPasswordEncoder()方法, 使用委托方式创建PasswordEncoder的实现

2

在此方法的实现中,实际上使用了 BCryptPasswordEncoder 作为默认的实现(我想, 这也是Spring Security团队推荐使用的吧).

 

3.关于加密salt(盐值)的变化. 在之前的使用中, 一般在使用时自己指定salt值,一个配置示例如下:

3

而在新的使用中, salt的实现 将由各具体实现类去处理(如使用随机生成的值), 以 BCryptPasswordEncoder的实现说明

4

如图,在进行加密时, 使用随机生成的salt值或由指定的 strength, random去生成.

比如原密码为 admin, 分别进行两次 bcrypt加密的结果如下

$2a$10$OEaUDkvTlWY/BpoAL7f.H.X7Cz9x3OR3pfWv5wasidP4B7izvyRy6
$2a$10$BBFV5eyg4YoBLThOzi1bDO0WYDBCzcLq3ISokgzxCB/CM0YTXHrha

里面也有 salt 的作用.

 

 

以上为使用 Spring Security 5中 PasswordEncoder的变化总结, 希望对你有用.

当然, 更安全的加密可以使用基于Spring Security提供的类去进行扩展自己的PasswordEncoder实现