我继承了一个与 Facebook 集成的 Rails 应用程序,并对从 Facebook 发送的令牌进行加密,并将其保存为用户的身份验证令牌。
由于各种原因,我最终更新了我的 Ruby,并且发生了一些 Gemfile 更改,这导致应用程序出现问题。最重要的是对 的更改attr_encrypted
,它通过encrypted
gem 处理保存到数据库中的 Facebook 令牌的加密。
attr_encrypted
问题是,该应用程序已经上线并且已经有很多用户,它的基本秘密加密密钥对于新更新的安全标准来说太短了。具体来说,当我现在尝试加密令牌时(目前在测试中;我还没有实时推送这些更改),会抛出一个错误,指出密钥需要为 32 个字节。
问题:
有没有人建议更新到更安全的令牌?如果我更改令牌,我假设这将破坏令牌的解密,因此我可能会永久失去读取/使用数据库中所有用户身份令牌的能力。这显然很成问题,所以我想在这里仔细检查一下我的想法。
我目前的想法是迁移:运行一个遍历每个身份的迁移,使用我的旧密钥解密存储的令牌,然后使用更长的新密钥保存新加密的令牌。
然后我可以毫无问题地摆脱旧钥匙。正确的?任何人都可以想到的关于attr_encrypted
gem 的特性或我可能没有考虑的一般加密问题的任何问题?