分布式文件系统:Publius与FreeHaven的技术解析
立即解锁
发布时间: 2025-08-13 01:24:41 阅读量: 1 订阅数: 4 

# 分布式文件系统:Publius与Free Haven的技术解析
## 1. Publius系统概述
Publius是一个自2000年8月起就开始运行的系统,它由客户端软件和服务器软件组成。客户端软件是一个特殊的HTTP代理,能与任何标准的网页浏览器对接,负责处理所有Publius命令并与Publius服务器交互;而所有的Publius服务器都运行服务器软件。
### 1.1 操作流程
#### 1.1.1 检索操作
在检索文件时,Publius会利用URL中存储的MD5哈希值进行篡改检查。客户端会重新计算未加密文件和每个共享文件的MD5哈希值,如果计算出的哈希值与URL中存储的对应哈希值不匹配,就说明文件可能被篡改或损坏。此时,代理会丢弃加密文件和共享文件,尝试另一组加密文件和共享文件。若篡改检查成功,文件就会被发送到网页浏览器。若代理耗尽了共享文件和加密文件的组合,浏览器会显示一条消息,表明无法检索到该文件。具体操作步骤如下:
1. 客户端接收到Publius URL请求。
2. 代理根据URL中存储的信息,获取加密文件和共享文件。
3. 重新计算未加密文件和每个共享文件的MD5哈希值。
4. 将计算结果与URL中存储的哈希值进行对比。
5. 根据对比结果进行相应处理(如丢弃文件、发送文件到浏览器等)。
#### 1.1.2 更新操作
由于文件(尤其是网页)会随时间变化,为了解决链接旧Publius URL无法得知文件更新的问题,Publius支持更新操作。该操作允许文档发布者用新版本的Publius文档替换旧版本,同时保留旧URL。具体实现方式是将新的Publius URL存储在旧文件所在目录的“update”文件中。例如,当代理收到更新命令后,会联系存储文件的服务器(如www.nyu.edu),删除指定目录(如pubdir)中的旧文件和共享文件,并将新的Publius URL放入“update”文件。此后,当服务器收到对该目录中加密文件或共享文件的请求时,会发送“update”文件中的新Publius URL。若多个被查询的Publius服务器都返回相同的Publius URL,代理就会检索该新URL所引用的文档。为确保只有发布者能执行更新操作,发布操作允许指定密码,该密码的MD5哈希值会被附加到特定服务器的域名后存储在“password”文件中。更新操作步骤如下:
1. 发布者发起更新命令。
2. 代理联系所有存储该文件的服务器。
3. 服务器删除旧文件和共享文件。
4. 代理将新的Publius URL存储在“update”文件中。
5. 当有请求时,服务器返回“update”文件中的新URL。
6. 代理根据新URL检索文档。
#### 1.1.3 删除操作
Publius支持删除操作,只有发布者可以删除文档,且使用与更新操作相同的密码来确保只有发布者能执行该操作。为防止有人强迫发布者删除文档,Publius在发布操作中提供了“禁止删除”选项。不过,Publius服务器管理员仍可从自己的服务器上删除文档,但这些保护措施能防止单个人同时从所有服务器上删除Publius文件。删除操作步骤如下:
1. 发布者发起删除命令。
2. 代理联系所有存储该文件的服务器。
3. 服务器检查密码是否正确。
4. 若密码正确,服务器删除文件。
### 1.2 系统实现细节
#### 1.2.1 用户界面
网页浏览器界面允许用户选择Publius操作(删除、发布或更新),并输入操作所需的参数(如URL和密码)。每个Publius操作都绑定到一个特殊的“!publius!” URL,操作参数会通过HTTP POST请求的主体发送到相应的URL。代理会解析这些参数并执行相应的Publius操作,然后返回一个HTML消息,指示操作是否成功。若检索操作成功,请求的文档会在新的网页浏览器窗口中显示。
#### 1.2.2 服务器软件
要成为Publius服务器,需要在运行HTTP服务器的系统上安装Publius CGI脚本。客户端软件通过对与服务器CGI脚本对应的URL执行HTTP POST操作与服务器通信,请求的操作(检索、更新、发布或删除)、文件名、密码和其他所需信息会通过POST请求的主体传递给服务器。
#### 1.2.3 客户端软件
客户端软件由特殊的HTTP代理组成。该代理会透明地将非Publius URL发送到相应的服务器,并将返回的内容传递回浏览器。当收到Publius URL请求时,代理会按照前面所述的检索操作流程获取加密文档和共享文件,同时也处理删除、发布和更新命令。
#### 1.2.4 Publius MIME类型
由于Publius URL不保留所代表文件的扩展名,为了让浏览器正确解释代理发送的字节流,在发布文件之前,Publius会将文件扩展名的前三个字母添加到文件开头。当代理准备将请求的文件发送回浏览器时,会移除这三个字母的扩展名,并检查以确定文档的适当MIME类型,该类型会在HTTP Content-type头中发送。若三个字母的扩展名对确定MIME类型没有帮助,文本文件会使用默认类型“text/plain”,二进制文件会使用默认类型“octet/stream”。
### 1.3 Publius的特点总结
- **抗审查发布**:通过在大量服务器上存储加密文档和共享文件,部分实现了文档的抗审查发布。
- **篡改检查**:利用MD5哈希值对检索到的文档进行篡改检查。
- **可更新性**:支持文档更新,旧URL会自动重定向到新文档。
- **安全删除**:使用密码机制确保只有发布者能执行删除和更新命令。
- **匿名发布**:文档发布后无法直接将其与发布者关联,但可能存在间接识别机制。
- **抗分布式拒绝服务攻击**:即使大量服务器不可用,仍可检索到发布的文件。
## 2. Free Haven系统概述
Free Haven项目致力于设计一个匿名存储系统,以抵抗强大对手查找或破坏存储数据的企图。其目标包括以下几个方面:
|目标|描述|
|----|----|
|匿名性|为发布者、读者和
0
0
复制全文
相关推荐








