如何在.Net智能卡中管理/存储加密密钥?

如何在.Net智能卡中管理/存储加密密钥?,.net,security,encryption,smartcard,secret-key,.net,Security,Encryption,Smartcard,Secret Key,我一直在这里搜索,读了很多关于钥匙的问题,但不幸的是,没有人询问智能卡或任何便携式设备 我的问题是: 我有智能卡存储敏感的医疗信息,我需要使用卡内的任何对称算法对该信息进行加密。 但是我真的对密钥感到困惑 我应该把它存放在哪里 是否每次存储新信息时都必须生成 我应该选择一个强密钥并将其存储在某个位置而不进行更改吗 您的问题在这方面有点不清楚,您试图使用加密保护什么,以及针对什么(业余程序员、密码专家、特勤局)。您不太可能希望防止未经授权提取卡,因为智能卡及其操作系统能够充分保护自己。合法主机应

我一直在这里搜索,读了很多关于钥匙的问题,但不幸的是,没有人询问智能卡或任何便携式设备

我的问题是:

我有智能卡存储敏感的医疗信息,我需要使用卡内的任何对称算法对该信息进行加密。 但是我真的对密钥感到困惑

  • 我应该把它存放在哪里
  • 是否每次存储新信息时都必须生成
  • 我应该选择一个强密钥并将其存储在某个位置而不进行更改吗

您的问题在这方面有点不清楚,您试图使用加密保护什么,以及针对什么(业余程序员、密码专家、特勤局)。您不太可能希望防止未经授权提取卡,因为智能卡及其操作系统能够充分保护自己。合法主机应用程序也不太可能以加密形式进行处理。因此,阅读过程本身很可能需要保护,这对于非接触式/NFC来说是显而易见的,但对于基于接触的通信来说也是一个好主意


这里的重要术语是安全消息传递。要么您拥有一个强静态密钥,该密钥很少需要更改,具体取决于使用强度;要么更常见的是,您协商一个会话密钥,该密钥也可能取决于一个(可能是固定的)秘密。两者都可以与序列计数器组合,因此即使在会话中读取相同的数据也会提供不同的密码。无论您选择哪种方式,都必须在两侧存储/计算密钥。部分秘密本身需要安全存储,这取决于攻击的可能性,可能在磁盘上的加密文件(使用完全不同的密钥)中,或者在极端情况下,在称为安全模块的特殊智能卡类设备上,该模块可能具有抗篡改的硬件。(如果不阻止攻击,至少显示出操纵,例如安全封条被破坏)。

非常感谢您的回答,实际上我想阻止未经授权的应用程序读取数据,使用加密,以便只有授权的主机应用程序才能解密数据并读取数据them@hum. 通常情况下,可以通过访问规则强制执行此操作,声明只有在质询-响应测试之后才允许读取包含健康数据的文件,因此不一定需要加密。这仍然需要对响应计算进行加密,并且密码的密钥必须存在于双方:主机端用于计算,卡端用于验证。