430 likes | 617 Views
信 息 系 统 安 全. 第三讲 公钥密码 张焕国 武汉大学计算机学院. 目 录. 1 、 信息系统安全 的基本概念 2 、 密码学 (1) 3 、 密码 学 (2) 4 、操作系统安全 (1) 5、 操作系统安全 (2) 6 、数据库安全 (1) 7、数据库 安全 (2) 8、可信计算 (1) 9、可信计算 (2). 一、公开密钥密码的概念. 1 、 传统密码的缺点: ① 密钥分配困难; ②网络密钥量大 : ( 1/2 )n(n-1) ③ 不易实现数字签名。 2 、公钥密码的基本思想:
E N D
信 息 系 统 安 全 第三讲 公钥密码 张焕国 武汉大学计算机学院
目 录 1、信息系统安全的基本概念 2、密码学(1) 3、密码学(2) 4、操作系统安全(1) 5、操作系统安全(2) 6、数据库安全(1) 7、数据库安全(2) 8、可信计算(1) 9、可信计算(2)
一、公开密钥密码的概念 1、传统密码的缺点: ①密钥分配困难; ②网络密钥量大 :(1/2)n(n-1) ③不易实现数字签名。 2、公钥密码的基本思想: ①把密钥一分为二:Ke为加密钥,Kd为解密钥; ②由Ke在计算上不能推出Kd; ③将Ke公开,也不损害Kd的安全,于是可将其公开。 北京 武汉 K K
一、公开密钥密码的概念 3、公钥密码的理论模型: ①定义: 设y=f(X),如果已知x求y容易,而已知y求x很难,则称f(X),为单向函数。进一步,若已知某陷门信息,从y求x容易,不知陷门信息,则从y求x很难,则称f(X)为单向陷门函数。 ②公钥密码的理论模型是单向陷门函数. ③理论上尚不能证明单向函数一定存在。 4、工程上认为单向性足够即可: ①大合数的因子分解问题; ②离散对数问题。
一、公开密钥密码的概念 5、公钥密码的基本条件: 设E为解密算法,D为解密算法,Ke为公开加密钥,Kd为保密的解密钥: ①可逆性: D(E(M, Ke), Kd)=M ; 基本条件 如果满足① ,则可确保秘密性; ②由公开的Ke在计算上不能计算出保密的Kd; 安全条件 ③E和D都高效; 实用条件 满足以上3个条件,可构成一个公钥密码体制(可保密)。 ④如果E(D (M, Kd), Ke)=M,则可确保真实性; ⑤如果D(E(M, Ke), Kd)= E(D(M, Kd),Ke)=M,则可同时确秘密性和保真实性;
一、公开密钥密码的概念 6、算法复杂性理论: ①问题:计算机求解的对象; ②问题的规模:求解问题所需输入的二进制位数n。 ③算法复杂度: a.用一个算法求解一个规模为n的问题,若对任意的n和所有长为n的输入,最多需f(n)步可将问题求解,则称算法复杂度为f(n) 。 b.算法复杂度分为时间复杂度和空间复杂度,通常考虑时间复杂度。 C.显然:算法复杂度是求解某问题的最难特例所需的计算时间; 问题复杂度是求解该问题的最佳算法的算法复杂度。 d.算法复杂度强调f(n)随n的变化速度。 e.算法复杂度f(n)=O(g(n))的充要条件是,存在一个常数c和n0使当n0≤n时,│ f(n)│≤c │ g(n)│。 例:f(n)=17n+10,因为当n≥10时,就有17n+10≤18n ,选c=18, g(n)=n ,n0=10,就得到f(n)=O(n).
一、公开密钥密码的概念 ③算法复杂度: f、典型的复杂度: 多项式复杂度:常数复杂度O(1) 线性复杂度O(n) 平方复杂度O(n2) O(n的多项式) 指数复杂度:O(cn),c为常数 阶乘复杂度:O(n!) 复杂度增大
一、公开密钥密码的概念 ④问题复杂度分类 a.P类问题:在确定型图灵机上,用多项式时间可求解的问题类。 通俗地说: P类问题是计算机易处理的。 b、NP类问题:在非确定型图灵机上,用多项式时间可求解的问题类。 通俗地说: NP类问题是计算机难处理的。 C、NPC问题:NP类问题中最难的问题子类。 ⑤利用NPC问题可以构造单向陷门函数。 背包问题是NPC问题,但背包密码却是可破的。
二、公钥密码的基本工作方式 1、管理与组织 ①要有一个管理机构:对用户是可信赖的;制定政策;统一技术;用户注册;密钥产生;公钥库管理; ②每个用户两个密钥:公开的加密钥Ke,保密的解密钥Kd; ③建立共享的公开钥数据库 PKDB: 用户ID 公开钥 A KeA B KeB
二、公钥密码的基本工作方式 2、确保数据秘密性 A B 通信协议: A方 B方 ①A查PKDB,查到B的KeB; ①接收密文C; ②加密:C=E(M, KeB); ②用自己的KdB解密: ③ 发C 给B; M=D(C, KdB) 安全分析: ①因为只有B才有KdB,而且由KeB推不出KdB,所以只有B才能解密得到明文M,所以可确保数据的秘密性; ②因为任何人都可查到B的KeB,故任何人冒充A发假消息,不能确保数据真实性。 M
二、公钥密码的基本工作方式 3、确保数据真实性 A B 通信协议: A方 B方 ①用自己的KdA解密: ①接收密文S; S=D(M, KdA)②查PKDB,查到B的KeA; ②发S 给B; ③加密:M=E(S, KeA) 安全分析: ①因为只有A才有KdA,而且由KeA推不出KdA,只有A才能产生S,任何人不能冒充,所以可确保数据的真实性; ②因为任何人都可查到A的KeA,故任何人都可获得明文,所以不能确保数据秘密性。 M
二、公钥密码的基本工作方式 4、同时确保确保数据真实性 A B 通信协议: A方 B方 ①用自己的KdA解密: ①接收密文C; S=D(M, KdA)②用自己的KdB解密: ② 查PKDB,查到B的KeB; S=D(C, KdB) ③加密: C=E(S, KeB) ③ 查PKDB,查到A的KeA ④发C给B; ④加密:M=E(S, KeA) 安全分析: 因为综合了前两个协议,只有A才能产生S,只有B才能得到M,所以可同时确保数据的秘密性和真实性; M
三、计算困难问题及相应密码 1、大合数的因子分解 小合数的因子分解是容易的,然而大合数的因子分解却是十分困难的。关于大合数的因子分解的时间复杂度下限目前尚没有一般的结果,迄今为止的各种因子分解算法提示人们这一时间下限将不低于O(EXP(lnNlnlnN)1/2)。根据这一结论,只要合数足够大,进行因子分解是相当困难的。
三、计算困难问题及相应密码 1、大合数的因子分解 • 2005年人们利用数域筛法分解了一个十进制200位的大合数(665位的RSA) 。这是目前世界大合数因子分解的世界纪录。 • 为了RSA密码的安全,目前建议:对于一般应用可选1024位的大合数,对于重要应用应选2048位的大合数。如国际可信计算组织TCG的标准:根密钥2048位,加密和认证密钥1024位。 • 基于大合数因子分解困难性,构建了RSA密码类。
三、计算困难问题及相应密码 2、有限域上的离散对数问题 • 设p为素数,α为模p的本原元。 以α为底的模p的指数运算为 Y≡αXmod p,1≤X≤p-1 。 以α为底的模p的对数运算为 X≡logαY mod p ,1≤X≤p-1。 ①从X计算Y是容易的,至多需要2×log2p次乘法运算。可是从Y计算X就困难得多,利用目前最好的算法,对于小心选择的p将至少需用p 1/2次以上的运算,只要p足够大,求解离散对数问题是相当困难的。 ②基于离散对数问题可构造公开密钥密码; a) ELGamal密码; b) Diffie和Hellman的密钥分配协议;
三、计算困难问题及相应密码 3、 椭圆曲线离散对数问题 ① 设p是大于3的素数,且4a3+27b2 ≠0 mod p ,称曲线 y2 =x3 +ax+b ,a,b∈GF(p) 为GF(p)上的椭圆曲线。 ② 称曲线 y2+xy=x3 +ax+b, a,b∈GF(2m) 为GF(2m)上的椭圆曲线。 ③椭圆曲线的解为一个二元组<x,y>,将此二元组描画到椭圆曲线上便为一个点,于是又称其为解点。
三、计算困难问题及相应密码 3、椭圆曲线离散对数问题 • 椭圆曲线的全体解点,再加上一个无穷远点O,构成加法交换群。 • 设E为椭圆曲线的解点群,G是E中的n阶元素, n为素数,则集合 E1={0,G,2 G,3 G,…,( n –1) G}。 是E的循环子群,并称是由G生成的群。 • 设d∈[1,n],若已知n和G,计算P=nG是容易的,但已知P和G求n,是求解椭圆曲线上的离散对数问题,这是困难的。 • 基于椭圆曲线上的离散对数问题可构建公钥密码,称为椭圆曲线密码。
三、计算困难问题及相应密码 4、椭圆曲线密码简评 ①椭圆曲线密码、RSA、EIGamal密码是目前最实用的公钥密码。 ②椭圆曲线密码的安全在于:ECDLP尚没有亚指数算法。因子分解和FPDLP有亚指数算法。 ③普遍认为,160位长的椭圆曲线密码的安全性相当于1024位的RSA密码。这是因为椭圆曲线密码的基本运算比RSA密码的基本运算复杂的多。 ④在硬件实现中电路的规模小,省电。因此椭圆曲线密码特别适于在航空、航天、卫星及智能卡中应用。
四、公钥密码的应用 一、密钥协商 • 利用密码的首要问题是使收发双方共享密钥,称为密钥分配或密钥协商。 • Diffie-Hellman密钥协商协议是基于离散对数问题复杂性的密钥分配协议。 ①系统选用一个大素数p和GF(p)的一个本原元α。 ②用户A产生一个随机数x,2≤x≤p-2,计算MA=αx mod p ,并把MA传给用户B。 ③用户B也产生一个随机数y,2≤y≤p-2,计算MB=αy mod p ,并把MB传给用户A。 ④A计算KA=(MB)x mod p =αyx mod p,B计算KB=(MA)y mod p =αyx mod p,显然KA=KB。取Ks=KA=KB ,于是用户A和用户B共享了会话密钥Ks。
四、公钥密码的应用 二、数字签名 • 数字签名就是数字形式的签名。 1、签名技术的基本特性: ①签名者事后不能抵赖; ②其他人不能伪造签名; ③签名容易公开验证。 • 传统的以书面文件为基础的事务处理中采用书面签名; 如手签、手印、印章等。 • 近代的以计算机文件为基础的事务处理中采用数字签名; • 中国、美国、俄罗斯等国都颁布了自己的数字签名标准。 • 我国、法国和其他一些国家地区颁布了数字签名法。
四、公钥密码的应用 2、数字签名主要研究解决以下问题: • A如何在数据M上签名? • B如何验证A的签名的真伪? • A如何鉴别人伪造自己的签名? - B如何阻止A签名后又抵赖? 3、数字签名系统的构成 一个数字签名系统要包括两个方面的处理: ①施加签名 设施加签名的算法为SIG,产生签名的密钥为K,被签名的数据为M,产生的签名信息为S,则有 SIG (M,K)=S 。
四、公钥密码的应用 ②验证签名 设验证签名的算法为VER ,用VER 对签名S进行验证,可鉴别S的真假。 真,当S=SIG (M,K); 假,当S≠SIG (M,K) 。 VER(S,K)=
四、公钥密码的应用 4、数字签名实现 • 传统密码体制可以实现数字签名,但太复杂,不实用。 • 公开密钥密码实现数字签名容易,实用。 ①任何满足E(D(M))=M 的公钥密码都可实现数字签名; ②典型可签名密码:RSA、ELGamal、ECC ③数字签名的过程: 明文 HASH(明文) SIG(HASH(明文)) 明文 签名
四、公钥密码的应用 三、公钥基础设施(PKI) 1、公钥密码的密钥管理问题 • 公钥密码也需要进行密钥分配。 • 在密钥分配时必须确保解密钥的秘密性、真实性和完整性。 • 因为公钥是公开的,因此不需确保秘密性。 • 然而,却必须确保公钥的真实性和完整性,绝对不允许攻击者替换或篡改用户的公钥。
四、公钥密码的应用 1、公钥密码的密钥管理问题 • 如果公钥的真实性和完整性受到危害,则基于公钥的各种应用的安全将受到危害。 • C冒充A欺骗B的攻击方法: ①攻击者C在PKDB中用自己的公钥KeC替换用户A的公钥KeA。 ②C用自己的解密钥签名一个消息冒充A发给B。 ③B验证签名:因为此时PKDB中A的公开钥已经替换为C的公开钥,故验证为真。 于是B以为攻击者C就是A。
四、公钥密码的应用 PKDB PKDB A KeA A KeC B KeB B KeB C KeC C KeC 攻击者C篡改PKDB
四、公钥密码的应用 1、公钥密码的密钥管理问题 • 结果导致: ④若B要发送加密的消息给A,则B要用A的公开钥进行加密,但A的公开钥已被换成C的公开钥,因此B实际上是用C的公开钥进行了加密。 ⑤C从网络上截获B发给A的密文。由于这密文实际上是用C的公开钥加密的,所有C可以解密。A反而不能正确解密。
四、公钥密码的应用 1、公钥密码的密钥管理问题 • 上述攻击成功的原因: ①对存入PKDB的公开钥没有采取保护措施,致使公开钥被替换而不能发现; ②存入PKDB的公开钥与用户的标识符之间没有绑定关系,致使A的公钥替换成C的公钥后不能发现公开钥与用户的标识符之间的对应关系被破坏。
四、公钥密码的应用 2、公钥证书 • 采用数字签名技术可以克服上述两个弱点。 • 经过可信实体签名的一组信息的集合被称为证书( Certificate),而可信实体被称为签证机构 CA(Certification Authority)。 • 一般地讲,证书是一个数据结构,是一种由一个可信任的权威机构签署的信息集合。 • 在不同的应用中有不同的证书。例如公钥证书PKC(Public Key Certificate)、PGP证书、SET证书等。
四、公钥密码的应用 2、公钥证书 • 公钥证书 PKC是一种包含持证主体标识、持证主体公钥等信息,并由可信任的签证机构(CA)签署的信息集合。 • 公钥证书主要用于确保公钥与用户的绑定关系。 • 公钥证书的持证主体可以是人、设备、组织机构或其它主体。 • 公钥证书能以明文的形式进行存储和分配。
四、公钥密码的应用 • 任何一个用户只要知道签证机构CA的公钥,就能检查对证书的签名的合法性。如果检查正确,那么用户就可以相信那个证书所携带的公钥是真实的,而且这个公钥就是证书所标识的那个主体的合法的公钥。 • 日常生活中有许多使用证书的例子,例如汽车驾照。驾照由可信的公安机关签发,以标识驾驶员的驾驶资格。由于有公安机关的签章,任何人都可以验证驾照的真实性。又由于驾照上印有驾驶员的照片,从而实现驾驶员与驾照之间的严格绑定。
四、公钥密码的应用 公钥证书 CA的私钥 主体身份信息 主体的公钥 签名 CA的信息 其它信息 CA的签名 简单公钥证书示意图
四、公钥密码的应用 • 有了公钥证书系统后,如果某个用户需要任何其他已向CA注册的用户的公钥,可向持证人(或CA )直接索取公钥证书。 • 用CA的公钥验证CA的签名,从而获得可信的公钥。 • 由于公钥证书不需要保密,可以在公网上分发,从而实现公钥的安全分配。 • 又由于公钥证书有CA的签名,攻击者不能伪造合法的公钥证书。因此,只要CA是可信的,公钥证书就是可信的。
四、公钥密码的应用 • 使用公钥证书的主要好处是: ①用户只要获得其它用户的证书,就可以获得其公钥。 ②用户只要获得CA的公钥,就可以安全地认证其它用户的公钥。 ③因此公钥证书为公钥的分发奠定了基础,成为公钥密码在大型网络系统中应用的关键技术。 这就是电子政务、电子商务等大型网络应用系统都采用公钥证书技术的原因。
四、公钥密码的应用 • X.509证书 • 目前应用最广泛的证书格式是国际电信联盟ITU(International Telecommunication Union)提出的X.509版本3格式。 • X.509标准最早于1988年颁布。在此之后又于1993年和1995年进行过两次修改。 • INTERNET工程任务组(IETF)针对X.509在INTERNET环境的应用,颁布了一个作为X.509子集的RFC2459。从而使X.509在INTERNET环境中得到广泛应用。
版本号 X.509版本3的证书结构 证书序列号 签名算法标识符 颁发者的名称 有效期(不早于/不晚于) 主体名称 主体的公钥信息 颁发者唯一标识符(可选) 主体唯一标识符(可选) 扩展项(可选) 颁发者的签名 扩展类型 关键/非关键 扩展字段值 扩展类型 关键/非关键 扩展字段值 …… …… …… 扩展类型 关键/非关键 扩展字段值
四、公钥密码的应用 3、公密钥基础设施PKI • 公钥证书、证书管理机构、证书管理系统、围绕证书服务的各种软硬件设备以及相应的法律基础共同组成公开密钥基础设施PKI(Public Key Infrastructure)。 • 公开密钥基础设施提供一系列支持公开密钥密码应用(加密与解密、签名与验证签名)的基础服务。 • 本质上,PKI是一种标准的公钥密码的密钥管理平台。
四、公钥密码的应用 • 公钥证书是PKI中最基础的组成部分。 • 此外,PKI还包括签发证书的机构(CA),注册登记证书的机构(RA),存储和发布证书的目录,密钥管理,时间戳服务,管理证书的各种软件和硬件设备,证书管理与应用的各种政策和法律,以及证书的使用者。所有这些共同构成了PKI。
四、公钥密码的应用 ⑴ 签证机构CA • 在PKI中,CA负责签发证书、管理和撤销证书。CA严格遵循证书策略机构所制定的策略签发证书。CA是所有注册用户所信赖的权威机构。 • CA在给用户签发证书时要加上自己的签名,以确保证书信息的真实性。为了方便用户对证书的验证,CA也给自己签发证书。这样,整个公钥的分配都通过证书形式进行。
四、公钥密码的应用 ⑴ 签证机构CA • 对于大范围的应用,一个CA是远远不够的,往往需要许多CA。 • 例如对于某一行业,国家建立一个最高级的CA,称为根CA。 • 每个省建立一个省CA,每个地市也都可以建立CA,甚至一个企业也可以建立自己的CA。 • 不同的CA服务于不同的范围,履行不同的职责。
四、公钥密码的应用 ⑵ 注册机构RA • RA(Registration Authority)是专门负责受理用户申请证书的机构。根据分工,RA并不签发证书,而是负责对证书申请人的合法性进行认证,并决定是批准或拒绝证书申请。
四、公钥密码的应用 ⑶ 证书目录 • 证书产生之后,必须以一定的方式存储和发布,以便于使用。 • 为了方便证书的查询和使用,CA采用证书目录的方式集中存储和管理证书。通常采用建立目录服务器证书库的方式为用户提供证书服务。 • 为了应用的方便,证书目录不仅存储管理用户的证书,还同时存储用户的相关信息(如,电子邮件地址,电话号码等)。因为证书本身是非保密的,因此证书目录也是非保密的。