# 安全機制
### 客戶端和服務器間的通信加密
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
- 數據模型
- 服務器組件
- 同步算法