模板:User committed identity
模板参数
[编辑源代码]无描述。
参数 | 描述 | 类型 | 状态 | |
---|---|---|---|---|
散列数值 | 1 | 无描述 | 未知 | 必需 |
散列函数 | 2 | 无描述
| 未知 | 推荐 |
背景颜色 | background | 无描述
| 未知 | 可选 |
border | border | 无描述 | 未知 | 可选 |
边框阔度 | border-width | 无描述
| 未知 | 可选 |
extra-style | extra-style | 无描述 | 未知 | 可选 |
冠词 | article | 无描述
| 未知 | 可选 |
模板说明
[编辑源代码]{{User committed identity
|散列值
<!-- 必填:設定一串亂碼,可以用中英文、數字和英式標點符號等字符 -->
|散列函数 <!-- 選用:預設為SHA-512 -->
|background= <!-- 選用:背景HTML色彩 -->
|border= <!-- 選用:邊框HTML色彩 -->
|article= <!-- 選用:用其他冠词取代“一份”-->
|border-width= <!-- 選用:框闊度:預設為1-->
}}
示例如下:
{{User committed identity|cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e|SHA-512|background=#E0E8FF|border=#aaa|article=一个|border-width=5}}
解说
[编辑源代码]本模板提供一种方法,当此模板安置以后,将用来证明操作账户的是您本人。加密密钥放置在您的用户页之后,万一发生账户遭到盗用的情况,将可以用来使其他人相信您是该用户名的真实持有者。
为何需要?
[编辑源代码]本模板的预期作用是用来帮助账号遭窃取的人,但愿这种事情不会发生。
如果你用自己的账号公开了真实身份,而如果账号被盗你的身份就可以用来和你的朋友重新创建联系。需要记住的是,这种情况下你并不能通过自己的帐号和朋友创建联系,因为账号可能被他人控制了。但是,一些维基百科的用户并没有透露自己的真实身份或只透露了一点点,这就很难重新证明自己的身份。
除了拥有一个强力密码或为你的账号注册电子邮箱地址外,并没有什么可替代的方法。你仍应尽自己所能来防止账号被利用,包括使用强力密码及使用公共电脑时记得退出账号。如果你能做到的话,公开自己的PGP公钥也是有一定用处的。但是即使你做得再好,账号仍然有可能被盗,如通过特洛伊木马或对你的密码进行暴力破解。使用这个模板就可以为你留下最后一线希望。
如何利用
[编辑源代码]本模版主要的概念是使用密码散列技术。您需要先选择一个只有本人知道的密码字符串,再经由单向的密码散列功能编译这个密码字符串以得到一组乱码,最后使用此模板公开此编译好的密码字符串。由于密码散列技术保证没有一个人会轻易地将乱码解译回自设的密码字符串,因此,未来当遇到账号被泄漏等不幸事件时,如果您可以提供原先的密码字符串,且此密码字符串经过相同密码散列算法处理后与您之前提供的散列值相等,您即可十分有力的证明您是此散列字符串的提供者。
选择合适字符串
[编辑源代码]- 你所使用的字符串应该不容易猜测。如果你并没有公开自己的真实身份,那么任何和你真实身份有关的字符串都会是好的字符串。如果你曾经公开过自己是谁,你就需要用更多不容易被猜到的信息。如果你使用的字符串容易被猜到,那么别人也可能会知道你的字符串是什么。
- 你的字符串应该和你的身份有一定关系。如果这个字符串被人知道,你也可以明白地证明你和这个身份的关系。例如,你的字符串可以包括你能拿到的电话号码和邮箱地址。
- 不要选择很快就不能证明你身份的字符。例如,当你可能要换电话号码时将现有的号码作为字符串就是一个不好的选择。
- 如果你想更换字符串,那就换吧。但你应该追溯自己作为密码使用过的老字符串。如果你想进一步证实自己的身份,最好把它们全部公开。这就可以证明你是从这个身份一公开就使用自己账号的同一个人。
- 你的字符不应该太短:至少要有15个字符。一个精心的攻击者会使用暴力破解来尝试所有字符,直到他们猜到你用的字符串为止。但如果你的字符串足够长,攻击也要花费更长的时间。如果你的字符串达到15个字符,同样长度的字符串会有1027个,也就是1千秭(这还只计算了只带空格和字母的字符串)。
- 对于类 UNIX 系统用户,使用 /dev/urandom 之类的随机文件 dd 截取一部分
dd if=/dev/urandom of=目标文件 bs=4096 count=1
并且保存妥当也是不错的选择。考虑到内容的杂乱性,这样的字符串最好 base64 后发送给验证者让验证者解密再验证或者干脆直接以文件形式发送。dd
在经过root的Android中安装的Busybox里一般也可以找到,将命令中dd
替换为busybox dd
即可使用。 - 如果你有一套 PGP 系统,例如 GnuPG,您也可以使用公钥指纹,并将公钥放在用户页的子页面处,按照#使用PGP的方法进行验证。
获取散列
[编辑源代码]如果你需要在日后使用,确定你输入模板里的是“精确的字符串”。字符串容易让自己记住,又很难被人猜出很重要。如果攻击者知道这个字符串,那么这个功能就是没有用的。用户名是公开的也容易猜到,而密码也不是好的选择,因为在多数账号被盗的事件中,密码多数已经被猜到了。
- OS X/Linux/Android:在类unix的系统中,GNU核心工具组和常常用于微型系统以及Android的Busybox都提供了
sha224sum
、sha256sum
、sha384sum
和sha512sum
的程序(sha1sum
、md5sum
甚至更差的杂凑极度不建议使用,Busybox 的用法为busybox 内置命令名 命令参数
)。这套工具的使用较为简单,可以直接输入命令,键入字符(标准输入),最后换行后 Ctrl-D 结束输入(EOF)。由于最近的密码学研究已经对使用SHA-1的长期可靠性提出了质疑,一般推荐使用SHA-256(224) 或 SHA-512(384);使用几个散列值对同一份信息进行验证也可能是不错的解决方案。如果没有指定参数,这个模板默认情况下使用SHA-512进行加密。如果你并没有 GNU 核心工具或 GnuPG,也可以使用openssl sha512 (流/文件名)
一类的参数以便用 OpenSSL 的命令行工具或直接用HashCalc来获取hash值。为了安全,最好只用本地的可执行程序或客户端执行的JavaScript来创建hash值。
- Windows 下可以用 PowerShell 执行如下代码获取杂凑字段:
[bitconverter]::tostring((new-object security.cryptography.sha512managed).computehash([text.encoding]::utf8.getbytes("用户信息确认串"))).replace("-", "")
- 线上方式:通过这个网站可以在线获取杂凑。输入字符串后点击
Convert file
后便可生成几组杂凑字符串,其中第一组字符串即标注着hex:
的字符串便是你所需要的 SHA-512 杂凑。
使用
[编辑源代码]如果要向别人提交自己的身份并证明自己就是最初开始使用这个账号的人,把最早用来计算的准确密码串交给一个可靠的用户。他们可以用相同的字符串计算得到适当的hash值,并证明你就是自己宣称的那个人。
一旦你证明了自己的身份并创建了新的账号或获得原始账号的控制权,你可能要重新创建一个hash值,并将密码串告诉某个人(可能很多人相信他且你曾经告诉过他密码串)。
使用PGP
[编辑源代码]对于一个 PGP 密钥,需要证明您能够使用所提供公钥对应的私钥,且需要一定时效性保证。PGP 程序的使用方法请参考GPG。
声明所有权
[编辑源代码]PGP 可以对一个消息进行有时间戳的签名,因此可以有效证明身份。
对于类UNIX系统用户,可以使用以下命令生成签名(将 ${USERNAME}
换成用户名,${DATE}
换为出现异常行为的日期:)
echo "此处我(依照 PGP uid 所示的用户)在此声明账号${USERNAME}为我所有,且于${DATE}开始被盗用。" | gpg --clearsign
PGP 的签名中会带有时间戳,因此并不一定需要指定时间($(date)
)。
如果您使用Windows,可以创建一个类似内容的文本文件,或者通过Cygwin等环境处理。
接下来可以将生成的信息通过电邮发送。
验证消息
[编辑源代码]如果您之前并没有交换过公钥,可使用 gpg --import
或类似命令导入,但请务必检查这个公钥与被盗用日之前所提供的公钥指纹匹配。
接下来您可以使用 gpg --verify
或类似功能进行校验。请务必确认签名时间正常。除此之外,您也可以每次都额外要求声明者签名您所指定的随机字符串给您,来保证安全性。
上述文档嵌入自Template:User committed identity/doc。 (编辑 | 历史) 编者可以在本模板的沙盒 (创建 | 镜像)和测试样例 (创建)页面进行实验。 请在/doc子页面中添加分类。本模板的子页面。 |