我没有提到的一个严重缺点是速度。
对称加密通常比非对称加密快得多。这通常很好,因为大多数人在他们的设计中都会考虑到这一点(例如,SSL只使用非对称加密来共享对称密钥和检查证书)。你将为每次登录做非对称(慢速),而不是加密散列(非常快)或对称加密(非常活泼)。我不知道它会影响性能,但它可以。
作为比较点:在我的机器上,AES对称流密码加密(aes-128 cbc)产生高达188255kB / s。这是很多密码。在同一台计算机上,使用带有512位密钥(不再用于签署SSL密钥)的DSA,每秒签名的峰值性能(可能与您的预期操作最接近)是每秒8916.2次操作。假设签名使用MD5大小的校验和,那么差异(大致)是千分之一。三个数量级。
这种直接比较可能不适用于您的情况,但我的目的是让您了解比较算法的复杂性。
如果您有加密算法,您更愿意使用或比较,并且您希望在系统上对它们进行基准测试,我建议对具有openssl构建的系统使用'openssl speed'命令。
您还可以使用旨在加速公钥加密操作的专用硬件来缓解这种担忧。
在回答您的具体问题方面,我主要关心的是私钥的管理,但鉴于它很好并且真的无法通过任何计算机系统漏洞访问,您在这方面已经很好地涵盖了。
我仍然质疑不使用哈希的逻辑 - 这听起来像是经典 YAGNI 。散列过程是确定性的,因此即使您决定将来迁移系统,只要您仍然可以使用相同的算法,您将获得相同的结果。就个人而言,我会选择一个强大的哈希算法,在每个帐户上使用加密强大的独特盐并完成它。
问题中没有足够的信息可以给出任何合理的答案。无论如何,因为你禁用填充,很有可能是本文中描述的攻击之一 “为什么教科书ElGamal和RSA加密是不安全的” D. Boneh,A。Joux和P. Nguyen适用。
当然,这只是一个疯狂的猜测。您的提案可能容易受到其他一些攻击。
就在线内容而言似乎足够安全,但是你已经充分考虑了离线存储。公司内部人员访问私钥的难易程度如何?如果贵公司内有人访问私钥,您怎么知道?私钥被破坏是多么容易(例如,安全的防火/防水,打印的密钥会随着时间的推移变得难以辨认等)。
您需要查看分离知识,双重控制,防篡改信封等内容。至少我认为您需要打印出两个数据字符串,这些数据在一起创建私钥然后在办公室中有一个在你的客户办公室,