怎样给内存卡加密软件中的一段数据加密

2009年9月 其他开发语言大版内专家分月排行榜第三2009年2月 其他开发语言大版内专家分月排行榜第三2008年12月 其他开发语言大版内专家分月排行榜第三
2006年7月 Windows专区大版内专家分月排行榜第一2006年7月 VB大版内专家分月排行榜第一
2009年6月 VB大版内专家分月排行榜第二
本帖子已过去太久远了,不再提供回复功能。在做一个需要加密的东西,客户端从服务器接收密钥,先不考虑别人从网络上截取密钥,在客户端接收到密钥后,怎么才能防止他从内从中把密钥读取出来呢?从内从中读取数据都有哪些方法,分别应该怎么防止?
回复讨论(解决方案)
先不说有那么多现成的&读取进程内存的软件,winHex&之类的
思路,不能放在阻止别人读你的内存这个上面
假设,你有最严密的方法,避免了人家读取内存。
可人家,用&VMware,virtualBox&之类的虚拟机。&然后,把整个&系统,suspend/snapshot到硬盘。&那么,你所有的内存,都存到了硬盘。&于是,也你再强硬的方法,最终就是&fopen/fread的干活了。
(就像那个经典的例子,有什么办法避免用户截屏截图?&最终答案,“试问LZ又如何防止用户拿相机对着屏幕拍”)
zhao4zhong1
不要陷入加密与解密的死循环
赵老师还有一句名言,是什么调用XX&API还可以读取别的进程的信息呢
并不是说要绝对防止别人,只是想稍微做一下防范,防菜鸟不防高手即可,不能说随便一个人随便找个工具就把密钥弄走了,达到这个目的就行。
还是加密,在使用的时候再还原。
其实我并不想做这些事,只是领导觉得别人可以从内从读取密钥很不安全,但是又找不出更好的方案,所以让我写个报告上去,说明一下现在都有什么方式从内存获取密钥,有什么方法可以防止,评估一下安全级别
其实我并不想做这些事,只是领导觉得别人可以从内从读取密钥很不安全,但是又找不出更好的方案,所以让我写个报告上去,说明一下现在都有什么方式从内存获取密钥,有什么方法可以防止,评估一下安全级别
上看雪把,先分析反汇编代码,再查看密钥地址,再获取,,,
加密是有时效性的,通常楼主说的这种情况不需要考虑防止别人从内存中把密钥读出来,这种密钥一般是一个session(会话,或者客户端和服务端每次建立连接)换一次,也就是所谓的session&key,等到别人截获到session&key的时候,就已经失效了。
当然,这不是足够安全的做法。足够安全的做法就是服务器端产生session&key以后,是用PKI的方式来加密sessioin&key的,PKI属于非对称加密,非常可靠但效率比较低,session&key则是对称加密,效率比较高但安全性较差。用PKI的方式加密session&key进行传输,就结合了这两者的优点,既可以保证session&key的安全传输到通讯的另一端,然后正常的通讯又都是采用session&key进行加解密这种对称的方式。
比如Server有一对密钥:PublicServer(公钥)/PrivateServer(私钥),Client也有一对密钥PublicClient(公钥)/PrivateClient(私钥),同时假定Server所产生的对称密钥是sessionKey,那么sessionKey的传输到Client的过程就是这样的:
1.&首先用PrivateServer加密sessionKey
2.&用PublicClient加密步骤1的结果
4.&Client接收到后,首先用PrivateClient解密,得到步骤1的结果
5.&再用PublicServer解密步骤4得到的结果,就会得到sessionKey
-------------
6.&然后Client和Server就开始用sessionKey来进行对称方式的加解密了。
在传输的过程中,从理论上而言,几乎没有被破解的可能性。事实上网上银行的数据传输安全机制就是这样的。
当然安全是没有绝对的,一切都是相对的。
其实我并不想做这些事,只是领导觉得别人可以从内从读取密钥很不安全,但是又找不出更好的方案,所以让我写个报告上去,说明一下现在都有什么方式从内存获取密钥,有什么方法可以防止,评估一下安全级别
香港黑社会群殴是,拿木棒的安全些,还是拿刀的安全些?
还是要做一下加密,这样相对安全一些。至于加密的复杂度要看信息的安全度。
这个应该没办法。
密码也没有绝对的安全。
只是解密需要花费的时间不同罢了。
如果解密花销的费用大于解开密码所得的费用,大部分的人会放弃解密。
关键不在于自己拿什么武器,而在于别人拿的什么武器和自己拿什么防御。
引用&6&楼&&的回复:
其实我并不想做这些事,只是领导觉得别人可以从内从读取密钥很不安全,但是又找不出更好的方案,所以让我写个报告上去,说明一下现在都有什么方式从内存获取密钥,有什么方法可以防止,评估一下安全级别
香港黑社会群殴是,拿木棒的安全些,还是拿刀的安全些?
我也没想着要绝对安全,只想知道别人常用的一些方法,和我用什么方法应对这些方法就行。
这个应该没办法。
密码也没有绝对的安全。
只是解密需要花费的时间不同罢了。
如果解密花销的费用大于解开密码所得的费用,大部分的人会放弃解密。
奉劝楼主不要把有限的生命浪费在无限的加密解密死循环中!
本不想做,领导非要弄。
奉劝楼主不要把有限的生命浪费在无限的加密解密死循环中!
参考API&ReadProcessMemory
#include&&stdio.h&
FILE&*fi,*
void&main()&{
&&&&fo=fopen(&500M.out&,&wb&);
&&&&fi=fopen(&500M.in&,&rb&);
&&&&fseek(fi,-1L,SEEK_END);
&&&&while&(1)&{
&&&&&&&&fputc(fgetc(fi)^0xA5,fo);
&&&&&&&&if&(fseek(fi,-2,SEEK_CUR))&
&&&&fclose(fi);
&&&&fclose(fo);
哥是搞安全的,给你权威解释吧
楼主不要费劲了,软件算法必然有一段时间密钥是明文存在内存中的,技术手段只能够减少这个存在时间,比如加密后立即请利用过的堆栈
只有硬件加密(加密卡/usbkey等),密钥不出卡才能达到你的要求
软件加密必须默认本地内存的安全性,可以有一些小打小闹的安全增强手段,比如做成驱动,只有内核级进程和超级管理员权限才能访问你的内存之类,但都不能根本解决问题
楼主你们这个密钥管理机制是谁设计的,难道是网络上明文传输密钥,这个……也太菜了,远程密钥交换是由许多现成的协议的,网络上绝不能出现密钥明文
所以,“先不考虑别人从网络上截取密钥,在客户端接收到密钥后,怎么才能防止他从内从中把密钥读取出来”这是本末倒置的说法
只要你的&数据在内存中,不管你是神马驱动啊,内核啊,权限啊。
全是浮云。
一个&vmware,&virtual&box&把&整个操作系统运行在&虚拟机中。
然后,&把虚拟机的整个内存,和状态等,&suspend/snapshot&,到硬盘。
那么,你整个内存的数据,全在&硬盘上了,在host&机器,也只是&浮云般的&fopen&fseek&,&fread,&什么驱动权限内核通通成了纸老虎。
所以,妄想别人不读你的内存,是不可能的。
最后还是,防反向,防调试。
有些跑题了,lz的数据没那么高的密级,又不是卫星通信,没必要搞得这么严重吧,呵呵呵
还是引入硬件加密吧,信息这种东西,要绝对防止复制,窃取比较难.
对啊,是什么东西要求这么高
不是不考虑,是考虑过了,不想在这里提出来,实验室主要是搞网络的,所以在网络传输方面了解的多一些。
哥是搞安全的,给你权威解释吧
楼主不要费劲了,软件算法必然有一段时间密钥是明文存在内存中的,技术手段只能够减少这个存在时间,比如加密后立即请利用过的堆栈
只有硬件加密(加密卡/usbkey等),密钥不出卡才能达到你的要求
软件加密必须默认本地内存的安全性,可以有一些小打小闹的安全增强手段,比如做成驱动,只有内核级进程和超级管理员权限才能访问你的内存之类,但都不能根本解决问题
结贴吧,在知网搜几篇论文写个报告上去凑合一下得了。
软件安全的攻防战本来就没有绝对的安全,不过事情还是需要一步步从不同层面上去做的,就好比家里的大门都要装把锁一样,虽然是防君子不防小人的,但也没人因为锁不是绝对安全的就家里大门不上锁的。
网络层明文传输当然是要不得的,USB&KEY也不是绝对安全的,只要有人像做贼,终归还是不安全的。
先看看怎么做好我们能做的措施吧,就内存防其他进程读取思路上,我觉得不是很好,其实你可以做一个类似自己的内存管理的东西,有一个特定的HASH算法来定位内存,然后有一个自己的私有策略动态搬移内存。就像楼上说的,我们应该减少密钥在内存固定区域的停留时间,用完就销毁或者,每次都像去澡堂洗澡时一样租用不同的储物柜。这样增加软件安全的复杂度。
补充说一句,就API层或者ring0级别的防护,可以去看雪论坛上搜一下,应该会有合适你的方法,不过矛和盾是相互的,除非你自己程序也不读写数据区,否则暂时是没有方法做到不让别人读取你的数据区的,因为操作系统没有提供区分敌我程序的明显界线。
哦&原来是这样呀
你把给他的密码弄成他的电话号码,看他还散布么。
如果是加密,你为什么不把加密的模块放在服务器那边,客户端就负责接收加密后的结果
内存中放密钥没有安全的,楼主不要乱费劲了
客户端收到结果后还要解密
如果是加密,你为什么不把加密的模块放在服务器那边,客户端就负责接收加密后的结果
引用25楼的话回答你:“就好比家里的大门都要装把锁一样,虽然是防君子不防小人的,但也没人因为锁不是绝对安全的就家里大门不上锁的”
内存中放密钥没有安全的,楼主不要乱费劲了
客户端收到结果后还要解密
引用&31&楼&&的回复:
如果是加密,你为什么不把加密的模块放在服务器那边,客户端就负责接收加密后的结果
我想问下楼主,你想要保密的数据是什么?是那密钥,还是?
你客户端只要牵扯到解密,那你就没办法了。
深层次的技术问题。
加个壳,把代码vm了
像写外挂一样弄不就得了,还要弄啥,没有绝对的安全的
在计算机系统系统中对于读入到内存中的数据是无法被加密的,对于服务器而言我们可以使用自动假面的SED硬盘,其中配有加密芯片,它采用了AES128位加密,如果是软件装的是windows&2008可以采用bitlocker加密驱动器,如果采用linux系统可以采用加密文件系统,如果工作站采用了MAC&OSX系统可以采用file&vault2加密方式,初次意外开可以选用开源的TrueCype加密软件。这都可以延缓数据被破解但无法消除其可能性。怎么向一段内存空间中存入不同类型的数据 - C++当前位置:& &&&怎么向一段内存空间中存入不同类型的数据怎么向一段内存空间中存入不同类型的数据&&网友分享于:&&浏览:10次如何向一段内存空间中存入不同类型的数据?比如我想申请一个20字节的内存空间,然后前4字节存入枚举变量的一个值。后16字节存入一个unsigned char类型的字符数组。如何实现?我是这么写的:unsigned char buf[20];memset(buf, 0, 20);memcpy(buf, 0x01, sizeof(int));memcpy(buf + 4, str, sizeof(str)); &------解决方案--------------------结构体可以存储不同类型的数据,
------解决方案--------------------C/C++ code
struct myStruct
unsigned char str[16];
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 12345678910 Copyright & &&版权所有2013年12月 C/C++大版内专家分月排行榜第二2013年12月 Linux/Unix社区大版内专家分月排行榜第二2013年11月 C/C++大版内专家分月排行榜第二2013年10月 C/C++大版内专家分月排行榜第二
2013年12月 C/C++大版内专家分月排行榜第二2013年12月 Linux/Unix社区大版内专家分月排行榜第二2013年11月 C/C++大版内专家分月排行榜第二2013年10月 C/C++大版内专家分月排行榜第二
2013年12月 C/C++大版内专家分月排行榜第二2013年12月 Linux/Unix社区大版内专家分月排行榜第二2013年11月 C/C++大版内专家分月排行榜第二2013年10月 C/C++大版内专家分月排行榜第二
2013年12月 C/C++大版内专家分月排行榜第二2013年12月 Linux/Unix社区大版内专家分月排行榜第二2013年11月 C/C++大版内专家分月排行榜第二2013年10月 C/C++大版内专家分月排行榜第二
本帖子已过去太久远了,不再提供回复功能。}

我要回帖

更多关于 内存卡加密软件 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信