• 密码常识测试


    20191218 密码常识测试

    密码信息威胁

    观点一

    很多企业和技术人文都有下面这样的想法∶“由公司或自己开发一种密码算法,并将这种算法保密,这样就能保证安全。

    我的看法:错误

    分析
    使用保密的密码算法是无法获得高安全性的。我们不应该制作或使用任何保密的密码算法,而是应该使用那些已经公开的、被公认为强度较高的密码算法,现代密码学都将密钥作为保密对象进行管理,而不是将算法进行保密;

    1. 随着时间的推移、技术的进步或者保密措施不到位,密码算法的秘密早晚会公诸于世。从历史上看,密码算法的秘密最终无一例外地都会被暴露出来。例如: RSA公司开发的RC4密码算法曾经也是保密的,但最终还是有一位匿名人士开发并公开了与其等效的程序。一旦密码算法的详细信息被暴露,依靠对密码算法本身进行保密来确保机密性的密码系统也就土崩瓦解了。反之,那些公开的算法从一开始就没有设想过要保密,因此算法的暴露丝毫不会削弱它们的强度;
    2. 开发高强度的密码算法非常困难的,消耗巨大,保密成本高,在现实生活中并不实用。要比较密码算法的强弱是极其困难的,因为密码算法的强度并不像数学那样可以进行严密的证明。密码算法的强度只能通过事实来证明,如果专业密码破译者经过数年的尝试仍然没有破解某个密码算法,则说明这种算法的强度较高。稍微聪明一点的程序员很容易就能够编写出“自己的密码系统"。这样的密码在外行看来貌似牢不可破,但在专业密码破译者的眼里,要破解这样的密码几乎是手到擒来;
    3. 现在世界上公开的被认为强度较高的密码算法,几乎都是经过密码破译者长期尝试破解未果而存活下来的。因此,如果认为“公司自己开发的密码系统比那些公开的密码系统更强”,那只能说是过于高估自己公司的能力了。反过来说,将密码算法的详细信息以及程序源代码全部交给专业密码破译者,并且为其提供大量的明文和密文样本,如果在这样的情况下破译一段新的密文依然需要花上相当长的时间,就说明这是高强度的密码。

    观点二

    使用低强度的密码算法,比如凯撒密码,也比完全不加密更安全。

    我的看法:错误

    分析
    这主要是由于用户容易通过“密码”这一词获得一种“错误的安全感”。对于用户来说,安全感与密码的强度无关。而只是由“信息已经被加密了”这一事实产生的,而通常会导致用户在处理一些机密信息的时候麻痹大意。
    在16世纪,当时的苏格兰女王玛丽曾认为没有人能破译自己使用的密码。正是由于对密码的盲信,她将刺杀伊丽莎白女王的计划明明白白写在密信中,结果密码遭到破译,玛丽也因此被送上断头台。

    观点三

    一次性密码本(one-time pad)或一次一密是无法被破解的,所以日常的数据加密应该使用一次性密码本算法。

    我的看法:错误

    分析
    一次性密码本即Vernam Cipher,是由Gilbert Vernam在1917年,开发的一种加密算法。是一种通过在文本的二进制级别上进行工作来对纯文本进行加密的密码技术。之所以叫做一次性密码本,是因为加密所用的密钥是一次性的,即密钥只会使用一次,不会出现因为密钥泄露导致之前的加密内容被解密。即使密钥不小心被泄露,也只会影响一次通信过程,但现实生活中并不使用一次一密,主要有以下原因:

    1. 密钥配送困难。密钥和原文以及密文都是等长的,目标端如果想解密就必须拿到密钥,如果能有一种方法将密钥安全地发送出去,那么岂不是也可以用同样的方法来安全发送明文吗?
    2. 密钥保存困难。如果有办法安全保存与明文一样长的密钥,那不是也有办法安全保存明文本身吗?也就是说,从一开始我们根本就不需要密码。
    3. 密钥的重用难以实现。在一次性密码本中绝对不能重用过去用过的随机比特序列,一次性密码本中的“一次性”也正是由此而来。这是因为作为密钥的比特序列一旦泄密,过去所有的机密通信内容将全部被解密。每个密钥只用一次,这即是缺点也是优点。意味着我们每次都要不停的更换密钥,增加了复杂性;
    4. 密钥的同步复杂。当明文很长时,一次性密码本也会跟着变长。如果明文是一个大小为100MB的文件,则密钥的大小也一定是100MB。而且在通信过程中,发送者和接收者的密钥的比特序列不允许任何错位,否则错位的比特后的所有信息将无法解密;
    5. 密钥的生成复杂。在一次性密码本中,需要生成大量的随机数。这里的随机数并不是通过计算机程序生成的伪随机数,而必须是无重复性的真正随机数;

    观点四

    只要密码算法强度足够,实现正确就可以保证信息安全。

    我的看法:错误

    分析

    1. 密码只是信息安全的一部分,不能仅仅靠增强密码算法来保证信息安全。最近,社会工程学攻击开始流行起来。例如,办公室的内线电话响起,电话里说:“你好,我是IT部门。由于需要对您的电脑进行安全检查,请将你的密码临时改为XR2315.”而实际上拨打电话的有可能就是一名攻击者。要保证良好的安全性,就需要理解“系统”这一概念本身的性质。复杂的系统就像一根由无数个环节相连组成的链条,如果用力拉,链条就会从其中最脆弱的环节处断开。因此,系统的强度取决于其中最脆弱的环节的强度。最脆弱的环节并不是密码,而是人类自己
    2. 无论使用任何密码算法所产生的密文,只有将所有可能的秘钥全部尝试一遍,就总有一天可以破译出来

    参考资料

  • 相关阅读:
    [Leetcode] Rotate Image
    [Leetcode] Permutation Sequence
    [Leetcode] Palindrome Partitioning
    [Leetcode] Letter Combinations of a Phone Number
    Java里的多线程
    css学习2----css动态菜单
    css学习1----css超链接效果
    javascript判断身份证是否合法
    RMI(Remote Method Invocation,远程方法调用)
    struts.properties配置详解
  • 原文地址:https://www.cnblogs.com/20191218tangqiheng/p/15941442.html
Copyright © 2020-2023  润新知