【发布时间】:2019-11-20 23:29:55
【问题描述】:
我正在使用“sonata-project/google-authenticator”库。它允许我生成如下二维码:
$g = new \Google\Authenticator\GoogleAuthenticator();
$salt = 'XJDDJKSLJNASDJNASDASDASD';
$secret = $uid.$salt;
$url = $g->getURL($uid, 'coinula.com', $secret);
我的问题是:
- 我提供的秘密,就是这些家伙向用户展示的秘密吗?那么这个秘密就是“全局”密钥,而二维码只是这个代码的图片版本?
- 我是否应该存储秘密并将其安全地放在我身边?或者是用户应该能够写下并决定是否要保留它的东西。 IE。对我来说,秘密的目的是不是为了存储它?或者有什么理由我必须保存它?
【问题讨论】:
-
秘密,无论它在用户和服务器之间如何共享,都是 TOTP 算法的关键加密组件。它需要每个用户都是唯一的,理想情况下与用户的已知信息不直接相关(例如随机)。 GA 应用程序根据算法、位数和时间间隔(对于 GA,始终为 6 和 30 秒)计算代码,您的服务器必须生成并与之进行比较(使用密钥、数字和时间间隔)