五千年(敝帚自珍)

主题:【原创】也说一下关于密码的问题 -- yhz

共:💬34 🌺46 新:
分页树展主题 · 全看首页 上页
/ 3
下页 末页
  • 家园 【原创】也说一下关于密码的问题

    最近,不知道为什么,河里有不少人开始关注自己的密码问题了。也许是经济不好,所以更要好好的看好自己的钱包?呵呵。

    但是什么是好的密码?这个问题看上去简单,但是其实并不简单。当然,从哲学上来说,总有一个放之四海而皆准的标准答案,就是:密码的好坏没有一个统一的标准。嗯,显然,这个标准答案在这个问题上再次成立。那么,要怎么弄,能得到一个好的密码呢?

    在回答这个问题之前,就必须先明确一点:设计安全的密码,不是我们的目的。我们的目的是保护我们的隐私或者重要资料不外泄,而密码仅仅是达到这个目的手段之一。木桶能装的水,取决于最短的木板的道理,大家应该都知道了。在安全体系中也一样,所以,追求单纯的密码安全,其实有时候是没有太大的必要的。

    首先,要看看你准备把这个密码用在什么地方。例如说在银行中用的密码?还是计算机系统密码或者网站的登陆密码?

    这点区别的意义是什么呢?首先,大多数人都可以回答出来:银行中用的密码一般只能有6位10进制数,而网站上用的是英文字符加大小写加特殊符号。这个答案答对了一半,如果打分,就只能打40分。因为最重要的另一半,是我们对密码设计的重点,是有所不同的。如果是银行的6位10进制数,那么,我们的密码设计中,防范的重点应该是对密码的猜测上。而如果是计算机系统或者网络某个登陆密码,则重点防范的则是暴力破解。这点的区别,似乎很多人忽略了。

    具体来说,银行的密码,大多数是6为10进制数(有不同的,自己类推一下,结论肯定是类似的)。那么它们的组合一共有多少呢?很简单,10^6种,也就是一百万种?多吗?一点都不多:一个一百万的码本,占用的空间,顶多就是几十兆一百兆字节,而遍历这个码本(一百万次匹配),对于对于现代计算机的运算能力而言,再差的算法,也绝对能在一分钟内完成。所以,这种密码体制,对于暴力破解而言,是极其脆弱的,甚至可以认为是不设防的。所以,我们对防范暴力破解的希望,就只能在银行提供的服务上了:银行既要防止对同一个账号连续测试,也要通过内部安全措施,防止银行职员越权获得密文等等。在这点上,我们无能为力,只能相信银行,相信它提供的安全机制,能够防范来自内部和外部的暴力破解。所以,我们设计出来的密码,需要防范的重点,是防止有人利用我们的某些公开信息,不经过暴力破解,或者仅经过少量测试,猜测出密码来。

    而对计算机系统或者网站登陆密码而言,大多数情况下,只要是键盘上能打出来的,就是可接受的。所以,密码的组合就可以呈现出一个近乎天文数字的结果。这使得单纯的枚举式暴力破解,几乎是不可能的。而且,由于大部分这些系统,都采用了现代成熟的商用密码安全算法,例如说哈希算法:MD5/SHA1,也有些网站用对称算法例如:DES/AES/IDEA等等,以保留一个反向获取密码的能力(虽然用对称算法的密文保存密码的安全性稍低,但是反向获取密码的最大作用,是当大家忘记密码时,它可以发送密码到先前设置的安全邮箱中)。对于这些安全体系而言,对于普通的破译者的技术水平来说,纯密文的安全性是可以得到保证的(如果NSA、CIA、FBI盯上了你,算我没说)。所以,通常用的方法,就是字典式的暴力破解。所以,对于这种体系,我们的密码设计的重点,就是防止这种字典攻击,简而言之,就是构造出一个在绝大多数破译者使用的字典中都不存在的密码组合。

    其次,使用的便捷性。其实在密码学上,有一个很基本的通则,就是越是好的密码,或者安全措施,基本上给使用者带来的不便就越大。而当一些不便大到一定程度的时候,使用者就会用各种偷懒的手段去绕开这些安全措施或者原则。例如说,河里已经有不少的大牛,根据自己的经验或者实际使用的情况,给出了很多生成密码的方法和方式,甚至是需要演算叠加而得来的。这种方法当然是好的,但是,如果一个非常安全的密码,为了算出来,你需要在电脑边上拿纸和笔算上三分钟,或者站在ATM机旁边心算十分钟才能算出来的话,那么我敢打赌,99%的人在使用不超过十次的时候,就会开始用各种偷懒的方法了。例如说偷偷的把演算结果写在某个地方,或者干脆改密码等等。所以,千万不要高估自己的耐心。当然,这种耐心,还有心算能力,是每个人都不同的:陈景润苏步青十秒钟心算出来的东西,我们可能十分钟也未必算出来--算出来的,还不一定是对的。所以,这个要因人而异,自己掌握。

    再次,就是密码的使用--也就是有人提到的分级的概念。一般而言,对你很重要的密码,例如说银行密码,一定不要用在一些对你而言无关紧要的地方。因为多一个地方用这个密码,就多一重泄露的可能性。所以,理论上说,每个不同的地方,就使用不同的密码,显然是最佳选择。但是考虑到上面所说的便捷性,除非自己使用密码的地方很少(在现代社会这点似乎不太可能),不然,就需要做出一定的权衡。密码的分级处理策略,是比较简单可行的。密码分级的核心原则就是,分出不同级别的使用场合,同一级别内,用同一个密码,或者同一个算法生成的密码。不同级别的场合,绝不混用密码。所以,我们还要看看密码在什么地方使用的。例如上面说的,如果一个网站提供了忘记密码找回的功能,那么,他肯定用了一些可逆的算法来保存你的密码(也就是说可从密文直接恢复出明文的算法)。这类算法,无论是对称算法还是非对称算法,他们的安全性完全在密钥上面。也就是说如果一但这个网站的加密解密用的密钥被获取,那么这些密文,对于破译者来说,就毫无安全性可言了。所以,如果碰到这些网站,如果是大公司,或者你认为信得过他们的安全技术人员和内部的安全规章和措施,并且能认真执行的话,可以用一些级别比较高的密码。不然的话,就不要过于相信这些网站。以免一但一个被泄露,就一连串的遭殃。比较好的做法是,为这些网站,单独划定一个级别,一但出问题,也不至于全军覆没。

    最后,谨记一个原则:对于非安全相关专业人士(一句老话:如果不知道你是不是专业人士,那么说明你不是)而言,你所设计的密码或者算法,都是业余级的,永远不要指望能抵挡专业人员或者机构的破解和攻击。简而言之,就是防君子不防小人的。谁是小人?呵呵,看多点美剧或者好莱坞的大片,大家都应该猜到的。

    开始准备就说两句的,结果越说越多。俗话说说得越多,错得越多。我觉得在藏龙卧虎高人无数的河里,更是如此。先躲起来,看看有没有人觉得班门弄斧糊弄大众?大家有西红柿和鸡蛋尽管丢,不过力气小一点,不要砸破了--现在经济不好,我今天的晚饭,就指着西红柿炒鸡蛋了。

    关键词(Tags): #密码(landlord)

    本帖一共被 2 帖 引用 (帖内工具实现)
    • 家园 【原创】也说一下关于密码的问题(三)

      再接再厉,说一下计算机中使用的密码。

      其实1001n在他的大作中已经提到了一些生成算法。他的算法通用性很好,但是稍微复杂了点。在这里,准备向大家透露一个简单而又足够强大的高级技巧:非可见字符大法。

      什么是非可见字符呢?

      熟悉计算机的应该都知道,ASCII字符集中,只有32到126的字符是可以正常的显示为我们的各种英文大小写和标点符号。在这个范围之外的字节,其实在显示的时候,是无法正常的被解析为有显示意义的字符的(也就是我们俗称的乱码)。

      下面先给大家演示一些特殊的非可见字符,括号内是实际的ASCII值:

      (130)

      (140)

      还有很多字符,实际的ASCII值不同,但是显示出来的乱码是相同的:

      (195)

      (196)

      还有一些,是无法显示的空格,当然,那不是ASCII码为32的正牌空格:

      (160)

      这些乱码在写文章的时候还是有的,但是提交之后,就真的变成了“非可见字符”了。晕

      有意思吧?

      例如说,如果我们在密码中加入了一个或者几个这样的值,有谁的字典能猜到?而且即使猜到了,显示出来的,也未必能看得出来区别,有很多是ASCII值不同,乱码相同的情况。

      那怎么才能输入这些非可见字符呢?

      首先,大家先确认一下自己键盘有没有数字小键盘。记住不是qwerty键盘上的那一排数字键,而是一般在右边,1-9呈3×3排列的那个小键盘。如果是笔记本,一般是按Fn+NumLock开启(基本上都有这个设计,具体方法看说明书)。

      然后,随便打开一个记事本,按照一下步骤做个小实验:

      一:左手先按着qwerty的Alt键不放(左右两个Alt键,任意一个都可以);

      二:在小键盘中输入你想要的ASCII字符的数字(推荐大于127,小于255的)。你可以注意到,这时你虽然在小键盘按了好几个字符,但是没有字符真正被显示出来;

      三:松开Alt键。这时,就可以看到一个乱码出来了。

      如果你的实验成功了,那接下来,在你的密码中,在什么地方加入一个或几个这样的非可见字符,就看自己喜欢了。

      最后,再补充一下,这种方式输入的字符,除非有明确限定密码字符范围的地方,否则,在很多地方都是适用的。最起码的,操作系统登陆的密码,基本上都可以这么用,Windows/Linux/Unix等等地方都是可以用的。没记错的话,也包括西西河。

      另外,以前也见过一个帖子,故弄玄虚的弄了一个算术式,然后让人用这种方式去输入算术式得出的结果,然后说出来的字就是你。当然,大家算出来的ASCII值都是55021,究竟会出来个什么字,大家可以自己看看。

      呵呵。

      • 家园 password应该就是“口令”,不是“密码”

        老兄写的很好,受教了。

        但是在这个小问题上还是想和兄抬一下杠

        想象一下:

        军营门前,月黑风高,突然细琐声响,人影闪动,哨兵“啪”的端枪一指,断喝:

        “口令!”

        “胜利!”

        “嗯,自己人,过去吧。”

        这就是password啊,能够让您pass的word

      • 家园 口令和密码其实是不同的概念

        如楼下七月半已经指出的那样。

        日常中使用的“密码”一词,绝大多数是指口令,1001n说的故事才是真正的密码。

        语言文字已经被污染了,大家都有义务纠正过来,你既然说这个话题,就应该规范用词,这是许多有识之士曾经在西西河呼吁过的。

        • 家园 不存在什么污染不污染。

            一个词,大家都用惯了,大家都知道是什么意思。即使是多义,大家也明白在什么场合是什么意思,这就行了,没什么必要一定要改过来,即使是想改也是非常困难。

            当然有时习惯用词也是能改的,这要有一定条件。一是这个词的使用会有极大的误解,二是这个词的使用有一定的政治含义(不是词本身),三就是新词用的比老词方便。当然也可能有其它的,但光凭一些人喊要净化语言是无济于事的。

            上述的一中比较典型的是“鲸鱼”,到现在也还有人用“鲸鱼”这个词;二中典型的洋火、洋钉,这些词在文化大革命开始时一夜间都改过来了,成了火柴、铁钉;三中典型的是打的,以前都叫坐出租车,当然这也有点跟富的原因。

            至于密码这个词,大家都知道在什么场合是什么意思,都不会搞错,取钱时银行要密码谁也不会掏个密码本出来。

            顺便说一下激光,以前大陆的音译是“莱塞”光,好象是七十年代左右逐渐改叫激光,镭射是港台的叫法,后来才进来的。

          • 家园 符合你说的“极大的误解”。你还用“彩电”“三用机”吗?

            洋火、洋钉、莱塞-->火柴、铁钉、激光,本意都没有变化,只是用不同的词。

            因为洋火和火柴表示同一个东西,你说哪个都一样。可是如果他们分别表示不同的物体,你能够随便用混用吗?

            密码和口令本身是两个不同的东西,常人有“极大的误解”,如果明白人要装糊涂那就没有什么可说的了。

            你有没有注意到,几乎已经没有人用“彩电”和“三用机”这两个词了?这是因为官方媒体统一口径清楚污染的好的结果。官方是有能力规范语言文字的,“一夜间都改过来了”。

            瓦斯:【原创】由曹操的“鸡肋”是密码还是口令说起

            • 家园 你看清楚我的帖子了吗?

                “彩电”没人用了?现在说的人少了不是什么官方的规范,而是现在的电视机只有彩电,所以不需要加个彩字来区分,只要说电视就不会误解。

                对了,现在一般人说“我去买电视”也是个“不规范”的用语。

                “三用机”是什么?俺不知道。

                至于洋火、洋钉之类的并不是官方规范过来的,那时也没有任何一级文件或什么呼吁,只是大家一“革命化”就自然而然的改过来了。

              • 家园 再说“瘀血”与“淤血”规范用法

                再说“瘀血”与“淤血”规范用法

                注意最后写道:

                可以互为参照,不可相互替代。

              • 家园 新华社禁用词汇-新闻报道中的禁用词(第一批)

                新华社禁用词汇-新闻报道中的禁用词(第一批)

                http://www.zgbjweb.com/view.php?tid=2797&cid=23

              • 家园 关于彩电和三用机的规范,我当年看到过报道,所以记得

                也是七十年末八十年代初的事情吧。

                当时“三用机”是指大量走私进来的“收录机”,因为国人以前只有收音机,没有见过集收音、录音和放音于一体的机器,就叫它“三用机”。其实录音和放音是录音机的功能,只能算一种功能,规范的词应该叫“收录机”,这我当时在报纸上看到过,所以记得。

                官方新闻制度检查经常被人诟病,规范一些词汇,它又怎么会没有这个能力呢?

                官方是这样一个政权,有很多该做的事情它没有去做,因此常被人骂。但是,如果它有心去做任何一件事情的时候,它基本上就都能够很快地做成做好,比如京九铁路、青藏铁路、奥运会。

                最近几十年来,官方媒体上经常出现港台用词和主持人学港台腔,被规范过几次了吧,但今天还是经常出现“打造”这种俗气的用词,不是官方无力去做,而是没有真的想去做。

        • 家园 关于这个问题我觉得有必要讨论一下

          原则上,我也赞同这点:

          语言文字已经被污染了,大家都有义务纠正过来,你既然说这个话题,就应该规范用词,这是许多有识之士曾经在西西河呼吁过的。

          但是,既然大家对这个问题这么关心,那么我觉得还是要详细说一下我对这个问题的理解。

          先抛开“密码”这个有争议的词不论,先说一下其它的一些和密码/密码学相关的术语:

          口令:Password。这个含义很清晰,无需多解释。

          密码学:Cryptography。指的是对密码算法的研究和使用。如果要细分,偏向于密码技术的使用,密码协议和安全系统的设计等。而对密码算法本身的研究和设计,还有另一个词Cryptology指代。但是如果不需要精确细分的话,一般二者通用。

          密码算法:Cipher。一般是加密算法和解密算法的通称。

          密钥/密匙/钥匙,Key,密码学上密码算法中的某些关键参量。

          而1001n说的,如果说是他写的《密码传奇》,那么实际上他说的是密码学和密码学发展史(说实话我看的不是很多,断断续续看了大约10篇左右吧)。而且细分而言,可能也是考虑到读者的水平,在近现代密码学中,除了对enigma分析的一小段外,其余的大都是密码技术和密码协议上的叙述和描写。例如说描述分析破解enigma中,大量描述到对德军密电前几个字符是密钥及盟军以此为突破口等,这就是密码协议和密码分析的范畴。而描述到德军使用enigma传输天气预报而导致破解的时候,这些就属于德军的安全系统的设计失误等等。

          同理,前面另一位朋友所说的《暗算》,也是密码学上的内容,而且监听(第一部)和密写术(第三部)等等,已经不是传统的密码学范畴了。

          当然,有一点我想我们可以有共识的,就是“密码”一词,如果从广义而论,基本上包括了我上面所说的各种范畴。而现在我们所争议的就是,狭义上的“密码”所指,究竟是指代“密码学”?“密码算法”?还是“口令”?

          在这点上,我承认汉语确实有含糊不清的一面。

          但是我个人认为“密码”和“密码学”不是同一个指代对象。原因有以下几个:

          一:在我能找到的所有翻译软件中,对Password一词,翻译的结果中,要么“口令”和“密码”并存,要么只出现“密码”,而不出现“口令”。反过来只出现“口令”而不出现“密码”的,目前我没有看到。而对Cryptography一词的翻译,均称为“密码学”。

          二:wikipedia中,在“密码”词条中,明确写到:

          密码在中文里是“口令”(password)的通称。登录网站、电子邮箱和银行取款时输入的“密码”其实严格来讲应该仅被称作“口令”,因为它不是本来意义上的“加密代码”,但是也可以称为秘密的号码。

          而在“密码学”词条和“密码”的词条入口完全不同。这至少意味着“密码学”和“密码”是两个完全不同的词语(不像“物理学”和“物理”一样二者等价)。

          但是我个人对把“密码”解释为“加密的代码”,有异议。因为很简单:“代码”一词是计算机中的专有名词,和“源代码”一词基本上等价。而“密码”的使用范围广得多,总不能说只有在计算机或者IT上的,才能叫做“密码”吧?

          而我认为“密码”指代“口令”的原因是:现有大量的技术文档、软件界面、用户手册等等,都以“密码”代称“口令”,包括在我工作中接触到的大量涉及系统安全方向的专业技术文档,都以此代称。

          另外,这种代称也在各方面被使用着:从银行ATM上的提示、银行柜台输入密码的语音提示、电子邮箱的登录(例如说我用的Gmail)还有网站(例如说西西河)都是如此--虽然大家都说严格意义上应当被称为“口令”。如果大家都有共识认为“密码”不能指代“口令”,那么首先应该让铁老大把西西河的登录界面给改了再说。

          所以,起码在我的文章描述的范畴中,可以认为,这种取代是被广泛接受的。而且,更进一步来说,我们应当尊重我们所描述的原文。如果明天有人来问我:“你的文章很好,我按照你的方式,去银行柜台设置了新的口令,但是我去商店刷卡或者去ATM取款的时候,人家还是要问我密码,没问我口令,怎么办?”不要以为“Press any key to continue”这种笑话仅仅是笑话。

          但是,如果说“密码”一词指代“密码算法”,也是有先例可寻的:例如说著名的凯撒密码,实际上指的是一种密码算法,不过这一般指的是古代的密码算法。到了现代的密码算法,一般重新称为算法了。例如说“DES算法”、“RSA算法”、“RC4/5算法”、“IDEA算法”等等。

          至于有人用“对称密码”这种说法,反倒是不正确的。因为英文的描述为:symmetric-key algorithm。algorithm一词明显应当被翻译为“算法”。

          或者从另一个角度,也可以认为“密码”是“密码算法”的简称,也行。

          实际上,这种多重替代,或者用俗称来替代,是非常常见的。在不引起歧义的情况下,对大多数人都接受的替代称呼,不应该过多的干涉。

          例如说,Linux这个词,指的是什么?一个操作系统?一类操作系统?一系列发行版的集合?错!

          从严格定义来说,Linux仅仅指的是一个十来兆二十兆字节的程序,虽然通常我们称之为:内核,但是实际上,这个“内核”,才是真真正正严格定义上的Linux。但是,在绝大多数情况下,包括各种的软硬件驱动、shell都被通称为Linux。范围大一点的,连grub、Xwindow和各种的窗口管理器都会包括在内。

          另外,Linux的严格称呼,应当为GNU/Linux。先不论法律上怎么说,但是单独称为Linux,在绝大多数情况下,也是约定俗成的。

          至于Linux这个单词的发音,说实话,我听到的版本至少有三四个,不过没关系,大家知道说的是什么就可以了。

          所以,我个人的看法如下:

          一,“密码”这个词本身没有严格的学术定义,或者说我没有看到在学术界对此有共识或者有通用的定义(如果有的话,请各位提出相关的证据);

          二,狭义上的“密码”一词,不应该指代为“密码学”;

          三,“密码”同时指代“口令”和“密码算法”是不会引起歧义的,因为这二者同时在同一场合出现的可能性很小,而且,在专业技术文档中,“密码算法”一词通常是被明确指出的;

          四,作为通用的约定俗成的称呼,“密码”指代“口令”一词,已经在绝大多数场合被使用,而且甚至可以看到“口令”一词本身已经很难看到。所以,从语言的角度来说,已经不是“指代”的关系,而是“替代”的关系了;

          五,一词多义的情况,无论在中文还是英文,都非常常见(英文单词的Key,有多少种含义?)。只要没有明确的定义或者约定的共识,而且不引起歧义,直接使用较常见的称呼,并无不可。

          最后,说说我对这个问题的感受,就是我似乎在不断的向几位在解释:为什么1+1=2?

          因为在IT界,大量的中文技术术语,根本就没有统一的翻译标准。而实际使用中,为了表达准确,常常会直接使用英文原文。所以,抬杠一点说,很多时候,根本就无所谓“污染”一说--因为从来就没干净过。例如说最著名的“堆”、“栈”和“堆栈”的翻译,谁污染谁了?还能被怎么污染吗?

          所以对于开头的那句话,我原则上同意。例如说“鲸鱼”不是鱼,要改为“鲸”这种,我同意。如果想把这个原则和模式套在IT界,不可能行得通。老实说,我比你们更盼望有个国家统一的术语翻译标准出来。在这个标准出来之前,我的唯一目的是让我的同事、老板、客户、读者明白。中文不够,搭上英文。


          本帖一共被 3 帖 引用 (帖内工具实现)
          • 家园 既是明白人就不做糊涂事。密码与口令的区别是什么呢?

            密码是可以公开的,可以被侦听到,也就像土匪的黑话,外人听了也听不懂。

            而口令是不能公开的,一公开谁拿了口令都可以进入,口令等于明码。

            密码与明码是不一样的东西。

            语言规范要从我做起。

            • 家园 密码可以公开???

              兄弟,你没弄错吧?

              密码是可以公开的,可以被侦听到,也就像土匪的黑话,外人听了也听不懂。

              你说的这个不是“密码”而是“密文”。

              我敢打赌,99%接受过过基本网络安全或者密码学学习的人,都不会把“密码”和“密文”弄混。

              • 家园 密码和密文是同一回事,口令与明码是同一回事。
                • 家园 你这玩笑开大了

                  密码和密文是同一回事

                  口令与明码是同一回事

                  我觉得你应该没有接受过正规的网络安全或者密码学学习吧?也没有接受过正规的通信学的学习吧?

                  另外,密码学中,和“密文”对应的术语,是“明文”,而不是“明码”。

                  “口令”和“明码”的区别也相当的大,基本上是属于两个不同领域的词汇。

分页树展主题 · 全看首页 上页
/ 3
下页 末页


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河