免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: yanyangtian4502

【活动j结束 获奖名单公布】从近期互联网企业密码泄露探讨如何构建一个安全的系统 [复制链接]

论坛徽章:
0
发表于 2012-01-04 09:45 |显示全部楼层
chenyx 发表于 2012-01-04 09:27
1,如何设计一个安全的系统,构建一个安全的架构
没有绝对安全的系统,Linux网站被黑就是做好的例子.
我们 ...


在本帖中,我准备整理一些资料和预防手段,对HTTP的几种攻击,数据库攻击,文件安全,xml安全等做个介绍。大家也分享一些!

论坛徽章:
0
发表于 2012-01-04 09:56 |显示全部楼层
本帖最后由 yanyangtian4502 于 2012-01-04 09:58 编辑

我刚刚发表了自己的一些愚见:hash(SHA)不等于数据加密

举个例子,大家就明白了。

如果现在我们需要去某个网站上面去下载一些文件,这些文件中包含一些数据,当我们在使用这些数据的时候,就要确保这个数据在网络传输以及下载的过程中没有被篡改。那么,为了实现这样的功能,散列就用上了,散列的方式有很多,例如,最简单的就是把数据散列之后,包含在文件的数据中末尾。因为同一个散列算法对不同的数据散列之后,得到散列数据的长度是一样的。当我们把数据拿到之后,我们获取文件最后的数据,此时也就是散列数据,然后采用相同的算法将文件中的数据进行散列,然后与之比较,从而验证数据的完整性。

从上面的例子中,我们也可以总结出与散列算法相关的几点知识:
    1.同一个散列算法所产生的结果的长度是固定的,不管接受到的数据的长度。也就是说,对于某个散列算法A,我们不管传输什么数据,例如长度为1000的某数据,和100的数据,散列之后,它们的长度都是20.
    2.散列算法的结果是定的。也就说,用某个散列算法的时候,同一个输入,产生的结果是一样的。不存在,对于算法A,传输数据B,第一次散列的结果和第二次不同。
    3.散列算法是单向的。数据被散列之后,不能被还原。

    另外,对于散列,还有一个“碰撞”的问题。如果朋友们对数据结构有都应该有所了解。可能存在不同的的数据,它们通过hash算法产生的结果一样。这个时候,这往往就是黑客攻击的攻击点:如果站点的密码产用hash保存,那么此时出现“碰撞”的时候,用相同的账号与不同的密码,可能就登入站点了。(账号为什么相同呢?很有可能设上网之后,没有清除用户名,特别是在网吧等公共场所,有时候,我去网吧的时候,看网页,总可以看到一些站点的用户名没有清除掉:wink: )

所以选择一个好的hash算法非常重要。

论坛徽章:
0
发表于 2012-01-04 09:56 |显示全部楼层
本帖最后由 yanyangtian4502 于 2012-01-04 10:03 编辑

其实刚刚有朋友也说了:普通的hash算法已经不能满足现在的保护数据的需要了。确实是这样子的。因为以前的hash算法的生成hash值的方法比较简单。我们可以采用一些比较成熟的类库,或者系统内置的hash算法来进行散列。以前很多时候,都是我们开发人员自己写的弱hash算法。

//看段示意代码:类C
    private string CalculateSHA256Hash(string input)
    {
        byte[] inputBytes = Encoding.UTF8.GetBytes(input);  
        //使用框架的内库,选择一个散列算法
        SHA256Managed sha256 = new SHA256Managed();

        //散列了
        byte[] outputBytes = sha256.ComputeHash(inputBytes);     

        //将结果变为字符串返回
        return Convert.ToBase64String(outputBytes);
    }


貌似不能代码高亮啊

论坛徽章:
0
发表于 2012-01-04 10:07 |显示全部楼层
     从最近的各大网站泄密事件来看,主要是中国的互联网企业在高速发展的过程中忽视了网络安全,从事应用开发的从业人员缺乏对安全的重视

论坛徽章:
0
发表于 2012-01-04 10:11 |显示全部楼层
谈到这里,我又想起了网络上面之前传得“无证程序员”的笑话了。很少有开发人员正在能够把安全,性能的思想放在代码中。太多的培训机构和资料,为了方便好懂,全部都是简单处理,例如拼接sql,明文保存等等回复 14# king_819


   

论坛徽章:
381
CU十二周年纪念徽章
日期:2014-01-04 22:46:58CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-03-13 15:38:15CU大牛徽章
日期:2013-03-13 15:38:52CU大牛徽章
日期:2013-03-14 14:08:55CU大牛徽章
日期:2013-04-17 11:17:19CU大牛徽章
日期:2013-04-17 11:17:32CU大牛徽章
日期:2013-04-17 11:17:37CU大牛徽章
日期:2013-04-17 11:17:42CU大牛徽章
日期:2013-04-17 11:17:47CU大牛徽章
日期:2013-04-17 11:17:52CU大牛徽章
日期:2013-04-17 11:17:56
发表于 2012-01-04 10:12 |显示全部楼层
无证程序员

悲哀,为什么一到追究责任的时候就变成"无证"了?

论坛徽章:
0
发表于 2012-01-04 10:16 |显示全部楼层
chenyx 发表于 2012-01-04 10:12
悲哀,为什么一到追究责任的时候就变成"无证"了?


呵呵呵,其实这也只是一个代名词了!其实我也是无证的!呵呵

论坛徽章:
0
发表于 2012-01-04 10:32 |显示全部楼层
      简单的HASH一样没有安全可言,目前来看,在口令保存上,使用最为广泛的算法是标准MD5HASH,虽然HASH算法具有不可逆的特点,但一个明文密码通过MD5加密后存到数据库里的是一串MD5值,攻击者可以能通过密文字典进行密文比对来破解用户的密码,随着超算资源的廉价、GPU、云计算的普及、存储能力的增长,攻击者可以利用这些资源制作巨大的HASH表,通过穷举的方式来制作一定位数以下的数字字母组合的口令串与多种算法加密结果的映射结果集,这些结果集从百GB到几十TB,这就是传说中的彩虹表

论坛徽章:
0
发表于 2012-01-04 10:36 |显示全部楼层
回复 18# king_819
彩虹表确实蛮多的,很多的黑客都有大量的彩虹表数据。


   

论坛徽章:
0
发表于 2012-01-04 10:38 |显示全部楼层
本帖最后由 yanyangtian4502 于 2012-01-04 10:57 编辑

刚刚零零碎碎说了一些散列(HASH,SHA)的话题。其实散列的“单向性”很适合我们保存密码。但是保存密码也不是简单的散列算法,然后保存散列结果就搞定了的,万一碰上散列“碰撞”问题,彩虹表的问题,那就掉的大。

比较常用的保存密码的方式就是所谓的Salting(盐析值)。
Salting简单的说:就是把一端随机值与密码的明文放在一些然后hash之后保存。此时:
保存密码=hash(密码明文+salt随机值)。并且,salt的值也不需要秘密保存。
至于要散列几次,主要是看应用本身的安级别。

另外很多时候 需要在安全和性能上面均衡,因为这些算法对CPU的使用很高。特别是并发用户量很多,并且每次都需要这样散列的时候,CPU一下子就上去了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

DTCC2020中国数据库技术大会

【架构革新 高效可控】2020年12月21日-23日第十一届中国数据库技术大会将在北京隆重召开。

大会设置2大主会场,20+技术专场,将邀请超百位行业专家,重点围绕数据架构、AI与大数据、传统企业数据库实践和国产开源数据库等内容展开分享和探讨,为广大数据领域从业人士提供一场年度盛会和交流平台。

http://dtcc.it168.com


大会官网>>
  

北京盛拓优讯信息技术有限公司. 版权所有 16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122
中国互联网协会会员  联系我们:huangweiwei@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP