惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
L
LINUX DO - 最新话题
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Forbes - Security
Forbes - Security
博客园 - 司徒正美
Hugging Face - Blog
Hugging Face - Blog
W
WeLiveSecurity
Jina AI
Jina AI
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
N
News and Events Feed by Topic
V
V2EX
Stack Overflow Blog
Stack Overflow Blog
Engineering at Meta
Engineering at Meta
PCI Perspectives
PCI Perspectives
Martin Fowler
Martin Fowler
T
The Exploit Database - CXSecurity.com
F
Full Disclosure
WordPress大学
WordPress大学
S
Security Affairs
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
S
SegmentFault 最新的问题
P
Privacy International News Feed
IT之家
IT之家
M
MIT News - Artificial intelligence
G
GRAHAM CLULEY
Hacker News: Ask HN
Hacker News: Ask HN
D
DataBreaches.Net
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google Online Security Blog
Google Online Security Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
C
Check Point Blog
美团技术团队
Security Latest
Security Latest
Cyberwarzone
Cyberwarzone
N
News and Events Feed by Topic
MyScale Blog
MyScale Blog
H
Help Net Security
宝玉的分享
宝玉的分享
The Hacker News
The Hacker News
The Last Watchdog
The Last Watchdog
The Cloudflare Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
爱范儿
爱范儿
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
I
Intezer
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
AI
AI
I
InfoQ
N
News | PayPal Newsroom
TaoSecurity Blog
TaoSecurity Blog

博客园 - 软件心理学工程师

SPIFFE/SPIRE 的身份哲学与技术实现 后量子密码学(post-quantum cryptography):为什么重要以及如何使用 密钥管理碎碎念 SpringBoot集成resilience4j进行熔断和一个响应式编程的问题 凤凰项目&DevOps实践指南 OAuth2和OpenID API横向越权问题的分析和解决 初识RAG 基于AWS的密钥管理系统 Linux透明大页(Transparent Huge Pages)对ES性能对影响 《java8 in action》读书笔记 ES索引的一些长度限制 初识redis Elasticsearch慢查询故障诊断 Elasticsearch搜索调优 elasticsearch基础知识杂记 elasticsearch.yml 常用参数说明 linux log rotate elasticsearch local debug环境搭建 CAP碎碎念 彻底删除kafka topic步骤
加密算法的使用场景
软件心理学工程师 · 2021-10-03 · via 博客园 - 软件心理学工程师

最近一年多,公司在大力提高服务的安全性,我也参与了公司密钥管理系统的建设,做了较多密钥创建/删除/轮换/销毁/安全存储/安全传输/审计方面的工作,不过这篇文章不谈密钥管理,而是总结不同场景下如何选择足够安全的加密算法和密钥。

按业务场景划分主要有两种:落盘加密(encryption of data at rest)和传输加密(encryption of data in transit)。

落盘加密主要采用AES-GCM-256:

  • key长度如果不能达到256,至少也要采用128bit
  • mode推荐采用GCM,如果不支持GCM可以采用GCM-SIV/CCM/EAX/CBC,ECB模式不够安全不建议使用;
  • IV必须是96bits长度, 对于落盘加密场景使用random IV,key使用过232次之后要换个新值;
  • AAD(Additional AUthenticated Data)可加可不加,AAD的值要是不敏感的。

不建议使用DES,3DES,RC4(Rivest Cipher 4)和Camellia ciphers等加密算法。

传输加密可以分为几个部分:

1. 传输层加密:主要采用TLS1.2以上,TLS的加密算法是要AES-GCM-256,并且IV要是随机的。

2. 加密hash算法(Cryptographic Hashing): 主要用于数字签名,公钥加密,完整性验证,消息身份验证,密钥协商协议等场景。一般采用SHA-256,也推荐SHA-384/SHA-512。不能使用SHA-1,不安全。不推荐产线使用SHA3-256/SHA3-384/SHA3-512,性能比较差,可以在research项目中尝试。

3. 消息身份验证: Message Authentication Code(MAC) 常用于真实性和完整性校验,推荐采用HMAC Hash方法为SHA-256;也可以采用KMAC:Hash方法是SHA3, CMAC:Hash方法是AES-CBC。

4. 数字签名: 数字签名常用于对某些信息进行认证,一般用非对称密钥,推荐使用:

  • RSA: RSA key长度不小于2048bits,如果预期key会用一年以上,则长度不小于4096bits。Padding模式推荐PSS和OAEP
  • ECDSA: 如果是用一个长期不变的加密key推荐用secp384r1模型,如果是用于TLS推荐用secp256r1,不能使用Brainpool curves  

除了密钥使用,也要考虑密钥的协商和传输算法。通常采用非对称加密算法协商密钥,包括RSA,ECDH(Elliptic Curve Diffie–Hellman)等算法。

  • RSA常用于密钥传输和数字签名。
  • ECDH用于密钥协商, 如果不能采用ECDH,也可以采用DH算法。

另外,password的存储对安全性要求更高,通常并不存储password的密文而是直接采用Hash算法,存储hash值,杜绝password明文泄漏的可能:

  • 算法采用PBKDF2 with HMAC-SHA-256
  • PBKDF2的迭代至少100,050次数
  • 盐值(Salt)至少256bits