您好!欢迎来到爱源码

爱源码

热门搜索: 抖音快手短视频下载   

HTTPS解释 《免费源码》

  • 时间:2022-10-25 23:42 编辑: 来源: 阅读:311
  • 扫一扫,手机访问
摘要:HTTPS解释 《免费源码》
人们将使用网络交易来解决一些重要的事情。 如果没有强有力的安全保障,人们无法安心地进行网上购物或使用银行业务。 如果不能严格限制访问权限,公司就不能将重要文档放在Web服务器上。 网络需要一种安全形式的HTTP 目前,有一些轻量级方法提供认证(基本认证和抽象认证)和消息完整性检查(抽象qop="auth-int ")。 对于许多网络交易来说,这些方法很容易使用,但对于大规模购物、银行业务或访问机密数据来说,它们不够强大。 这些比较重要的交易需要结合HTTP和数字加密技术来保证安全。 安全版本的HTTP应该高效、可移植、易于管理,既能适应不断变化的形势,又能满足社会和政府的要求。 我们需要一种能够提供以下功能的HTTP安全技术 服务器的认证(客户端知道他们正在与真实的服务器而不是虚假的服务器对话) 客户端认证(服务器知道他们正在与真实的客户端而不是虚假的客户端进行对话) 完整性(客户端和服务器的数据不会被修改) 加密(客户端和服务器端的对话是私密的,所以不用担心被窃听) 效率(对于低端客户端和服务器来说运行速度足够快的算法) 普遍性(基本上所有的客户端和服务器都支持这些协议) 管理可扩展性(任何地方的任何人都可以立即安全地进行通信) 适应性(可以支持目前最知名的安全方法) 社会可行性(满足社会的政治和文化需求) 数字加密术语在介绍这种数字加密技术的细节时,我们将讨论以下内容 Key:更改密码行为的数字参数。 对称密钥加密系统:使用相同密钥进行编码/解码的算法。 非对称密钥加密系统:使用不同密钥进行编码/解码的算法 公钥加密系统:能使数百万台计算机方便地发送机密信息的系统。 数字签名:用于验证消息未被伪造或篡改的校验和。 数字证书:由可信组织验证并颁发的身份信息。 密码学是基于一种叫做密码的秘密代码。 密码是一套编码方案——一种特殊的消息编码方法和以后要用的相应解码方法的组合。 加密的原始消息通常称为明文或明文。 密码使用后的编码信息通常称为密文。 数千年来,密码一直用于生成机密信息。 传说中,朱利叶斯·凯撒(Julius Caesar)使用了一种三字符循环移位密码,在这种密码中,一条消息中的每个字符都被字母表中三个位置之后的字符替换。 在现代字母表中,“A”应该被“D”代替,“B”应该被“E”代替,以此类推。 随着关键技术的进步,人们开始制造少量的机器,这些机器可以使用复杂得多的密码来快速准确地编码和解码信息。 这些密码机不仅可以做一些简单的旋转,还可以替换字符,改变字符的顺序,将消息分片,增加了破解密码的难度。 往往在现实中,无论是编码算法还是编码机器都有可能落入敌手,所以大多数机器的拨号盘数量很少,可以设置成大量不同的值来改变密码的工作方式。 即使机器被盗,没有正确的拨号设置(键值),解码器也无法工作。 这些密码参数称为密钥。 只有在密码机中输入正确的密钥,解密过程才能正确进行。 密钥会让一台密码机看起来像几台虚拟密码机,每台密码机都有不同的密钥值,所以它的行为也会不一样。 给定明文消息P、编码函数E和数字编码密钥E,可以生成编码密文C。 通过解码函数D和解码密钥D,可以将密文C解码成原始明文p。 当然,编码/解码函数是彼此的反函数,解码P的代码将返回到原始消息P。 对称密钥加密技术许多数字加密算法被称为对称密钥加密技术,因为它们在编码和解码时使用相同的密钥值(e=d)。 我们把它们统称为k调。 流行的对称密钥加密算法包括DES、Triple-DES、RC2和RC4。 保持密钥的秘密状态很重要。 在很多情况下,编码/解码算法是众所周知的,所以密钥是唯一保密的东西。 一个好的加密算法将迫使攻击者在破解代码之前尝试每一个可能的密钥。 使用暴力尝试所有键值称为枚举攻击。 缺点对称密钥加密技术的缺点之一是,发送方和接收方在相互对话之前必须拥有一个共享的密钥。 例如,爱丽丝(A)、鲍勃(B)和克里斯(C)都想与乔的五金店(J)交谈 a、B和C都应该在它们自己和j之间建立秘密密钥。 a可能需要密钥KAJ,b可能需要密钥KBJ,c可能需要密钥KCJ。 每个通信实体都需要自己的私钥。 如果有N个节点,每个节点将与所有剩余的N-1个节点进行安全对话,总共将有大约个N2秘密密钥:这将是一个管理噩梦。 公钥加密技术公钥加密技术不为每对主机使用单独的加密/解密密钥,而是使用两个非对称密钥:一个用于对主机消息进行编码,另一个用于对主机消息进行解码。 所有RSA公钥非对称加密系统面临的共同挑战是,确保即使有人掌握了以下所有线索,也无法计算出秘密私钥:公钥(公开的,所有人都可以访问);一小段分块密文(可以通过嗅探网络获得);一条消息及其相关的密文(您可以通过对任何一段文本运行加密器来获取它) RSA算法是满足所有这些条件的流行的公钥加密系统。它是在麻省理工学院发明的,由RSA数据安全公司商业化。 即使有了公钥,任何一段明文,用公钥对明文编码得到的相关密文,RSA算法本身,甚至RSA实现的源代码,破解代码找到对应私钥的难度仍然相当于一个非常大的数的素因子分解的难度。这种计算被认为是所有计算机科学中最困难的问题之一。 所以,如果你找到一种方法,可以快速把一个巨大的数字分解成质因数,你不仅可以入侵瑞士银行的账户系统,还可以获得图灵奖。 混合加密系统和会话密钥任何人只要知道自己的公钥就可以向公共服务器发送安全消息,所以非对称公钥加密系统非常容易使用。 两个节点不需要为了安全通信而交换私钥。 但是公钥加密算法的计算可能很慢。 事实上,它混合使用了对称和非对称策略。 例如,一种常见做法是通过方便的公钥加密技术在两个节点之间建立安全通信,然后使用该安全通道生成和发送临时随机对称密钥,并通过更快的对称加密技术加密其他数据。 (SSH和HTTPS都是这样)数字签名除了对消息进行加密/解密,还可以使用加密系统对消息进行签名,以表明消息是谁写的,证明消息没有被篡改。 这项技术被称为数字签名。 数字签名是附加在消息上的一种特殊的加密校验码。 数字签名通常使用非对称公钥技术生成。 因为只有所有者知道他的私钥,所以作者的私钥可以作为一种“指纹” RSA加密系统使用解码函数D作为签名函数,因为D已经使用私钥作为输入。 注意,解码函数只是一个函数,所以它可以用于任何输入。 同样,在RSA加密系统中,当D和E函数应该以任何顺序使用时,它们将相互抵消。 所以,E(D(stuff)) = stuff,就像D(E(stuff)) = stuff一样 注意,私钥和公钥是一对,都可以加密和解密,所以可以配对。 RSA原理,两个大素数(p,q)的乘积(n)很难逆向求解,所以pq是等价的,公钥和私钥也是等价的。 对私钥加密,对公钥解密,可以证明“私钥拥有者”的唯一身份,用于签名。 加密公钥,解密私钥,确保只有“私钥所有者”才能解密发送的信息。(如果用私钥加密传输数据,会被公钥持有者(可能有多个持有者)解密,从而失去对信息的保护。)数码证书互联网上的“身份证”——数码证书 数字证书(通常称为“certs”,有点像certs品牌造币厂)包含由可信组织担保的用户或公司的信息。 证书还包含一组信息,所有这些信息都是由官方证书颁发机构(CA)以数字方式颁发的。 此外,数字证书通常包括对象的公钥,以及对象和所用签名算法的描述信息。 任何人都可以创建数字证书,但不是每个人都能获得受尊重的颁发权,从而保证证书的信息,并用自己的私钥颁发证书。 的典型证书结构如图所示。 X.509 v3证书遗憾的是,数字证书没有单一的全球标准。 正如不是所有打印的身份证都在相同的位置包含相同的信息一样,数字证书也有许多稍微不同的形式。 然而,好消息是,目前使用的大多数证书都以标准格式——x . 509 v3——存储信息。 X.509 v3证书提供了一种标准的方法来标准化至少几个可解析字段中的证书信息。 不同类型的证书有不同的字段值,但大多数都遵循X.509 v3结构。 基于X.509证书的签名有几种,包括Web服务器证书、客户端邮件证书、软件代码签名证书和证书颁发机构证书。 使用证书来验证服务器。通过HTTPS建立安全的Web交易后,现代浏览器将自动获得连接服务器的数字证书。 如果服务器没有证书,安全连接将会失败。 浏览器将在收到证书时检查签名机构。 如果这个机构是一个非常权威的公共签名机构,浏览器已经可以知道它的公钥(浏览器会预装很多签名机构的证书)。 如果您对签名机构一无所知,浏览器就无法确定您是否可以信任该签名机构。它通常会向用户显示一个对话框,以查看用户是否可以信任签名发布者。 签名者可以是当地的IT部门或软件供应商。 HTTPSHTTPS最流行的HTTP安全形式 它由Netscape发起,所有主流浏览器和服务器都支持该协议。 使用HTTPS时,所有HTTP请求和响应数据在发送到网络之前都应该加密。 HTTPS在HTTP-SSL或其后继协议传输层安全性(TLS)下提供了一个传输层加密安全层 因为SSL和TLS非常相似,所以我们不严格使用术语SSL来表示SSL和TLS。 没有SSL/TLS的SSL/TLS HTTP通信是不加密的通信。 所有明文的信息传播带来三大风险。 窃听:第三方可以知道通信内容。 篡改:第三方可以修改通信内容。 伪装:第三方可以伪装成另一个人参与交流。 SSL/TLS协议就是为了解决这三种风险而设计的,希望达到:所有信息都是加密的,不能被第三方窃听。 有了验证机制,一旦被篡改,通信双方会立即发现。 配备身份证明,防止身份被冒名顶替。 SSL(安全套接字层)是安全套接字层,TLS(传输层安全)是传输层安全协议。它建立在SSL3.0协议规范中,是SSL3.0的后续版本。 直到SSL 3.0版才大规模部署使用。 与SSL相比,TLS版本变化显著,但支持的加密算法不同。 最新的协议是TLS1.2。 1.3版本仍处于草案阶段。 HTTPS方案现在,安全HTTP是可选的。 当客户机(如Web浏览器)被请求在Web资源上执行事务时,它将检查URL的方案:如果URL的方案是http,客户机将打开到服务器端口80的连接(默认情况下)并向它发送一个旧的HTTP命令。 如果URL方案是https,客户端会打开一个到服务器端口443的连接(默认),然后与服务器“握手”,以二进制格式与服务器交换少量SSL安全参数,并附加加密的HTTP命令。 SSL是一种二进制协议,与HTTP完全不同,它的流量在另一个端口上承载(SSL通常在端口443上承载) 如果SSL和HTTP流量都到达端口80,大多数Web服务器会将二进制SSL流量识别为错误的HTTP并关闭连接。 如果安全服务进一步集成到HTTP层中,就不需要使用多个目的端口,在实践中不会造成严重的问题。 在SSL开始加密通信之前,客户端和服务器必须首先建立连接并交换参数。这个过程叫做握手。 假设客户端叫Alice,服务端叫Bob,整个握手过程可以用下图说明。 握手阶段分为五步:Alice给出协议版本号,客户端生成的一个客户端随机数,客户端支持的加密方式。 Bob确认了双方使用的加密方法,并给出了一个数字证书和一个服务器随机数。 Alice确认数字证书有效,然后生成一个新的随机数(Premaster secret),用数字证书中的公钥加密这个随机数,并发送给Bob。 Bob使用他自己的私钥来获得Alice发送的随机数(即Premaster secret)。 按照约定的加密方法,Alice和Bob使用前三个随机数生成一个会话密钥,用于加密整个会话过程。 以上五个步骤,画成一张图,如下:握手阶段有三点需要注意:生成会话密钥需要三个随机数。 握手后的会话用会话密钥加密(对称加密)。服务器的公钥和私钥只用于加密和解密会话密钥(非对称加密),不使用其他任何东西。 服务器的公钥放在服务器的数字证书中。 DH算法的整个握手阶段都是不加密的(也无法加密),而且都是明文。 因此,如果有人窃听通信,他可以知道双方选择的加密方法和三个随机数中的两个。 整个通话的安全性只取决于第三个随机数(Premaster secret)能否被破解。 虽然理论上只要服务器的公钥足够长(比如2048位),就可以保证Premaster秘密不被破解。 但为了足够安全,可以考虑将抓手的算法从默认的RSA算法改为Diffie-Hellman算法(简称DH算法)。 使用DH算法后,不需要传输预主秘密,双方只需要交换自己的参数,就可以计算出随机数。 上图中,第三步和第四步由传递预主秘密改为传递DH算法需要的参数,然后双方分别计算预主秘密。 这提高了安全性。 服务器证书SSL支持双向身份验证,它将服务器证书传送回客户端,然后将客户端证书发送回服务器。 现在浏览的时候不经常用客户端证书。 大多数用户甚至没有自己的客户端证书。 服务器可以要求客户端证书,但这在实践中很少发生。 站点证书SSL本身的有效性并不要求用户检查Web服务器证书,但大多数现代浏览器会简单地检查证书的完整性,并为用户提供进一步彻底调查的手段。 Netscape公司提出的一种Web服务器证书有效性算法是大多数浏览器有效性验证技术的基础。 验证步骤如下:日期检测首先,浏览器检查证书的开始日期和结束日期,以确保证书仍然有效。 如果证书已过期,或者用户尚未激活,则证书有效性验证会失败,浏览器会显示一条错误消息。 签名颁发者可信度测试每个证书都由某个证书颁发机构(CA)颁发,该机构负责保证服务器的安全。 有不同级别的证书,每个证书需要不同级别的后台验证。 比如申请电商服务器证书,一般需要提供合法的经营证明。 任何人都可以生成证书,但有些ca是非常著名的组织,它们通过非常清晰的流程来验证证书申请人的身份及其业务行为的合法性。 因此,浏览器附带了一个可信的签名机构列表。 如果浏览器收到由未知(可能是恶意)机构颁发的证书,它通常会显示一条警告消息。 签名检测一旦确定签名授权可信,浏览器将使用签名机构的公钥进行签名,并与校验码进行比较,以检查证书的完整性。 站点检测为了防止服务器复制别人的证书或者屏蔽别人的流量,大多数浏览器都会尝试验证证书中的域名是否与正在对话的服务器的域名相匹配。 一个证书通常包含一个域名,但有些CA会创建少量证书,其中包含一组服务器的服务器名或通用域名列表。 如果主机名与证书中的标识符不匹配,面向用户的用户要么通知用户,要么终止连接,并显示一条错误消息,指出证书不正确。 HTTPS SSL是一种复杂的二进制协议。 除非你是密码专家,否则不要直接发送原始的SSL流量。 幸运的是,有了一些商业或开源库,编写SSL客户机和服务器并不困难。 OpenSSL是SSL和TLS最常见的开源实现。 OpenSSL项目是由少数志愿者共同开发的。目标是开发一个强大且功能齐全的商业工具集来实现SSL和TLS协议以及一个功能齐全的加密库。 从http://www.openssl.org获取OpenSSL的相关资料,并下载相应的软件。


  • 全部评论(0)
资讯详情页最新发布上方横幅
最新发布的资讯信息
【技术支持|常见问题】1556原创ng8文章搜索页面不齐(2024-05-01 14:43)
【技术支持|常见问题】1502企业站群-多域名跳转-多模板切换(2024-04-09 12:19)
【技术支持|常见问题】1126完美滑屏版视频只能显示10个(2024-03-29 13:37)
【技术支持|常见问题】响应式自适应代码(2024-03-24 14:23)
【技术支持|常见问题】1126完美滑屏版百度未授权使用地图api怎么办(2024-03-15 07:21)
【技术支持|常见问题】如何集成阿里通信短信接口(2024-02-19 21:48)
【技术支持|常见问题】算命网微信支付宝产品名称年份在哪修改?风水姻缘合婚配对_公司起名占卜八字算命算财运查吉凶源码(2024-01-07 12:27)
【域名/主机/服务器|】帝国CMS安装(2023-08-20 11:31)
【技术支持|常见问题】通过HTTPs测试Mozilla DNS {免费源码}(2022-11-04 10:37)
【技术支持|常见问题】别告诉我你没看过邰方这两则有思想的创意广告! (2022-11-04 10:37)

联系我们
Q Q:375457086
Q Q:526665408
电话:0755-84666665
微信:15999668636
联系客服
企业客服1 企业客服2 联系客服
86-755-84666665
手机版
手机版
扫一扫进手机版
返回顶部