如何才能防止别人从内存中读取数据

shangzhihaohao 2012-05-22 08:43:47
在做一个需要加密的东西,客户端从服务器接收密钥,先不考虑别人从网络上截取密钥,在客户端接收到密钥后,怎么才能防止他从内从中把密钥读取出来呢?从内从中读取数据都有哪些方法,分别应该怎么防止?
...全文
5470 35 打赏 收藏 转发到动态 举报
写回复
用AI写文章
35 条回复
切换为时间正序
请发表友善的回复…
发表回复
cgweb 2013-07-09
  • 打赏
  • 举报
回复
在计算机系统系统中对于读入到内存中的数据是无法被加密的,对于服务器而言我们可以使用自动假面的SED硬盘,其中配有加密芯片,它采用了AES128位加密,如果是软件装的是windows 2008可以采用bitlocker加密驱动器,如果采用linux系统可以采用加密文件系统,如果工作站采用了MAC OSX系统可以采用file vault2加密方式,初次意外开可以选用开源的TrueCype加密软件。这都可以延缓数据被破解但无法消除其可能性。
lwhwei 2012-06-03
  • 打赏
  • 举报
回复
加个壳,把代码vm了

像写外挂一样弄不就得了,还要弄啥,没有绝对的安全的
helyna 2012-05-31
  • 打赏
  • 举报
回复
你客户端只要牵扯到解密,那你就没办法了。
无涯大者 2012-05-31
  • 打赏
  • 举报
回复
深层次的技术问题。
ye1320240 2012-05-28
  • 打赏
  • 举报
回复
[Quote=引用 33 楼 的回复:]

客户端收到结果后还要解密
引用 31 楼 的回复:

如果是加密,你为什么不把加密的模块放在服务器那边,客户端就负责接收加密后的结果
[/Quote]
我想问下楼主,你想要保密的数据是什么?是那密钥,还是?
shangzhihaohao 2012-05-26
  • 打赏
  • 举报
回复
引用25楼的话回答你:“就好比家里的大门都要装把锁一样,虽然是防君子不防小人的,但也没人因为锁不是绝对安全的就家里大门不上锁的”
[Quote=引用 32 楼 的回复:]

内存中放密钥没有安全的,楼主不要乱费劲了
[/Quote]
shangzhihaohao 2012-05-26
  • 打赏
  • 举报
回复
客户端收到结果后还要解密
[Quote=引用 31 楼 的回复:]

如果是加密,你为什么不把加密的模块放在服务器那边,客户端就负责接收加密后的结果
[/Quote]
风攸雨 2012-05-26
  • 打赏
  • 举报
回复
内存中放密钥没有安全的,楼主不要乱费劲了
ye1320240 2012-05-25
  • 打赏
  • 举报
回复
如果是加密,你为什么不把加密的模块放在服务器那边,客户端就负责接收加密后的结果
觅食的猫猫 2012-05-24
  • 打赏
  • 举报
回复
你把给他的密码弄成他的电话号码,看他还散布么。
开发者孙小聪 2012-05-24
  • 打赏
  • 举报
回复
哦 原来是这样呀
dj0379 2012-05-24
  • 打赏
  • 举报
回复
补充说一句,就API层或者ring0级别的防护,可以去看雪论坛上搜一下,应该会有合适你的方法,不过矛和盾是相互的,除非你自己程序也不读写数据区,否则暂时是没有方法做到不让别人读取你的数据区的,因为操作系统没有提供区分敌我程序的明显界线。
dj0379 2012-05-24
  • 打赏
  • 举报
回复
软件安全的攻防战本来就没有绝对的安全,不过事情还是需要一步步从不同层面上去做的,就好比家里的大门都要装把锁一样,虽然是防君子不防小人的,但也没人因为锁不是绝对安全的就家里大门不上锁的。
网络层明文传输当然是要不得的,USB KEY也不是绝对安全的,只要有人像做贼,终归还是不安全的。
先看看怎么做好我们能做的措施吧,就内存防其他进程读取思路上,我觉得不是很好,其实你可以做一个类似自己的内存管理的东西,有一个特定的HASH算法来定位内存,然后有一个自己的私有策略动态搬移内存。就像楼上说的,我们应该减少密钥在内存固定区域的停留时间,用完就销毁或者,每次都像去澡堂洗澡时一样租用不同的储物柜。这样增加软件安全的复杂度。
shangzhihaohao 2012-05-23
  • 打赏
  • 举报
回复
我也没想着要绝对安全,只想知道别人常用的一些方法,和我用什么方法应对这些方法就行。
[Quote=引用 11 楼 的回复:]

这个应该没办法。
密码也没有绝对的安全。
只是解密需要花费的时间不同罢了。
如果解密花销的费用大于解开密码所得的费用,大部分的人会放弃解密。
[/Quote]
shangzhihaohao 2012-05-23
  • 打赏
  • 举报
回复
结贴吧,在知网搜几篇论文写个报告上去凑合一下得了。
shangzhihaohao 2012-05-23
  • 打赏
  • 举报
回复
不是不考虑,是考虑过了,不想在这里提出来,实验室主要是搞网络的,所以在网络传输方面了解的多一些。
[Quote=引用 18 楼 的回复:]

哥是搞安全的,给你权威解释吧

楼主不要费劲了,软件算法必然有一段时间密钥是明文存在内存中的,技术手段只能够减少这个存在时间,比如加密后立即请利用过的堆栈

只有硬件加密(加密卡/usbkey等),密钥不出卡才能达到你的要求

软件加密必须默认本地内存的安全性,可以有一些小打小闹的安全增强手段,比如做成驱动,只有内核级进程和超级管理员权限才能访问你的内存之类,但都不能根本解决问题
……
[/Quote]
MSOKD 2012-05-23
  • 打赏
  • 举报
回复
对啊,是什么东西要求这么高
cobra_chen 2012-05-23
  • 打赏
  • 举报
回复
这个应该没办法。
密码也没有绝对的安全。
只是解密需要花费的时间不同罢了。
如果解密花销的费用大于解开密码所得的费用,大部分的人会放弃解密。
自信男孩 2012-05-23
  • 打赏
  • 举报
回复
还是要做一下加密,这样相对安全一些。至于加密的复杂度要看信息的安全度。
AnYidan 2012-05-23
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

其实我并不想做这些事,只是领导觉得别人可以从内从读取密钥很不安全,但是又找不出更好的方案,所以让我写个报告上去,说明一下现在都有什么方式从内存获取密钥,有什么方法可以防止,评估一下安全级别
[/Quote]

香港黑社会群殴是,拿木棒的安全些,还是拿刀的安全些?
加载更多回复(15)

70,014

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧