您的位置:首页 > 教育 > 锐评 > 佛山seo网站优化_疫情防控政策优化_百度直播_沧州seo推广

佛山seo网站优化_疫情防控政策优化_百度直播_沧州seo推广

2024/10/6 10:36:18 来源:https://blog.csdn.net/chen1415886044/article/details/142616467  浏览:    关键词:佛山seo网站优化_疫情防控政策优化_百度直播_沧州seo推广
佛山seo网站优化_疫情防控政策优化_百度直播_沧州seo推广

TOTP(基于时间的一次性密码)是一种广泛使用的多因素认证技术,它通过算法生成一个与时间相关的一次性密码,通常每30秒或60秒更换一次。这种密码在你输入后会失效,因此即使有人截获了密码,他们也无法在下一次登录时使用它,从而大大增加了账户的安全性。

TOTP的工作原理

  1. 密钥共享:用户和服务器之间共享一个密钥,这个密钥通常是一个Base32编码的字符串。
  2. 时间同步:用户设备和服务器需要时间同步,以确保生成的密码一致。
  3. 时间步长:TOTP使用固定的时间步长,通常是30秒。
  4. 密码生成:在每个时间步长结束时,使用共享密钥和当前时间生成一个6位或8位的密码。

TOTP的安全性

  • TOTP算法基于HMAC(Hash-Based Message Authentication Code)算法,确保生成的密码具有高安全性。
  • 使用哈希函数(如SHA-1、SHA-256和SHA-512)来增强密码的复杂度。
  • 由于密码是时间敏感的,即使密码被截获,攻击者也很难在有限的时间内使用它。

TOTP的应用场景

  • 多因素认证:用于网站和应用程序的多因素认证,提高账户安全性。
  • 银行和金融服务:用于生成动态密码,保护交易安全。
  • 虚拟私人网络(VPN):用于VPN连接的二次验证,防止未授权访问。
  • 智能卡和令牌:TOTP算法被集成在智能卡和硬件令牌中,提供额外的安全层。

如何使用TOTP

  1. 选择身份验证器工具:可以使用专门的手机应用或密码管理程序。
  2. 从账户申请密钥:登录账户并找到安全设置,请求二维码。
  3. 扫描二维码:使用手机应用扫描服务器提供的二维码。
  4. 登录时输入验证码:在登录时输入身份验证器工具上显示的当前验证码。

使用TOTP可以为你的账户提供一层额外的安全保护,即使在大规模数据泄露和其他网络攻击中,也能保护你的账户不被未授权访问。

如何使用TOTP进行SSH登录认证(C/C++代码实现)

SSH登录的可选认证码TOTP(基于时间的一次性密码,Time-based One-Time Password)提供了一种额外的安全措施,与Google Authenticator移动应用兼容。这种认证方式基于Richard Taylor的Ruby实现。

这段代码是一个用于验证一次性密码(HOTP,基于时间的一次性密码)的程序。它通常用于SSH登录验证。

...int b32decode(const char *s, unsigned char *b)
{int i;memset(b, 0, 10);for (i = 0; i < 16; i++) {unsigned char x;if (isalpha(s[i])) {x = toupper(s[i]) - 'A';} else if (s[i] >= '2' && s[i] <= '7') {x = s[i] - '2' + 26;} else {return 0;}
...}return 1;
}void hotp(const unsigned char *sbytes, time_t movingFactor, char *code)
{unsigned char data[8];int i, offset, bin_code, otp;for (i = 0; i < 8; i++) {data[i] = i < 4 ? 0 : movingFactor >> (56 - 8*i);}unsigned char *r = HMAC(EVP_sha1(), sbytes, 10, data, sizeof(data), NULL, NULL);offset = r[19] & 0xf;bin_code = ((r[offset] << 24) | (r[offset+1] << 16) | (r[offset+2] << 8) | r[offset+3]) & 0x7fffffff;
...
}void proceed()
{if (getenv("SSH_ORIGINAL_COMMAND") != NULL) {execl("/bin/sh", "/bin/sh", "-c", getenv("SSH_ORIGINAL_COMMAND"), NULL);} else {execl(getenv("SHELL"), "-", NULL);}
}int main(int argc, char *argv[])
{
...input = getenv("OTP_TOKEN");if (!input || strcmp(input, "") == 0) {input = getpass("Enter the validation code: ");if (input == NULL || strlen(input) != 6) {fprintf(stderr, "Invalid\n");exit(1);    }}if (!b32decode(argv[1], sbytes)) {exit(1);}now = time(NULL);for (i = 0; i <= MAX_SKEW; i++) {hotp(sbytes, now / 30 + i, code);if (strncmp(input, code, 6) == 0) {proceed();}hotp(sbytes, now / 30 - i, code);if (strncmp(input, code, 6) == 0) {proceed();}}fprintf(stderr, "Invalid\n");return 1;
}

If you need the complete source code, please add the WeChat number (c17865354792)

运行程序: 使用以下命令运行程序(假设程序编译后的名称为ssh-hotp-auth):

./ssh-hotp-auth MFRGGZDFMZTWQ2LK

如何使用TOTP进行SSH登录认证

要使用TOTP进行SSH登录认证,您需要使用SSH密钥。您需要修改authorized_keys文件,添加一个command=参数:

command="/usr/bin/ssh-hotp-auth 4rr7kc47sc5a2fgt" ssh-dsa AAA...

请根据您的实际情况调整ssh-hotp-auth的路径。

这里的4rr7kc47sc5a2fgt是一个密钥,您需要自己生成(显然,不要使用这个示例密钥)。如果您愿意,可以在random.org生成一个新的随机密钥,或者使用您信任的任何其他方法。密钥是一个16个字符的Base32字符串(a-z2-7),所以如果您使用random.org,可以替换掉0、1、8和9以外的任何字母或数字。

如何配置Google Authenticator移动应用

要配置您的Google Authenticator移动应用,请按照以下步骤操作:

  1. 打开Google Authenticator应用。
  2. 添加一个新条目。
  3. 使用与SSH服务器相同的密钥。

确保您的移动设备上的时钟与SSH服务器的时钟同步。

总结

使用TOTP的好处在于它提供了一种动态的、一次性的密码,每次生成的密码只能使用一次,这大大增加了登录的安全性。即使有人窃取了您的密码,如果没有当前的TOTP,他们也无法登录。

此外,TOTP与Google Authenticator等移动应用兼容,使得您可以方便地在移动设备上生成和使用一次性密码。

We also undertake the development of program requirements here. If necessary, please follow the WeChat official account 【程序猿编码】and contact me

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com