• [问题求助] 音频加密可以怎么做
    音频加密的重要性以及如何开展
  • 数字签名技术笔记分享
    数字签名:不可否认性。 数据签名就是对消息摘要(hash)的加密。(发送方的私钥加密) 发送使用私钥对hash进行加密过程中得到的密文即为签名信息。 a将加密文件和数字签名发送给b,b通过a的公钥解密数字签名和加密文件(身份认证)后,得到的hash在和文件的hash进行对比看是否一致(数据完整性)一致则保证了数据的完整性,身份证和不可否认性。   小例题:小明=a,小红=b,眼镜男=c。 a通过hash加密后把文件发给c,同时告知c文件的hash,c收到后进行hash比较,如果不一致则文件被b篡改。 a通过私钥加密数字签名发送给c,c用a的公钥进行解密,确保身份认证正常,同时拿到文件hash。然后通过对称加密,加密文件,同时使用c的公钥加密对称密钥。文件和数字信封一起发给c,c收到后使用私钥解开数字信封,用里面的对称密钥打开加密文件,然后查看文件和数字签名的hash是否一致,一致则代表(数据完整性),反之,文件是被篡改的(不完整)。 公钥技术的规模应用难题: 如何把公钥分发出去。 分发后如何确保公钥的真实性。 公钥如何管理,假设我更换了公钥,对方如何得知,如何保证对方得到的公钥是最新的。 如果公钥得不到认证,如何实现不可否认性。 载体:证书 由权威第三方机构颁发的CA证书。 证书可以颁发给,计算机,用户,服务。 证书规格X.509v3版本 证书包含:使用者公钥,标识信息,有效期,颁发者的标识信息和数字签名。 数字证书类似身份证。 CA的核心功能是颁发和管理数字证书。 CA的作用:处理证书的申请,发放,更新,查询,撤销,吊销,归档。 证书是身份证,CA就是公安局。 个人/企业申请证书请求发给RA,由RA和用户确认,完毕后,由RA把申请提交发送至CA,CA处理完毕后把证书发给RA,再由RA传给个人/企业。 RA等同于CA的下属机构,用于对个人/企业申请证书信息的汇总/分发。 CA是证书和PKi体系的核心。 证书常见应用  总结: 数字信封: 通过非对称加密公钥加密对称密钥,发送到目标。 用于保证机密性。 数字签名: 通过非对称加密私钥加密摘要信息和文件,目标使用公钥解密摘要信息和文件,后进行对比。 用于保证身份认证真实性和完整性。 数字证书: 通过第三方权威机构(CA)对公钥进行公证,保证数据传输的不可否认性。 总结 证书是最终的解决方案。 
  • 公钥加密技术
    公钥加密技术: 非对称加密也叫公钥加密。 公钥(Public Key)和私钥(Private Key) 公钥和私钥通常是成对生成,互不相同,可以互相解密和加密。 根据一个密钥无法推算出另外一个密钥。 公钥公开,私钥保密(持有人才知道)。 私钥应该由密钥持有人妥善保管。 根据实现不同的功能,可以分为数据加密和数字签名。 数据加密-数字信封: 如果要使用公钥来进行数据加密,那么可以使用数字信封这种解决方法。 发送方采用接收方的公钥加密对称密钥,采用数字信封时,接收方需要使用自己的私钥才能打开数字信封得到对称密钥。 a把文件通过对称加密发送刚给b,然后再通过b的公钥对文件的对称密钥进行非对称加密,在发送给b,b收到这个使用非对称加密的对称密钥,就叫数字信封,b用私钥解开数字信封,拿到文件的对称密钥,然后再通过对称密钥解开a发送过来的文件。 但是如何保证或确认这个文件是来自a呢?文件是否完整。 两种加密算法的结合: 在实际应用中,通信双方通常会使用公钥密码学来交换密钥素材,双方最终计算出密钥,而用对称密码学来加密实际的数据,两者配合使用,保证了加密速度和安全性。 真实性验证:私钥加密,公钥解密 完整性技术: 信息摘要:单项散列函数,哈希(hash) 将任意长度的字符通过哈希(单项散列函数)计算出固定长度的字符串(hash),类似我们的指纹,DNA。 特点:不可逆(1+1=2, 2=?+?),雪崩效应(一点点更改,结果天翻地覆)。 除了类型不一样样外,签名长度也不一样(二进制)。 哈希算法严格上并不是一种加密算法,因为他没有密钥,而是一种保证完整性的算法。 hash如果用于保存数据,是如何计算的?会把当前输入的字符串,通过hash计算,然后和数据库进行对比,如果一样说明是正确的,反之是错误的。 
  • 信息安全基础笔记分享
    信息安全核心目标:CIA模型保护 核心目标 备注 机密性 指信息在传输,存储,使用的过程中,不会被泄露给非授权用户或实体。 完整性 指信息在传输,存储,使用的过程中,不会被非授权用户篡改或防止授权用户对信息进行不恰当的篡改。 可用性 指确保授权用户或实体对信息资源的正常使用不会被异常拒绝,允许其可靠而及时地访问信息资源。 DDoS就是破坏可用性,让你的服务瘫痪,无法正常提供服务。 PKi公钥基础架构 PKi就是公钥基础架构,结合了公钥技术,数字证书确保信息安全体系,这里又要牵扯到公钥加密技术,数字证书,RA,CA等共同组成。 PKi体系架构能实现机密性,完整性,身份验证,不可否认性。 机密性技术: 密钥是在加密或解密算法时需要输入(使用)的参数。 加密算法分为两类:对称加密算法和非对称加密算法。 加密算法有两种很重要的理念,移位和置换 加密技术分类:根据密钥的使用方法 对称加密:加密和解密使用相同的密钥。 特点:速度快,密文紧凑(加密后大小区别不大),密钥管理复杂(大量用户环境下,一人一把密钥,管理复杂),用于大量数据的传送。 输入明文,通过加密算法和密钥进行加密,对方收到后,使用密钥进行解密。 对称加密如何进行密钥传输?使用非对称加密算法对"密钥"进行加密传输,这个叫DH算法。 非对称加密:加密,解密使用不同的密钥(公钥(分发),私钥(保留)) 公加私解,私加工解。 特点:速度慢,密文不紧凑(加密后文件体积变大),密钥管理简单,一般不用于数据加密,通常只使用于数字签名。 首先生成一对密钥对(公钥和私钥),公钥向外分发,拿到公钥的人可以用来加密数据,只有有私钥的人才能解开。 如果能用公钥对文件进行解密,那么就说明文件来自私钥。(用于验证身份) 不要使用任何非公开的加密算法 1、不公开,很难保证开发者没有解密的办法。 2、正是因为公开,征集了多数解密破译高手的推敲,才能保证算法的安全性,可靠性。 
  • [知识分享] 关于加密通道规范,你真正用的是TLS,而非SSL
    本文分享自华为云社区《[SSL和TLS的联系及区别](https://bbs.huaweicloud.com/blogs/353669?utm_source=csdn&utm_medium=bbs-ex&utm_campaign=other&utm_content=content)》,作者: HZDX。 TLS/SSL是一种加密通道的规范,它利用对称加密、公私钥不对称加密及其密钥交换算法,CA系统进行加密且可信任的信息传输,在HTTP SSL中常用的对称加密算法有RC4,AES,3DES,Camellia等,SSL由从前的网景公司开发,TLS是SSL的标准化后的产物,事实上我们现在用的都是TLS,但因为历史上习惯了SSL这个称呼,平常还是以SSL为多。 SSL(Secure Socket Layer)是指安全套接层,简而言之,它是一项标准技术,可确保互联网连接安全,保护两个系统之间发送的任何敏感数据,防止网络犯罪分子读取和修改任何传输信息,包括个人资料。两个系统可能是指服务器和客户端(例如,浏览器和购物网站),或两个服务器之间(例如,含个人身份信息或工资单信息的应用程序)。 TLS (Transport Layer Security) 是指传输层安全,是更为安全的升级版 SSL。由于 SSL 这一术语更为常用,因此我们仍然将我们的安全证书称作 SSL。 # SSL协议 由网景公司所研发,用以保障在Internet上数据传输之安全,利用数据加密(Encryption)技术,可确保数据在网络上之传输过程中不会被截取。它已被广泛地用于Web浏览器与服务器之间的身份认证和加密数据传输。 SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。SSL协议可分为两层:SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。 SSL协议提供的主要服务 - 认证用户和服务器,确保数据发送到正确的客户机和服务器; - 加密数据以防止数据中途被窃取; - 维护数据的完整性,确保数据在传输过程中不被改变。 SSL协议的工作流程 服务器认证阶段: - 客户端向服务器发送一个开始信息“Hello”以便开始一个新的会话连接; - 服务器根据客户的信息确定是否需要生成新的主密钥,如需要则服务器在响应客户的“Hello”信息时将包含生成主密钥所需的信息; - 客服根据收到的服务器响应信息,产生一个主密钥,并用服务器的公开密钥加密后传给服务器; - 服务器恢复该主密钥,并返回给客户一个用主密钥认证的信息,以此让客户认证服务器。 用户认证阶段: - 在此之前,服务器已经通过了客户认证,这一阶段主要完成对客户的认证。经认证的服务器发送一个提问给客户,客户则返回(数字)签名后的提问和其公开密钥,从而向服务器提供认证。 # TLS 用于在两个通信应用程序之间提供保密性和数据完整性。该协议由两成组成:TLS记录协议(TLS Record)和TLS握手协议(TLS Handshake)。较低的层为TLS记录协议,位于某个可靠的传输协议(例如TCP)上面。 TLS记录协议提供的连接安全性具有的两个基本特性 - 私有:对称加密用以数据加密(DES、RC4等)。对称加密所产生的密钥对每个连接都是唯一的,且此密钥基于另一个协议(如握手协议)协商。记录协议也可以不加密使用。 - 可靠:信息传输包括使用密钥的MAC进行信息完整性检查。安全哈希功能(SHA、MD5等)用于MAC计算。记录协议在没有MAC的情况下也能操作,但一般只能用于这种模式,即有另一个协议正在使用记录协议传输协商安全参数。 TLS握手协议提供的连接安全具有的三个基本属性 TLS记录协议用于封装各种高层协议。作为这种封装协议之一的握手协议允许服务器与客户机在应用程序协议传输和接收其第一个数据字节前彼此之间互相认证,协商加密算法和加密密钥。 - 可以使用非对称的,或公共密钥的密码术来认证对等方的身份。该认证是可选的,但至少需要一个结点方; - 共享解密密钥的协商是安全的。对偷窃者来说协商加密是难以获得的。此外经过认证过的连接不能获得加密,即使是进入连接中间的攻击者也不能; - 协商是可靠的。没有经过通信方成员的检测,任何攻击者都不能修改通信协商。 # TLS的最大优势 TLS是独立于应用协议。高层协议可以透明地分布在TLS协议上面。然而,TLS标准并没有规定应用程序如何在TLS上增加安全性;它如何启动TLS握手协议以及如何解释交换的认证证书的决定权留给协议的设计者和实施者来判断。 # TLS的协议结构 TLS协议包括两个协议组——TLS记录协议和TLS握手协议。 TLS与SSL的差异 - 版本号:TLS记录格式与SSL记录格式相同,但版本号的值不同,TLS的版本1.0使用的版本号为SSLv3.1。 - 报文鉴别码:SSLv3.0和TLS的MAC算法及MAC计算的范围不同。TLS使用RFC-2104定义的HMAC算法。SSLv3.0使用了相似的算法,两者差别在于SSLv3.0中,填充字节与密钥之间采用的是连接运算,而HMAC算法采用的异或运算。但是两者的安全程度是相同的。 - 伪随机函数:TLS使用了称为PRF的伪随机函数来将密钥扩展成数据块,是更安全的方式。 - 报警代码:TLS支持几乎所有的SSLv3.0报警代码,而且TLS还补充定义了很多报警代码,如解密失败(decryption_failed)、记录溢出(record_overflow)、未知CA(unknown_ca)、拒绝访问(access_denied)等。 - 密文族和客户证书:SSLv3.0和TLS存在少量差别,即TLS不支持Fortezza密钥交换、加密算法和客户证书。 - certificate_verify和finished消息:SSLv3.0和TLS在用certificate_verify和finished消息计算MD5和SHA-1散列码时,计算的输入有少许差别,但安全性相当。 - 加密计算:TLS和SSLv3.0在计算主密值(master secret)时采用的方式不同。 - 填充:用户数据加密之前需要增加的填充字节。在SSL中,填充后的数据长度哟啊达到密文快长度的最小整数倍。而在TLS中,填充后的数据长度可以是密文块长度的任意整数倍(但填充的最大长度为255字节),这种方式可以防止基于对报文长度进行分析的攻击。 # TLS主要增强的内容 TLS的主要目标是使SSL更安全,并使协议的规范更精确和完善。TLS在SSL v3.0的基础上,提供了以下增加内容: - 更安全的MAC算法 - 更严密的警报 - “灰色区域”规范的更明确的定义 # TLS对于安全性的改进 - 对于消息认证使用密钥散列法:TLS使用“消息认证代码的密钥散列法”(HMAC),当记录在开放的网络(如因特网)上传送时,该代码确保记录不会被变更。SSLv3.0还提供键控消息认证,但HMAC比SSLv3.0使用(消息认证代码)MAC功能更安全。 - 增强的伪随机功能(PRF):PRF生成密钥数据。在TLS中,HMAC定义PRF。PRF使用两种散列算法保证其安全性。如果任一算法暴露了,只要第二种算法未暴露,则数据仍然是安全的。 - 改进的已完成消息验证:TLS和SSLv3.0都对两个端点提供已完成的消息,该消息认证交换的消息没有被变更。然而,TLS将此已完成消息基于PRF和HMAC值之上,这也比SSLv3.0更安全。 - 一致证书处理:与SSLv3.0不同,TLS试图指定必须在TLS之间实现交换的证书类型。 - 特定警报消息:TLS提供更多的特定和附加警报,以指示任一会话端点检测到的问题。TLS还对何时应该发送某些警报进行记录。
  • [技术干货] 假如让你来设计SSL/TLS协议[转载]
    前言说起网络通信协议,相信大家对 TCP 和 HTTP 都很熟悉,它们可以说是当今互联网通信的基石。但是,在网络安全方面,它们却是有着很大安全风险:窃听风险。第三方攻击者可以随意窃听通信内容,比如获取支付账号密码。冒充风险。第三方攻击者可以冒充他人身份与你通信,比如冒充银行网站以窃取银行账号密码。篡改风险。第三方攻击者可以随意修改通信内容,比如在响应上加入钓鱼网址。为此,SSL/TLS 协议应运而生。SSL/TLS 是建立在传输层之上、应用层之下的安全通信协议,它主要的设计意图就是消除上述几种安全风险,保证网络通信安全。我们熟知的 HTTPS 就是 HTTP + SSL/TLS 构建的,可以说 SSL/TLS 是当今互联网安全通信的基石。那么,现在假如让你来设计 SSL/TLS 协议,你会怎么设计呢?本文将从设计者的视角介绍如何一步步设计出一个简易版的 SSL/TLS 的过程,在文章的最后,再简单介绍 TLS 1.2 版本的工作机制,以此帮助大家对 SSL/TLS 协议的基本原理有一个更深入的理解。基于对称加密算法的数据加密窃听风险主要是因为通信双方在网络上明文传输数据,导致攻击者可以通过简单网络抓包就能获取到通信的内容。要解决窃听风险,就最好的方法就是对数据进行加密。也即客户端在把数据发送出去之前,先对数据进行加密;服务端收到密文之后,再进行解密还原数据。这样就能避免在网络上传播明文,从而可以防止第三方攻击者的窃听。提到加密算法,很多人首先会想到对称加密算法,它以简单和高效著称。对称加密指的是加密和解密都使用同一份密钥,常见的算法有 DES、AES 等。现在,我们试着使用对称加密算法来实现安全通信:使用对称密钥加密的前提是,通信双方都必须用同一份密钥来对数据进行加密。主要有线下和线上密钥交换两种方案可以达到该目的:线下密钥交换,也即通信双方线下约定好当面交换密钥(比如通过U盘作为媒介)。该方案可以保证密钥交换的安全性,但是很难推广使用。因为在绝大多数场景中,客户端和服务端都不可能碰面。线上密钥交换,也即通过网络来传输密钥。但在网络明文传输密钥同样也会被攻击者拦截,这样的加密也没有意义了。因此,单纯的对称加密并不能满足通信安全的要求,我们还要继续优化…基于非对称加密算法的数据加密非对称加密算法指的是加密和解密使用不同的密钥,这两个不同的密钥组成一个密钥对,也即公钥和私钥。公钥是公开的密钥,所有人都能获取到;私钥则是保密的。当我们使用公钥对数据进行加密后,只有对应的私钥才能完成解密。常见的非对称加密算法有 RSA、ECC 等。现在,我们试着使用非对称加密算法来实现安全通信:通过非对称加密算法,我们既能实现对数据的加密,又能解决密钥交换的问题,从而消除了窃听风险。但是,非对称加密算法最大的缺点,就是加解密速度很慢,相比于对称加密算法要慢1000多倍。因此,非对称加密算法通常只适用于对少量数据的加密。到目前为止,单纯地使用对称加密算法或非对称加密算法都无法满足要求,还需要继续优化…基于对称加密+非对称加密算法的数据加密既然对称加密算法加解密速度快,但存在密钥交换的问题;而非对称加密算法可以解决密钥交换问题,但加解密速度慢。那么我们可以把两种算法结合起来,也即通过对称加密算法进行数据加密,在交换对称密钥时,使用非对称加密算法来加密对称密钥,确保密钥在网络传输过程中不会被攻击者窃听。现在,我们试着使用对称加密+非对称加密算法来实现安全通信:使用对称加密+非对称加密算法的方案,我们消除了窃听风险,也不会存在加解密性能问题,但是还是无法消除冒充风险。考虑如下场景:攻击者把服务端的公钥拦截,并保存下来。攻击者伪造成服务端,把自己的公钥发送给客户端。攻击者拦截使用非法公钥加密后的对称密钥,解密后得到对称密钥明文,并保存下来攻击者使用服务端公钥重新加密对称密钥,伪造成客户端发送给服务端。这番操作后,攻击者就能在客户端和服务端都不知情的情况下,得到了对称密钥。在这种场景下,攻击者从被动攻击的窃听,转为主动攻击的冒充,让客户端和服务端都误以为一直在跟对方通信。因此,我们需要找到一种方法,让客户端能够确保自己收到的公钥,一定是真实的服务端发送过来的,也即能够认证“服务端”的真实身份…基于CA证书的身份认证数字证书概述引用百度百科的定义:数字证书是指在互联网通讯中标志通讯各方身份信息的一个数字认证,人们可以在网上用它来识别对方的身份。数字证书(Digital Certificate)就好比现实世界中的身份证,用于标识一个网络用户(人、公司、服务器等)的合法身份。就像身份证必须由公安局来颁发,可信的数字证书也必须由一个权威机构来颁发,该机构就是证书授权中心(Certificate Authority,CA),CA 颁发的数字证书我们通常称作 CA 证书。一个 CA 证书主要包含申请者的公钥、申请者的信息、签发机构 CA 的信息、有效时间、证书序列号等明文信息,同时也包含一个 CA 的数字签名,正是该签名的存在才证明了该证书的有效性。数字签名建立在非对称加密算法的基础上,CA 在颁发证书时,会先将证书的明文信息用指定的算法(比如 SHA256 算法)计算出一个数字摘要,再使用 CA 的私钥对摘要进行加密,形成签名。而证书的验证主要包含如下两部分:检查证书的明文信息是否有效,比如证书是否过期、域名是否一致等。用 CA 公布的公钥对证书签名进行解密,得到数字摘要1。再使用同样的算法对证书明文信息计算得出数字摘要2。对比数字摘要1和数字摘要2是否相等。颁发证书的机构并非只有一个,比如机构 A 可以用 CA 颁发的根证书去给机构 B 颁发二级证书;机构 B 又可以用二级证书去给机构 C 颁发三级证书,以此类推,也即所谓的证书链。使用CA证书认证通信双方的身份现在,我们加入 CA 证书来认证通信双方的身份:引入 CA 证书之后,服务端的公钥就放在它提供的证书之中,当客户端验证服务端证书通过后,也就说明其中的公钥确实是来自服务端的合法公钥。这样,后续的通信流程就可以正常地进行了。然而,如果对称密钥一直不变的话,攻击者还是很有可能暴力破解出对称密钥。因此,我们还需要最好能够实现每次连接的对称密钥都是不同的…使用随机数来生成对称密钥为了使每次连接的对称密钥都不同,我们可以引入随机数来生成对称密钥,保证它的随机性。但是,考虑到当前计算机生成的随机数都是伪随机数,为了进一步提升随机性,我们可以通过生成多个随机数来达到此目的。我们可以这么设计:客户端和服务端先各生成一个随机数(随机数1和随机数2),在 ClientHello 和 ServerHello 报文中完成交换。客户端在验证完服务端的身份后,再生成随机数3,通过服务端的公钥加密发给服务端。(此时,通信双方都拥有了 3 个一样随机数)客户端和服务端再根据这 3 个随机数,生成最终的对称密钥。这样通过 3 个随机数来生成的密钥,就能较好地保证了密钥的随机性,降低被攻击者破解的可能。虽然随机数1和随机数2是明文传输,但随机数3是密传输,也就能够保证攻击者很难破解到密钥。到目前为止,我们已经通过多种手段成功阻止了攻击者窃听客户端和服务端之间的通信内容。但是,如果攻击者并不以窃听通信内容为目的,而是单纯地想搞破坏。比如,攻击者拦截了 ClientHello 报文,把其中的随机数1改成了随机数4,这样就会导致客户端和服务端生成的密钥不一致。在此场景下,虽然连接已经建立起来了,但是客户端和服务端还是无法正常地通信:为此,我们需要一种机制,校验连接建立阶段(握手阶段)所有消息的正确性,防止建立错误的连接…校验握手消息的正确性我们可以利用数字摘要来校验所有握手消息的正确性,也即,在握手阶段的最后,通信双方都通过 Hash 算法(比如 SHA256)对自己收到的和发送的所有消息计算出数字摘要,然后使用前面协商好的对称密钥对该数字摘要进行加密,发送给对方。当收到对方发过来的数字摘要密文后,先用对称密钥对其进行解密,如果解密成功,说明密钥生成没问题;接着对比双方的数字摘要是否一致,如果一致,说明握手阶段的消息没有被篡改过,也即可以建立起正确的连接了。到现在,我们基本上已经消除了窃听风险(通过数据加密)、冒充风险(通过证书认证)和篡改风险(通过数字摘要)。但是,为了建立起安全通信通道,我们需要经历多次消息交互、加解密、身份认证等步骤,对性能有一定的损耗。因为经历过一次握手之后,密钥已经协商好,并且双方都保存了下来。下次连接建立时,完全可以沿用上次握手协商好的密钥,从而避免了重新协商密钥,提升了性能。我们需要一种重用会话的机制来提升协议的性能…重用会话来提升性能为了达到沿用上次协商好的密钥的目的,我们为每次连接都分配一个会话 ID。在初次创建连接时,由服务端生成,并通过 ServerHello 返回给客户端。在下一次创建连接时,客户端通过 ClientHello 把该会话 ID 发给服务端,表示希望重用该会话。服务端在收到该会话 ID 后,就可以发送 Finished 消息,表示同意了会话重用,也即可以沿用上次会话协商好的密钥进行安全通信了。到这里,我们已经完成了一个简易版的 SSL/TLS 协议的设计,真实的 SSL/TLS 协议当然没这么简单,但是里面的核心思想和基本原理都是类似的。只是 SSL/TLS 为了更好的安全性、扩展性和易用性等增加了一些机制,比如支持多种加密算法、使用 MAC 替代普通的数字摘要完成完整性校验。下面,我们将简单介绍真实的 SSL/TLS 协议的工作机制。SSL/TLS协议机制概述SSL 协议(Secure Sockets Layer)是 TLS(Transport Layer Security)协议的前身,它们的版本演进如下,当前最新的版本为 TLS 1.3 版本。本节,我们将以当前使用最广泛的 TLS 1.2 版本作为分析对象,介绍 SSL/TLS 的基本工作机制。SSL 1.0版本 -> SSL 2.0版本 -> SSL 3.0版本 -> TLS 1.0版本 -> TLS 1.1版本 -> TLS 1.2版本 -> TLS 1.3版本SSL/TLS协议总览SSL/TLS 协议位于网络协议栈中传输层和应用层之间,它内部又可以分为 2 层,总共 5 种子协议:Record协议最底层的 Record 协议负责对上层子协议的封装,提供安全通信的能力:私密连接。使用对称加密算法(比如 AES、RC4 等)来加密数据,而且在每次连接中,通信双方协商出来的加密密钥都是不同的,以此达到更好的安全性。另外,Record 协议也可以提供不加密的封装,比如在握手阶段的 Hello 报文。可靠连接。使用 MAC(Message Authentication Code,消息验证码,TLS 目前使用的 HMAC 也属于 MAC 的一种)为数据提供完整性校验。同样,在握手阶段也可以不使用该功能。Handshake 协议上层的 Handshake 协议用在握手阶段,为通信双方提供身份认证、加密算法和密钥协商的能力:身份认证。基于 CA 证书完成对端的身份认证,其中用到了非对称加密技术(比如 RSA、DES 等)。该功能是可选的,但通常的做法是至少进行单向认证。安全参数的协商。完成用于安全参数的协商(比如加密算法、哈希算法、密钥等),并且能够保证在协商过程中,攻击者无法获取密钥。可靠协商。确保在安全参数等协商过程中,攻击者无法对报文实施篡改。Handshake 协议包含了如下几种报文类型:ClientHello、SeverHello、Certificate、ServerKeyExchange、CertificateRequest、ServerHelloDone、ClientKeyExchange、CertificateVerify、ChangeCipherSpec、Finished。Change Cipher Spec协议Change Cipher Spec 协议也用在握手阶段,当通信的一方发出Change Cipher Spec 报文时,就表示密钥已经协商好,从下一条消息开始,使用该密钥来进行加密传输。Alert 协议Alert 协议只有在连接异常时才会用上,当前协议定义的 Alert 消息类型如下:close_notify: 表示发送方不会再发送任何消息,用于正常关闭连接,类似于TCP中的FIN报文 unexpected_message: 收到不在预期之内的消息 bad_record_mac: 收到的消息中MAC不正确,表示消息已经被篡改过 decryption_failed_RESERVED: 解密失败,用于TLS的早期版本 record_overflow: 消息长度溢出,密文长度不超过2^14+2048字节;压缩后的明文不超过2^14+1024字节 decompression_failure: 使用压缩功能时,解压失败 handshake_failure: 握手阶段无法协商出正确的安全参数 no_certificate_RESERVED: 为了兼容SSL 3.0版本,TLS不再使用 bad_certificate: 证书签名认证失败 unsupported_certificate: 收到不支持的证书类型 certificate_revoked: 收到被废弃的证书 certificate_expired: 收到过期的证书 certificate_unknown: 除上述4种情况外,其他证书异常场景 illegal_parameter: 握手阶段报文的参数非法,比如范围溢出等 unknown_ca: 不可信任的CA颁发的证书 access_denied: 证书校验通过,但发送方却拒绝继续握手 decode_error: 消息解码失败 decrypt_error: 握手阶段安全相关的步骤失败,比如签名校验失败、Finished消息校验失败等 export_restriction_RESERVED: 早期的TLS版本使用 protocol_version: 协议版本不支持 insufficient_security: 服务端要求的安全算法,客户端无法满足 internal_error: 协议内部错误 user_canceled: 用户非正常主动关闭连接 no_renegotiation: 拒绝重新握手 unsupported_extension: 不支持的扩展Application Data 协议Application Data 协议用在通信阶段,封装了应用层的数据,经由 Record 协议封装之后,通过 TCP 协议转发出去。SSL/TLS 协议的握手过程第一次握手客户端向服务端发送 ClientHello 报文发起连接建立,其中携带了如下内容:Version: 客户端支持的TLS协议版本Random: 客户端生成的随机数,随后用于生成 master secretSessionID: 会话 ID,如果不为空,表示客户端想重用该会话CipherSuites: 客户端支持的加密套件列表,在 SessionID 为空时必须携带CompressionMethods: 客户端支持的压缩算法列表Extensions: 扩展内容第二次握手服务端向客户端发送 ServerHello 报文,其中携带了如下内容:Version: 选定的 TLS 版本,选择通信双方都支持的最高版本Random: 服务端生成的随机数,随后用于生成 master secretSessionID: 会话 ID,如果为空,表示服务端开启新的会话,并且不希望被重用;如果与客户端带过来的 SessionID 一样,表示重用该会话;否则,开启一个新的会话,并且在未来可能会被重用CipherSuite: 选定的加密套件CompressionMethod: 选定的压缩算法Extensions: 扩展内容服务端向客户端发送 Certificate 报文,其中携带了服务端的证书,证书必须是 x.509 标准格式,包含服务端公钥、服务端域名、签发方信息、有效期等信息。可选,客户端需要通过证书来认证服务端身份时发送服务端向客户端发送 Server Key Exchange 报文,其中携带了客户端用于生成 premaster secret 的安全参数。可选,当 Certificate 报文中携带的信息无法支撑客户端生成 premaster secret 时发送服务端向客户端发送 CertificateRequest 报文,索求客户端证书,其中包含了期望的证书类型、签名算法和CA列表。可选,开启双向认证时发送服务端向客户端发送 ServerHelloDone 报文,表示当前服务端已经把所有与密钥交换相关的内容都发送完毕。第三次握手客户端向服务端发送 Certificate 报文,其中携带了客户端证书。可选,收到服务端的 CertificateRequest 报文时发送客户端向服务端发送 ClientKeyExchange 报文,其中包含了使用服务端公钥加密后的 premaster secret (随机数),随后用于生成master secret。客户端向服务端发送 CertificateVerify 报文,其中包含了对通信双方到目前为止所有握手报文的数字签名,用于证明自己拥有的私钥与之前发送的证书中的公钥相对应。可选,给服务端发送 Certificate 报文时发送客户端向服务端发送 ChangeCipherSpec 报文,表示从下条消息开始进行加密传输。客户端向服务端发送 Finished 报文,加密传输,其中包含了所有握手消息的数字摘要,用于防篡改。第四次握手服务端向客户端发送 ChangeCipherSpec 报文,表示从下条消息开始进行加密传输。服务端向客户端发送 Finished 报文,加密传输,其中包含了所有握手消息的数字摘要,用于防篡改。最后SSL/TLS 协议也并非绝对安全,它也有许多漏洞被黑客们不断地挖掘出来,当然,SSL/TLS 协议也在不断地完善。2018 年发布的 TLS 1.3 版本就在 TLS 1.2 版本的基础上做了许多增强。比如,在性能上,握手阶段从 2-RTT 缩减为 1-RTT,并支持 0-RTT 模式;在安全上,ServerHello 报文之后就开始加密传输、一些不安全的加密套件也不再支持(比如静态 RSA、Diffie-Hellman 等)。虽然 TLS 1.3 版本机制上改变了很多,但是基本原理还是一样的。因此,把 SSL/TLS 协议原理理解透了,后续不管版本再怎么演进,我们都能快速完成协议机制的学习。链接:https://bbs.huaweicloud.com/blogs/335979
  • [热门活动] 数据加密服务DEW,针对数据加密接口
    其中的数据加密接口,针对对称加密结果进行了封装,比如SM4对称加密的结果,里面可能包含keyid,算法等。请问,这个结果是由哪些数据构成?我需要解析获取有效的结果
  • [问题求助] 数据加密服务DEW-加密接口-对称算法加密
    【功能模块】DEW数据加密服务其中的数据加密接口,针对对称加密结果进行了封装,比如SM4对称加密。请问,这个结果是由哪些数据构成?(keyid?算法?)我只想获取有效的加密信息,如何对结果进行解析
  • [技术干货] 信息安全和加密学
    信息安全核心目标:CIA模型保护 • • 核心目标 备注 机密性 指信息在传输,存储,使用的过程中,不会被泄露给非授权用户或实体。 完整性 指信息在传输,存储,使用的过程中,不会被非授权用户篡改或防止授权用户对信息进行不恰当的篡改。 可用性 指确保授权用户或实体对信息资源的正常使用不会被异常拒绝,允许其可靠而及时地访问信息资源。 DDoS就是破坏可用性,让你的服务瘫痪,无法正常提供服务。    PKi公钥基础架构 • • PKi就是公钥基础架构,结合了公钥技术,数字证书确保信息安全体系,这里又要牵扯到公钥加密技术,数字证书,RA,CA等共同组成。 • PKi体系架构能实现机密性,完整性,身份验证,不可否认性。   机密性技术: • 密钥是在加密或解密算法时需要输入(使用)的参数。 • 加密算法分为两类:对称加密算法和非对称加密算法。 • 加密算法有两种很重要的理念,移位和置换 •   加密技术分类:根据密钥的使用方法 • 对称加密:加密和解密使用相同的密钥。 • 特点:速度快,密文紧凑(加密后大小区别不大),密钥管理复杂(大量用户环境下,一人一把密钥,管理复杂),用于大量数据的传送。 • 输入明文,通过加密算法和密钥进行加密,对方收到后,使用密钥进行解密。 • 对称加密如何进行密钥传输?使用非对称加密算法对"密钥"进行加密传输,这个叫DH算法。 •  •  •  • 非对称加密:加密,解密使用不同的密钥(公钥(分发),私钥(保留)) • 公加私解,私加工解。 • 特点:速度慢,密文不紧凑(加密后文件体积变大),密钥管理简单,一般不用于数据加密,通常只使用于数字签名。 • 首先生成一对密钥对(公钥和私钥),公钥向外分发,拿到公钥的人可以用来加密数据,只有有私钥的人才能解开。 • 如果能用公钥对文件进行解密,那么就说明文件来自私钥。(用于验证身份) •  •  •  •  •  • 不要使用任何非公开的加密算法 • 1、不公开,很难保证开发者没有解密的办法。 • 2、正是因为公开,征集了多数解密破译高手的推敲,才能保证算法的安全性,可靠性。   公钥加密技术: • • 非对称加密也叫公钥加密。 • 公钥(Public Key)和私钥(Private Key) • 公钥和私钥通常是成对生成,互不相同,可以互相解密和加密。 • 根据一个密钥无法推算出另外一个密钥。 • 公钥公开,私钥保密(持有人才知道)。 • 私钥应该由密钥持有人妥善保管。 • 根据实现不同的功能,可以分为数据加密和数字签名。    数据加密-数字信封: • 如果要使用公钥来进行数据加密,那么可以使用数字信封这种解决方法。 • 发送方采用接收方的公钥加密对称密钥,采用数字信封时,接收方需要使用自己的私钥才能打开数字信封得到对称密钥。 • • a把文件通过对称加密发送刚给b,然后再通过b的公钥对文件的对称密钥进行非对称加密,在发送给b,b收到这个使用非对称加密的对称密钥,就叫数字信封,b用私钥解开数字信封,拿到文件的对称密钥,然后再通过对称密钥解开a发送过来的文件。 • 但是如何保证或确认这个文件是来自a呢?文件是否完整。   两种加密算法的结合: • 在实际应用中,通信双方通常会使用公钥密码学来交换密钥素材,双方最终计算出密钥,而用对称密码学来加密实际的数据,两者配合使用,保证了加密速度和安全性。 •   真实性验证:私钥加密,公钥解密 •   完整性技术: • 信息摘要:单项散列函数,哈希(hash) • 将任意长度的字符通过哈希(单项散列函数)计算出固定长度的字符串(hash),类似我们的指纹,DNA。 • 特点:不可逆(1+1=2, 2=?+?),雪崩效应(一点点更改,结果天翻地覆)。 • • • 除了类型不一样样外,签名长度也不一样(二进制)。 • 哈希算法严格上并不是一种加密算法,因为他没有密钥,而是一种保证完整性的算法。 • hash如果用于保存数据,是如何计算的?会把当前输入的字符串,通过hash计算,然后和数据库进行对比,如果一样说明是正确的,反之是错误的。   数字签名:不可否认性。 • 数据签名就是对消息摘要(hash)的加密。(发送方的私钥加密) • • 发送使用私钥对hash进行加密过程中得到的密文即为签名信息。 • a将加密文件和数字签名发送给b,b通过a的公钥解密数字签名和加密文件(身份认证)后,得到的hash在和文件的hash进行对比看是否一致(数据完整性)一致则保证了数据的完整性,身份证和不可否认性。 •  •     小例题:奥巴马=a,金三胖=b,眼镜男=c。 • a通过hash加密后把文件发给c,同时告知c文件的hash,c收到后进行hash比较,如果不一致则文件被b篡改。 •  • a通过私钥加密数字签名发送给c,c用a的公钥进行解密,确保身份认证正常,同时拿到文件hash。然后通过对称加密,加密文件,同时使用c的公钥加密对称密钥。文件和数字信封一起发给c,c收到后使用私钥解开数字信封,用里面的对称密钥打开加密文件,然后查看文件和数字签名的hash是否一致,一致则代表(数据完整性),反之,文件是被篡改的(不完整)。 •    公钥技术的规模应用难题: • 如何把公钥分发出去。 • 分发后如何确保公钥的真实性。 • 公钥如何管理,假设我更换了公钥,对方如何得知,如何保证对方得到的公钥是最新的。 • 如果公钥得不到认证,如何实现不可否认性。 •  • 载体:证书 • 由权威第三方机构颁发的CA证书。 • 证书可以颁发给,计算机,用户,服务。 • 证书规格X.509v3版本 • 证书包含:使用者公钥,标识信息,有效期,颁发者的标识信息和数字签名。 • • 数字证书类似身份证。 •  • CA的核心功能是颁发和管理数字证书。 • CA的作用:处理证书的申请,发放,更新,查询,撤销,吊销,归档。 • 证书是身份证,CA就是公安局。 •  • 个人/企业申请证书请求发给RA,由RA和用户确认,完毕后,由RA把申请提交发送至CA,CA处理完毕后把证书发给RA,再由RA传给个人/企业。 • RA等同于CA的下属机构,用于对个人/企业申请证书信息的汇总/分发。 •  • CA是证书和PKi体系的核心。 •  • 证书常见应用 •  •  •  •   总结: • 数字信封: 通过非对称加密公钥加密对称密钥,发送到目标。 用于保证机密性。 数字签名: 通过非对称加密私钥加密摘要信息和文件,目标使用公钥解密摘要信息和文件,后进行对比。 用于保证身份认证真实性和完整性。 数字证书: 通过第三方权威机构(CA)对公钥进行公证,保证数据传输的不可否认性。 总结 证书是最终的解决方案。   密码学工具箱: •
  • [问题求助] 数据加密服务DEW绑定跟云主机的ssh加密到底是什么关系
    如题,数据加密的DEW里的非对称加密可以绑定云主机,那这个东西跟云主机的ssh加密是什么关系?
  • [技术干货] 同态加密在联邦计算中的应用
    原文链接:https://bbs.huaweicloud.com/blogs/314253作者:生也有涯 知也无涯 ***1 什么是同态加密同态加密(Homomorphic encryption)是一种加密形式,它允许人们对密文进行特定形式的代数运算得到仍然是加密的结果,将其解密所得到的结果与对明文进行同样的运算结果一样。换言之,这项技术令人们可以对加密的数据进行处理,得出正确的结果,而在整个处理过程中无需对数据进行解密。同态加密的实现效果如图所示。第一个构造出全同态加密(Fully Homomorphic Encryption)[Gen09]的Craig Gentry给出的定义如下:A way to delegate processing of your data, without giving away access to it.由上图可以看出,同态加密与一般的加密方案的不同之处在于,它关注的是数据处理安全。同态加密提供了一种对加密数据进行处理的功能。有点抽象?我们举个实际生活中的例子。有个叫Alice的用户买到了一大块金子,她想让工人把这块金子打造成一个项链。但是工人在打造的过程中有可能会偷金子啊,毕竟就是一克金子也值很多钱的说… 因此能不能有一种方法,让工人可以对金块进行加工(delegate processing of your data),但是不能得到任何金子(without giving away access to it)?当然有办法啦,Alice可以这么做:Alice将金子锁在一个密闭的盒子里面,这个盒子安装了一个手套。工人可以带着这个手套,对盒子内部的金子进行处理。但是盒子是锁着的,所以工人不仅拿不到金块,连处理过程中掉下的任何金子都拿不到。加工完成后。Alice拿回这个盒子,把锁打开,就得到了金子。这个盒子的样子大概是这样的:这里面的对应关系是:盒子:加密算法盒子上的锁:用户密钥将金块放在盒子里面并且用锁锁上:将数据用同态加密方案进行加密加工:应用同态特性,在无法取得数据的条件下直接对加密结果进行处理开锁:对结果进行解密,直接得到处理后的结果资料来源:https://www.zhihu.com/question/27645858/answer/375985062 同态加密在联邦计算中的应用随着区块链、隐私计算等新兴领域的发展及其对隐私保护的更高要求,同态加密也被应用到了更为丰富的领域。华为可信智能计算TICS在联邦数据分析中引入同态加密,以保证计算过程的安全。引入同态加密之前,TICS采用传统的对称和非对称加密相结合的算法,保证数据传输过程的安全。密文数据到聚合器(aggregator)节点进行多方计算时需要先解密,计算完成后再加密传输出去,实现了数据传输的安全,但是不能保证计算的安全,因此需要引入同态加密。引入同态加密前的计算过程:引入同态加密后的计算过程:在TICS中使用同态加密联盟管理页面,管理员开启“高级别隐私保护” 。 当开启之后,sql语句中如果存在Paillier同态加密算法支持的运算, 则该运算会采用同态密文计算,其他的计算过程不变。创建作业,执行对应sql作业。执行作业,可以看到TICS系统的DAG图中,展示了同态加密的全部过程。 输出结果与非同态场景一致。
  • [其他] opengauss数据加密存储
    openGauss提供加密函数gs_encrypt_aes128()、gs_encrypt()和解密函数gs_decrypt_aes128()、gs_decrypt()接口。通过加密函数,可以对需要输入到表内的某列数据进行加密后再存储到表格内。调用格式为:gs_encrypt_aes128(column, key),gs_encrypt(decryptstr,keystr,decrypttype)其中key为用户指定的初始口令,用于派生加密密钥。当客户需要对整张表进行加密处理时,则需要为每一列单独书写加密函数。当具有对应权限的用户需要查看具体的数据时,可通过解密函数接口对相应的属性列进行解密处理,调用格式为:gs_decrypt_aes128(column, key),gs_decrypt(decryptstr,keystr,decrypttype)
  • [技术干货] RSA
    RSA 加密算法是一种典型的非对称加密算法,它基于大数的因式分解数学难题,它也是应用最广泛的非对称加密算法。非对称加密是通过两个密钥(公钥-私钥)来实现对数据的加密和解密的。公钥用于加密,私钥用于解密。
  • [技术干货] 什么是对称加密与非对称加密
    对称密钥加密是指加密和解密使用同一个密钥的方式,这种方式存在的最大问题就是密钥发送问题,即如何安全地将密钥发给对方;而非对称加密是指使用一对非对称密钥,即公钥和私钥,公钥可以随意发布,但私钥只有自己知道。发送密文的一方使用对方的公钥进行加密处理,对方接收到加密信息后,使用自己的私钥进行解密。由于非对称加密的方式不需要发送用来解密的私钥,所以可以保证安全性;但是和对称加密比起来,非常的慢什么是HTTP2HTTP2 可以提高了网页的性能。
  • [热门活动] 【鲲鹏直播间】鲲鹏应用使能套件第五站——KAE加速引擎让数据加密更安全//提问帖
    直播时间:2021/8/16 19:30-20:30直播嘉宾:华为鲲鹏计算架构&设计专家/黄老师直播链接:https://bbs.huaweicloud.com/live/kunpeng_live/202108161930.html直播简介:本次直播将介绍鲲鹏BoostKit加速库全景,基于BoostKit加速库在WEB、大数据和分布式存储等典型应用场景性能优化实践。参与直播互动赢礼品登录直播平台并签到,您将获得2轮抽奖机会:第一轮:抽取5名幸运观众送出PVC手提包一个第二轮:抽取5名幸运观众送出定制雨伞一把有奖问答:直播过程中进行提问,小助手会在直播间推送3个问题,最先回答正确的3位用户将获得有线耳机一副。(同一实名认证用户不可重复获奖)回答格式:1A2B3C题目可选答;每个用户每题仅一次作答机会,多次回答的以第一次回答的为准;不加题号只发答案的回复不计入有效回答;答题活动于直播当日23:59截止,之后作答无效。问题1(单选题)以下哪个不是大数据的组件?A.ZookeeperB.StormC.KafkaD.Mariadb问题2(单选题)HDFS是一种()框架。A.分布式资源调度B.分布式存储C.分布式计算D.分布式数据库问题3(多选题)以下哪些为Docker容器技术的特点?A.独立的微服务形式B.满足大规模分布式应用快速上线的需求 C.高并发、高性能 D.轻量级、交付快 注意:请直播抽奖的获奖用户在直播页面填写收货信息;问题回答正确的获奖者会由版主私信获奖者提供姓名、收货地址以及手机号,3个工作日内未回复私信则视为放弃奖品;问答获奖用户需在华为云进行实名认证,请于获奖后3个工作日内完成实名认证,否则视为放弃奖励;同一身份信息只能获奖一次;多个账号参与活动的,只能获一次奖励。