1、等保2.0关于身份鉴别的规定

等保2.0标准在2019年5月正式发布,将于2019年12月开始实施。等保2.0标准中对身份鉴别做了详细要求,下面表格中列出了等保2.0对身份鉴别的要求,黑色字体表示是针对上一安全级别增强的要求。

在等级保护体系中,级别越高,对安全性要求越高。

等保2.0中主要在安全物理环境和安全计算环境中提到身份鉴别要求。安全物理环境中的身份鉴别主要指真实的人进入机房时要进行的身份认证,安全计算环境中的身份鉴别主要指用户登录计算机、其他计算设备或业务系统时要进行的身份认证。在等保3级中,要求必须采用双因子认证技术;在等保4级中,要求安全通信网络中通信前基于密码技术对通信的双方进行验证或认证,计算机或进程之间通讯需要进行身份认证。

身份鉴别技术是我们大多数人最熟悉的安全技术,我们每天登录电脑、手机时都要进行身份鉴别,然后才能进行各种操作。身份鉴别的目的是确认用户身份,是最基本的安全技术也是最重要的安全技术,因为其他安全技术(比如权限控制、安全审计等)都要依赖用户身份信息。如果身份信息不可信,安全就成了无本之木、无源之水,失去了根基。

另外,在等保2.0中提到身份标识必须具有唯一性,这也是所有身份管理系统的基本要求,本文重点讲解身份鉴别技术,关于身份标识唯一性、会话超时处理机制等不做详细探讨。

2、身份鉴别理论

身份鉴别的核心理论都是通过3个问题来识别确认身份:你知道什么,你拥有什么,你的唯一特征是什么。

2.1.你知道什么

你知道什么,就是根据你知道的信息来证明你的身份。这是一种历史悠久的身份鉴别技术,大家耳熟能详的“天王盖地虎,宝塔镇河妖”,就是依靠你知道的暗号来确认你的身份。当然,现在这句话已经众所周知,也就失去了身份认证的价值。当年我们地下党的很多活动就是靠这种方式确认自己人的身份,从而展开活动的。

你知道什么,核心在于你知道的信息一定是保密的,别人不知道或难以猜测的。

计算机系统中,基于这个理论实现的最常见的身份鉴别技术是基于用户名密码的身份认证,这也是现在绝大部分的系统使用的身份鉴别技术。

2.2. 你拥有什么

你拥有什么,就是根据你拥有的东西来证明你的身份。这也是一种历史悠久的身份鉴别技术,我们各种戏剧故事里经常都有携带信物找人的事情,像宝剑、血书或发簪等都是常用的信物,这些信物就用来证实对方的身份。当然有些信物因为没有明确的身份标识,导致对方死不认账的故事也有很多。历史上调度军队的虎符就是典型的信物,因为其设计严谨,是通过“你拥有什么”验证对方身份的经典案例。

你拥有什么,核心在于你拥有的东西一定是有特征的,可以被对方辨识并认可的东西。

计算机系统中,基于这个理论实现的最常见的身份鉴别技术是基于U盾、IC卡的身份认证,这是现在大部分银行系统使用的身份鉴别技术之一。

2.3. 你的唯一特征是什么

你的唯一特征是什么,就是根据你的唯一特征来证明你的身份。同样,这种技术也有悠久的历史,因为早期科技不发达,历史上大家认为的唯一特征可能实际并不是唯一特征。我们历史上常见的“滴血认亲”就是基于该理论进行身份鉴别的技术,现在科技已经证实“滴血认亲”其实误差非常大,不足以确认一个人的身份。

你的特征是什么,核心在于你具有唯一的生物特征,这个生物特征可以准确对应到你这个人。

计算机系统中,基于这个理论实现的最常见的身份鉴别技术是基于指纹识别、人脸识别的身份认证,这是大部分智能手机和很多门禁系统使用的身份鉴别技术。

3、常用身份鉴别技术

3.1.密码鉴别

这是靠“你知道什么”来验证身份的鉴别技术。

依靠密码来进行身份鉴别是最基础的鉴别技术,也是适用性最广的技术。现在虽然有了其他多种身份鉴别技术,在多因子认证方案里,基于密码鉴别身份也是其中必选的基本技术。等保2.0三级系统的身份认证要求:“应采用口令、密码技术、生物技术等两种或两种以上组合的鉴别技术对用户进行身份鉴别,且其中一种鉴别技术至少应使用密码技术来实现”。

密码的鉴别的突出优点是简单易懂,易于实施。

密码安全的问题在于它既如此简单,又困难重重。

密码鉴别技术面临的主要安全问题是暴力破解。暴力破解是指攻击者通过计算机系统组合所有可能性(例如登录时用到的账户名、密码),尝试破解用户的账户名、密码等敏感信息。暴力破解一般会使用密码字典表,用户的密码复杂度如果不是足够强,暴力破解成功的概率非常高。

暴力破解分为2种:在线破解和离线破解。在线破解指基于客户端接口使用不同的而秘密尝试登录认证,离线破解指盗取了数据库的账号密码信息,根据这些信息验证破解密码。离线破解不受原有系统的限制,破解成功率极高。

密码服务公司SplashData分析了2018年在互联网上泄漏的500多万个用户密码,最后统计出TOP 25的弱密码如下图:

这些密码看起来实在是太弱了,但是复杂的密码带来的问题是记不住密码,经常遗忘密码、重置密码也是很让人恼火的一件事。现在每个人都面对很多系统密码,如果每个密码都很复杂,真会让人崩溃,有些人索性就把密码直接记在本上或手机上,这样反而带来了更大的安全隐患。

为了保证密码鉴别技术的安全性,增大抵御暴力破解的能力,在设计时需要考虑下面的一些要求:

1. 增强密码复杂度。建议密码长度最小8位,使用大小写字母、特殊符号、数字组合,能极大的增大密码的破解难度。

2. 附加验证码校验。校验码一般是以图形显示的随机字符串,人眼可以识别,但是机器很难辨认,使用校验码可以避免恶意的在线破解密码。现在有些网站的校验码已经越做越复杂,不只是随机字符串,还可能是一个数学计算公式,或者图片内容识别等。这些基本原理都是一致的,即人可以识别出校验码,机器很难识别。

3. 多次登录失败锁死账号。多次登录失败,就很有可能是有人或机器在尝试破解密码恶意登录,这时需要有锁定账号的功能,即在一段时间内不允许再次登录,这可以大幅增加密码破解的时间。密码暴力破解技术主要依靠计算机的强大计算能力多次尝试验证密码,如果账号锁死不允许尝试登录,该技术就失去了价值。这个方法是一把双刃剑,还要注意有人恶意锁死别人账号的情况,所以有时候要结合IP地址和账号进行细粒度的锁死控制。

4. 上述方法针对在线破解有效,针对离线破解无效。要保证密码存储和验证的安全性,还必须做到:密码采用单向不可逆的哈希算法计算后存储;在对密码进行哈希计算的时候必须进行加盐处理,盐值必须随机生成;密码哈希的盐值必须存放在独立的数据库,避免和密码一起被“脱库”。

3.2. 动态口令牌

这是靠“你拥有什么”来验证身份的鉴别技术。

动态口令牌(OTP,One time password)是客户手持用来生成动态密码的终端,主要基于时间同步方式,一般每60秒变换一次动态口令,口令一次有效,它产生6位动态数字进行一次一密的方式认证。

每个动态口令牌都有一个唯一的密钥,该密钥同时存放在服务器端,每次认证时动态密码卡与服务器分别根据同样的密钥,同样的随机参数(时间、事件)和同样的算法计算了认证的动态密码,从而确保动态口令的一致性。因每次认证时的随机参数不同,所以每次产生的动态口令也不同。由于每次计算时参数的随机性保证了每次动态口令的不可预测性,从而保证了系统认证的安全性。

服务器验证动态口令时,跟这个动态口令牌没有任何物理联系,服务器和动态口令牌使用同样的算法,基于通用的原始秘钥和其他参数,各算各的,同一时间算出的数字都是一样的。计算过程中时间是一个很重要的参数,2者的时间必须要保持一致,否则就会因时间不同步导致动态口令失效。

对于时间不同步的令牌,可以通过增大偏移量的技术(前后10分钟)来进行兼容适配,确保其能够继续使用,降低对应用的影响。但对于时间误差较大(超过20分钟)的时间同步令牌,就无法继续使用了,必须返厂或送回服务器端另行处理。

由于动态口令牌使用非常便捷,被广泛应用在VPN、网上银行、电子政务、电子商务等领域。随着智能手机的普及,现在有些应用开始使用智能手机代替动态口令牌生成动态口令,这能显著降低成本,增强易用性,以后也会得到越来越广泛的应用。现在应用比较广泛比较知名的手机动态口令服务是Google提供的Google Authenticator服务,我们在后面章节会单独讲解。

3.3. 短信验证码

这是靠“你拥有什么”来验证身份的鉴别技术。

短信验证码会把密码以手机短信形式发送到用户的手机上,只有拥有这个手机的用户才能接受到信息,进行登录验证。

因为手机的流行,现在基本人手一机,短信验证码是现在互联网应用中最常见的鉴别技术,短信验证码的好处是一次一密,安全可靠,又不需要记忆密码,极大的方便了使用者。

短信验证码的主要问题:

1. 系统需要接入电信网络,一般通过电信运营商的短信网关接口。大多数工控系统因为无法接入互联网,无法使用短信验证码的鉴别技术。

2. 短信验证需要暴露用户的手机号码,这就存在泄漏用户隐私的风险。

3. 无法防御新型伪基站技术。采用“GSM劫持+短信嗅探”技术,可实时获取用户手机短信内容,进而利用各大知名银行、网站、移动支付APP存在的技术漏洞和缺陷,实现信息窃取、资金盗刷和网络诈骗等犯罪。

注意,此类伪基站方法主要利用了2G网络GSM网络的既有漏洞,“GSM劫持+短信嗅探”从技术上还没有办法防范,一旦中招,短信信息就会泄露无余。另外,犯罪者大多选择凌晨作案,且无需直接与受害者接触,因此大部分受害者一觉醒来只有手机里莫名其妙多出来的验证码:

以后随着2G网络逐渐关闭,4G、5G逐渐普及,如果手机开启了VoLTE载波聚合,就可以避免GSM劫持的问题。

但是,另一个问题接踵而来,那就是智能APP如果被恶意程序控制,也可能拿到短信验证码,现在很多APP都要求手机短信的读取功能,所以短信验证码用于身份鉴别仍然是有不小的安全风险。

3.4 IC卡

这是靠“你拥有什么”来验证身份的鉴别技术。

IC卡也称智能卡,将一个微电子芯片嵌入符合ISO 7816标准的卡基中,做成卡片形式。IC卡与读写器之间的通讯方式可以是接触式,也可以是非接触式。目前IC卡可以认为是不可复制的硬件,通过IC卡可以来确认用户身份。现在我们普遍使用的二代居民身份证就是一种IC卡。

IC卡内置的芯片中存有与用户身份相关的数据,智能卡由专门的厂商通过专门的设备生产,是不可复制的硬件。智能卡由合法用户随身携带,登录时必须使用专用读卡器读取智能卡的信息,验证用户的身份。

IC卡一般和密码一起形成双因子认证方案。IC卡在使用时需要配合专用的读卡器,所以推广起来有些麻烦,无论从易用性还是成本考虑,都不如基于USBKey的双因子认证方案。

IC卡认证技术目前在门禁系统中应用较多。

3.5 USB Key

这是靠“你拥有什么”来验证身份的鉴别技术。

USB Key是一种USB接口的硬件设备。它内置智能芯片,并有一定的存储空间,可以存储用户的数字证书信息,利用USB Key内置的算法实现对用户身份的认证。

USB Key是国内很多银行采用的客户端认证方案,用户的私钥在高度安全的USB Key内产生,并且终身不可导出到USB Key外部,交易签名也在USB Key内进行,所以安全强度非常高。

用户私钥保存在密码锁中,理论上使用任何方式都无法读取,因此保证了用户认证信息的安全性。USB Key产品最早是由加密锁厂商提出来的,原先的USB加密锁主要用于防止软件破解和复制,保护软件不被盗版。

现在几乎所有的计算机都支持USB接口,所以USB Key和密码结合的双因子认证方案是现在主流的身份鉴别方案。

3.6 指纹认证

这是靠“你的唯一特征是什么”来验证身份的鉴别技术。

指纹是指手指末端正面皮肤上的凸凹不平的纹路,这些纹路包含大量的信息。这些皮肤的纹路在图案、断点和交点上各不相同的,这些信息就是“指纹特征”,指纹特征具有唯一性和永久性,通过比较指纹特征,就可以验证一个人的真实身份。

指纹认证主要用于手机和某些笔记本电脑,在门禁系统中也得到广泛应用。在大多数业务系统中应用较少,主要原因如下:

1. 指纹识别需要专用的硬件,成本较高,不方便部署。

2. 指纹认证技术和其他生物认证技术比如人脸识别、虹膜认证一样,面临的主要问题是个人隐私问题。这些生物特征是比手机号码更重要的隐私内容,一旦泄露出去后果很严重

3. 指纹很容易被盗取、伪造,指纹识别技术目前没有足够的能力识别伪造的指纹。

4. 指纹不可改变,一旦指纹被盗取伪造,只能作废指纹识别功能,没法修改指纹。所以指纹识别技术在安全要求较高的场景并不是很合适的身份鉴别技术。

除了指纹认证,现在人脸识别技术也比较成熟,也是在手机、门禁系统中应用较多。人脸识别系统和指纹识别系统都不大容易在业务系统中推广,面临的问题也是类似的,不再详述。

4、身份鉴别技术对比分析

几种常见的身份鉴别技术的对比分析如下表:

在实际应用中,一般采取密码和其他鉴别技术一起组成双因子认证机制,达到安全性和经济性、易用性的平衡。

在双因子认证方案中,动态口令牌和USB Key两种方案易于部署,安全程度高,和密码机制配合起来,是目前应用最广的双因子认证方案。

5、业界成熟的身份鉴别方案

5.1 RADIUS

RADIUS,全称是Remote Authentication Dial In User Service,最早是Livingston公司研发的远程用户拨号认证系统,协议框架在RFC2865,RFC2866中定义,是目前应用最广泛的AAA(认证、授权、计费)协议。AAA是一种管理框架,可以用多种协议来实现。

RADIUS是现在事实上的网络接入标准,几乎所有的网络接入服务器厂商均实现了该协议。

RADIUS接入认证的整体框架如下图所示:

RADIUS协议承载于UDP之上,官方指定的端口号是1812和1813。RADIUS协议简单明确、扩展性好,因此得到了广泛应用。

基于RADIUS的认证方案主要有以下特点:

● 采用通用的客户端/服务器结构,NAS作为RADIUS的客户端,负责将用户认证信息传递给RADIUS服务器,RADIUS服务器负责接收用户的认证请求,对用户进行认证,返回结果给NAS处理。

● 采用共享密钥保证网络通信的安全性,客户端与RADIUS服务器之间的交互是通过共享密钥来进行相互认证的,密码不在网上传输,减少用户密码泄露的风险。

● 具有良好的可扩展性,RADIUS是一种可扩展的协议,所有的交互报文由多个不同长度的ALV(Attribute-Length-Value)三元组组成,新增加属性和属性值不会破坏到协议的原有实现。

● 协议认证机制灵活,RADIUS协议支持多种认证用户的方式,包括PAP、CHAP、UNIX login等多种认证方式。

5.2 Kerberos

Kerberos是MIT研发的一个集中身份认证框架,在RFC1510中定义。随着应用系统越来越多,单点登录成为一个刚性需求,Kerberos系统就是支持单点登录的一套安全认证架构,目前在Windows、Linux和UNIX系统上都有成熟的实现。

Kerberos的认证框架和流程如下:

该框架的主要部件:

1. Client:准备认证的客户端;

2. Authentication Service:认证服务器;

3. Ticket Granting Service:票据服务器,和认证服务器一起,被称为KDC(Key Distribution Center),即密码分发中心;

4. AD:Active Directory,用于存储用户身份、权限信息;

5. Server:用户准备登录的业务服务器。

基于该框架进行认证登录的主要过程如下:

1. 用户客户端向认证服务器提出认证申请;

2. 认证服务器返回票据授权Ticket Granting Ticket (TGT);

3. 用户客户端再向票据服务器提交刚才收到的票据授权TGT;

4. 票据服务器返回用户本次访问需要的票据Ticket;

5. 用户客户端使用该票据登录业务服务器;

6. 业务服务器验证该票据,准许登录或拒绝登录。

Kerberos框架的核心设计思想是引入了KDC,KDC名为密码分发中心,实际并不会把原始密码分发出去,而是使用客户端和服务端各自的密码分别加密认证信息,生成和分发票据,客户端和服务器也分别使用自己的密码解密拿到的认证过程中的票据信息,在整个过程中,原始密码不会在网络中传输,避免了密码传输泄密的风险,而且实现了客户端和服务器的双向认证。

认证成功后,后续就不需要每次访问都再去KDC认证了,票据的生命周期结束后票据将自动消耗。

基于Kerberos的认证方案主要有以下特点:

● 引入KDC,密码不在网上传输,只传输加密后的数据,保证认证过程安全性,减少密码泄露的风险;

● 预置客户端和服务器的密码,KDC作为中间人负责双方密码的管理和数据加密,客户端和服务端使用自己的密码解密后和对方通信,从而实现双向认证;

● 客户端认证成功后使用票据进行通信,不需要每次通信都进行认证,可以保证通信性能,减小认证服务器的压力;

● 支持多客户端、多服务器、多业务的集中认证,是单点登录的一个理想的认证方案。

5.3 LDAP

LDAP,全称是Lightweight Directory Access Protocol,即轻量级目录访问协议,基于X.500标准的轻量级目录访问协议。目录服务是一种特殊的数据库系统,专门针对读取,浏览和搜索操作进行了特定的优化,性能很好。目录服务一般不支持通用数据库的大量更新操作、事务、回滚等复杂策略。

LDAP目录服务是由目录数据库和一套访问协议组成的系统。

LDAP是开放的Internet标准,在业界得到广泛认可,市场上很多产品都支持LDAP,因此对于这类系统,不需单独定制,只需要通过LDAP做简单的配置就可以与服务器做认证交互,大大降低了重复开发和对接的成本。

目前知名的LDAP厂商如下:

LDAP也适合用于统一身份认证,用户的所有信息都存储在AD Server中。终端用户在需要使用公司内部服务的时候,都需要通过AD服务器的认证,认证框架示例图如下:

基于LDAP的认证方案主要有以下特点:

● 基于查询做了优化,性能很好,适用身份认证的场景;

● 采用树状结构存储,非常容易实现分布式部署,可以把一棵树的分支单独部署,易于扩展;

● 基于开放通用的协议标准,方案成熟,支持跨平台;

● 支持集中身份管理,集中认证。

5.4 Google Authenticator

Google Authenticator本身是一款手机APP软件,可以用于组成基于动态口令牌的身份认证方案。目前Google的多种服务和很多互联网应用都采用该方案进行增强身份认证。

Google Authenticator是一款基于TOTP算法(Time-Based One-Time Password,即基于时间的一次性密码)的两步验证软件令牌,此项服务所使用的算法已列于RFC 6238和RFC 4226中。

Google Authenticator会基于密钥和时间每30秒计算一个HMAC-SHA1的hash值,这个hash是160bit的,然后将这个hash值随机取连续的4个字节生成32位整数,最后将整数取31位,再取模得到一个的整数——这就是Google Authenticator显示的数字。

在服务器端验证的时候,使用同样的算法方法来计算出这个数字,然后比较计算出来的结果和用户输入的是否一致。

使用Google身份认证服务前,需要先在手机上下载Google Authenticator,这就是一个客户端的一次性口令牌软件,安装后图标如下:

服务器端可以使用Google公开的Jar包,或者按照公开的算法自己写代码实现。

这样,客户端使用用户名、密码,配合Google Authenticator的动态口令,形成双因子认证方案。

基于Google Authenticator的认证方案主要有以下特点:

● 使用智能手机代替口令牌硬件,成本大幅降低;

● 通过算法保证口令一致性,经过市场验证,安全可靠;

● 已经发布客户端应用和服务端代码包,方便应用集成;

● 手机客户端在生成一次性口令时并不需要联网,纯粹依靠智能手机硬件进行计算,可以应用在没有手机网络的场景。

6、威努特的相关方案

威努特工控主机卫士产品(以下简称“工控主机卫士”)是国内首款针对操作员站、工程师站、 数据服务器等工业现场主机进行安全加固的软件产品。产品颠覆了传统防病毒软件的“黑名单” 思想,采用与其相反的轻量级“白名单” 机制,可以有效阻止包括震网病毒、Flame、 Havex、 BlackEnergy 等在内的工控恶意程序或代码在工控主机上的感染、执行和扩散。

工控主机卫士支持基于USB Key的双因子认证方案,易于实施,安全性高。

工控主机卫士可以控制安装了工控主机卫士的服务器启用或不启用双因子认证,可以对身份鉴别相关配置项进行安全加固,以保证主机安全。

工控主机卫士支持目前工业场景的所有操作系统,包括几十种Linux分支系统及版本、国产的麒麟等操作系统、Windows 2000以后的所有Windows版本,满足各种苛刻的工业现场需求。

工控主机卫士结合集中安全管理平台,可以实现大量客户端的安全策略配置和监控,从而达到整个网络的强制访问控制。

声明:本文来自威努特工控安全,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。