信息安全 - 密钥管理 - II.公钥密码系统的密钥管理
由于公钥密码*与对称密码*是性质不同的两种密码*,所以它们的密钥产生和管理也完全不同。
对称密码*的密钥本质上是一种随机数或者随机序列,而公钥密码*本质上是一种单向陷门函数,建立在某一数学难题之上。不同公钥密码*所依据的数学难题不同,因此其密钥产生的具体要求也不同。
所以,公钥密码*的密钥管理和对称密码*的密钥管理有着本质的区别。
2.1、公钥的分配
前面讲述的对称密钥密码*中加密解密只有一个密钥,因此在密钥分配中必须保证其保密性、真实性和完整性。而公钥密码*有两个密钥,在分配的时候要确保私钥的秘密性、真实性和完整性,对于公钥,则保证其真实性和完整性,绝不允许攻击者替换或者篡改用户的公钥。
公钥的分配方式从简单到复杂有这样几种:
(1)公开发布:用户将自己的公钥发给所有其他用户或向某一团体广播。例如,将自己的公钥发布在BBS或邮件列表上。这种方法方便快捷,每个人都可以很方便地发布自己的公钥。但缺点也很明显,容易被人冒充或算改。所以这种方法一般为简单的个人应用,或在一些小型网络中使用。
(2)公钥动态目录表:建立一个公用的公钥动态目录表,表的建立和维护以及公钥的分布由某个公钥管理机构承担,每个用户都可靠的知道管理机构的公钥。但在这个方法中,每一用户想要与他人通信都要求助于公钥管理机构,因而可能形成瓶颈,而且公钥目录表也容易被篡改。所以这个方法只适合用于小型网络,如企业局域网中。
(3)数字证书:分配公钥的最安全有效的方法是采用数字证书,它由证书管理机构CA为用户建立,实际上是一个数据结构。其中的数据项有该用户的公钥、用户的身份和时间戳等。
2.2、数字证书
公钥需要保证完整性和真实性,像电话号码那样直接公开的方式并不能防止别人篡改、冒充、伪造。在前面讲到保证完整性和真实性的方法之一就是数字签名。假设信任一个实体X,所有的公钥都由实体X验证后签名存入某个数据库,实体X把自己的公钥公开。则每取出一个公钥时用户都验证实体X的签名是否完整,从而可以发现对公钥的篡改。进一步,如果将用户的标识符和用户的公钥联系在一起签名,则可以防止有人冒充或者伪造公钥。
由此可见,采用数字签名技术可以确保公钥的安全分配。这里经过实体X签名的一组信息的集合被称为证书,而可信的实体X被称为签证机构(certificate authority,CA)。
证书是一个数据结构,是一种由一个可信任的权威机构签署的信息集合。证书分很多种类型,例如X.509公钥证书、简单PKI证书、PGP证书、属性证书等。
这些证书具有各自不同的格式。有时候,一种类型的证书可以被定义为好几种不同的版本,每一种版本可能以好几种不同的方式来具体实现。例如,安全电子交易(SET)证书就是X.509版本3的公钥证书结合专门为SET交易特别扩展而成的。
证书、公钥证书、数字证书这几个概念用得比较混乱。在许多场合下,证书和公钥证书都是X.509公钥证书的同义词。数字证书这个词有时候专门来强调电子形式的证书。这个词在某些环境下也会引起混乱,因为各种不同类型的证书都是“数字”的。因此,除非这个词被专门解释说明,它不具有任何更详细的专有意义。
公钥证书包含持证主体的标识、公钥等相关信息,并经过签证机构施加数字签名保护。任何知道签证机构公钥的人都可以验证签名的真伪,从而确保公钥的真实性、确保公钥与持证主体之间的严格绑定。
日常生活中有许多使用证书的例子,例如汽车的驾驶证。驾驶证(公钥证书)确认了驾驶员的身份(用户),表示其开车的能力(公钥),驾驶证上有*局的印章(CA对证书的签名),任何人只要信任*局(CA),就可以信任驾驶证(公钥证书)。
有了公钥证书系统后,如果某个用户需要任何其他已向CA注册的用户的公钥,可以向持证人(或证书机构)直接索取其公钥证书,并用CA的公钥验证CA的签名,从而获得可信的公钥。
由于公钥证书不需要保密,可以在Internet.上分发,从而实现公钥的安全分配。有了签名,攻击者就无法伪造合法的公钥证书。因此,只要CA是可信的,公钥证书也是可信的。其中CA公钥的获取也是通过证书方式进行的,为此CA也为自已颁发公钥证书。
使用公钥证书的主要好处是,用户只要获取了CA的公钥,就可以安全获取其他用户的公钥。因此公钥证书为公钥的分发奠定了基础,成为公钥密码在大型网络系统中应用的关键技术。电子商务、电子政务等大型网络应用系统都采用了公钥证书技术。
2.3、 X.509证书
目前应用最广泛的证书格式是国际电信联盟(Internet Telecommunication Union,ITU)提出的X.509版本3格式。X.509是由ITU制定的数字证书标准。为了提供公用网络用户目录信息服务,ITU于1988年制定了X.500系列标准。其中X.500和X.509是安全认证系统的核心,X.500定义了一种区别命名规则,以命名树来确保用户名称的唯一性;X.509则为X.500用户名称提供了通信实体鉴别机制,并规定了实体鉴别过程中广泛适用的证书语法和数据接口,X.509称之为证书。
最初的X.509版本公布于1988年,版本3的建议稿1994年公布,在1995年获得批准。本质上,X.509证书由用户公钥与用户标识符组成,此外还包括版本号、证书序列号、CA标识符、签名算法标识、签发者名称、证书有效期等。
X.509版本3的证书结构如图7-6所示。
(1)版本号:识别用于该证书的X.509标准的版本,这可以影响证书中所能指定的信息。迄今为止,已定义的版本有三个。
(2)证书序列号:发放证书的实体有责任为证书指定序列号,以使其区别于该实体发放的其他证书。此信息用途很多。例如,如果某一证书被撤销,其序列号将放到证书撤销清单(CRL)中。
(3)签名算法标识符:用于识别CA签写证书时所用的算法。
(4)颁发者名称:签写证书实体的可识别名。它通常为一个CA。使用该证书意味着信任签写该证书的实体。
注意:有些情况下签写证书的实体还要签写自己的证书,如根或顶层CA会给自已签发证书。
(5)有效期:每个证书均只能在一个有限的时间段内有效。该有效期以起始日期和时间及终止日期和时间表示,可以短至几秒或长至一世纪。所选有效期取决于许多因素,如用于签写证书的私钥的使用频率及愿为证书支付的金钱等。它是在没有危及相关私钥的条件下,实体可以依赖公钥的预计时间。
(6)主体名称:证书可以识别其公钥的实体名。此名称使用X.500标准,因此在Internet中应是唯一的。此字段必须是非空的,除非在扩展项中使用了其他的名字形式。
(7)主体公钥信息:这是被命名实体的公钥,同时包括指定该密钥所属公钥密码系统的算法标识符及所有相关的密钥参数。
(8)颁发者唯一标识符(可选):证书颁发者唯一标识符,属于可选字段。该字段在实际中很少使用,并且不被RFC2459推荐使用。
(9)主体唯一标识符(可选):证书拥有者唯- .标识符,属于可选字段,用于不同的实体重用这一证书时标识证书的主体,该字段在实际中很少使用,并且不被RFC2459推荐使用。
(10)扩展项(可选):在颁布了X. 509版本2后,人们认为还有一些不足之处,于是提出一些扩展项附在版本3证书格式的后面。这些扩展项包括密钥和策略信息、主体和颁发者属性以及证书路径限制。
(11)颁发者的签名:覆盖了证书的所有其他字段,以及这些字段被CA私钥加密后的Hash值、签名算法标识等。
2.4、公钥基础设施
公钥证书、证书管理机构、证书管理系统.围绕证书服务的各种软硬件设备以及相应的法律基础共同组成公钥基础设施(publicekeyinfrastructure,PKI)。公钥基础设施提供一系列支持公钥密码应用(加密、解密、签名与验证)的基础服务。本质上,PKI是一种标准的公钥密码的密钥管理平台。
PKI采用证书进行公钥管理,通过第三方的可信任机构(CA),把用户的公钥和用户的其他标识信息捆绑在一.起,其中包括用户名和电子邮件地址等信息,以在Internet网上验证用户的身份。
因此,从大的方面来说,所有提供公钥加密和数字签名服务的系统,都可归结为PKI系统的一部分,PKI的主要目的是通过自动管理密钥和证书,为用户建立起一个安全的网络运行环境,使用户可以在多种应用环境下方便地使用加密和数字签名技术,从而保证网上数据的机密性.完整性、有效性。
一个 简单的PKI构成如图7-7所示。
简单的PKI系统包括证书机构CA.注册机构RA和相应的PKI存储库。CA用于签发并管理证书; RA可作为CA的一部分,也可以独立,其功能包括个人身份审核、CRL(证书撤销列表)管理、密钥产生和密钥备份等; PK1存储库包括LDAP目录服务器和普通数据库,用于对用户申请、证书、密钥.CRL和日志等信息进行存储和管理,并提供一定的查询功能。
一个有效的PKI系统必须是安全的和透明的,用户在获得加密和数字签名服务时,不需要详细地了解PKI的内部运作机制。在一个典型、完整和有效的PKI系统应该包含证书的创建和发布以及证书的撤销,一个可用的PKI产品还必须提供相应的密钥管理服务,包括密钥的备份、恢复和更新等。没有一个好的密钥管理系统,将极大影响一个PKI系统的规模、可伸缩性和在协同网络中的运行成本。
美国是最早推动PKI建设的国家,早在1996 年就成立了联邦PKI指导委员会。目前美国联邦*、州*、大型企业都建立了PKI。比较有代表性的主要有VeriSign 和Entrust。VeriSign 作为RSA的控股公司,借助RSA成熟的安全技术,提供了PKI产品,为用户之间的内部信息交互提供安全保障。另外,VeriSign也提供对外的CA服务,包括证书的发布和管理等功能,并且同一些大的生产商,如Microsoft、Netscape和JavaSoft等,保持了伙伴关系,以在Internet上提供代码签名服务。
1998年中国的电信行业也建立了国内第-一个行业CA.此后金融、工商、外贸、海关和一些省市也建立了自己的行业CA和地方CA。PKI 已经成为世界各国发展电子商务、电子政务、电子金融的基础设施。
2.4.1、PKI的逻辑结构
PKI作为一组在分布式计算系统中利用公钥技术和X.509证书所提供的安全服务,企业或组织可利用相关产品建立安全域,并在其中发布密钥和证书。在安全域内,PKI管理加密密钥和证书的发布,并提供诸如密钥管理(包括密钥更新,密钥恢复和密钥委托等)、证书管理(包括证书产生和撤销等)和策略管理等。
PKI产品也允许一个组织通过证书认证的方式来同其他安全域建立信任关系。这些服务和信任关系不能局限于独立的网络之内,而应建立在网络之间甚至Internet之上,为电子商务和网络通信提供安全保障,所以具有互操作性的结构化和标准化技术成为PKI的核心。
PKI在实际应用上是一套软硬件系统和安全策略的集合,提供了一整套安全机制,使用户在不知道对方身份或分布地很广的情况下,以证书为基础,通过一系列的信任关系进行通信和电子商务交易。
一个典型的PKI的逻辑结构如图7-8所示,其中包括PKI策略、软硬件系统、证书机构CA、注册机构RA、证书发布系统和PKI应用等。
- (1) PKI安全策略:建立和定义了一个组织信息安全方面的指导方针,同时也定义了密码系统使用的处理方法和原则。
- (2)证书机构CA:是PKI的信任基础,它管理公钥的整个生命周期,其作用包括发放证书.规定证书的有效期和通过发布证书撤销列表,确保必要时可以废除证书。
- (3)注册机构RA:提供用户和CA之间的一个接口,获取并认证用户的身份,向CA提出证书请求。它主要完成收集用户信息和确认用户身份的功能。这里的用户,是指将要向认证中心CA申请数字证书的客户,可以是个人,也可以是集团或团体、某*机构等。
- (4)证书发布系统:负责证书的发放,如可以通过用户自己,或是通过目录服务。目录服务器可以是一个组织中现存的,也可以是PKI方案中提供的。
- (5)数字证书:在PKI中,最重要的信息就是数字证书,可是说,PKI的所有的活动都是围绕数字证书进行的。
- (6) PKI应用: PKI的应用范围非常广“泛,并且在不断发展之中,可以说只要需要使用到公钥的地方就要使用到PKI,如安全电子邮件、Web安全、虚拟专用网等。
2.4.2、证书的存放
数字证书作为一种电子数据格式,可以直接从网上下载,也可以通过其他方式存放。
可以使用IC卡存放用户证书。即把用户的数字证书写到IC卡中,供用户随身携带。这样用户在所有能够读IC卡证书的电子商务终端上都可以享受安全电子商务服务。
用户证书也可以直接存放在磁盘或自己的终端上。用户将从CA申请的证书通过下载或复制到磁盘或自己的PC或智能终端上,当用户使用自己的终端享受电子商务服务时,直接从终端读人即可。
另外,CRL一般通过网上下载的方式存储在用户端。
2.4.3、证书的申请和撤销
证书的申请有两种方式,一是在线申请;另外一个就是离线申请。在线申请就是通过浏览器或其他应用系统通过在线的方式来申请证书,这种方式-.般用于申请普通用户证书或测试证书。离线方式一般通过人工的方式直接到证书机构的受理点去办理证书申请手续,通过审核后获取证书,这种方式-.般用于比较重要的场合,如服务器证书和商家证书等。
证书的撤销涉及CRL的管理。用户向特定的操作员(仅负责CRL的管理)发一份加密签名的邮件,申明自己希望撤销证书。操作员打开邮件,填写CRL注册表,并且进行数字签名,提交给CA,CA操作员验证注册机构操作员的数字签名,批准用户撤销证书,并且更新CRL,然后CA将不同格式的CRL输出给注册机构,公布到安全服务器上,这样其他人可以通过访问服务器得到CRL。
在一个PKI中,特别是CA中,信息的存储是一个非常核心的问题,它包括两个方面:一是CA服务器利用数据库来备份当前密钥和归档过期密钥,该数据库需高度安全和机密,其安全等级同CA本身相同;另外一个就是目录服务器,用于分发证书和CRL,一般采用LDAP目录服务器。
2.4.4、PKI密钥管理
密钥管理是PKI(主要指CA)中的-一个核心问题,主要指密钥对的安全管理,包括密钥产生、密钥备份、密钥恢复和密钥更新等。
1)密钥产生
密钥对的产生是证书申请过程中重要的一步,其中产生的私钥由用户保留,公钥和其他信息则交给CA中心进行签名,从而产生证书。根据证书类型和应用的不同,密钥对的产生也有不同的形式和方法。对普通证书和测试证书,一般由浏览器或固定的终端应用来产生,这样产生的密钥强度较小,不适合应用于比较重要的安全网络交易。而对于比较重要的证书,如商家证书和服务器证书等,密钥对一般由专用应用程序或CA中心直接产生,这样产生的密钥强度大,适合于重要的应用场合。
另外,根据密钥的应用不同,也可能会有不同的产生方式,如签名密钥可能在客户端或RA中心产生,而加密密钥则需要在CA中心直接产生。
2)密钥备份和恢复
在一个PKI系统中,维护密钥对的备份至关重要,如果没有这种措施,当密钥丢失后,将意味着加密数据的完全丢失,对于- -些重要数据,这将是灾难性的。所以,密钥的备份和恢复也是PKI密钥管理中的重要一环。使用PKI的企业和组织必须能够得到确认:即使密钥丢失,受密钥加密保护的重要信息也必须能够恢复,并且不能让--个独立的个人完全控制最重要的主密钥,否则将引起严重后果。
企业级的PKI产品至少应该支持用于加密的安全密钥的存储、备份和恢复。密钥一般用密码进行保护,而密码丢失则是管理员最常见的安全疏漏之一。所以,PKI产品应该能够备份密钥,即使密码丢失,它也能够让用户在一定条件下恢复该密钥,并设置新的密码。
另外,使用PKI的企业也应该考虑所使用密钥的生命周期,包括密钥和证书的有效时间,以及已撤销密钥和证书的维护时间等。
3)密钥更新
每一个由CA颁发的证书都会有有效期,密钥对生命周期的长短由签发证书的CA中心来确定,各CA系统的证书有效期限有所不同,一般大约为2~3年。
当私钥被泄露或证书的有效期快到时,应该更新私钥。这时可以废除证书,产生新的密钥对,或者申请新的证书。
2.4.5、证书的使用
在实际应用中,为了验证信息的数字签名,首先必须获取信息发送者的公钥证书,以及一些额外需要的证书(如CA证书等,用于验证发送者证书的有效性)。证书的获取可以有多种方式,如发送者发送签名信息时附加发送自己的证书,或以另外的单独信息发送证书,或可以通过访问证书发布的目录服务器来获得,或直接从证书相关的实体处获得。在一个PKI体系中,可以采取某种或某几种.上述方式获得证书。
在电子商务系统中,证书的持有者可以是个人用户、企事业单位、商家、银行等。无论是电子商务中的哪一方,在使用证书验证数据时,都遵循同样的验证流程。一个完整的验证过程有以下几步:
- (1)验证者将客户端发来的数据解密。
- (2)将解密后的数据分解成原始数据、签名数据和客户证书三部分。
- (3)用CA根证书(CA的公钥)验证客户证书的签名完整性。
- (4)检查客户证书是否有效(当前时间在证书结构中的所定义的有效期内)。
- (5)检查客户证书是否作废。
- (6)验证客户证书结构中的证书用途。
- (7)用客户的证书(客户的公钥)验证原始数据的签名完整性。
如果以上各项均验证通过,则接受该数据。
2.4.6、PKI应用
PKI技术的广泛应用能满足人们对网络交易安全保障的需求。当然,作为一种基础设施,PKI的应用范围非常广泛,并且在不断发展之中,下面给出几个应用实例。
1)虚拟专用网络(VPN)
VPN是一种架构在公用通信基础设施上的专用数据通信网络,利用网络层安全协议(尤其是IPSec)和建立在PKI, 上的加密与签名技术获得机密性保护。基于PKI技术的IPSec协议现在已经成为架构VPN的基础,可以为路由器之间、防火墙之间或路由器和防火墙之间提供经过加密和认证的通信。虽然IPSec协议的实现会复杂一些,但其安全性比其他协议都完善得多。
2)安全电子邮件
随着Internet的持续增长,商业机构或*机构都开始用电子邮件交换一些秘密的或是有商业价值的信息,这就引出了一些安全方面的问题,包括:消息和附件可以在不为通信双方所知的情况下被读取、篡改或截掉;发信人的身份无法确认。电子邮件的安全需求也是机密性.完整性、认证和不可否认性,而这些都可以利用PKI技术来获得。目前发展很快的安全电子邮件协议是S/ MIME (the secure multipurpose Internet mail extension),这是一个允许发送加密和有签名邮件的协议。该协议的实现需要依赖于PKI技术。
3) Web安全
为了透明地解决Web的安全问题,在两个实体进行通信之前,先要建立SSL连接,以此实现对应用层透明的安全通信。利用PKI技术,SSL协议允许在浏览器和服务器之间进行加密通信。此外服务器端和浏览器端通信时双方可以通过数字证书确认对方的身份。结合SSL协议和数字证书,PKI技术可以保证Web交易多方面的安全需求,使Web.上的交易和面对面的交易一样安全。
从目前的发展来说,PKI的范围非常广,而不仅仅局限于通常认为的CA机构,它还包括完整的安全策略和安全应用。因此,PKI的开发也从传统的身份认证到各种与应用相关的安全场合,如企业安全电子商务和*的安全电子政务等。
另外,PKI的开发也从大型的认证机构到与企业或*应用相关的中小型PKI系统发展,既保持了兼容性,又和特定的应用相关。
上一篇: 一篇详细介绍加密技术作用的文章!加密技术有什么作用?
下一篇: 密钥管理概述
推荐阅读
-
信息安全 - 密钥管理 - II.公钥密码系统的密钥管理
-
密钥管理的关键:确保信息安全
-
[现代密码学原理] - 密钥管理和其他公钥密码系统(学习笔记)
-
了解公钥和私钥 - 公钥加密算法又称非对称加密算法,使用不同的密码进行加密和解密,其中一个用于公钥,另一个用于私钥: 公钥和私钥成对使用 公钥称为公钥,私钥称为私钥。 用公钥加密的数据只能用相应的私钥解密 用私钥加密的数据只能用相应的公钥解密。 如果数据可以用公钥解密,则必须用相应的私钥加密。 如果数据可以用私钥解密,则必须用相应的公钥加密。 公钥和私钥是相对的,没有规定哪一个必须是公钥或私钥。 第二,实现数据的安全传输 要实现数据的安全传输,当然要对数据进行加密。 如果使用对称加密算法,加密和解密使用同一个密钥,除了自己要保存外,对方也必须知道密钥才能解密数据。如果把密钥传给对方,就有可能泄露密码。所以我们使用非对称算法,过程如下: 首先,接收方生成一对密钥,即私钥和公钥; 然后,接收方将公钥发送给发送方; 发送方用收到的公开密钥加密数据并发送给接收方; 接收方收到数据后使用自己的私钥解密。 由于在非对称算法中,用公钥加密的数据必须用相应的私钥解密,而私钥只有接收方知道,这就确保了数据传输的安全性。 第三,信息的数字签名 除了确保数据的安全传输,公钥系统的另一个用途是对数据进行签名。通常,"数字签名 "用于验证发送者的身份,帮助保护数据的完整性。 例如,发送者 A 想向所有人发送一些信息,他用自己的私人密钥对信息进行了加密,即签名。这样,每个收到数据的人都能用发送者的公开密钥验证数据,并确认数据是由 A 发送的(因为只有 A 用他的私人密钥签署了数据,所以无法验证发送者的身份)。(因为只有用 A 的私钥签名的信息才能用公钥解密)。使用数字签名可以确认两件事: 保证信息是由签名者本人签名发送的,签名者无法否认或难以否认。 保证信息从发出到收到都没有被以任何方式修改过。 之所以能确认这两点,是因为公钥的解密必然要有相应的私钥加密,而私钥只有签名者持有。 四、公钥算法的缺陷 在现实中,公钥机制也有其缺点,那就是效率很低,比常用的私钥算法(如 DES 和 AES)慢上一两个数量级都有可能。因此,它不适合对大量原始信息进行加密。为了兼顾安全性和效率,我们通常会将公钥算法和私钥算法结合起来使用: 首先,发送方使用对称算法加密原始信息。 接收方使用公钥机制生成一对密钥,一个是公钥,一个是私钥。 接收方将公钥发送给发送方。 发送方用公钥加密对称算法的密钥,然后发送给接收方。 接收方用私人密钥解密对称算法的密钥。 发送方将加密后的原始信息发送给接收方。 接收方使用对称算法的密钥解密信息。 摘要
-
密码学的密钥管理:如何保护密钥的安全性和保密性
-
用密封秘钥管理 Kubernetes 中的密钥安全
-
ssh工作流程及原理-SSH(Secure Shell Protocol,安全的壳程序协议),它可以通过数据包加密技术将等待传输的数据包加密后再传输到网络上。ssh协议本身提供两个服务器功能:一个是类似telnet的远程连接使用shell的服务器;另一个就是类似ftp服务的sftp-server,提供更安全的ftp服务。 连接加密技术简介 目前常见的网络数据包加密技术通常是通过“非对称密钥系统”来处理的。主要通过两把不一样的公钥与私钥来进行加密与解密的过程。 公钥(public key):提供给远程主机进行数据加密的行为,所有人都可获得你的公钥来将数据加密。 私钥(private key):远程主机使用你的公钥加密的数据,在本地端就能够使用私钥来进行解密。私钥只有自己拥有。 SSH工作过程:在整个通讯过程中,为实现SSH的安全连接,服务端与客户端要经历如下五个阶段: 版本号协商阶段 SSH目前包括SSH1和SSH2两个版本,双方通过版本协商确定使用的版本 密钥和算法协商阶段 SSH支持多种加密算法,双方根据本端和对端支持的算法,协商出最终使用的算法 认证阶段 SSH客户端向服务器端发起认证请求,服务器端对客户端进行认证 会话请求阶段 认证通过后,客户端向服务器端发送会话请求 交互会话阶段 会话请求通过后,服务器端和客户端进行信息的交互 一、版本协商阶段 服务器端打开端口22,等待客户端连接; 客户端向服务器端发起TCP初始连接请求,TCP连接建立后,服务器向客户端发送第一个报文,包括版本标志字符串,格式为“SSH-<主协议版本号>.<次协议版本号>.<软件版本号>”,协议版本号由主版本号和次版本号组成,软件版本号主要是为调试使用。 客户端收到报文后,解析该数据包,如果服务器的协议版本号比自己的低,且客户端能支持服务器端的低版本,就使用服务器端的低版本协议号,否则使用自己的协议版本号。 客户端回应服务器一个报文,包含了客户端决定使用的协议版本号。服务器比较客户端发来的版本号,决定是否能同客户端一起工作。如果协商成功,则进入密钥和算法协商阶段,否则服务器断开TCP连接。 说明:上述报文都是采用明文方式传输。 二、密钥和算法协商阶段 服务器端和客户端分别发送算法协商报文给对端,报文中包含自己支持的公钥算法列表、加密算法列表、MAC(Message Authentication Code,消息验证码)算法列表、压缩算法列表等等。 服务器端和客户端根据对端和本端支持的算法列表得出最终使用的算法。 服务器端和客户端利用DH交换(Diffie-Hellman Exchange)算法、主机密钥对等参数,生成会话密钥和会话ID。 由此,服务器端和客户端就取得了相同的会话密钥和会话ID。对于后续传输的数据,两端都会使用会话密钥进行加密和解密,保证了数据传送的安全。在认证阶段,两端会使用会话用于认证过程。 会话密钥的生成: 客户端需要使用适当的客户端程序来请求连接服务器,服务器将服务器的公钥发送给客户端。(服务器的公钥产生过程:服务器每次启动sshd服务时,该服务会主动去找/etc/ssh/ssh_host*文件,若系统刚装完,由于没有这些公钥文件,因此sshd会主动去计算出这些需要的公钥文件,同时也会计算出服务器自己所需要的私钥文件。) 服务器生成会话ID,并将会话ID发给客户端。 若客户端第一次连接到此服务器,则会将服务器的公钥数据记录到客户端的用户主目录内的~/.ssh/known_hosts。若是已经记录过该服务器的公钥数据,则客户端会去比对此次接收到的与之前的记录是否有差异。客户端生成会话密钥,并用服务器的公钥加密后,发送给服务器。 ****服务器用自己的私钥将收到的数据解密,获得会话密钥。 服务器和客户端都知道了会话密钥,以后的传输都将被会话密钥加密。 三、认证阶段 SSH提供两种认证方法: 基于口令的认证(password认证):客户端向服务器发出password认证请求,将用户名和密码加密后发送给服务器,服务器将该信息解密后得到用户名和密码的明文,与设备上保存的用户名和密码进行比较,并返回认证成功或失败消息。 基于密钥的认证(publickey认证):客户端产生一对公共密钥,将公钥保存到将要登录的服务器上的那个账号的家目录的.ssh/authorized_keys文件中。认证阶段:客户端首先将公钥传给服务器端。服务器端收到公钥后会与本地该账号家目录下的authorized_keys中的公钥进行对比,如果不相同,则认证失败;否则服务端生成一段随机字符串,并先后用客户端公钥和会话密钥对其加密,发送给客户端。客户端收到后将解密后的随机字符串用会话密钥发送给服务器。如果发回的字符串与服务器端之前生成的一样,则认证通过,否则,认证失败。 注:服务器端对客户端进行认证,如果认证失败,则向客户端发送认证失败消息,其中包含可以再次认证的方法列表。客户端从认证方法列表中选取一种认证方法再次进行认证,该过程反复进行。直到认证成功或者认证次数达到上限,服务器关闭连接为止。实例
-
AWS 分配给 IAM 用户--允许使用 MFA、自我管理自己的密码、访问密钥和 SSH 公钥权限
-
基于 NFC 的无线电池管理 BMS - ● 主动读取内部传感器:利用 NFC 技术,BMS 能够主动读取内部传感器的数据 [... 考虑车辆外使用案例中的空闲状态场景:NFC 技术可用于处理闲置状态下的电池组读取,例如在第二次生命转移期间进行存储。 主动诊断读取:在邻近系统中部署了 BMS 的情况下,使用 NFC 技术进行主动诊断读取。 (ii) 系统结构 系统架构如图所示,在建立安全通道之前,需要对设备进行身份验证。数据链路通信层由 NDEF 记录处理,而数据存储可以是离线的,也可以是数据库中的在线存储。活动和空闲状态的诊断读数取决于设备和数据方向,需要与外部 NFC 阅读器进行通信。软件架构分为三层,包括硬件抽象层(HAL)、中间层(中间件)和应用层。HAL 处理硬件驱动组件,中间件执行设备验证,而应用层则由开发人员根据安全漏洞和格式扩展*定义。 为确保安全,系统采用了一个安全模型,为 BMS 和主动诊断读取情况格式化应用数据。安全考虑因素包括设备相互验证、使用安全通道(加密和防篡改)以及确保电池组内读数的安全。 考虑到不同的 BMS 拓扑,包括集中式、调制式、分布式和分散式,系统需要满足设备相互验证和使用安全通道的要求。对于每种拓扑结构,都必须考虑将性能开销降至最低。电池是封闭的,对其进行物理攻击不可行或成本太高。外部攻击可能也很困难。基于对称或非对称加密技术的自动验证可用于保护电池组读数。安全协议在验证阶段和会话密钥确认阶段采用双密钥加密,以抵御攻击。中间件在数据格式验证、确认和处理中发挥关键作用,确保数据传输安全。 (iii) 唤醒模型设计