彩虹表

用户密码到底要怎么加密存储?

隐身守侯 提交于 2020-03-12 04:07:37
作为互联网公司的信息安全从业人员经常要处理撞库扫号事件,产生撞库扫号的根本原因是一些企业发生了信息泄露事件,且这些泄露数据未加密或者加密方式比较弱,导致黑客可以还原出原始的用户密码。 目前已经曝光的信息泄露事件至少上百起,其中包括多家一线互联网公司,泄露总数据超过10亿条。 要完全防止信息泄露是非常困难的事情,除了防止黑客外,还要防止内部人员泄密。但如果采用合适的算法去加密用户密码,即使信息泄露出去,黑客也无法还原出原始的密码(或者还原的代价非常大)。 也就是说我们可以将工作重点从防止泄露转换到防止黑客还原出数据。下面我们将分别介绍用户密码的加密方式以及主要的破解方法。 一、用户密码加密 用户密码保存到数据库时,常见的加密方式有哪些,我们该采用什么方式来保护用户的密码呢?以下几种方式是常见的密码保存方式: 1、直接明文保存,比如用户设置的密码是“123456”,直接将“123456”保存在数据库中,这种是最简单的保存方式,也是最不安全的方式。但实际上不少互联网公司,都可能采取的是这种方式。 2、使用对称加密算法来保存,比如3DES、AES等算法,使用这种方式加密是可以通过解密来还原出原始密码的,当然前提条件是需要获取到密钥。不过既然大量的用户信息已经泄露了,密钥很可能也会泄露,当然可以将一般数据和密钥分开存储、分开管理,但要完全保护好密钥也是一件非常复杂的事情

用户密码到底要怎么加密存储?

℡╲_俬逩灬. 提交于 2020-02-19 12:03:27
作为互联网公司的信息安全从业人员经常要处理撞库扫号事件,产生撞库扫号的根本原因是一些企业发生了信息泄露事件,且这些泄露数据未加密或者加密方式比较弱,导致黑客可以还原出原始的用户密码。 目前已经曝光的信息泄露事件至少上百起,其中包括多家一线互联网公司,泄露总数据超过10亿条。 要完全防止信息泄露是非常困难的事情,除了防止黑客外,还要防止内部人员泄密。但如果采用合适的算法去加密用户密码,即使信息泄露出去,黑客也无法还原出原始的密码(或者还原的代价非常大)。 也就是说我们可以将工作重点从防止泄露转换到防止黑客还原出数据。下面我们将分别介绍用户密码的加密方式以及主要的破解方法。 一、用户密码加密 用户密码保存到数据库时,常见的加密方式有哪些,我们该采用什么方式来保护用户的密码呢?以下几种方式是常见的密码保存方式: 1、直接明文保存 ,比如用户设置的密码是“123456”,直接将“123456”保存在数据库中,这种是最简单的保存方式,也是最不安全的方式。但实际上不少互联网公司,都可能采取的是这种方式。 2、使用对称加密算法来保存 ,比如3DES、AES等算法,使用这种方式加密是可以通过解密来还原出原始密码的,当然前提条件是需要获取到密钥。不过既然大量的用户信息已经泄露了,密钥很可能也会泄露,当然可以将一般数据和密钥分开存储、分开管理,但要完全保护好密钥也是一件非常复杂的事情

渗透学习:密码破解

浪子不回头ぞ 提交于 2020-01-14 02:07:14
渗透学习:密码破解 一. 密码字典创建 1 crunch工具 1.1 启动crunch工具 min max:指定密码的最小/最大长度; option:可选项 -o:指定输出字典文件的位置; -b:指定写入文件的最大字节数; -t:设置使用的特殊格式; -f:从文件指定字符集; 1.2 创建密码字典文件 crunch 4 6 0123456789 -o number.txt 4 6:表示密码最短长度为4,最长长度为6; 0123456789:密码的范围是数字; -o:输出文件为number.txt 执行 vim number.txt可查看文件内容 2 rtgen rtgen用于生成彩虹表,彩虹表是一个散列值的集合;rtsort用于对彩虹表进行排序。 2.1 进入rtgen所在目录: 如何显示没有那个文件夹或目录,使用 apt-get install rainbowcrack 安装rtgen: 2.2 使用rtgen生成彩虹表 MD5:使用MD5散列算法; numeric:字符集,numeric表示数字; 5 5:明码文本的长度范围; 0:表索引; 100:彩虹表中链的长度; 200:彩虹表中链的数量; 0:片段索引; 在rainbowcrack目录下可以查看到以参数命名的字典文件: 2.3 使用rtsort对彩虹表进行排序 注意事项: 由于rtsort执行后没有反馈信息

彩虹表

坚强是说给别人听的谎言 提交于 2019-12-29 23:42:55
彩虹表就是一个庞大的、针对各种可能的字母组合预先计算好的哈希值的集合,不一定是针对MD5算法的,各种算法的都有,有了它可以快速的破解各类密码。越是复杂的密码,需要的彩虹表就越大,现在主流的彩虹表都是100G以上。 背景 为了保证后台数据安全,现在的做法都是使用哈希算法对明文密码进行加密存储。由于 哈希算法不可逆向 ,因此由密码逆向出明文运算就成了不可能。 起初黑客们通过字典穷举的方法进行破解,这对简单的密码和简单的密码系统是可行的,但对于复杂的密码和密码系统,则会产生无穷大的字典,为了解决逆向破解的难题,黑客们就产生了彩虹表的技术。 为了解决所需要字典大小,减少产生和查找字典的时间,黑客选择性存储一个较小的可逆向的长链的密码的哈希值。虽然在破解单个密文,使用哈希链接的方式需要更多的计算时间的反向查找,但字典要小得多,因此可以存储更长的密码的哈希值。彩虹表是此链接技术的一种改进,并提供一种称为碰撞链的解决方案,其基于Martin Hellman理论(基于内存与时间的权重理论)。 参考: http://baike.baidu.com/view/2143893.htm 来源: https://www.cnblogs.com/adforce/archive/2012/12/19/2824968.html

彩虹表

孤街浪徒 提交于 2019-12-29 23:42:43
彩虹表是一个用于 加密散列函数 逆运算的预先计算好的表, 为破解密码的散列值(或称哈希值、微缩图、摘要、指纹、哈希密文)而准备。一般主流的彩虹表都在100G以上。 这样的表常常用于恢复由有限集字符组成的固定长度的纯文本密码。这是空间/时间替换的典型实践, 比每一次尝试都计算哈希的暴力破解处理时间少而储存空间多,但却比简单的对每条输入散列翻查表的破解方式储存空间少而处理时间多。使用加salt的KDF函数可以使这种攻击难以实现。彩虹表是 马丁·赫尔曼 早期提出的简单算法的应用。 来源: https://www.cnblogs.com/xinhua219/p/10092492.html

彩虹表

匆匆过客 提交于 2019-12-29 23:42:09
彩虹表(Rainbow Table)是一种破解哈希算法的技术,是一款跨平台密码破解器,主要可以破解MD5、HASH等多种密码。它的性能非常让人震惊,在一台普通PC上辅以NVidia CUDA技术,对于NTLM算法可以达到最高每秒103,820,000,000次明文尝试(超过一千亿次),对于广泛使用的MD5也接近一千亿次。更神奇的是,彩虹表技术并非针对某种哈希算法的漏洞进行攻击,而是类似暴力破解,对于任何哈希算法都有效。 一、彩虹表原理 这几乎是令人难以置信的,Roger迫不及待的去看了 http://www.project-rainbowcrack.com 所介绍的原理。这其实已经不是新的技术了,但是很遗憾的是,搜索“彩虹表原理”出来的文章对彩虹表原理的介绍都有不太正确,Roger就在这里简单的介绍一下,主要参考的是Wiki上的这篇 http://en.wikipedia.org/wiki/Rainbow_tables ,英文好的可以去看这篇论文 http://lasecwww.epfl.ch/pub/lasec/doc/Oech03.pdf 。 我们先来做点科普,哈希(Hash)算法就是单向散列算法,它把某个较大的集合P映射到另一个较小的集合Q中,假如这个算法叫H,那么就有Q = H(P)。对于P中任何一个值p都有唯一确定的q与之对应,但是一个q可以对应多个p

如何正确对用户密码进行加密?转自https://blog.csdn.net/zhouyan8603/article/details/80473083

时间秒杀一切 提交于 2019-12-23 04:27:12
本文介绍了对密码哈希加密的基础知识,以及什么是正确的加密方式。还介绍了常见的密码破解方法,给出了如何避免密码被破解的思路。相信读者阅读本文后,就会对密码的加密有一个正确的认识,并对密码正确进行加密措施。 作为一名Web开发人员,我们经常需要与用户的帐号系统打交道,而这其中最大的挑战就是如何保护用户的密码。经常会看到用户账户数据库频繁被黑,所以我们必须采取一些措施来保护用户密码,以免导致不必要的数据泄露。 保护密码的最好办法是使用加盐密码哈希( salted password hashing)。 重要警告: 请放弃编写自己的密码哈希加密代码的念头 !因为这件事太容易搞砸了。就算你在大学学过密码学的知识,也应该遵循这个警告。所有人都要谨记这点:不要自己写哈希加密算法! 存储密码的相关问题已经有了成熟的解决方案,就是使用 phpass ,或者在 defuse/password-hashing 或 libsodium 上的 PHP 、 C# 、 Java 和 Ruby 的实现。在对密码进行哈希加密的问题上,人们有很多争论和误解,可能是由于网络上有大量错误信息的原因吧。对密码哈希加密是一件很简单的事,但很多人都犯了错。本文将会重点分享如何进行正确加密用户密码。 密码哈希是什么? hash("hello") =

Hash函数及其重要性

匿名 (未验证) 提交于 2019-12-03 00:22:01
不时会爆出网站的服务器和数据库被盗取,考虑到这点,就要确保用户一些敏感数据(例如密码)的安全性。今天,我们要学的是 hash 背后的基础知识,以及如何用它来保护你的 web 应用的密码。 密码学是非常复杂的一门学科,我不是这方面的专家,在很多大学和安全机构,在这个领域都有长期的研究。 本文我试图使事情简单化,呈现给大家的是一个 web 应用中安全存储密码的合理方法。 Hashing 将一段数据(无论长还是短)转成相对较短的一段数据,例如一个字符串或者一个整数。 这是通过使用单向哈希函数来完成的。“单向” 意味着逆转它是困难的,或者实际上是不可能的。 加密可以保证信息的安全性,避免被拦截到被破解。Python 的加密支持包括使用 hashlib 的标准算法(例如 MD5 和 SHA),根据信息的内容生成签名,HMAC 用来验证信息在传送过程中没有被篡改。 一个通常使用的 hash 函数的例子是 md5() ,这也是当前在很多不同语言和系统中比较流行的: import hashlib data = "Hello World" h = hashlib . md5 () h . update ( data ) print ( h . hexdigest ()) # b10a8db164e0754105b7a99be72e3fe5 为了计算一个数据块(这儿是 ASCII 字符串)的 MD5