统一身份认证方式

接手统一用户统一认证相关的工作,先总结下重要的相关理念,方便实际开发时的理解。

基础原理知识

对称加密

  所谓对称加密又称对称密钥体制,就是加密和解密使用同一个密钥的密码技术。通信双方必须交换彼此密钥,发送信息时,发送方用自己的密钥对传输信息进加密,接收方收到信息后,用发送方所给的密钥进行解密。用公式表示如下:
加密过程:$E_k(M)=C$
解密过程:$D_k(C)=M$
  其中 M、C、k、E 和 D 分别为明文、密文、密钥、加密算法和解密算法。

  • 优点
    • 算法公开、计算量小、加密速度快、加密效率高。
  • 缺点
    • 交易双方都使用同样钥匙,安全性得不到保证;
    • 每对用户每次使用对称加密算法时,都需要使用其他人不知道的唯一秘钥,这会使得收、发双方所拥有的钥匙数量巨大,密钥管理成为双方的负担;
    • 能提供机密性,但是不能提供验证和不可否认性。

非对称加密

  所谓非对称加密即非对称密钥体制,就是加密和解密使用不同的密钥的密码技术,又称为公开密钥体制。每个用户都有一对选定的密钥,一个是公开密钥(可以让所有欲通信的人知道)用于加密:另一个由用户安全拥有,是私人密钥(一个专门为自己使用的密钥),用于解密。公钥和私钥不能由一个推出另一个,但是公钥加密的信息只能由私钥解密,反之亦然。用公式表示如下:
加密过程:$E_{k1}(M)=C$
解密过程:$E_{k2}(C)=M$
  其中,kl 和 k2 分别为加密密钥和解密密钥。

  • 优点:非对称加密与对称加密相比,其安全性更好;
  • 缺点:加密和解密花费时间长、速度慢,只适合对少量数据进行加密。

单点登录

  单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

  要实现SSO,需要以下主要的功能:
所有应用系统共享一个身份认证系统
  统一的认证系统是SSO的前提之一。认证系统的主要功能是将用户的登录信息和用户信息库相比较,对用户进行登录认证;认证成功后,认证系统应该生成统一的认证标志(ticket),返还给用户。另外,认证系统还应该对ticket进行效验,判断其有效性。
所有应用系统能够识别和提取ticket信息
  要实现SSO的功能,让用户只登录一次,就必须让应用系统能够识别已经登录过的用户。应用系统应该能对ticket进行识别和提取,通过与认证系统的通讯,能自动判断当前用户是否登录过,从而完成单点登录的功能。

CA数字证书

  CA是证书的签发机构,它是PKI的核心。CA是负责签发证书、认证证书、管理已颁发证书的机关。它要制定政策和具体步骤来验证、识别用户身份,并对用户证书进行签名,以确保证书持有者的身份和公钥的拥有权,CA是可以信任的第三方。

  • CA 中心是国家认可的权威、可信、公正的第三方机构,专门负责发放并管理所有参与网上业务的实体所需的数字证书。
  • 数字证书是网络世界中的身份证。可以在网络世界中为互不见面的用户建立安全可靠的信任关系,这种信任关系的建立则源于PKI/CA认证中心,构建安全的PKI/CA认证中心是至关重要的。
  • CA 拥有一个证书(内含公钥)和私钥。网上的公众用户通过验证 CA 的签字从而信任 CA,任何人都可以得到 CA 的证书(含公钥),用以验证它所签发的证书。

HTTPS与SSL

  HTTPS是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。

HTTPS和HTTP的区别

  1. https协议需要到ca申请证书,一般免费证书很少,需要交费。
  2. http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。
  3. http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
  4. http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

SSL协议提供的服务

  1. 认证用户和服务器,确保数据发送到正确的客户机和服务器
  2. 加密数据以防止数据中途被窃取
  3. 维护数据的完整性,确保数据在传输过程中不被改变。

优秀文章:腾讯HTTPS性能优化实践
本文根据罗成在2016ArchSummit全球架构师(北京)峰会上的演讲整理而成。主要内容分以下三部分:计算性能的分析和优化;无密钥加载;证书优化。

微服务

  微服务是一个新兴的软件架构,就是把一个大型的单个应用程序和服务拆分为数十个的支持微服务。一个微服务的策略可以让工作变得更为简便,它可扩展单个组件而不是整个的应用程序堆栈,从而满足服务等级协议。

  微服务应用的一个最大的优点是,它们往往比传统的应用程序更有效地利用计算资源。这是因为它们通过扩展组件来处理功能瓶颈问题。这样一来,开发人员只需要为额外的组件部署计算资源,而不需要部署一个完整的应用程序的全新迭代。最终的结果是有更多的资源可以提供给其它任务。

  微服务应用程序的另一个好处是,它们更快且更容易更新。当开发者对一个传统的单体应用程序进行变更时,他们必须做详细的QA测试,以确保变更不会影响其他特性或功能。但有了微服务,开发者可以更新应用程序的单个组件,而不会影响其他的部分。测试微服务应用程序仍然是必需的,但它更容易识别和隔离问题,从而加快开发速度并支持DevOps和持续应用程序开发。

  第三个好处是,微服务架构有助于新兴的云服务,如事件驱动计算。类似AWS Lambda这样的功能让开发人员能够编写代码处于休眠状态,直到应用程序事件触发。事件处理时才需要使用计算资源,而企业只需要为每次事件,而不是固定数目的计算实例支付。

常用的登陆认证方式

基于静态口令认证技术

  口令由用户自己设定,登录系统时,只要用户输入的口令正确,就被认为是合法用户。但用户为了记忆方便一般都设置成生日、电话号码等,容易造成口令的泄漏,是一种不安全的身份认证方式。

基于动态口令认证技术

  动态口令技术分为两种,即异步口令技术(挑战/应答方式)和同步口令技术。异步口令技术是指通信双方掌握相同的用户身份信息和口令生成方法,当用户登录系统时,认证方随机地给用户发送一条动态数据,用户使用该数据和自己的身份信息构造口令,发送给服务器方进行认证,完成一次登录。同步口令技术是是基于时间同步方式的,可分为时间同步口令技术和事件同步口令技术。

基于智能卡(U盾)身份认证技术

  智能卡是一种内置集成电路的芯片,用来存储与用户相关的数据。登录系统时必须利用读卡器从用户持有的智能卡中读取信息,或者使用U盾确认,来认证用户身份。该方式是利用芯片的不可复制性来确保用户身份不会被仿冒,但是硬件投入大,加之从智能卡中读取的数据是静态的,存在截取用户身份认证信息的安全隐患。

基于生物识别的身份认证技术

  是利用用户所特有的、可测量的生理和行为特征进行身份认证的一种技术。生理特征包括指纹、视网膜、虹膜、面貌等;行为特征包括签名、语音等。但这种方法的造价高,适用于对保密性要求高的地方。

基于数字证书的身份认证技术

  数字证书与我们日常生活中的个人身份证和驾驶执照相类似,是用来标志用户身份的数字信息档。数字证书是由第三方机构 CA 机构(证书授权中心)签发。基于数字证书的身份认证技术使用密码技术来保证传输信息的安全性和完整性,通过数字签名功能实现用户身份的认证,大大地提高了身份认证的强度。

常用的认证技术编程实现

RESTful Api 身份认证

  REST 是一种软件架构风格。RESTful Api 是基于 HTTP 协议的 Api,是无状态传输。它的核心是将所有的 Api 都理解为一个网络资源。将所有的客户端和服务器的状态转移(动作)封装到 HTTP 请求的 Method 之中。

静态口令+数字证书双重登录认证

  用户忘记密码、丢失密码、设置弱口令密码等个人因素,及密码库遭“撞库”攻击造成泄露等客观因素,都使得密码认证登录方式的安全性脆弱不堪。客户端证书由权威CA机构认证用户的身份证信息后签发,相当于在线身份证,可弥补密码认证登录的缺陷,实现强身份认证登录。通过数字证书+密码双重登录认证方式,可以确保用户身份真实可信,保护用户账号安全,建立基于数字证书的统一、安全、可信的互联网身份认证体系。

AFNetworking 双向认证

  AFNetworking是一个讨人喜欢的网络库,适用于iOS以及Mac OS X。它构建于在NSURLConnection,NSOperation,以及其他熟悉的Foundation技术之上。它拥有良好的架构,丰富的api,以及模块化构建方式,使得使用起来非常轻松。
  AFNetworking是允许内嵌证书的,通过内嵌证书,AFNetworking通过比对服务器端证书、内嵌的证书、站点域名是否一致来验证连接的服务器是否正确。在完成以上两条的情况下,会自动扫描bundle中.cer的文件,并引入,这样就可以通过自签证书来验证服务器唯一性了。

结合微信的扫码认证/推送认证

  得益于微信和支付宝对扫码技术的大力推广,如今扫码支付已经成为网络支付的主流手段之一,但其实二维码技术在身份认证上也有许多应用,比如扫码登录。无论是在网页版微信、QQ或是淘宝,都在主动地推广扫码登录这种更安全的方式。当我们打开淘宝的登录页面,出现的不再是账号密码输入框,而是一个登录二维码,甚至在网页版微信中,仅仅允许扫码登录,并且这种方式正在被越来越多的网站和应用效仿。

  和扫码相比,推送认证也是如今非常有用的方式之一。所谓推送认证,就是向用户手机推送一条认证请求,用户点击确认或进行相应操作后完成认证,这种方式不仅安全,而且能最大限度降低用户的操作成本。企业员工在登录日常办公系统或连接WiFi、VPN时,手机会自动收到一条推送请求,只有点击确认后才能成功登录,这样即使密码不慎泄露也不必担心账号安全,并且员工只需要额外点击一下手机。

声纹识别/人脸识别认证

  此外,基于手机软件的扫码或推送之所以流行,还在于可以和异常登录行为分析、生物识别等认证技术进行深度结合。微信和支付宝都有做类似的安全防护措施,比如当一个微信在一台陌生的设备上,或者异常的地点登录时,必须两个微信好友发送验证码协助确认操作者的身份才能正常登录。在洋葱提供的企业员工认证中,企业员工登录重要等业务系统时,收到的认证请求也不再是简单的“确认取消”,而是人脸识别、声纹识别等方式,由此来验证操作者是否是员工本人,这样就可以最大限度地防止盗号情况的发生。

参考资料

文章目录
  1. 1. 基础原理知识
    1. 1.1. 对称加密
    2. 1.2. 非对称加密
    3. 1.3. 单点登录
    4. 1.4. CA数字证书
    5. 1.5. HTTPS与SSL
    6. 1.6. 微服务
  2. 2. 常用的登陆认证方式
    1. 2.1. 基于静态口令认证技术
    2. 2.2. 基于动态口令认证技术
    3. 2.3. 基于智能卡(U盾)身份认证技术
    4. 2.4. 基于生物识别的身份认证技术
    5. 2.5. 基于数字证书的身份认证技术
  3. 3. 常用的认证技术编程实现
    1. 3.1. RESTful Api 身份认证
    2. 3.2. 静态口令+数字证书双重登录认证
    3. 3.3. AFNetworking 双向认证
    4. 3.4. 结合微信的扫码认证/推送认证
    5. 3.5. 声纹识别/人脸识别认证
  4. 4. 参考资料

20170424-UnifiedAuth/

本页二维码