标签: encryption-symmetric

加密密钥轮换到底是如何工作的?

加密密钥轮换到底是如何工作的?我知道出于安全目的不断轮换加密密钥是一个非常好的做法,但轮换密钥需要太多工作。

案件:

假设我有一个存储 30GB 数据的数据库,我们使用内部密钥来加密静态数据,并且我计划每月轮换我的密钥。

问题:

  1. 这是否意味着我的所有数据每月都会用旧密钥解密并用新密钥重新加密?
  2. 整个加密解密将花费大量的时间和计算资源。
  3. 如果我的数据库(或任何加密数据集)明天扩展,这是否意味着当我的密钥轮换时相同的过程会重复?这看起来不像是一个可扩展的解决方案。

其他详情:

  1. 我还看到,如果我们选择了轮换选项,AWS KMS 就会轮换其密钥。AWS 如何设法轮换所有底层服务的密钥和所有加密数据?

security encryption encryption-symmetric amazon-web-services amazon-kms

19
推荐指数
3
解决办法
1万
查看次数

C#加密到PHP解密

我正在尝试在C#中加密一些(cookie)数据,然后在PHP中解密它.我选择使用Rijndael加密.我几乎让它工作,除了只有部分文本被解密!我从这个例子开始工作:用C#解密PHP加密字符串

这是我正在加密的文本(JSON)(删除了敏感信息):

{"DisplayName":"xxx", "Username": "yyy", "EmailAddress":"zzz"}
Run Code Online (Sandbox Code Playgroud)

所以我登录到C#app,它从存储的Key和IV创建/编码cookie,然后重定向到应该解密/读取cookie的PHP应用程序.当我解密cookie时,它出现如下:

{"DisplayName":"xxx","F?A ;??HP=D???????4??z????????k?#E???R?j?5?\?t. t?D??" 
Run Code Online (Sandbox Code Playgroud)

更新:我已经进一步了,这就是结果

string(96) "{"DisplayName":"xxx","Username":"yyy","EmailAddress"?)???-?J??k/VV-v? ?9?B`7^" 
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,它开始解密它,但后来搞砸了......

当解密字符串时它出来是正确的(使用填充,我有一个删除填充的函数),但如果我将测试字符串改为一个字符,我会再次得到垃圾:

B?nHL?Ek    ?¿??U?lO????O??M??NO/?f.M???L??CC?Y>F??~?qd?+
Run Code Online (Sandbox Code Playgroud)

这是我用来生成随机密钥和IV的c#代码:

更新:我现在只使用静态键/ IV,它们是:

Key: lkirwf897+22#bbtrm8814z5qq=498j5
IV: 741952hheeyy66#cs!9hjv887mxx7@8y
Run Code Online (Sandbox Code Playgroud)

RijndaelManaged symmetricKey = new RijndaelManaged();
symmetricKey.BlockSize = 256;
symmetricKey.KeySize = 256;
symmetricKey.Padding = PaddingMode.Zeros;
symmetricKey.Mode = CipherMode.CBC;
string key = Convert.ToBase64String(symmetricKey.Key);
string IV = Convert.ToBase64String(symmetricKey.IV);
Run Code Online (Sandbox Code Playgroud)

然后,我将密钥和IV保存到数据库中,以便稍后检索以进行编码/解码.

这是完整的加密类:

public static class Encryption
    {
        public static string Encrypt(string prm_text_to_encrypt, string prm_key, string prm_iv)
        {
            var sToEncrypt = prm_text_to_encrypt;

            var rj = new RijndaelManaged()
            { …
Run Code Online (Sandbox Code Playgroud)

php c# encryption cookies encryption-symmetric

18
推荐指数
2
解决办法
1万
查看次数

将初始化向量和盐与密文一起传递是不安全的吗?

我刚开始实施加密技术,而且我还在学习基础知识.

我的开源代码库需要对称加密功能.该系统有三个组件:

  • 存储某些用户数据的服务器,以及有关是否加密的信息,以及如何加密
  • AC#客户端,允许用户在发送到服务器时使用简单密码加密其数据,并在接收时使用相同的密码解密
  • 执行相同操作的JavaScript客户端,因此必须与C#客户端的加密方法兼容

看看各种JavaScript库,我遇到了SJCL,它有一个可爱的演示页面:http://bitwiseshiftleft.github.com/sjcl/demo/

从这一点来看,为了解密密文,客户需要知道的(除了使用的密码之外)是:

  • 初始化向量
  • 密码上使用的任何盐
  • 钥匙尺寸
  • 身份验证强度(我不完全确定这是什么)

用密文保存所有这些数据是否相对安全?请记住,这是一个开源代码库,除非我要求用户记住它们,否则我无法合理地隐藏这些变量(是的,正确).

任何建议表示赞赏

encryption passwords password-protection encryption-symmetric

16
推荐指数
1
解决办法
3644
查看次数

桌面应用程序和服务器之间的加密 - C#到PHP

我有一个用C#设计的应用程序.简单来说,应用程序将数据和图像发送到我的Web服务器,该服务器获取所有$ _POST数据并对其进行处理.我会承认我不明白事情的安全性如何发挥作用.我将聘请具有相关经验的人来做这件事但是我甚至不知道在这一点上要问他们什么是一些可接受的技术.

我认为它不像base64编码/解码数据那么简单,它需要更高级别的加密.网络服务器将在接下来的几周内获得HTTPS SSL(OV)认证,但我有限的理解是,在将数据从用户PC传输到我的网络服务器时仍然需要某种保护/加密,所以有人不会在数据传输或类似的东西.

简单来说,如果我想在用户和我的网络服务器之间保持数据安全,那么C#到PHP的一些最常见或可接受的方法是什么?

数据直接从用户PC上的应用程序发送到我的服务器,我控制两者的源代码,但我自己而不是开发人员,因此我缺乏关于该问题的技术知识.

一位C#开发人员与建议的对称/非对称算法进行了交谈,但他不是PHP开发人员,因此他不知道php是否可以获取该数据并对其进行解密.

php c# encryption-asymmetric encryption-symmetric

15
推荐指数
2
解决办法
1633
查看次数

SSL使用哪种对称密钥算法?

据我所知,通过SSL,浏览器获取安全网站的公钥,并通过公钥加密rsa算法,这两个建立会话密钥,然后通过一些对称算法继续通信,因为对称密钥加密/解密更快.SSL使用哪种对称密钥算法?DES?AES?或者是其他东西?

ssl cryptography rsa public-key-encryption encryption-symmetric

14
推荐指数
2
解决办法
2万
查看次数

WHERE子句中的SQL加密列

我希望使用对称密钥应用SQL列级加密.创建数据库主密钥,证书和对称密钥所需的初始步骤似乎很简单,我已成功使用对称密钥测试加密/解密数据.

但是,一旦数据被加密,我不知道如何最好地查询它.例如

SELECT PlainTextA, PlainTextB, PlainTextC 
WHERE CONVERT(varchar, DECRYPTBYKEY(EncyptedColumn)) = @SearchTerm
Run Code Online (Sandbox Code Playgroud)

肯定会导致全表扫描?

我认为可能有用的另一种选择是首先加密搜索条件,例如

SELECT PlainTextA, PlainTextB, PlainTextC 
WHERE EncyptedColumn = ENCRYPTBYKEY(KEY_GUID('KeyName'), @SearchTerm)
Run Code Online (Sandbox Code Playgroud)

但这不起作用,因为生成的加密值总是不同的.

任何建议将不胜感激.

sql-server aes encryption-symmetric sql-server-2008

12
推荐指数
1
解决办法
1万
查看次数

pki与对称加密的性能差异是什么?

我们希望对我们的项目做一些严格的安全性要求,我们需要进行大量高性能的加密.

我认为我知道PKI比对称加密慢得多且复杂得多,但我找不到数字来支持我的感受.

encryption performance encryption-asymmetric encryption-symmetric

11
推荐指数
3
解决办法
2万
查看次数

帮助我进行XOR加密

我写了这段代码C#用密钥加密字符串:

private static int Bin2Dec(string num)
{
    int _num = 0;

    for (int i = 0; i < num.Length; i++)
        _num += (int)Math.Pow(2, num.Length - i - 1) * int.Parse(num[i].ToString());

    return _num;
}

private static string Dec2Bin(int num)
{
    if (num < 2) return num.ToString();

    return Dec2Bin(num / 2) + (num % 2).ToString();
}

public static string StrXor(string str, string key)
{
    string _str = "";
    string _key = "";
    string _xorStr = "";
    string _temp = ""; …
Run Code Online (Sandbox Code Playgroud)

c# encryption encryption-symmetric

11
推荐指数
1
解决办法
2万
查看次数

存储加密密钥MVC应用程序的位置

我正在使用AES加密/解密类,它需要一个键值和向量值来加密和解密MVC3应用程序中的数据.

在保存记录时,我正在加密数据,然后存储在数据库中.当我检索记录时,我在控制器中解密并将未加密的值传递给视图.

关注的问题不是在数据穿越网络时保护数据,而是在数据库被泄露时保护数据库.

我读了很多帖子,说不要在你的代码中加密密钥.

好的,他们应该留在哪里?文件系统?另一个数据库

寻找一些方向.

asp.net encryption encryption-symmetric asp.net-mvc-3

11
推荐指数
1
解决办法
3217
查看次数

减少codeigniter中的加密字符串长度

当我尝试使用CI加密库加密字符串时,返回的字符串非常大,大约178个字符长.是否有任何方法可以减少字符串的长度.默认密码是:AES-128.

假设:$data=$this->encryption->encrypt("welcome to ooty"); 它返回178长度的字符串值..我需要它减少到20以下

更新:当我加密一个数字时,比如6,它返回178个长字符串.

php encryption cryptography codeigniter encryption-symmetric

11
推荐指数
1
解决办法
3247
查看次数