汪翔
煜象科技(杭州)有限公司 浙江杭州 310000
摘 要:2020年5月本人所在互联网公司承担了线下对线上(O2O)在线超市系统的研发。此项目主要实现了基于地理位置查询的附近超市商品的查询和下单,提供一小时送货上门的服务,给消费者提供了便利。本人在项目中担任了系统架构师的角色,承担了系统架构的设计。本文阐述了安全性和保密性解决方案在系统中的应用。在鉴别服务上采用了用户名加口令、数字证书提供合法用户的正常访问系统的能力;在数据保密性上采用了支付过程加密来保障用户资金的安全性;在访问控制上运营后台采用了基于角色访问控制(RBAC)来实现运营人员、商业智能分析人员的操作权限的差异。此系统通过安全性和保密性解决方案的综合应用,防范了安全问题的发生,保障了用户的数据和资金的安全。此系统最终在2020年8月上线,获得了一致好评。
关键字:O2O;在线超市;保密性;安全性
2020年5月,本人所在某互联网公司承担了o2o在线超市系统的研发。此项目主要基于地理位置查询附近超市商品并下单,提供一小时送货上门的服务,给消费者带来了便利。它一方面给运营人员提供了后台上下架商品的运营线下超市的能力,对接一小时达物流系统提供快递速运送货上门服务,分析超市订单等海量数据并发掘信息从而对商业决策提供支持;另一方面,给消费者提供了商品在线查询的便捷和送货上门的体验,提升了消费者的满意度。传统的超市系统为进销存系统,没有将物流系统和用户的线上下单能力整合。而本系统打破了信息孤岛,可称之为新零售的技术实现。本人在系统中担任了系统架构师的职责,负责系统架构设计。
o2o在线超市系统采用基于dubbo微服务架构实现。服务注册使用了zookeeper来保证高可用性,服务网关使用了nginx集群,自研了基于ELK的服务调用跟踪构件。前端应用了前后端分离的思想,数据库使用了mysql并采用了读写分离技术来提高性能。为了提高读多写少场景性能,缓存使用了redis,搜索引擎使用了solr,采用了rocketmq来解耦服务模块。
信息系统的安全性与保密性设计是除业务需求之外极为重要的组成部分。O2O在线超市系统包含了用户访问、在线支付、运营数据展现等涉及到安全性的问题,以下进行展开叙述。
1.在用户访问上采用了用户名加口令和数字证书来解决合法用户和网站的鉴别问题
用户名加口令是传统的但极其有效的方法,在用户注册时输入用户名和密码,而在用户访问时检验再次输入的用户名和密码是否和存储的用户名和密码一致来完成用户鉴别。设计中注意的要点有两个:a.密码的强度,一般为8个字符以上并有大小写字母、数字且不能为单词以防范暴力破解;b.存储传输密码采用密文防止密码泄露。数字证书来自于英文digital certificate,从本质上来说是一种电子文档,是由电子商务认证中心(以下简称为CA中心)所颁发的一种较为权威与公正的证书。数字证书在用户访问服务时采用https协议可有效防止传输过程中的数据篡改和泄漏,大大提升了用户关键数据的安全性。其实施步骤为在服务端申请CA认证的数字证书给相应的域名,客户端采用https协议并在浏览器中配置好相应的安全级别即可完成对传输数据的加密传输并做好对服务端网站的合法鉴别。
2.在用户支付时考虑到数据的保密性应用加密技术来提供机密性
加密机制有以下几个步骤构成:去支付服务网站申请公钥私钥;在进行支付数据提交时应用私钥对其进行加密;在支付网站收到支付数据后应用对应的公钥进行解密。我采用了RSA非对称加密算法来生成对应的公钥和私钥。非对称加密的特点:算法强度复杂、安全性依赖于算法与密钥但是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快。非对称加密算法实现机密信息交换的基本过程是:Alice生成一对密钥并将公钥公开,需要向Alice发送信息的Bob使用Alice的公钥对机密信息进行加密后再发送给Alice;Alice再用自己私钥对加密后的信息进行解密。Alice想要回复Bob时正好相反,使用Bob的公钥对数据进行加密,同理,Bob使用自己的私钥来进行解密。利用非对称加密机制能达到极强的安全级别,考虑到支付过程本身提交的数据较少,也不会对性能造成影响。在此过程中还需考虑到提交数据的篡改问题,可以应用MD5技术来解决。采用的方法如下:将请求串(k=))形式按照键的字母序排序,然后将其用连接字符连接成一个字符串,对此字符串进行MD5散列取得签名串,最后将签名串附在请求串之后提交到支付服务网站。支付服务网站收到签名后的请求,取得签名串,并和上述散列过程做同等操作,得到实际签名串和提交过的签名串对比是否一致,即可判断是否篡改。在用户支付时应用加密技术有效保证了交易的安全性。
3.在运营后台的用户访问控制上,采用基于RBAC的技术来达到权限的控制
RBAC是基于角色的访问控制,其实现方式是信息系统操作的权限不授予用户,而是授予角色。每一种角色对应一组相应的权限。一旦用户被分配了适当的角色后,该用户就拥有此角色的所有操作权限。基于RBAC的好处是不必在每次创建用户时都进行分配权限的操作,只要分配用户相应的角色即可,而且角色的权限变更比用户的权限变更要更少,最终简化用户的权限管理。在O2O在线超市系统中,运营人员可以在运营后台进行店铺商品的上下架,但是他不能访问商业智能部门的数据分析模块。同样的,商业智能部门的人也不能访问运营人员的上下架功能。值得注意的是,运营人员和商业智能人员都有好几个,同一部门的权限是相同的。经过分析设计,可以将运营人员看成是一个角色,商业智能人员也作为一个角色。运营人员角色对应授予店铺商品上下架权限,商业智能人员授予数据分析模块;相应部门人员赋予对应的角色来完成这个效果。角色赋予权限,用户赋予角色来为RBAC的基本思想。通过RBAC的运用有效的达到了用户访问控制的目的,而权限、角色、用户都是支持扩展的,二者扩展是简洁无冗余的。
O2O在线超市面临了用户访问身份鉴别,用户支付保密性和运营后台功能访问分级的问题。通过运用用户名加密码、数字证书解决了用户身份和超市网站的身份鉴别问题,通过非对称加密和散列技术的应用解决了支付过程加密问题,通过RBAC技术解决了用户访问控制后台运营系统的问题。综合上述技术的实施,有效防止了出现安全事故和信息泄漏的风险,微网站长期平稳的运作奠定了基础。最后系统在2020年8月通过验收上线,获得一致好评。
当然,金无足赤,人无完人。O2O在线超市安全性和保密性方案实施过程中,也暴露出一些问题:开发人员对公钥私钥加密和散列的算法步骤缺乏认知,而且由于步骤复杂造成编码bug。此问题可以通过加强培训和将加密和散列过程写成可重用的构件,后续开发人员直接调用来解决。
参考文献:
[1]Bruce Schneier,吴世忠.应用密码学:协议算法与C源程序
[M].机械工业出版社,2000.1.
[2]Niels Ferguson,Bruce Schneier,Tadayoshi Kohno.Cryptography Engineering: Design Principles and Practical Applications1st Edition[Z].Wiley,2010.3.