Applied Cryptography:chapter 11 数学背景

数学背景

11.1 信息理论

1)熵与不确定性

信息理论里面定义了:信息量这个概念。一个信息有多少种可能,在计算机中都有一定长度的数据来表示,例如一周的天数。
               周一、周二、周三、周四、周五、周六、周日
一共七天,那么就可以使用3bits的二进制数来表示这七种情况。

如果要讨论性别的话,那么就只需要一位来表示性别。“0”或“1”代表“男人”和“女人”。
以上的3bits,1bit都是信息量。

在信息M中的信息量用信息的来表示,符号是H(M)。
这样看来,用上面的例子看,性别的熵是1bit;一周的天数的熵是3bits
一般来说,信息的熵用比特来测量为H(m) H ( m ) = log ⁡ 2 n H(m)=\log_2 n Hm=log2n
n就是基本事件数量(例如天数)

熵可以用来测量信息数量的不确定性
(在一个杂乱的密文中,你想知道明文,那么密码学家首先要做的就是,该明文的熵是多少,其实此时就是该明文的不确定性是多少,比如,我看到一行乱码“ksd*w@#$”,它代表着性别的密文,那它的不确定性就是1,但是密码学家不知道明文是什么,那么就需要去判断,明文不确定性是多少,一旦确定了是1,那么这个密文也就很好被破解了。)

2)语言速率(rate of language,网上没搜到,先用这个直翻)

给定语言中,语言速率为 r = H ( m ) / N r=H(m)/N r=H(m)/N
(N是信息的长度)

英语速率为1.0~1.5比特/字符,
如果说一种语言中有L个字符,则绝对的速率如下公式
R = log ⁡ 2 L R=\log_2 L R=log2L
例如英语中,字母有26个,则速率为 log ⁡ 2 26 \log_2 26 log226,约等于4.7位/字母
字母的冗余一般用D来表示,被定义为: D = R − r D=R-r D=Rr

3)系统安全性

      密码分析员他们的目的就是确定密钥K,明文P。他们对于关于P的概率性信息非常感兴趣,例如这是数字音频,德文文字,表格数据等等。
      现实中,如果密码分析员想要确定K或者P的话,做事情之前,他们就应该知道一些概率性的事情,例如他们已经从一些信息上大概率的猜出明文所采用的文字类型。
      有一种密码学系统可以实现完全的保密:从密文看不出或检测不出任何关于明文的信息。香农建立了理论:只有密钥的长度至少等于明文的长度,才可以保证实现完全保密(K>=m),这也是一次密码本(one-time pad)的概念来源
      语言越冗余,那么就越容易被分析破解出来。所以在加密之前,总是会先将明文进行压缩,使得其中的冗余变得特别少,之后再使用密钥对压缩后的数据进行加密和解密。

密码学系统的熵全都体现在了密钥的上面。K是密钥,H(K)是熵。
算法公式如下: H ( K ) = log ⁡ 2 K H(K)=\log_2 K H(K)=log2K

4)唯一解距离

密文数量的近似值称为唯一解值U,即相应明文中的真实信息总数加上加密密钥的熵等于所使用密文的比特数。超过这个距离的密文可以确定只有一个有意义的加密方式。少于这个距离的密文有多个合法的加密方式,因而能紊乱情况,获得安全。
在对称加密算法中,这个单度值可以被认为是:被语言的冗余分开的系统的熵值:
U = H ( K ) / D U=H(K)/D U=H(K)/D

完全看不懂自己写的是什么,不过不用知道它具体的含义,只需要知道,它和冗余度(冗余度,字面意思,不会就搜)成反比。知道了密文一定的量(最好是最小的值),然后可以推断出,只有一种加密的方式加密明文。唯一解距离越长,密码学系统越安全。
唯一解距离如果太小,密码系统就会不安全。但是如果加长,并不会保证系统更加的安全。

5)混淆与扩散

混淆:混淆可以模糊明文和密文的关系,这个使得研究密文从而获得该加密方式的冗余和统计方式非常困难。那么怎么混淆呢?最简单的方法就是替换,替换密码中最典型的就是凯撒密码。凯撒密码已经是几千年前的产物了,现代的替换密码当然是更加的复杂的。(凯撒密码太简单了,我不注解了。)其中最典型的就是German Enigma,也就是二战时期德国人发明的密码编码机。

扩散:在密文中扩散冗余,然后使得明文的冗余减少。密码学家尝试找其中的冗余的时候,会变得非常的困难。扩散当然也有常见的实现方式,那就是移换。常见的移换有栅栏易位(英语好的大神可以百度搜columnar transposition,有详细的讲解)。
下面一张图(抄来的)详细讲解了这个栅栏易位:
如果明文是:“Which wristwatches are swiss wristwatches”,则操作方式如下:
在这里插入图片描述
看懂就看,看不懂,看原文

序列密码仅仅依靠混淆,分组密码则两者都使用。(扩散容易被破解)

11.2复杂理论

1)算法复杂度

一个算法的复杂度由解决它所需要的计算能力决定。通常,两个变量可以测量算法的复杂度:Time和Space(时间复杂度和空间复杂度,好了,学过数据结构,算法的朋友就懂了,这里的算法复杂度,其实就是那里学到过的算法复杂度)。
所以算法复杂度不多说。给一张图吧(截的图)
算法复杂度

2)问题复杂度

问题可以分为:可解问题和不可解问题。可解问题在一个合理长度的输入和一个合理时间下能够被解决。不可解问题通俗地讲就是,想要“快速”的算出这个问题,是不可能的。
不可解问题分为两类:一种的确无解,一种是有解,但是算法复杂度实在太高了。
有解问题分为两类:一种多项式问题即(P类问题),一种非确定性多项式问题(NP问题)
P类问题就是所有可以再多项式时间内被解决的问题。NP类问题是所有在非确定性图灵机上,且在多项式时间内被解决的问题。
NP问题和密码学的关联就是:许多的对称密码和公钥密码算法可以在非确定性多项式时间被破解。

11.3数字理论

1)模算法

如果小明要十点回家,但是他晚了15个小时,他几点回的家?

( 10 + 15 ) / 12 = 2 … … 1 (10+15)/12=2……1 10+15/12=21
那么可以知道是1点钟到的家(这是十二小时制)。
这里使用的就是模运算。其实模运算,也就是求余。a%b=c,c就是a/b的余数。而其中的%就是模运算。

2)素数

除了1和它本身,没有其他因数的自然数,是素数。例如,1,3,5,7,11,13,17,19,23,29。。。。。

3)最大公约数

a1,a2,a3,…an,是一组正整数,d是所有ai(1<=i<=n)的因数,则d就是这些数的公因数,这些数可能会有很多的公因数,但是最大的公因数被称为:最大公约数
例子:12,24,16,最大的公约数为4.

4)求一个数字的逆元

什么是逆元? x ∗ a ≡ 1 ( m o d n ) x*a≡1 (mod n) xa1(modn)
跟乘法中,倒数一个概念。(≡这个是同余概念。)
把x看成变量,x的逆元就是a,此时a≡x^-1(mod n)

举例子,5x≡1 (mod 14) ,也就是5关于模14的逆元是多少呢?x=3的时候,5x=15,15%14=1,所以3是5关于模14的逆元。

怎么求逆元,复杂得很,可以专门写一篇文章了。看看这位大神的文章,写的贼细点这里

数学的太复杂了这里讲,篇幅得特别的长,以后有机会一个一个写吧

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值