# 安全机制
### 客户端和服务器间的通信加密
Seafile 在服务器配置了 HTTPS 后,客户端会自动使用 HTTPS 协议和服务器通信。
### 加密资料库如何工作?
当你创建一个加密资料库,你将为其提供一个密码。所有资料库中的数据在上传到服务器之前都将用密码进行加密。
加密流程:
1. 生成一个32字节长的加密的强随机数。它将被用作文件加密键(“文件键”)。
1. 用用户提供的密码对文件键进行加密。我们首先用PBKDF2算法从密码中获取到一个键/值对,然后用AES 256/CBC来加密文件键,所得结果被称之为“加密的文件键”。加密的文件键将会被发送到服务器并保存下来。当你需要访问那部分数据,你可以从加密的文件键中解密出文件键。
1. 所有的文件数据都将用AES 256/CBC加密的文件键进行加密。我们用PBKDF2算法从文件键中获取键/值对。加密完成后,数据将会被传送到服务器端。
上述加密过程即可在桌面客户端执行也可在网站浏览器中执行。浏览器端加密功能可在服务器端使用。当你从加密的资料库中上传和下载时,如下过程将会发生:
- 服务器端发回加密的数据,浏览器将会在客户端用JavaScript解密它们。
- 浏览器在客户端用JavaScript加密后,将加密后的数据发回服务器。服务器端直接保存加密后的结果。
在上述过程中,你的密码将不会在服务器端传输。
当你同步一个加密资料库到桌面客户端或者在网站浏览器中浏览一个资料库,桌面客户端/浏览器需要确认你的密码。当你创建一个资料库,一个“魔力标志”将会在密码和资料库id中获得。这个标志和资料库一起存储到服务器端。客户端用这个标志检查你的密码是否正确在你同步和浏览资料库之前。魔力标志是通过PBKDF2算法经过1000次迭代产生,所以它将非常安全抵抗蛮力破解。
为了最大安全性,纯文本的密码也不会保存在客户端。客户端只保存从“文件键”获得的键/值对,它用来解密数据。所以如果你忘记密码,你将不能恢复和访问服务器端的数据。
- 介紹
- 概览
- Seafile 组件
- 研发路线图
- 常见问题解答
- 修改日志
- 我要参与
- Linux 下部署 Seafile 服务器
- 部署 Seafile 服务器(使用 SQLite)
- 部署 Seafile 服务器(使用 MySQL)
- Nginx 下配置 Seahub
- Nginx 下启用 Https
- Apache 下配置 Seahub
- Apache 下启用 Https
- Seafile LDAP 配置
- 开机启动 Seafile
- 防火墙设置
- Logrotate 管理系统日志
- 使用 Memcached
- 使用 NAT
- 非根域名下部署 Seahub
- 从 SQLite 迁移至 MySQL
- 安装常见问题
- 升级
- Windows 下部署 Seafile 服务器
- 下载安装 Windows 版 Seafile 服务器
- 安装 Seafile 为 Windows 服务
- 所用端口说明
- 升级
- 从 Windows 迁移到 Linux
- 垃圾回收
- 部署 Seafile 专业版服务器
- 下载安装 Seafile 专业版服务器
- 从社区版迁移至专业版
- 升级
- Amazon S3 下安装
- OpenStackSwift 下安装
- Ceph 下安装
- 配置选项
- 文件搜索说明
- 集群部署
- 集群中启用搜索和后台服务
- NFS 下集群安装
- 常见问题解答
- 软件许可协议
- 服务器个性化配置
- ccnet.conf
- seafile.conf
- seahub_settings.py
- 发送邮件提醒
- 个性化邮件提醒
- 用户管理
- 存储容量与文件上传/下载大小限制
- 自定义 Web
- 管理员手册
- 账户管理
- 日志
- 备份与恢复
- Seafile FSCK
- Seafile GC
- WebDAV 和 FUSE 扩展
- WebDAV 扩展
- FUSE 扩展
- 安全选项
- 安全特性
- 日志和审计
- 开发文档
- 编译 Seafile
- Linux
- Windows
- Max OS X
- Server
- 开发环境
- 编程规范
- Web API
- Python API
- 数据模型
- 服务器组件
- 同步算法