Tripcode
Tripcode是一种认证方式,主要用于匿名留言板或没有用户注册系统的留言板,如日本的2ch、2chan、美国的4chan、台湾的Komica等。Tripcode是通过杂凑演算法产生的。
概述
由于系统不提供(或不需要)用户注册,所以任何人均可以使用同一用户名留言。为了区分同一用户名的不同使用者,可在用户名后加入一个唯一的识别码(详细的产生方法见下文)。所产生的识别码被称为“帽子(英语:cap,日语:キャップ)”,而Tripcode这个字的来源就是日语的‘1人用(ひとりよう)キャップ’(中文:一人用帽子),取其中とり及ップ合成了日语トリップ即英语Trip这个字。
表示方式
一般来说,一个Tripcode通常包含一个用户名、一个已加密的密码以及一个分隔两者的符号。输入时只需在用户名的一个格内填入用户名、指定的分隔符 、以及用户自定义的密码。
显示留言的时候,通常以“用户名◆已加密的密码”这种格式表示。分隔符起了两种作用:正常情况下只是用来分隔用户名和密码,并显示为◆;或表明伪造的用户名,此时则显示成◇。
以下是一些例子
:例 | 输入 | 输出 |
---|---|---|
1 | Hello#World | Hello◆4gxleYp5e2 |
2 | Big#World | Big◆4gxleYp5e2 |
3 | Hello#abc | Hello◆hghTE2MlOA |
4 | Hello◆4gxleYp5e2 | Hello◇4gxleYp5e2 |
产生方法
一般的做法是对用户输入的密码进行杂凑演算,例如MD5或DES演算法。其中用户密码只取前8位以防止过长的密码使演算法占用太多时间。然后再于杂凑演算时加入盐(salt),而盐是由系统管理员指定或随机产生的,目的是为了加强加密的随机性。最后与用户名合并并显示出来。
使用上的注意
由于使用了不可逆的杂凑演算来处理用户输入的密码,除了用户本身外其他人无法得知原本的密码,而系统一般都不对原本的密码进行记录,适合于作为个人识别用途。然而由于密码本身经过删减及处理,加密后的密文亦只得10位穷举法的碰撞率大约为254分之一,使用一般的个人电脑 需要约30万年时间来算出相同的trip,虽然如此但仍不能否定它的存在。Tripcode的唯一性与理论并不相符。
,理论上将可能发生“碰撞”,即不同的密码能产生相的tripcode。使用加长tripcode的长度、改用更强的杂凑演算方式能减少碰撞率,相应地用于计算tripcode的时间则会增加。
然而字典攻击对于一些系统还是凑效的,例如只包括数字的密码只需3小时就能算出与之有相同tripcode的密码。但同时使用salt进行加密则可避免此等攻击。一组只存于系统内部的salt比一组用户能够简单取得的salt更安全 。由于不同的留言板使用了不同的salt甚至不同的演算法,用户很难在不同的板区内使用相同的一组上显示名称。例如上例的第一行在板A显示为Hello◆4gxleYp5e2,在板B以同一组密码输入,显示的结果可能为Hello◆p89aJg1afk。
如同普通密码一样,使用大小混合和加入各式符号的密码亦能增加安全性。
衍生物
一些系统为了更进一步的分辨留言板的用户,系统会对其IP进行类似tripcode的运算。此做法是基于用户不希望IP被直接公开,由IP加密后的密文依然存有唯一性。相对于用户名的tripcode而言,一组特定的算法可以肯定由IP加密后的密文的理论上的唯一性。