📄 rfc2228.txt
字号:
可选安全协议对双方是可用的,双方的安全数据交换中必须包含足够多的信息。例
如如果客户端不支持数据加密,服务器必须能意识到,因此它不会发送加密的命令
回应。为确保命令不被删除,改变顺序或重发,在此强烈建议在安全机制中加入命
令信道序列化功能。
ADAT 命令必须在 AUTH 命令执行成功后发出,并且在安全数据交换完成之后
(无论交换成功与否)不能被使用,除非又在此后使用 AUTH 命令使服务器返回初
始安全状态。
如果服务器没有收到 AUTH 命令,或当安全数据交换完成而服务器的安全状态
还没有用 AUTH 命令复位时,它应返回回应码 503 。
如果服务器不能解码由base 64 编码的参数,它应返回回应码 501。
如果服务器拒绝客户端传来的安全数据(例如校验和错误),它应返回回应码
535 。
如果服务器接受了安全数据,并且还需要额外的安全数据,则它应返回回应码
335。
如果服务器接受了安全数据,但不再需要任何额外数据的话(例如,安全数据
交换成功结束),它必须返回回应码 235。
如果服务器返回的回应码是 235 或 335 时,那么在它回应的正文部分会包含
如上所述的安全数据。
如果 ADAT 命令返回错误,安全数据交换将失败,则此时客户端必须复位其内
部的安全状态。如果客户端变得与服务器端不同步时(例如,当服务器返回一个由
AUTH 命令产生的回应码 234 时,但客户端此时还有更多的数据要传送),客户端必
须使服务器端的安全状态复位。
保护缓冲区尺寸(PBSZ)
此命令的参数是一个十进制整数,它表示在文件传输期间,能够发送或接收的
编码数据块的最大字节数。此数值不能超出一个32位无符号整数所能表示的范围。
此命令允许客户端和服务器端为连接而协商一块最大的保护缓冲区。此缓冲区
没有默认值,在客户端能使用 PROT 命令前必须先使用 PBSZ 命令。
PBSZ 命令必须在安全数据交换成功完成之后发出。
如果服务器端不能从语法上解析 PBSZ 命令的参数,或它不适应32位的二进制
值,它应返回回应码501。
如果服务器端还未完成与客户端的数据交换,它应返回回应码503。
否则服务器端必须返回回应码200。如果客户端所提出的缓冲区尺寸对服务器来
说过大,它必须在回应的正文中用“PBSZ=数值”形式的字符串指明一个小一些的缓
冲区尺寸。此时,客户端和服务器端必须使用那个较小的数值作为缓冲区尺寸值。
数据信道防护等级(PROT)
此命令参数是描述数据信道防护等级的一个由Telnet协议规定的字符代码。
此命令指示服务器,客户端与服务器端之间将使用哪种类型的数据信道保护。
如下代码被指定:
C - Clear
S - Safe
E - Confidential
P - Private
如果其他等级没有被指定,则默认等级是 Clear 。Clear 防护级指数据信道将
传送文件的原始数据,既此文件未经任何安全处理。Safe防护级指数据将使用数据
完整性机制加以保护。Confidential 保护级指数据将使用保密机制保护。Private
保护级指数据将同时使用数据完整性机制和和保密机制加以保护。
某一安全机制可以不必提供以上所有的数据信道防护等级。当然它也可以在某
一防护等级提供比要求中更多的数据保护机制(比如,某安全机制提供保密保护机
制,但由于API(应用程序编程接口)或其他方面的考虑,又在编码过程中加入了数
据完整性保护机制。
PROT 命令必须在客户与服务器双方商定保护缓冲区大小后才能发出。
如果服务器不理解 PROT 命令中指定的防护等级,它应返回回应码504。
如果当前安全机制不支持指定的防护等级,服务器返回回应码536。
如果服务器还未与客户端完成关于保护缓冲区尺寸大小的协商,它应返回回应
码503。
如果以前客户端从未发出过 PBSZ 命令,则客户端发出的 PROT 命令将被服务
器拒绝,同时返回回应码503。
如果服务器不愿接受指定的防护等级,它应返回回应码534。
如果服务器不能够接受指定的防护等级,例如如果某一所需资源不可用,它应
返回回应码431。
否则,服务器必须返回回应码200以表明它接受了客户端指定的防护等级。
清空命令信道(CCC)
此命令无参数。
某些环境下使用某一安全机制认证及核准客户端和服务器端,但不对随后的命
令进行任何完整性检查,这种做法是可取的。它将会被使用在如下的环境中,在此
环境中的IP层安全将不被忽视,以此确保主机身份被完全确认,并且TCP协议数据
流不被干扰,而在此环境中用户身份认证还是要求的。
如果在任何的连接过程中的命令未受保护,攻击者就能在控制数据流中插入某
一命令,而服务器将没有办法知道它是无效的。为了防止此类攻击,一旦安全数据
交换成功完成,如果安全机制支持数据完整性保护,那么此完整性保护功能(通过
MIC 或ENC 命令和相应的回应码631,或632来实现)必须被使用,直到使用CCC 命
令使命令信道失去对消息的完整性保护功能。CCC 命令本身必须在完整性保护之下
使用。
当CCC命令执行成功后,如果某一发出的命令不被完整性机制保护,那么对此
命令的回应也必定不被完整性机制保护。因为客户端发出CCC命令后将不再支持数
据完整性保护,由此显然此举是为支持客户端与服务器端的互操作性的
(interoperability)。
此命令必须在安全数据交换成功完成之后使用。
如果此命令没有在完整性机制保护之下使用,服务器端必须返回回应码533。
如果服务器不愿关闭完整性保护功能,它应返回回应码534。
否则,服务器必须返回回应码200以表明命令信道上将传送没有保护的命令及
回应。
数据完整性保护命令(MIC)和
保密性保护命令(CONF)和
私密性保护命令(ENC)
MIC命令的参数是一些Telnet协议中规定的字符串,此字符串是由经过base64
编码的‘安全‘信息构成,而此安全信息则由安全机制中专门进行信息完整性保护
的过程所产生。 CONF命令的参数是一些Telnet协议中规定的字符串,此字符串是
由经过base64编码的‘保密‘信息构成,而此安全信息则由安全机制中专门进行保
密性保护的过程所产生。 ENC命令的参数是一些Telnet协议中规定的字符串,此字
符串是由经过base64编码的‘私密‘信息构成,而此安全信息则由安全机制中专门
进行信息完整性保护和保密性保护的过程所产生。
服务器端将解码及校验这些经base 64 编码的信息。
这些命令必须在成功进行安全数据交换后才能使用。
某服务器可能会要求CCC命令是在成功进行数据交换后使用的第一个命令,而
在此命令使用之前全然不会理睬如上的保护性命令,此种情形下,服务器端应返回
回应码502。
如果服务器不能解码由base64方式编码的命令参数,它应返回回应码501。
如果服务器还未完成与客户端的安全数据交换,它应返回回应码503。
如果服务器在某一支持数据完整性保护的安全机制下完成了与客户端的安全数
据交换,但由于策略或某些机制实现方面的限制,它还需要收到一个CCC命令,它
应返回回应码503。
如果服务器因不支持当前的安全机制而拒绝此命令的话,它应返回回应码537。
如果服务器拒绝接受此命令(例如校验和错误),它应返回回应码535。
如果服务器不愿接受此命令(例如,由某些策略决定的私密性,或者是在收到
CCC命令之前先收到了一个CONF命令),它应返回回应码533。
否则,此命令将被作为FTP协议命令所解释。命令行上不需要包含有行结束码,
但某命令行包含了行结束码,则它必须是 Telnet协议中规定的行结束码,而非本地
(local)的行结束码。
某些情况下或是任何可能情况下,服务器会要求所有命令被保护。这样除了
MIC,CONF,和ENC命令外,它应对其它命令返回回应码533。
4.登录核准
安全数据交换会在其它事情进行的同时以一种安全方式确立客户端对于服务器
端的唯一性身份,此身份将被用于用户的登录核准。
为回应FTP客户端的登录命令(AUTH ,PASS,ACCT),服务器会改变某些如[RFC959]
中所述的命令及回应顺序。以下也有一些新的可用的回应码。
如果服务器愿意准许由USER命令指定的基于安全数据交换确立的具有唯一性的
用户登录,它应返回回应码232。
如果安全机制要求 质询/回应(challenge/response ) 式的口令输入,它应
对USER命令回应336。回应的正文部分应包括质询信息。在此情况下,客户端在提
示用户输入口令之前必须将质询信息显示给用户。这一过程对于复杂的或某些提供
对话框或其它输入方式的图形用户界面的客户程序来说是尤其适宜的。用户有时可
能需要用回应336中正文部分的质询信息来构造有效口令。因此这些客户程序应避
免在将用户名发给服务器端之前就提示用户输入口令。
5.新的FTP回应码
新的回应码被分为两类。第一类是新的FTP安全扩展命令所必需的。第二类指
明被保护的回应的一种新的回应码。
5.1 新的独有的回应码
232 User logged in, authorized by security data exchange.
234Security data exchange complete.
235 [ADAT=base64数据]
;此回应指明安全数据交换成功结束。方括号不在此回应内容
;中,它只指明回应中的安全数据是可选的。
334 [ADAT=base64数据]
;此回应指明客户端所请求的安全机制可用,并且包含了客户
;端发出下一个命令时所需要的安全数据。方括号不在此回应
;内容中,它只指明回应中的安全数据是可选的。
335 [ADAT=base64数据]
;此回应指明服务器端接受客户传来的安全数据,并且还需要
;额外的安全数据来完成数据交换。
;方括号不在此回应 内容中,它只指明回应中的安全数据是
;可选的。
336 Username okay, need password. Challenge is " (用户名通过,需要口
令。质询是)
;安全机制所选取的质询内容所代表的含义对系统的使用者来说
;应该是有实际意义的(sensible)。
431 Need some unavailable resource to process security.
( 某些相关资源不可用。)
533 Command protection level denied for policy reasons.
(由于策略方面的原因,命令保护等级被拒绝。)
534 Request denied for policy reasons.
(由于策略方面的原因,请求被拒绝。)
535 Failed security check (hash, sequence, etc).
(安全检查失败,(哈希,顺序,或其它的方式))
536 Requested PROT level not supported by mechanism.
(安全机制不支持请求的保护等级。)
537 Command protection level not supported by security mechanism.
(安全机制不支持命令保护等级化。)
5.2 保护回应
一种新的保护回应介绍如下:
6yz Protected reply
有三种此种类型的回应码。第一个回应码631指明一个受到数据完整性保护的
回应。第二个回应码632指明一个受保密机制及数据完整性机制保护保护的回应。
第三个回应码633指明一个受保密机制保护的回应。
回应631的正文部分是一些Telnet协议中规定的字符串,此字符串是由经过
base64编码的‘安全‘信息构成,而此安全信息则由安全机制中专门进行信息完整
性保护的过程所产生。 回应632的正文部分是一些Telnet协议中规定的字符串,
此字符串是由经过base64编码的‘私密‘信息构成,而此安全信息则由安全机制中
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -