如何安全使用加密套件?

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介:

如何安全使用加密套件?

对称加密

  1. 首选 Chacha20-Poly1305 和 AES-GCM 算法(AEAD类算法)
  2. 不支持 AES-GCM 或 Chacha20-Poly1305 的场景下使用 AES-CBC,避免 ECB、CTR、CFB、OBF 模式
  3. 避免64bit块加密算法,例如 blowfish、TEA 等
  4. 不要使用RC4
  5. 不要自行设计加密算法,除非你在密码学领域是整个行业公认的专家
  6. 不要多次循环加密,加密强度取决于加密算法、秘钥长度,以及正确的实现加密过程。循环加密对加密强度没有实际意义的帮助

原因

  1. Chacha20-Poly1305,AEAD类算法;绕开了目前所有已知的漏洞;面向移动互联网优化;ARM架构上性能更佳
  2. AES-GCM,AEAD类算法;TLS 1.3 draft主要的算法;工业标准;现代CPU有AES-GCM的硬件指令

对称秘钥长度

  1. 对称秘钥长度不能低于128 bit,也即16字节
  2. 长度超过256 bit的对称秘钥没有实际意义
  3. 对称加密、RSA、ECC三种不同类型的算法中,同样的秘钥长度安全性也不同,下面表格中列出来同样强度情况下,对应不同算法的秘钥长度
  4. 对称秘钥生成规则参考本文的 "随机数生成规范"
Symmetric Key Size
(bits)
RSA and DH Key Size
(bits)
Elliptic Curve Key Size
(bits)
80 160 1024
112 224 2048
128 256 3072
192 384 7680
256 521 15360

以上数据来自:https://www.globalsign.com/en/blog/elliptic-curve-cryptography/

AES-CBC实现注意事项

必须使用符合加密算法安全的随机数生成器,cryptographically strong random number generator (RNG):https://en.wikipedia.org/wiki/Cryptographically_secure_pseudorandom_number_generator

  1. iv必须随机生成,不能固定;生成规则参考本文的 "随机数生成规范"
  2. 避免用秘钥代替iv
  3. 避免用 stdlib 系列伪随机数

随机数生成规范

随机生成的iv或者nonce要采用/dev/urandom生成,或者采用基于/dev/urandom实现的随机数生成器

  • 避免采用 stdlib 系列伪随机数
  • 避免 havaged,prngs,egd 等
  • 避免 /dev/random ,会因为熵池噪声数据不足而阻塞几秒甚至是十几秒,严重影响性能,参考:https://zh.wikipedia.org/zh-cn//dev/random

成熟的Library推荐

  1. iOS 可以采用 Randomization Services Reference:https://developer.apple.com/library/ios/documentation/Security/Reference/RandomizationReference/
  2. Android & 服务端Java可以使用 SecureRandom:https://docs.oracle.com/javase/7/docs/api/java/security/SecureRandom.html
  3. 其他场景:推荐使用libsodium库,或NaCL库封装,或者直接读取 /dev/urandom

非对称加密

建议椭圆曲线,避免RSA

主要考虑前向安全性、椭圆曲线性能,以及现代计算机对RSA攻击能力逐年提升

HMAC算法

使用SHA2类的算法:SHA-256,SHA-384,SHA-512,SHA512/256等

避免 SHA-1、MD5、MD6

加密库选择

  1. iOS:建议使用原生的 Common Crypto,来自 Apple 的建议:https://developer.apple.com/cryptography/ ;避免使用 OpenSSL,原因是 OpenSSL 接口不友好、漏洞频发、版本升级时向下兼容性不好
  2. Android:建议使用 javax.crypto,https://docs.oracle.com/javase/7/docs/api/javax/crypto/spec/package-summary.html
  3. PC & Mac: 优先使用libsodium和NaCL库;对应libsodium不支持的加密算法,考虑统一底层加密库,同时桌面版对包大小不敏感,可以使用OpenSSL

参考资料

  1. Apple Cryptographic Libraries: https://developer.apple.com/cryptography/
  2. javax.crypto: https://docs.oracle.com/javase/7/docs/api/javax/crypto/spec/package-summary.html
  3. 现代密码学实践指南[2015年]:https://blog.helong.info/blog/2015/06/05/modern-crypto/
目录
相关文章
|
1月前
|
安全 网络安全 区块链
网络安全与信息安全:构建数字世界的防线在当今数字化时代,网络安全已成为维护个人隐私、企业机密和国家安全的重要屏障。随着网络攻击手段的不断升级,从社交工程到先进的持续性威胁(APT),我们必须采取更加严密的防护措施。本文将深入探讨网络安全漏洞的形成原因、加密技术的应用以及提高公众安全意识的重要性,旨在为读者提供一个全面的网络安全知识框架。
在这个数字信息日益膨胀的时代,网络安全问题成为了每一个网民不可忽视的重大议题。从个人信息泄露到企业数据被盗,再到国家安全受到威胁,网络安全漏洞如同隐藏在暗处的“黑洞”,时刻准备吞噬掉我们的信息安全。而加密技术作为守护网络安全的重要工具之一,其重要性不言而喻。同时,提高公众的安全意识,也是防范网络风险的关键所在。本文将从网络安全漏洞的定义及成因出发,解析当前主流的加密技术,并强调提升安全意识的必要性,为读者提供一份详尽的网络安全指南。
|
1月前
|
存储 安全 5G
|
1月前
|
安全 算法 网络安全
网络安全与信息安全:守护数字世界的坚盾在这个高度数字化的时代,网络安全和信息安全已成为全球关注的焦点。无论是个人隐私还是企业数据,都面临着前所未有的风险和挑战。本文将深入探讨网络安全漏洞、加密技术以及安全意识的重要性,旨在为读者提供实用的知识,帮助构建更加安全的网络环境。
【10月更文挑战第4天】 在数字化浪潮中,网络安全与信息安全成为不可忽视的议题。本文通过分析网络安全漏洞的类型与成因,探讨加密技术的原理与应用,并强调提升安全意识的必要性,为读者提供一套全面的网络安全知识框架。旨在帮助个人和企业更好地应对网络威胁,保护数字资产安全。
114 65
|
30天前
|
存储 安全 前端开发
端到端加密:确保数据传输安全的最佳实践
【10月更文挑战第12天】端到端加密(E2EE)是确保数据传输安全的重要手段,通过加密技术保障数据在传输过程中的隐私与完整性,防止第三方窃听和篡改。本文介绍E2EE的工作原理、核心优势及实施步骤,并探讨其在即时通讯、文件共享和金融服务等领域的应用,强调了选择加密协议、密钥管理、数据加密及安全接口设计的重要性,旨在帮助企业和开发者有效保护用户数据,满足数据保护法规要求。
|
2月前
|
人工智能 供应链 安全
网络安全与信息安全:构建数字世界的坚固防线在当今数字化时代,网络安全已成为维护个人隐私、企业机密和国家安全的重要基石。本文旨在探讨网络安全漏洞、加密技术及安全意识等关键领域,通过深入浅出的方式,引导读者理解网络安全的核心要素,并分享实用的防护策略,共同守护我们的数字世界。
随着互联网技术的飞速发展,网络安全威胁日益凸显,成为全球关注的焦点。本文聚焦网络安全的三大核心议题——网络安全漏洞、加密技术与安全意识,旨在揭示它们之间的相互关联与重要性。通过剖析真实案例,展现网络攻击的复杂性与破坏力;解析加密技术的原理与实践,强调其在保护数据安全中的关键作用;同时,倡导提升公众安全意识,构建多层次的网络安全防护体系。本文不仅为专业人士提供技术参考,也旨在提高普罗大众的网络安全认知,共同筑牢数字世界的安全防线。
141 10
|
1月前
|
安全 大数据 网络安全
网络安全与信息安全:守护数字世界的坚盾在数字化浪潮席卷全球的今天,网络安全已成为维系社会稳定、促进经济发展的重要基石。本文旨在深入探讨网络安全漏洞、加密技术及安全意识等核心议题,通过分享前沿知识与实用策略,助力构建更加安全可靠的网络环境。
【10月更文挑战第8天】 本文聚焦网络安全领域的关键要素,包括安全漏洞的识别与防御、加密技术的演进与应用,以及安全意识的培养与提升。通过对最新研究成果和实际案例的分析,文章揭示了网络安全威胁的多样性和复杂性,强调了综合防护策略的重要性。同时,倡导社会各界共同参与,形成全民网络安全意识,共筑数字空间的安全防线。
58 0
|
1月前
|
存储 安全 数据库
Uno Platform 安全数据存储秘籍大公开!加密、存储、读取全攻略,让你的数据固若金汤!
在 Uno Platform 中实现安全的数据存储需要选择合适的数据存储方式,并对存储的数据进行加密。通过加密数据,可以保护用户的敏感信息,防止数据泄露。同时,在读取和使用数据时,需要进行解密操作,确保数据的可用性。希望本文对你在 Uno Platform 中实现安全的数据存储有所帮助。
30 0
|
5天前
|
SQL 安全 算法
揭秘网络安全:漏洞、加密与安全意识的三重奏
【10月更文挑战第39天】在数字时代的交响乐中,网络安全扮演着不可或缺的角色。本文旨在通过浅显易懂的语言,揭示网络安全的三大核心要素:网络漏洞、加密技术以及安全意识。我们将探索这些元素如何相互交织,共同维护我们的数字安全。从初学者到资深专家,每个人都能从中获得宝贵的知识和启示。
|
5天前
|
存储 SQL 安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
【10月更文挑战第39天】在数字化时代,网络安全和信息安全成为了我们生活中不可或缺的一部分。本文将介绍网络安全漏洞、加密技术和安全意识等方面的内容,帮助读者更好地了解网络安全的重要性,并提供一些实用的技巧和方法来保护自己的信息安全。
15 2
|
7天前
|
安全 算法 网络安全
网络安全的盾牌与利剑:漏洞防御与加密技术的双刃舞
【10月更文挑战第37天】在数字世界的海洋里,网络安全是航船的锚,保护我们的数据不受风暴侵袭。本文将深入浅出地探讨网络安全的两大支柱——漏洞防御和加密技术。我们将从网络安全的基本概念出发,逐步深入到漏洞的类型、检测方法以及防御策略。同时,我们也将探索加密技术的原理和应用,如何通过这一技术保护信息的完整性和私密性。最后,我们将讨论提升个人及组织安全意识的重要性,以及如何构建一个安全的网络环境。这不仅是技术人员的战斗,每个人都是自己信息安全的第一道防线。让我们一起扬帆起航,探索网络安全的世界,学习如何成为自己数据的守护者。