最近公司新上了堡垒机,为了安全起见,除了密码之外还需要使用`Google Authenticator` 生成一个6位数字来做认证。作者想起此前也接触过类似的东西,例如银行给的硬件令牌,某些网游使用物品时需要输入6位数字解锁,阿里云的虚拟MFA等。作者对此感到好奇想探究其后如何产生作用。根据一些搜索关键词以后得到了 `双因素(2FA)认证` 一词,以下简称为2FA,本文将讲解2FA的概念以及算法实现。
与银行的交互中为了保证数据保密以及防止数据篡改,通常使用RSA非对称加密算法对数据进行加密和签名,现在也因为安全监管的要求,开始使用SM2算法。对接过程中发现对密钥的生成,存储和读取有很多不解的地方,该文用于记录遇到的相关问题。文中只会涉及到openssl以及Java security库的简单应用