认证系统几种方式lsgxeva

认证系统包含两个方面:密码存储方案和认证协议,密码如何存储会限制可供选择的认证协议。

实际工程实现中,密码如何存储经历很多变迁,可惜的是业界并不总是能吸取教训的,2002年发布的MacOSX10.2使用的密码加密算法跟1979年Unix第七版的算法是一样的,而且没有采用类似/etc/shadow的机制,这个机制是UNIX在1987年引入的,到了MacOSX10.3的时候,Apple更改了算法,引入了shadow机制,但却没有使用salt。大公司尚且如此马虎,何况互联网界多如牛毛的中小公司了,时至今日,肯定有一小撮公司使用明文存储密码,一大撮公司用通用摘要算法或者不用salt,肯定有好大一批公司把用户详细信息跟密码存储在一起,webserver运行的账户www或者nobody能读取所有密码。

存储明文密码对认证协议的限制是最宽泛的,但此种方案显然是无法满足上面说的核心需求。

早期UNIX限制密码长度,采用加密算法如DES对原始密码加密保存,现在的认证系统都使用摘要算法,对密码以及一个随机串(称为salt)应用一个摘要算法,比如MD5,SHA1,BCrypt,然后保存摘要值以及salt。这种方式是最广泛采用的,但在选择摘要算法时要避免通用摘要算法,因为他们的设计考虑了要快速运算,不利于提高暴力破解的难度,应该选用特别针对密码设计的摘要算法,这类算法被称为keyderivationfunction(KDF),其原理都是通过可配置的迭代次数调节计算量,比通用摘要算法慢几个数量级。

下面的三种KDF,理论上安全强度SCrypt>BCrypt>PBKDF2,推荐使用BCrypt。

PBKDF2的缺陷是容易被特制的芯片破解,比如使用ASIC或者GPU,所需的电路和RAM都很小。

BCrypt被特制芯片破解的难度稍微大点,所需的电路和RAM比PBKDF2要多些,但依然是固定的。

SCrypt特意增大了运算所需内存,因此提高了特制芯片破解的成本,此算法被莱特币(Litecoin)所使用,但似乎在互联网界并不广泛,可能是大家刚转向BCrypt,没工夫搭理尚显年青(2012年被提出)的SCrypt,或者是采用SCrypt的性价比对互联网企业不合算。

在OTP(One-timepassword)算法中,需要在服务端和客户端储存一些参数或者状态,随后认证过程中双方才能使用同样的秘钥函数计算出当前秘钥。

用户注册时选择密码并被服务端保存,随后用户访问这个服务时就要经过认证协议。密码如何存储是服务内部的问题,除非服务被攻破,存储的密码泄露,否则还是不大容易捅篓子的,而认证协议解决的是在网络两头双方的信息交换,这就太容易出问题了,所以出现繁多的认证协议也就不足为怪。

从认证涉及的各方来看,认证协议分为双方认证协议,客户端和服务端,这是最常见的,还有三方认证协议,除了客户端和服务端还引入了一个双方都信任的第三方,比如Kerberos,CAS(CentralAuthenticationService),OpenID。下面只看双方认证协议,这也是三方认证的基础。

双方认证按照认证时提供的凭证个数分为单因子认证(SFA,single-factorauthentication)和多因子认证(MFA,multi-factorauthentication),而多因子认证里以双因子认证最为常见。

所谓多因子,指认证时需要提供如下凭证:

也有人提第四个因子,somebodyyouknow。

双因子认证很容易在实现时引入漏洞:丢失密码后使用手机发短信即可重置密码(要求额外提供身份证号是不保险的,身份证号并不是保密信息),或者手机上的应用长期缓存第一个因子,只需要提供第二个因子。在安全和方便之间总是难以皆大欢喜。

具体的认证协议五花八门,可以一刀切分为两类:需要向对方发送密码的,不管是固定密码还是一次一密;不需要向对方发送密码的。

这种协议都需要SSL/TLS之类的协议护驾,否则毫无安全可言。

ChallengeResponseAuthenticationMechansim,所谓的challenge就是服务端发给客户端一个随机字符串,客户端需要用密码或者密码的摘要值对其进行HMAC-MD5运算,然后把结果发送给服务端,服务端对随机串做相同运算并比对结果。

此协议只是客户端向服务端认证,没有服务端向客户端认证,因此一般需要SSL/TLS护驾,让客户端验证服务端证书。具体实现时那个challenge往往有比较固定的模式,没有SSL/TLS信道加密的话,通讯数据包被窃听后易受词典攻击。

在服务端,密码要么是存为明文,要么是存为MD5摘要值或者中间运算结果,一是容易被暴力破解,二是存储的值在CRAM-MD5认证协议里跟密码等价,所以拿到这个摘要值其实就是获得了此用户的权限。

相比CRAM-MD5,在认证过程中允许客户端提供一个随机串添加在服务器给定的随机串上,因此避免了恶意的服务端做选择明文攻击(CRAM-MD5中对选定明文,客户端返回的摘要值是确定的,因此可以被词典攻击)。

DIGEST-MD5支持互相认证,但协议本身选项比较多,容易实现不当,互操作性比较差。

虽然攻击难度比CRAM-MD5大,但一般也需要用SSL/TLS保护信道以免窃听。

跟CRAM-MD5一样,密码是MD5摘要,而且在认证协议里等价于密码,因此在服务端存储的密码是相当不安全的。

SCRAM需要搭配channelbinding以避免中间人攻击,可以用SSHv2和TLS。所谓通道绑定就是应用层的认证协议利用传输层的加密协议,确认在应用层认证的双方确实是互相通信的双方,避免中间人攻击,注意这里的通道绑定是需要两层协议的具体实现互相支持的,比如上层协议要获取SSHv2的sessionID或者TLS里的握手报文内容(tls-uniquebinding)、X509证书(tls-server-end-pointbinding)参与认证过程,举例来说,在TLS上做通道绑定的SCRAM-SHA-1增强版叫SCRAM-SHA-1-PLUS,其实现需要OpenSSL或者GnuTLS库提供获取握手报文内容、X509证书的API。

与Kerberos和SSLX509不同,SRP并不依赖第三方的受信秘钥服务或者证书分发机构,SRP使用共享密码做互相认证。SRP有大量优良特性:

参考:

OpenSSL>=1.0.1以及Apache2.5mod_ssl,mod_gnutls支持TLS-SRP:

但是很不幸Redhat为了避免可能的专利纠纷删除了Fedora、RHEL中openssl软件包里的srp代码:

AuthenticationandKeyAgreement,用于3G网络中,提供互相认证以及加密通道。

ExtensibleAuthenticationProtocol,EAP是一个认证框架,常用于无线网以及点对点网络中。具体的认证方法称为EAPmethod,目前定义了大约四十种。

EAP-TLS:使用client&serverX509certificates互相认证,并用TLS加密信道

EAP-POTP:使用OTPtoken做双因子认证

EAP-PSK:使用pre-sharedkey做互相认证,认证成功后信道被加密

EAP-PWD:从一系列共享密码中挑选一个做认证,被Android4.0,FreeRADIUS,Radiator支持

EAP-IKEv2

EAP-FAST

EAP-AKA

PEAP:为EAP提供加密保护

基于UDP协议。在使用WPA-Enterprise/WPA2-Enterprise无线网认证方式的地方就需要RADIUS服务。

Cisco开发,基于TCP协议,提供authentication/authorization/accounting.

代替RADIUS,提供authentication,authoriazation,accounting。

上面提到SRP、SCRAM,看起来是很安全了,但是总架不住客户端中了木马导致密码泄露,或者密码比较二被人猜出来,或者一个密码打天下忽然惊闻常去的某网站居然是明文存储密码,等等等等,所以牵涉到用户深度隐私或者钱财的服务必须自觉的支持双因子认证。

一般双因子认证使用这两个因子:knowledgefactor,基本都是指密码了,possessionfactor,电子令牌上或者手机上的Googleauthenticator应用显示的认证码,或者是服务端通过短信发到手机上的认证码,这个认证码就是个one-timepassword,其生成算法是有业界标准的,并不是个简单的随机数。

Wikipedia上对OTP的讲解很清楚:

HOTP是双方定一个种子数字,用同一个摘要函数这个种子求值,对结果再次算摘要值,如此反复,由于摘要函数的特性,很难从下一个值推算出上一个值,所以把这些值倒过来就是一个密码表了,每次用下一个密码。

明白原理后就很容易理解OTP是怎么用的了:

Google的认证系统还有个高级功能,可以为一个账户生成多个副密码,这些密码不需要双因子认证,这个功能是为了给第三方不支持双因子认证的应用访问Google服务。

Googleauthenticator官方自称twp-stepauthentication而非two-factorauthentication,因为有人诟病它的安全性。传统意义上的possessionfactor是很难复制的,要么拥有要么没有,比如RSASecurID就是抗篡改的(tamper-resistant),而Googleauthenticator可以同时在多个设备上运行,只要把种子数字从手机里复制出来,这破坏了“somethingonlytheuserhas”的要求。但总之这种softtoken还是聊胜于无,穷人的福利。

原理很简单,实际应用中也很常见,但做好并不容易,需要挖空心思让机器图形识别困难,但对人肉识别又比较容易,看起来很凌乱的图片,未必难于被机器识别。

依优先级顺序,排在前面的优先级高。

Intranet使用Kerberos和SPNEGO做singlesign-on,这个选择已然定论,支持这些协议的操作系统和应用软件都非常广泛。

估计大伙也是这么想的,所以虽然OpenID想法很好,但大家都把它当做锦上添花的特性,不会作为主要的认证方式。

可以看出SSL/TLS协议并不一定需要x509证书,可惜所有Web浏览器只支持X509证书方式的认证,并且对客户端的x509证书认证操作比较麻烦,需要用户自己在浏览器设置里导入客户端自己的证书,所以为了应付Web浏览器,还是需要结合TLSX509servercert做服务端认证然后加密连接,然后再用HTML表单以及JavaScript做SRP认证(这一步不依赖加密连接),如果是本地应用,可以直接上TLS-SRP。

TLS-SRP要求OpenSSL>=1.0.1或者GnuTLS。OpenSSL1.0.1在2012年3月14日发布。

SRP在服务端保存的是verifier,而非password或者password的等价物,verifier类似公钥认证里的公钥,所以泄露了也太大问题。

使用带有TLSchannelbinding的SCRAM-SHA-1-PLUS。

实现简单,理解容易,业界最广泛使用的方案。用x509证书验证服务端,然后在加密连接上传输密码或者其摘要值给服务端以验证客户端。密码存储使用BCrypt。

使用TLS的注意事项:

如果服务端是一个集群,那么TLSsessionID需要搭配memcached做共享的sessioncache,而sessionticketextension需要集群所有机器使用同样的ticketkey。

认证协议是个理解起来伤脑筋,要想实现无误也很费神的事情,有人就构建了许多框架或者API来容纳各种认证协议:GSSAPI(GenericSecurityServicesApplicationProgrammingInterface),SASL(SimpleAuthenticationandSecurityLayer),SSPI(SecuritySupportProviderInterface),其中应用最广的当属SASL,众多网络协议以及Linux下无数应用都支持SASL,不过最遗憾的是HTTP协议以及众多web浏览器不支持它。

SASL主流实现有四个:

这些SASL实现可以从文件、OpenLDAP、关系数据库读取密码信息并进行验证,也能更改密码,列举用户名,在实现认证系统时最好基于某个SASL实现。

非Web浏览器场合,可以直接上TLS-SRP,不需要X509证书。

下面是分别用OpenSSL和GnuTLS演示TLS-SRP。

需要用正规CA签名的X509证书,因为这个证书用来验证服务端身份。

各种SASL实现都支持PLAIN机制,其实自己实现也非常简单了,唯一要注意的是最好把认证服务跟业务逻辑所在服务分开,避免业务逻辑所在服务出篓子被人爬下整个密码库。

OTP的原理并不复杂,自己实现一个也不难,下面是许多现成的实现供参考。

没有一个提供backupcode特性,当然,这个不在OTP原理里头,只是具体实现时的一个方便用户的特性。实现时可以参考Googleauthenticator和oath-toolkit。

使用oath-toolkit和Googleauthenticator可以验证两者是一致的,Google返回的seed值是16个字符的base32编码的字符串,实际上Googleauthenticator不要求必需是16个字符。

$oathtool-b--totp'bkuq7tyasdbujlda'#字符串的空格被忽略,大小写无关200157$oathtool-b--totp'bkuq7tyasdbujlda'200157#验证0将那串base32编码字符串输入Googleauthenticator里,可以验证它的结果跟oathtool生成的认证码确实是一致的。Googleauthenticator可以用于Google之外的服务。

THE END
1.全国认证认可信息公共服务平台食品复检机构 从业机构查询 从业机构 从业人员 认证 认证机构 强制性产品认证指定认证机构 强制性产品认证指定实验室 认证证书:402万 获证企业:108万 中国质量认证中心有限公司 783512 莱茵检测认证服务(中国)有限公司 338720 应急管理部消防产品合格评定中心 149322http://cx.cnca.cn/
2.统一身份认证系统的简单看法统一身份认证平台架构图最早的统一身份认证系统产品当属linux的LDAP目录服务和windows的AD域目录服务。 统一身份认证的优点是,采用统一身份认证后,用户只需要使用同一用户名、同一令牌就可以登录所有允许他登录的系统,用户使用更加方便;从安全角度出发,管理人员可以在认证系统集中地对各个应用系统上的用户进行管理。 https://blog.csdn.net/enweitech/article/details/81776487
3.红帽认证系统服务和计划 通过更多途径全方位提升您的红帽体验 咨询 技术专家帮助您简化安全流程。 开源 参与DogTag 认证系统——红帽认证系统的上游项目。 支持 红帽认证系统订阅为您提供丰富多样的技术专业知识和支持服务,帮助您成功构建、部署及管理企业安全。 联系我们https://www.redhat.com/zh/technologies/cloud-computing/certificate-system
4.您好!欢迎进入中国质量认证中心业务管理系统中国质量认证中心体系认证业务管理系统是一个为全球体系认证用户服务的系统, 是CQC工作人员高效高质工作的一个重要平台工具。 主要包括以下几个方面的认证: ·ISO9001质量管理体系(QMS) ·ISO14001环境管理体系(EMS) ·OHSMS18001职业健康安全管理体系(OHSMS) https://sys.cqccms.com.cn/login.jsp?url=L2NvbW1hbmQvZXJyb3IvRXJyb3I%2FbnVsbA%3D%3D
5.体系认证业务管理系统用户注册 公司名称* 统一社会信用代码* 注册地址区域* 注册账号* 设置密码 * 确认密码* 联系人* 联系手机* 短信验证码* 获取验证码 注册 返回登录 中国网络安全审查认证和市场监管大数据中心?版权所有 京ICP备2021038501号-1 京公网安备 11010102006263号 https://ms.isccc.gov.cn/auth/register
6.认证系统华东理工大学认证系统还可实现IPoE、L2TP等认证方式,为华东理工大学校园网的后期建设提供了坚固的技术保障。https://xxb.ecust.edu.cn/7625/list.htm
7.上网认证系统上网认证系统 Internet Authentication System 修改密码http://gongchuang.net/
8.上网认证系统上网认证系统中,系统管理员已经启用Kerberos认证。已获取“系统”帐号密码。已获取“系统”模块管理权限。选择“系统>域和安全认证”。表示开启;表示关闭。用户密码输入登录系统的密码。说明:系统默认的认证方式为“手机短信”或“手机令牌”,详情请参考绑定手机令牌。https://www.huaweicloud.com/zhishi/edits-17545872.html
9.「网络安全」安全设备篇(21)——统一身份认证系统(4A)随着企业的发展,企业的网络逐渐变得庞大,进行机构改革、业务重组、核心人员流失时,往往需要大量的人力、物力对已建系统进行组织机构、权限分配的调整。统一身份认证系统(4A)能够帮助高效解决此类问题,降低对现有网络安全性的影响。 什么是身份认证? 身份认证就是判断一个用户是否为合法用户的处理过程。 https://blog.51cto.com/u_9691128/4580015
10.认证专区华为云stack l4认证 hcse-presales 华为hcse-presales(华为高级解决方案专家)认证,是面向中国企业解决方案销售的合作伙伴售前高级工程师的认证体系,是目前华为最高能力等级的渠道售前认证系统,目标是培养并识别"行业解决方案专家"和"跨产品领域解决方案专家".该认证首次纳入"行业"维度认证,以"华为行业数字平台解决方案"https://partner.huawei.com/university/webui/college/solution/certs.html
11.欢迎使用认证业务管理系统为了更好地体验新系统,请确保浏览器为 Windows Internet Explorer 8 及更高版本,推荐使用浏览器 Google Chrome,速度更快。 在填写资料时,请不要填写以下特殊字符: \ & #http://iso.ccicshanghai.com/
12.上网认证系统上网认证系统 用户登录 管理员登录 登录 忘记密码更多https://jf.chengfeng.tv/
13.MFA多因素认证系统双因子身份认证技术宁盾MFA多因素认证系统,使用时间型OTP动态口令认证方式,在静态账号密码的基础上增加一层动态口令进行双重验证防护,提升数据中心基础设施、网络及业务系统的账号安全。https://www.nington.com/mfa/
14.网络接入认证计费系统(WiFi认证平台)介绍支持对接标准PORTAL协议和RADIUS协议的网关、BAS、路由、交换机、AC和AP等设备和系统。支持对接设备厂商:ZhuoMai、华为、中兴、H3C、锐捷、山石、神州数码、汉明、信锐、神脑、UBNT、Ruckus、Aruba、TP-LINK和腾达等设备厂商。 产品简介 P5000系列Portal认证系统主要应用于无线覆盖区域进行无线认证、答题认证(WiFi教育答题https://www.zm-kj.com/mip/7.html
15.认证管理系统网络技术和信息化的发展,企业应用系统数量和种类越来越多,传统业务平台在每个应用系统都采用了专用的、不同的身份认证技术。系统管理员需要在不同的业务应用系统上配置、维护不同的身份认证方式,工作量很大且不能统一管理。用户在使用不同的业务系统时需要记忆、使用不同的口令多次登录,使用很不方便。 https://www.jcom.net.cn/rzglxt
16.认证机构管理系统CA3W缔造好用、成本低、长期可用的认证机构管理系统。认证机构ERP系统上云,认证机构业务管理统一平台,专注于认证机构信息化,开发认证机构信息管理软件,认证机构综合管理系统https://ca3w.github.io/
17.认证管理系统用户: 密码: 版权所有:中质协质量保证中心http://zbzx.caq.org.cn/
18.体系认证1体系认证 编辑 目前我们提供的体系认证有:FSC森林体系认证、ISO/PAS28000:2005供应链安全管理(反恐认证)、ICTI国际玩具业协会商业行为守则、SA8000:2001社会责任管理体系认证、QC08000危险物品进程管理系统要求、ISO/TS16949:2002汽车工业质量管理体系认证、ISO22000:2005与HACCP食品卫生安全管理体系认证、ISO13485:2003医疗https://baike.sogou.com/v7682880.htm
19.认证机构是什么主要职责认证流程2、认证机构应依照认证业务操作规范颁发证书。 3、认证机构有责任在收到申请人或其代表人的申请后暂停证书;同时,有责任在证书中存在重要虚假陈述或认证机构的认证系统存在严重影响其可靠性或有证据证明签名者死亡或消失或不复存在等情况下撤销证书。 认证机构设立要件 https://www.cnpp.cn/focus/24953.html
20.线上系统的统一身份认证方案线上系统主要是对中间件、日志、任务等的监控运维,由于是提供外网访问的出口,所以不能没有身份认证。经梳理,现公司需管理的线上系统包括以下几种: 中间件:rabbitmq、codis 任务:xxl-job 可观测性(日志、指标、分布式跟踪):kibana、sentry、grafana、zabbix、prometheus、pinpoint https://www.jianshu.com/p/a743d741a860
21.24.1.身份验证系统概述—QGISDocumentation文档图24.1 身份认证系统剖析? 24.1.1. 身份验证数据库? 新身份验证系统将身份验证配置存储在默认情况下位于以下位置的SQLite数据库文件中 <profile directory>/qgis-auth.db。 此身份验证数据库可以在QGIS安装之间移动,而不会影响其他当前的QGIS用户首选项,因为它与正常的QGIS设置完全分开。最初将配置存储到数据库https://www.osgeo.cn/qgisdoc/docs/user_manual/auth_system/auth_overview.html