青衿之志,履践致远

基于同态加密和机器学习的隐私类APP后端开发简要记述

本文是对我第一次独自开发安全领域相关作品后端的开发实记,虽然没能完整的开发出整个APP,但是我对作品开发和代码理解都产生了进一步的认识,故记录于此。

项目名称:HCA—基于同态加密机器学习的健康数据管理分析APP

完成时间:2022年6月14日

记录时间:2022年7月14日


作者前言

写这篇文章的时候正值本项目提交一个月整,因为种种原因一直想写但没有机会写这篇开发笔记,如今刚好在放假补上。本文单纯从后端开发角度简要记述(不涉及代码、具体实现、前端和前后对接等相关内容)了基于同态加密和机器学习的隐私类APP的开发过程,由于时间精力和目的不同等原因,作品注重设计而非市场,这点可能与一般的开发项目不同。

因为时间原因,本项目从计划制定到测试完成只用了不到20天时间,是我和前端大手子两个人在大学的考试月,每天从下课肝到半夜三四点肝出来的(历史再次证明了世上无难事,只怕有肝人)……由于开发期间前后端使用的技术都比较新,皆遇到了种种技术困难和无解bug,再经过大量时间和次数的尝试、debug或绕过后,终于是按期完成了。

作品计划制定和开发规划因为我们开发的进度和校内的琐事不断调整,尽管对比计划简化了些许设计功能,但最终成品还是较为满意的。不过目前版本还是有一定的设计不合理或不足之处,后续会根据时间安排进行修正和重写,添加功能修改设计并继续完善等。

最后,考试月真的是集所有事情于一起的一个月,能抽出时间完成这个作品真的非常不易。在作品全部完成三天后就是五天的期末连考(真 · 一章没看),作者还有一场比赛要打……目前来看,没挂科算是成功熬过,比赛也勉强赛区三等,凑活能看。总之,希望读者不要浪费自己的大学时间,多干一些有意义的事丰富自己的大学生活,且早日安排好计划,像我一样连熬一个月赶工不可取……

作者的碎念到此,目录请向右看,技术和项目相关请参考后文,联系请留言。

项目摘要

注:该内容摘自项目设计文档:

近些年,随着我国社会经济的发展和人们的生活水平的提升,大众对新健康模式的需求逐渐增加,以智能手机为基础的健康APP纷纷出现,在我国健康管理行业发展的过程中发挥出了重要的助推作用。但传统模式向互联网模式转变过程伴随的隐私数据安全泄露问题,给很多用户带来了健康、财产和形象上不可挽回的损失。

为彻底解决这一问题,我们从信息安全的角度开发了一款基于同态加密机器学习的健康数据管理分析APP(HContAnal,HCA)。软件将收集的隐私数据在客户端同态加密,加密数据会传输至服务端(第三方)进行密文计算,并将得到的密文结果返回至客户端解密。同态加密所使用的密钥通过用户口令进行异或加密后保存于服务器上,实现数据的多端同步。同时,用户口令采用MD5加密存储,用于服务端进行登录验证。基于同态加密的抗量子计算性和MD5的不可逆性,切实保证了服务端数据的安全,同时将同态加密与机器学习结合,大大扩展了产品的可开发性。

团队在开发前对目前应用市场的主流健康APP进行调研分析,首创了基于同态加密的健康隐私数据保护模式,结合机器学习将产品的实用性和扩展性大幅提升。尽管本作品以学习和研究为主简化了部分功能,但经测试发现,可以很好的替代部分健康类APP。

关键词:隐私安全;同态加密;机器学习

作品概述

注: 该内容摘自项目设计文档:

本项目组调研分析了安卓市场上大部分的健康类APP的交互与设计,并结合了如今抗量子计算的密码方案——全同态加密(Fully Homomorphic Encryption,FHE)。我们设计将收集的隐私数据在客户端同态加密,发送加密数据至服务端(第三方)进行密文计算,并将得到的密文结果返回至客户端解密,从而实现隐私数据的安全。同时将全同态加密技术应用于机器学习中,可在隐私安全的情况下实现大部分APP的健康分析功能。本项目通过一个简单的客户端进行一些基础的数据的采集和展示,用户的数据信息及软件所需的密钥均加密储存于服务器中,且所有存在于服务器的数据均无法在服务端解密破解。

作为一款隐私保护型的健康数据管理及分析APP,软件功能基于四种健康数据(身高体重、跑步、睡眠和摄入)进行了开发设计,确保了功能的主流实用且不会冗杂。通过这几项数据可以大致反馈出健康结果,我们将数据收集展示功能独立出来,并加入了分析建议的功能。

后端核心技术

注:部分内容摘自项目设计文档:

  • 全同态加密:可以在不泄露任何明文信息的情形下,对密文进行运算操作,并在解密后得到与在明文上执行相应运算一样的结果。本项目用到了CKKS同态加密算法,CKKS算法是2017年提出的近似计算同态加密算法,其具体构造基于BGV方案[1]。
  • 机器学习:通过自主学习大量数据中存在的规律,自动改进的计算机算法,使得计算机拥有类似人类的决策能力。本项目根据外文文献[2]参考后使用机器学习多元多项式回归算法及多元线性回归算法,均使用密文计算。

设计简述

注:部分内容摘自项目设计文档:

后端主要通过Python编写。文件存储并运行于服务器中,通过python flask实现数据传输及调用,后端数据存储于服务器MySQL数据库中,隐私信息均以密文形式保存和计算。主要由五大部分组成:flask主文件、密文计算文件、机器学习计算文件、数据库操作文件和MySQL数据库:

  • flask主文件:接受信息,处理信息,进行功能划分及函数调用,确保各个接口的数据接受回传及其功能实现。
  • 密文计算文件:接受前端密文文件,进行基础数据的密文计算,如BMI、周平均睡眠时间等,返回密文。
  • 机器学习计算文件:将同态加密与机器学习融合,实现密文下的机器学习,反馈健康评估值,其他步骤同密文计算文件。
  • 数据库操作文件:实现各个密文文件的写入读取,密文的导出,与计算接口对接等,实现登录后的公私密钥及数据的存储。

MySQL数据库:存储密文及其他数据,实现数据的实时调用及读写。

核心实现

注:部分内容摘自项目设计文档:

  • 密文计算:使用微软开源的同态加密库SEAL实现同态加密,配合Py的开源库SEAL-Python,重写并整合运算函数,实现同态加密中CKKS加密方法的密文计算。
  • 机器学习:应用python的sklearn numpy pandas等库对数据依次分析后发现符合多元多项式回归特征,并在二次幂时通过折线图对比发现最拟合状态且不会发生过拟合,提取参数转化密文进行训练重构模型。数据集进行了10000次随机分割训练,基本上保证了训练集的最佳划分。

后端创新

注:部分内容摘自项目设计文档:

  • HCA首创了基于同态加密的健康隐私数据保护模式:用户的隐私数据在客户端同态加密后,传输至服务端(第三方)进行密文计算,并将得到的密文结果返回于客户端解密。

    软件的安全性基于同态加密的抗量子计算性和MD5的不可逆性,相比于同类APP的加密传输在服务端解密计算,做到了全程数据不泄露,切实保证服务端数据的安全。

  • HCA首创了健康数据分析的同态密文机器学习模型,通过构建的密文运算模型对用户健康程度展开预测,并根据结果进行分析。

    尽管作品中的预测和分析作为项目研究开发可能不够全面,但这种全同态密文下的机器学习模型及方式可以应用在类似的功能上进行二次开发,扩展其他功能。

APP部分展示

注:部分内容摘自项目设计文档:

由于篇幅和数量原因,这里只展示了主页面和分析页面:

项目总结

注:部分内容摘自项目设计文档:

本作品基于同态加密和机器学习提出了一种新的健康数据管理方案,相比于以往的对数据加密传输后服务端解密运算,切实提高了隐私数据的安全,减少了数据泄露的风险。

因为开发时间和团队精力有限,本产品还有很多不足之处,譬如功能和界面设计的不够强大不够美观、服务器带宽小导致下载云端数据慢、数据处理时间长效率低速度慢等;也还有很多设计没有得到完全实现,如通过手表导入健康数据、根据数据推荐跟多内容等,这些都是本作品将来需要完善的地方。

参考文献

[1]Cheon, J.H., Kim, A., Kim, M., Song, Y. (2017). Homomorphic Encryption for Arithmetic of Approximate Numbers.In: Takagi, T., Peyrin, T. (eds) Advances in Cryptology – ASIACRYPT 2017. ASIACRYPT 2017. Lecture Notes in Computer Science(), vol 10624. Springer, Cham.

[2]KIM ANDREY, SONG YONGSOO, KIM MIRAN, et al. Logistic regression model training based on the approximate homomorphic encryption[J]. BMC Medical Genomics,2018,11(Suppl 4). DOI:10.1186/s12920-018-0401-7.

作者:Fanqie

联系方式:2740908911@qq.com

注:本文及文中内容未经允许禁止私自转载或使用!

添加新评论