西西河

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

共:💬34 🌺46
分页树展主题 · 全看首页 上页
/ 3
下页 末页
                  • 家园 俺不信邪。你不妨把区别说说来看。
                    • 家园 关于密码学和通信学

                      先说明一下,关于通信学原理中的比较高深的部分,很多年前我已经还给我的老师了。但是对于一些基础的理论,应该还是有点把握的。如果那位发现我说得不对,请多多包含,我尽快更正。

                      “明码”这个术语仅仅用于通信领域,指的是信道传输编码是直接编码或者公开编码的(例如说海明码或者反三码之类的)。和明码通信对应的,是加密通信。

                      而加密通信的方式有很多种,例如说有信道加密,就是利用特殊的加密编码对信道的所有通信进行加密。这种加密方式,也就是完全抛弃和现有的通信设备的兼容性。这样的话,通信的双方都需要特殊的通信设备,起码是特殊的解码设备。不过在互联网大潮中,除了军方或者少数对安全性要求极高的领域,已经很少有这种做法了。

                      相对应的,还有内容加密,例如说只把需要加密的关键信息加密,然后把密文通过公开的信道传递出去。

                      密码学研究的,狭义而言,密码学关心的是如何找到一个单向函数,使得我们可以很方便的从明文构造出密文,但是在不知道密钥的情况下,基本上不可能从密文得到明文。当然,目前而言,无法从理论上证明这个单向函数是存在的。不过这并不妨碍我们找到一些特性很接近单向函数的函数,这些函数就是我们通常所说的密码算法了。

                      当然,随着密码学和技术的发展,还需要关心如何安全的使用这些密码算法。例如说关于密钥的管理:如何生成?如何传递?如何更新?如何销毁?还有一些例如说在一个公开的信道如何交换密钥?如何识别对方的身份?等等等等。

                      例如说我们现在网络上所谓加密通信,或者加密信道,其实都属于内容加密。例如说VPN/SSL等等,从数据链路层来说,还是通过现有的公开协议的。因为最起码的,肯定要支持RFC 791协议(当然,其实还有很多更低层的协议),不然,所有的数据根本无法通过路由器,更别说从互联网的一端传输到另一端了。

                      所以,密码学和通信学,有相互关联的地方,但是并不一致。

                      至于“口令”,也就是password,其实严格来说也不属于密码学的研究范围。即使是密码学中身份的识别,也不通过口令来完成。

                      只是因为在现代网络为主要通信环境的前提下,密码算法中的密钥,一般都是一组长度不等0到255的数字集合。而且有些算法的密钥,还不能是随便选的一组,例如说DES算法,某些特殊结构的密钥,会降低安全性,而一般生成DES密钥时,都会加以回避。而让用户了解这些并且记住自己的密钥,显然是不现实的,所以就有了形形色色的password机制。从密码学的角度来说,口令也是明文,而它输出的密文,要么作为身份识别的ID,要么映射到一组密钥通信的密钥中。

                      所以,其实你说的那几个术语,差别还是很大的,只是他们的严格定义一下子我说不清而已。

                      希望你能看懂我说的了。

                      再附带说一下,因为现代互联网通信技术的发展和标准化通用化潮流的影响,单纯的加密信道的使用范围已经很少了。所以,从最基础的物理信道来说,其实大家都是在进行明码通信的。只是通信的内容,在可能进行了加密而已。所以,“明码通信”这个术语,已经越来越少被提及了,仅仅在一些收发电报的场合还可以看到。而所谓的“加密信道”,或者“信道加密技术”,现在也已经很少是从真正的物理层或者数据链路层来加密的。一般的,例如说VPN或者SSL,基本上都是基于网络层(IP层)进行加密的(少数也有通过数据链路层加密的,但是这些一般由特殊的帧中继设备或者ATM设备连接)。

                      • 家园 实在佩服您的耐心!

                        旗开得胜。抬离谱。哈哈学得不错

                      • 家园 你说了“口令”,也就是password

                        至于“口令”,也就是password,其实严格来说也不属于密码学的研究范围。

                        这不就清楚了吗?

                        我早说明白人不做糊涂事。你的系列帖子写了很多,讲的都是口令,不是密码,不是密文,“严格来说也不属于密码学的研究范围”。

                        我们提醒你的就是规范用词问题。

                        • 家园 但是属于密码系统实现的范围

                          也就是说,password这种东西,密码学不会去研究它,至少是很少去研究它。

                          但是在实现一个密码系统或者安全通信系统的时候,它则是一个必不可少的功能或者模块。

                          所以从理论的角度而言,口令不属于密码学。

                          但是从工程的角度而言,口令则属于密码系统必不可少的一个部分。

                          这点关系,希望你能弄清楚。

                          另外,“密码”这个词是否可以指代为“password”,大部分人都不会从纯理论的角度出发去思考问题。

                          而某些理论术语在民间被赋予另一个含义而被广泛使用,这并不少见。甚至,有些理论术语,一开始就是来源于某个已经存在的生活词汇。Password就是这样的一个借用的词汇,Key(密钥)在英文也是一个借用的词汇,在中文则是新创建了一个词语。

                          最明显的,就是经常能看到的:“电子XXX”。什么“电子计算机”、“电子狗”、“电子眼”、“电子锁”诸如此类的。其实和物理学的“电子”有任何关系吗?或者说他们比其它的“非电子计算机”、“非电子狗”、“非电子眼”、“非电子锁”和电子多了些什么关联吗?

                          没有。

                          那我们是不是也要禁用这些词汇呢?

                          所以说不能过多的把学术上的定义,套用在生活词汇中。毕竟不是每个人都是大学物理科班出身,没有接受过专门的通信专业学习,也不准备在密码学领域深入研究。要求他们学习并且理解这些术语的内涵和外延,显然是不现实的。

                          而我的这些文章,既不是学位论文,也不是专门的项目技术预研报告。要求大家在阅读之前,接受我另外写的上万字的专门术语解释和论述,显然也是不现实的。

                          • 家园 你既是科班的,就不要随波逐流

                            你若不称口令而称密码,谁用口令?

                            语言规范,人人有责。

                            • 家园 事实是,越来越少人用口令这个词

                              无论是不是科班的,都在用密码这个词,这是现实。

                              正如我上面说的:如果某种用法不产生歧义或者误导,而且已经被广泛接受和认可,那么没有必要一定去纠正它。

                              我不是语言学家,甚至不是学文科的。但是我也知道,大到一门语言,小到一个词汇,都有自己的生命力,也有自己的生命周期。语言在不断的演化,也在不断的发展之中。

                              例如说英文tank,原义指的就是水箱。而在军事术语中,这个名词,开始仅仅是作为一种新型武器一个代号或者掩饰的名字而已。而在实际的演化中,tank这个词,就成了这种新型武器的通称了。而这种新型武器原先的正式的,科班的命名,早已经被人淡忘消亡。

                              再举一个中文的例子:Laser,在英文中其实是一串单词的缩写:Light Amplification by Stimulated Emission of Radiation(受激光辐射放大器?)。在中国大陆,原先使用的词汇,是它的音译“镭射”(应该是从港台那边流传过来的)。而后来,当出现“激光”这个译法之后,“镭射”这个词也已经逐步的消亡了。而现在,即使在香港等地方,“激光”这个词,也已经非常广泛的使用了。

                              所以,我从来不担心一个词不再被人使用诸如此类的问题。人民群众发明了语言和文字,也会推动他们的发展。这不是某些专家学者,也不是一帮科班人士可以改变的。而我觉得我们作为专业人士,只要做到纠正一些容易引起歧义的说法就好了,例如说“鲸鱼”。

                              但是即便如此,也不是完全能纠正的,例如说我们费了好大的功夫,还没完全把“鲸鱼”给改过来。那么后面还有一连串的“鱼”:“鱿鱼”、“章鱼”、“娃娃鱼”等等。相比“口令”和“密码”,这些容易引起歧义和误解的说法,更应该指的关注。

                              而“口令”和“密码”谁用谁不用,老实说,只要不引起歧义,我不关心。

                              • 家园 你明白你的“密码”与1001n的《密码传奇》不是一回事

                                你是科班出生的,你还要这样坚持己见,那只能随你了。

                                • 家园 当然不是一回事

                                  我前面已经说过了:《密码传奇》这个名词,以及里面述说的内容,严格意义来说,应当是《密码学传奇》

                                  当然,1001n认为是否需要改,是他的事情。

                                  不过我也支持你针对个问题,向他提出这样的修改要求,因为:

                                  应该规范用词

                                  语言规范要从我做起。

                                  语言规范,人人有责。

                                  呵呵。

    • 家园 【原创】也说一下关于密码的问题(二)

      昨天发完文章就回家了。

      今天回来一看,居然是萨老大的沙发,真让人想不到啊。

      既然也有好几位朋友捧场,那么就多说两句,关于密码具体的设计吧。

      首先,大家最关心的,应该就是银行密码吧?6个简单的数字,就关系到我们的真金白银,不重视一点是说不过去的。

      但是正如我的上一个帖子所说的,仅仅依靠6个10进制数字,就想抵抗暴力攻击是不可能的。所以,我们的重点,就是要抵抗猜测攻击上。抵抗猜测攻击,最简单的做法就是让自己的密码具有足够的随机性。但是问题在于,对于大多数人来说,足够随机的密码,其实并不好记。一个两个,还可以。要是到了十个八个,还要分别对号入座的时候,如果自认为自己记得过来的,那么恭喜你,你有足够好的记忆力,可以使用最好的密码策略来保护你自己的财产。当然,下面的文章就和你无关了。

      那么,在我们无法记住那么多的随机数,但是又有很多不同的银行账号的时候,怎么办呢?有些人就把所有的账号都设成同一个密码。这当然不是不可以,但是从安全性的角度来说,其实并不太让我们放心。因为如果这个密码一但泄露,那么攻击者肯定会用同一个密码去尝试自己的其它账号。

      所以,好的银行密码,应当具有以下几个特征:

      一:足够的随机性。这样可以确保猜测者无法通过我们的某些信息把密码猜测出来;

      二:足够的差异性。这样可以让自己不同的账号,有不同的密码,一定程度上确保自己的账号不会一损俱损。

      三:足够的方便。这点好处不用我多说了。

      首先,一个数学原理是:初等的数学变换,是不会带来随机性的。也就是说,如果希望结果足够的随机,那么就只能指望参加运算的因子(密码学中称为种子)足够随机。所以,第一件事,就是要挑选一个足够随机的数字串,而且,这个数字串的长度,必须大于或等于密码的长度。

      挑选随机数字串的方法有很多,例如说:

      1001n推荐的路上随机挑选的车牌号码(千万不要挑自己的);

      或者下载个随机数软件生成;

      备选的,不过我个人也不推荐的方案有:

      njyd的办公室房间号(大多数房间号都有一定的规律,不够随机);

      jet的mm生日组合(要有足够多的mm,才能用此大法,否则一猜就中--不过也说明jet大哥应该艳福不浅吧?)。

      因为这个随机数的随机性,直接影响密码的健壮性,所以看似简单,但是我觉得还是不要偷懒。为了这么一点点的侥幸和偷懒而冒一个没有必要的风险,我觉得不大值得。反正,无论如何,找一个于自己认为足够随机6位数字串,然后死死的记住它。这样,我们就有了一个足够随机的种子,来保证我们的结果有足够的随机性(当然,不保证这点,随机性在初等数学变换中不会增加,但是可能会减少)。最重要的是:记住它,并且千万不要告诉任何人,也不要把它记在任何地方

      然后,我们要考虑的,就是如何构造一个算法(规则),让自己不同的银行账号表现出不同的密码了。方法当然有很多,但是一个起码的原理是,我们需要另一个数字串和刚才记下来的随机数运算。只要不同的账号,取不同的串,那么我们的目的就达到了。

      在这里我个人推荐用银行账号或者银行卡中提取6个数字参与运算。提取的方式有很多,这点上,大家可以充分发挥自己的创造力和聪明才智:

      最简单的是取账号的最末6位数字(不要取开头的,因为银行账号几个开头的数字一般有特定的格式);复杂一点的可以是把账号最末一位作为偏移值,然后从最末尾倒推这个偏移值后提取出来。

      当然,如果还是觉得复杂的,那么可以用账号A和mmA的生日关联,账号B和mmB的生日关联等方式。

      现在,我们有了两组数字串:一组随机的数字串,一组跟随账号的数字串。我们的最后一步,就是找一种算法,把二者合并起来。一个比较正统的方式,就是按位叠加取模法。方法很简单:把两个数字相加的和的个位数,就是结果。这个算法,其实就是十进制版本的按位异或,写程序搞算法的应该都不太陌生。例如说:123456和234567运算的结果,就是357913。这种算法的优点,就是不会丢失随机性,缺点就是对心算能力有一定的要求。

      如果觉得自己心算能力不强的,也可以采用替换法--就是把一组数字中取出一些数字来替换另一组数字。例如说奇替换,就是123456替换234567后,结果为133557,偶替换类似。至于是奇替换还是偶替换,可以参考账号上最后一位数字的奇偶性来决定。这种替换法的优点,就是简单方便,而且每个人都可以自己别出心裁的想出一些替换的招数,怪招很多,缺点就是会丢失部分的随机性。

      最后,简单总结一下这个算法:

      一:找到并记住一个随机数;

      二:记住一个和账号相关的数字;

      三:把两个数字运算并生成最终的密码。

      • 家园 俺的房间号是三位。

          加一个楼号,再自己加两位变成六位,只要记住两位就行了。至于这两位在三次的限制下也很难猜,还有楼号加在前还是后别人也搞不清楚,自己加的两位也可以前后变化。

          重要的是银行卡的输入是有次数限制的。

          还有,俺已经换过多个办公室,近三十年已经换过不下十个房间,最早是哪个房间现在也顶多有两三个人知道。

        • 家园 呵呵,不好意思

          拿了你作为例子,多有冒犯,还望海涵。

          其实密码这个东西,确实是因人而异的。

          有人觉得不够复杂,有人觉得这就够了。

          就像我第一篇所说的:

          密码的好坏没有一个统一的标准。

          我只是提供一些建议和常见的处理策略和手段。

          至于最后具体的取舍,如何平衡各方面的因素,还是要自己决定的。

          • 家园 确实是因人而异。

              还有个使用密码处的防范,如果可以用穷举法,还可联网,大概十几位也很容易破解。

              银行卡只能错两次,第三次就吞卡,我觉得四位就够了。

    • 家园 银行的密码不需要太复杂,只要别人猜不出来就行了。

        ATM机上连续三次输错就会吞卡,到柜台营业员也不可能让你久猜下去。

        所以银行的密码不需要太复杂,只要不用自己的一些公开信息如电话、生日等,但要好记。

        俺的密码告诉了组成方法别人也没法猜,是俺第一次有办公室的房间号,而且在有银行密码前已经被油漆复盖(装修),现在大概全位也没几个人记得俺的房间号。

      • 家园 其实是一回事

        “密码”和“口令”,其实是对Password的翻译不同而已。

        真正密码算法中,用的是其实是“密钥”(有些能看到“密匙”,应该也是翻译不同的原因)这个词。对应的英文一般是Key,包括衍生出来的:Encryption Key(加密密钥)/Decryption Key(解密密钥)/Symmetric Key(对称密钥)/Public Key(公开密钥)/Private Key(私密密钥)等等。

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


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

Copyright © cchere 西西河