SPhinX password protocol
pwdsphinx的Python项目详细描述
sphinx:一个密码**s**从**i**tself
(**n**o**x**aggeneration)
pwdsphinx是libsphinx的python包装器-一个加密密码存储
,如https://eprint.iacr.org/2015/1099
[libsphinx](https://github.com/stef/libsphinx)。
您还需要使用操作系统包
管理器或pip安装"pynadium"。
如果您还想使用websphinx浏览器扩展,则还需要从gnupg项目安装一个x11版本的pinentry:
-要么"apt get install pinentry qt"
-要么"apt get install pinentry-gtk2"
-要么"apt get install pinentry-gnome3"
-要么"apt get install pinentry fltk"
(或者任何与操作系统上的"apt get install"等效的东西)
开始吧。
\api
`sphinxlib`是一个基于'ctypes'的python包装器,它围绕着[libsphinx](https://github.com/stef/libsphinx)运行,因此
您可以立即在python中构建任何您喜欢的内容。exposed接口对库中的3个sphinx函数进行如下包装:
````
def challenge(pwd)
`````
返回bfac和chal
`````
````def respond(chal,secret)
```
return the response
````
def finish(pwd,bfac,resp)
```
返回原始的32字节密码。
Pitchfork Sphinx
附带了一个PY3中实现的服务器,您可以从通常的桌面/智能手机上托管非现场
。此外,还提供了一个客户端,该客户端能够与服务器通信并管理密码。
客户端和服务器都可以通过以下任何文件进行配置:
-`/etc/sphinx/config`
-`/.sphinxrc`
-`/.config/sphinx/config`
-`./sphinx.cfg`
这意味着全局设置可以由每个用户和每个目录的设置覆盖。
\oracle-服务器
正在侦听,
默认值为"localhost"-您可能需要更改该值。
您可能希望不时将此目录备份到加密的
媒体。
`verbose`允许记录到标准输出。
`keydir`是服务器存储其密钥的目录,
用于向客户端签名消息。
根据需要更改这些设置。启动服务器
只需执行以下操作:
```
./oracle.py
````
配置为更改配置文件的`[client]`部分中的设置。"host"和"port"应该与您在服务器中设置的匹配。
datadir(默认值:` ~/.sphinx`)变量保存客户机参数的位置。特别是它包含一个salt(默认情况下
` ~/.sphinx/salt`),用于计算服务器上
机密的id,更重要的是它还包含一个密钥
(默认情况下:` ~/.sphinx/key`),用于对发送到服务器的每个消息进行签名,以授权操作在你的密码上。如果不可用,
salt和密钥都会自动生成。你可能要备份并加密salt和密钥。
\__授权
所有操作都由用于签名所有操作的文件(默认值:`/.sphinx/key`)
。您应该保护这个
文件,这样只有您才能对密码进行操作。
注意,没有列出"记录"的命令,因为服务器不包含任何有关其存储内容的文本信息。所有
操作都需要用户名和此密码所属的站点。
并在本例中提供类似
的参数:
```
echo'my master password'./sphinx.py create username https://example.com ulsd 0
````
然后
"username"代表网站"https://example.com"上的用户名,然后
字母"ulsd"和"0"的组合代表
最终密码的大小。字母"ulsd"代表以下字符类:'u'大写字母,'l'小写字母,'s'
符号和'd'代表数字。
实际上,您可以为不同的用户/站点组合使用不同的"主"密码。
https://example.com
```
这里再次提供标准输入的主密码,将
的"get"操作作为第一个参数,将"username"作为第二个参数,将"site"作为第三个参数。生成的密码在标准输出时返回。
命令如下:
```
echo'my master password'./sphinx.py change username https://example.com
````
此
主密码可以相同,但如果您也要更改主密码,则也可以是新密码。将change操作作为第一个参数提供给客户机,将username作为第二个参数,将site作为第三个参数。新密码将在标准输出时返回。
更改密码后,您将返回旧密码,在您使用
```
echo'my master password'./sphinx.py commit username https://example.com
````
您可以使用以下
命令:
````
./sphinx.py delete username https://example.com
````
此命令不需要标准输入上的任何内容,也不需要在标准输出上提供任何内容,以防一切正常。
(**n**o**x**aggeneration)
pwdsphinx是libsphinx的python包装器-一个加密密码存储
,如https://eprint.iacr.org/2015/1099
[libsphinx](https://github.com/stef/libsphinx)。
您还需要使用操作系统包
管理器或pip安装"pynadium"。
如果您还想使用websphinx浏览器扩展,则还需要从gnupg项目安装一个x11版本的pinentry:
-要么"apt get install pinentry qt"
-要么"apt get install pinentry-gtk2"
-要么"apt get install pinentry-gnome3"
-要么"apt get install pinentry fltk"
(或者任何与操作系统上的"apt get install"等效的东西)
开始吧。
\api
`sphinxlib`是一个基于'ctypes'的python包装器,它围绕着[libsphinx](https://github.com/stef/libsphinx)运行,因此
您可以立即在python中构建任何您喜欢的内容。exposed接口对库中的3个sphinx函数进行如下包装:
````
def challenge(pwd)
`````
返回bfac和chal
`````
````def respond(chal,secret)
```
return the response
````
def finish(pwd,bfac,resp)
```
返回原始的32字节密码。
Pitchfork Sphinx
附带了一个PY3中实现的服务器,您可以从通常的桌面/智能手机上托管非现场
。此外,还提供了一个客户端,该客户端能够与服务器通信并管理密码。
客户端和服务器都可以通过以下任何文件进行配置:
-`/etc/sphinx/config`
-`/.sphinxrc`
-`/.config/sphinx/config`
-`./sphinx.cfg`
这意味着全局设置可以由每个用户和每个目录的设置覆盖。
\oracle-服务器
正在侦听,
默认值为"localhost"-您可能需要更改该值。
您可能希望不时将此目录备份到加密的
媒体。
`verbose`允许记录到标准输出。
`keydir`是服务器存储其密钥的目录,
用于向客户端签名消息。
根据需要更改这些设置。启动服务器
只需执行以下操作:
```
./oracle.py
````
配置为更改配置文件的`[client]`部分中的设置。"host"和"port"应该与您在服务器中设置的匹配。
datadir(默认值:` ~/.sphinx`)变量保存客户机参数的位置。特别是它包含一个salt(默认情况下
` ~/.sphinx/salt`),用于计算服务器上
机密的id,更重要的是它还包含一个密钥
(默认情况下:` ~/.sphinx/key`),用于对发送到服务器的每个消息进行签名,以授权操作在你的密码上。如果不可用,
salt和密钥都会自动生成。你可能要备份并加密salt和密钥。
\__授权
所有操作都由用于签名所有操作的文件(默认值:`/.sphinx/key`)
。您应该保护这个
文件,这样只有您才能对密码进行操作。
注意,没有列出"记录"的命令,因为服务器不包含任何有关其存储内容的文本信息。所有
操作都需要用户名和此密码所属的站点。
并在本例中提供类似
的参数:
```
echo'my master password'./sphinx.py create username https://example.com ulsd 0
````
然后
"username"代表网站"https://example.com"上的用户名,然后
字母"ulsd"和"0"的组合代表
最终密码的大小。字母"ulsd"代表以下字符类:'u'大写字母,'l'小写字母,'s'
符号和'd'代表数字。
实际上,您可以为不同的用户/站点组合使用不同的"主"密码。
https://example.com
```
这里再次提供标准输入的主密码,将
的"get"操作作为第一个参数,将"username"作为第二个参数,将"site"作为第三个参数。生成的密码在标准输出时返回。
命令如下:
```
echo'my master password'./sphinx.py change username https://example.com
````
此
主密码可以相同,但如果您也要更改主密码,则也可以是新密码。将change操作作为第一个参数提供给客户机,将username作为第二个参数,将site作为第三个参数。新密码将在标准输出时返回。
更改密码后,您将返回旧密码,在您使用
```
echo'my master password'./sphinx.py commit username https://example.com
````
您可以使用以下
命令:
````
./sphinx.py delete username https://example.com
````
此命令不需要标准输入上的任何内容,也不需要在标准输出上提供任何内容,以防一切正常。