Skip to content

Latest commit

 

History

History
72 lines (45 loc) · 3.94 KB

README.md

File metadata and controls

72 lines (45 loc) · 3.94 KB

中传放心传

本项目基于 中国传媒大学密码学应用实践课程 的样例工程进行二次开发。

功能清单

  • 基于网页的用户注册与登录系统

    • 使用https绑定证书到域名而非IP地址 【 PKI X.509
    • 允许用户注册到系统
      • 用户名的合法字符集范围:中文、英文字母、数字,类似:-、_、.等合法字符集范围之外的字符不允许使用
      • 用户口令长度限制在36个字符之内
      • 对用户输入的口令进行强度校验,禁止使用弱口令
    • 使用合法用户名和口令登录系统
    • 禁止使用明文存储用户口令 【 PBKDF2 散列算法 慢速散列 针对散列算法(如MD5、SHA1等)的攻击方法
      • 存储的口令即使被公开,也无法还原/解码出原始明文口令
      • 安全的忘记口令 / 找回密码功能
  • 基于网页的文件上传加密与数字签名系统

    • 已完成《基于网页的用户注册与登录系统》所有要求
    • 限制文件大小:< 10MB(可通过代码配置)
    • 限制文件类型:office文档 、常见图片类型
    • 匿名用户禁止上传文件
    • 系统对加密后文件进行数字签名 【 数字签名(多种签名工作模式差异)
    • 对文件进行对称加密存储到文件系统,禁止明文存储文件 【对称加密 密钥管理(如何安全存储对称加密密钥) 对称加密密文的PADDING问题
    • 文件秒传:服务器上已有的文件,客户端禁止重复上传
    • 支持多文件同时上传
    • 提供文件上传预览
    • 用户可以浏览自己上传的所有文件
    • 用户可以删除自己上传的文件
  • 基于网页的加密文件下载与解密

    • 已完成《基于网页的文件上传加密与数字签名系统》所有要求

    • 提供匿名用户加密后文件和关联的数字签名文件的下载

    • 客户端对下载后的文件进行数字签名验证 【 非对称(公钥)加密 数字签名

    • 客户端对下载后的文件可以解密还原到原始文件 【 对称解密 密钥管理

    • 提供已登录用户下载自己上传的解密后文件

    • 下载URL设置有效期(限制时间或限制下载次数),过期后禁止访问 【 数字签名 消息认证码 Hash Extension Length Attack Hash算法与HMAC算法的区别与联系

    • 提供静态文件的散列值下载,供下载文件完成后本地校验文件完整性 【 散列算法

所以总的来说,本项目的所有的必选要求都已完成,且完成了【安全的忘记口令 / 找回密码功能】的可选功能。

本项目用到的关键技术

  • 前端使用的 js 框架依赖已在 src/package.json 中定义,build.sh 中已通过 Docker 的方式一次性下载所有依赖到指定目录;
  • 后端使用原生 PHP 编写,没有使用任何框架;
  • 程序部署运行环境采用 docker,如果本机已配置好 docker 运行时环境可以通过执行 bash build.sh 自动完成程序的发布和部署;

快速上手体验

  • 本样例工程通过 bash build.sh 方式部署并安装gd库后,打开浏览器访问: http://localhost:8080 即可快速体验系统除域名外的所有功能。

  • 根据openssl目录下README.md文档内容,按顺序执行脚本命令即可快速体验绑定证书到指定域名的功能。

依赖环境安装补充说明

展示视频地址

中传放心传:实机展示视频为视频2和视频16