当前位置: 首页 > news >正文

LINUX网络基础 [六] - HTTPS协议

前言

早期很多公司刚起步的时候,使用的应用层协议都是HTTP,而HTTP无论是用GET方法还是POST方法传参,都是没有经过任何加密的,因此早期很多的信息都是可以通过抓包工具抓到的。

为了解决这个问题,于是出现了HTTPS协议,HTTPS实际就是在应用层中加了一层加密层(SSL&TLS),这层加密层本身也是属于应用层的,它会对用户的个人信息进行各种程度的加密。HTTPS在交付数据时先把数据交给加密层,由加密层对数据加密后再交给传输层。

当然,通信双方使用的应用层协议必须是一样的,因此对端的应用层也必须使用HTTPS,当对端的传输层收到数据后,会先将数据交给加密层,由加密层对数据进行解密后再将数据交给应用层。

此时数据只有在用户层(应用层)是没有被加密的,而在应用层往下以及网络当中都是加密的,这就叫做HTTPS。

什么是加密和解密

加密就是把 明文(要传输的信息)进行一系列变换,生成 密文

解密就是把 密文 再进行一系列变换,还原成 明文

而在加密和解密的过程中,往往需要一个或多个中间数据来辅助进行这个过程,那么这样的数据就叫做 密钥

案例:83版《火烧圆明园》,有人要谋反干掉慈禧太后,恭亲王奕䜣给慈禧递了折子,折子内容只是扯了扯家常,套上一张挖了洞的纸就能看到其中的关键字信息!

  • 明文:“当心肃顺,端华,戴恒”(这几个人都是当时的权臣,后来被慈禧一锅端)
  • 密文:整个奏折
  • 密钥:挖了洞的纸

但是现如今加密和解密已经发展成一个独立的学科了:密码学

而密码学的奠基人,也正是计算机科学的祖师爷之一:艾伦·⻨席森·图灵

 另⼀位祖师爷冯诺依曼

一旦掌握了敌方密码的解密方式!可以说是在战场的情报获取上占据了先机,战场之间不仅仅是军人的较量,背后也有情报部门针对情报做加密解密的较量!

      图灵大佬年少有为,不光奠定了计算机、人工智能、密码学的基础,并且在二战中打破德军的Enigma机,使得盟军占尽情报优势,才能扭转占据反败为胜,但是因为一些原因,所以受到了英国皇室的迫害,41岁便英年早逝。

     计算机领域中的最高荣誉“图灵奖”就是以他的名字命名的!!

为什么需要加密

首先我们要知道,很多东西的形成并不是一开始就能考虑得很完美(http),都是在不断实践中暴露出来的诸多问题从而需要有新的解决方案!!

运营商劫持事件:

下载天天动听,如果未被劫持,那么点击下载按钮,就会弹出天天动听的下载链接

 而如果被劫持的话,那么点击下载按钮,就会弹出qq浏览器的下载链接!!

为什么会出现这种情况呢?

这是因为我们通过网络传输的任何的数据包都必然需要经过运营商的网络设备(路由器、交换机),那么运营商的网络设备就可以解析出你传输的数据内容,并进行篡改!

就是当我们客户端向服务端发送下载请求的时候,当服务端将下载链接通过HTTP响应发送会客户端的时候,被运营商给截取到了(也可以是一些不法分子),就发现这个请求是要下载天天动听,那么就自动的把交给用户的响应篡改成了“qq浏览器的下载地址”

所以由于HTTP的内容是明文传输的,所以明文数据会经过路由器、wifi热点、通信服务运营商、代理器等多个物理节点那么信息必然有可能在这个传输的过程中被截获, 

一方面可以导致客户端的隐私信息暴露,另一方面可以篡改响应。同时在这个过程中劫持者还可以不被双方察觉,这就是中间人攻击(针对客户端信息的监视和攻击)!!因此这说明HTTP必须要想办法解决这个问题,所以就有了ssl这样的加密解密方案!!他会在HTTP协议和传输层之间存在,而我们把HTTP加上ssl的加密解密方案统称为HTTPS

注:大多数的截获都是为了获利,因此如果截获的成本比收益大的话一般是不会有人这么做

为什么运营商要劫持呢?

肯定是当时有的运营商发现了这个漏洞,然后试图从中盈利,但是不仅仅是运营商可以劫持,还有其他的一些黑客也可以使用类似的方法进行劫持(比如最常见的就是一些钓鱼wifi),试想一下你登录支付宝时他获取了你的支付密码,那会是一件很可怕的事情所以明文传输真的很危险!

ssl绝对安全吗??我可不可以自己去设置一个加密协议?

其实ssl并不是绝对安全的!!因为使用HTTPS的人太多了,树大招风,所以尝试去攻破的人也很多,因此在现如今计算机算力不断增强的情况下,是很有可能得,所以需要有很多程序员去维护,去不断地更新。当然我们自己写的话可能就比较低调,可以这样的话我们就必须自己去维护了

常见的加密方式

对称加密

采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密,特征:加密和解密所用的密钥是相同的。
常见对称加密算法(了解):DES、3DES、AES、TDEA、Blowfish、RC2 等
特点:算法公开、计算量小、加密速度快、加密效率⾼

对称加密其实就是通过同一个 "密钥" , 把明文加密成密文, 并且也能把密文解密成明文。

⼀个简单的对称加密:按位异或

假设明⽂a=1234,密钥key=8888 则加密a^key得到的密⽂b为9834.然后针对密⽂9834再次进⾏运算b^key,得到的就是原来的明⽂1234.(对于字符串的对称加密也是同理,每⼀个字符都可以表⽰成⼀个数字)

当然,按位异或只是最简单的对称加密.HTTPS中并不是使⽤按位异或.

非对称加密

采用公钥和私钥来进行加密和解密,用其中一个密钥进行加密就必须用另一个密钥进行解密,这种加密方法称为非对称加密

需要两个密钥来进行加密和解密,这两个密钥是公开密钥(public key,简称公钥)和私有密钥(private key,简称私钥)。
常见非对称加密算法(了解):RSA,DSA,ECDSA
特点:算法强度复杂、安全性依赖于算法与密钥但是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快

 公钥和私钥是配对的.最⼤的缺点就是运算速度⾮常慢,⽐对称加密要慢很多.

 (1)可以通过公钥对明⽂加密,变成密⽂——通过私钥对密⽂解密,变成明⽂

 (2)通过私钥对明⽂加密,变成密⽂——通过公钥对密⽂解密,变成明⽂

非对称加密的数学原理⽐较复杂,涉及到⼀些数论相关的知识.

这⾥举⼀个简单的生活上的例子

 A要给B⼀些重要的⽂件,但是B可能不在.于是A和B提前做出约定:

B说:我桌⼦上有个盒⼦,然后我给你⼀把锁,你把⽂件放盒⼦⾥⽤锁锁上,然后我回头拿着钥匙来开锁 取⽂件. 

在这个场景中,这把锁就相当于公钥,钥匙就是私钥.公钥给谁都行(不怕泄露),但是私钥只有B自己持 有.持有私钥的人才能解密.

加密过程中所用到的技术

数据摘要&&数据指纹

数据摘要(又被称为数据指纹),其基本原理是利用单向散列函数(Hash函数)对数据进行运算,生成一串固定长度的数字摘要(散列值)。

  • 摘要的特征:数字摘要并不是一种加密机制,数据摘要具有不可逆性,即无法从摘要推导出原始数据。
  • 摘要的应用:数据摘要用于验证数据的完整性,确保数据在传输或存储过程中没有被修改。
  • 摘要的常见算法:有MD5、SHA1、SHA256、SHA512等。

数字签名 

  • 数据签名是在数据摘要的基础上添加了非对称的加密操作,用于验证数据的完整性和真实性。
  • 数据签名包含了数据摘要、公钥密码学算法和数字证书等技术。发送者使用私钥对摘要进行加密,形成签名,接收者使用发送者的公钥对签名进行解密和验证。
  • 数据签名不仅验证数据的完整性,还验证发送者的身份,确保数据的真实性和不可否认性。

HTTPS方案的探究

加密:针对 HTTP 的各种 header 和 body

 对http进行对称加密,是否能解决数据通信安全的问题?问题是什么?

为何要用非对称加密?为何不全用非对称加密? 

接下来会逐步解决这两个问题!! 

方案1:只使用对称加密

如果通信双方都各自持有同一个密钥 X,且没有别人知道,这两方的通信安全当然是 可以被保证的(除非密钥被破解)。

引入对称加密之后, 即使数据被截获, 由于黑客不知道密钥是啥, 因此就无法进行解密,也就不知道请求的真实内容是啥了。

但事情没这么简单. 服务器同一时刻其实是给很多客户端提供服务的。 这么多客户端, 每 个人用的秘钥都必须是不同的(如果是相同那密钥就太容易扩散了, 黑客就也能拿到了)。

因此服务器就需要维护每个客户端和每个密钥之间的关联关系, 这也是个很麻烦的事情。

比较理想的做法, 就是能在客户端和服务器建⽴连接的时候, 双方协商确定这次的密钥是啥。

但是如果直接把密钥明文传输, 那么黑客也就能获得密钥了,此时后续的加密操作就 形同虚设了。

因此密钥的传输也必须加密传输!

但是要想对密钥进行对称加密, 就仍然需要先协商确定一个 "密钥的密钥"。 这就成了 "先 有鸡还是先有蛋" 的问题了。 此时密钥的传输再用对称加密就行不通了。

方案2:只使用非对称加密

鉴于非对称加密的机制,如果服务器先把公钥以明文方式传输给浏览器,之后浏览器向服务器传数据前都先用这个公钥加密好再传,从客户端到服务器信道似乎是安全的(有安全问题),因为只有服务器有相应的私钥能解开公钥加密的数据。

但是服务器到浏览器的这条路怎么保障安全? 

       如果服务器⽤它的私钥加密数据传给浏览器,那么浏览器⽤公钥可以解密它,⽽这个公钥是⼀开始通过明⽂传输给浏览器的,若这个公钥被中间⼈劫持到了,那他也能⽤该公钥解密服务器传来的信息了。因此还是不安全!!

方案3:双方都使用非对称加密

1. 服务端拥有公钥S与对应的私钥S',客⼾端拥有公钥C与对应的私钥C'

2. 客⼾和服务端交换公钥

3. 客⼾端给服务端发信息:先用S对数据加密,再发送,只能由服务器解密,因为只有服务器有私钥 S'

4. 服务端给客户端发信息:先用C对数据加密,在发送,只能由客⼾端解密,因为只有客⼾端有私钥 C'

这样好像可以诶!我们保留自己的私钥,交换双方的公钥,所以只有我们双方可以解析对方的信息,中间人看到了公钥也没有丝毫作用!! 可是这样效率太低了!

方案4:非对称加密+对称加密

解决效率问题!

1、服务端具有非对称公钥S和私钥S‘

2、客⼾端发起https请求,获取服务端公钥S

3、客⼾端在本地⽣成对称密钥C,通过公钥S加密,发送给服务器.

• 由于中间的⽹络设备没有私钥,即使截获了数据,也⽆法还原出内部的原⽂,也就⽆法获取到对称密 钥(真的吗?)

• 服务器通过私钥S'解密,还原出客⼾端发送的对称密钥C.并且使⽤这个对称密钥加密给客⼾端返回 的响应数据.

 • 后续客户端和服务器的通信都只用对称加密即可.由于该密钥只有客户端和服务器两个主机知道,其他主机/设备不知道密钥即使截获数据也没有意义.

由于对称加密的效率比非对称加密高很多,因此只是在开始阶段协商密钥的时候使用非对称加密,后续的传输仍然使用对称加密.

      这个方案看似已经完美了,但还是有问题!!

中间人攻击

⽅案2,⽅案3,⽅案4都存在⼀个问题,如果最开始,中间⼈就已经开始攻击了呢?

 Man-in-the-MiddleAttack,简称“MITM攻击” 

     确实,在⽅案2/3/4中,客⼾端获取到公钥S之后,对客⼾端形成的对称秘钥X⽤服务端给客⼾端的公钥S进⾏加密,中间⼈即使窃取到了数据,此时中间⼈确实⽆法解出客⼾端形成的密钥X,因为只有服务器有私钥S'

     但是中间⼈的攻击,如果在最开始握⼿协商的时候就进行了,那就不⼀定了,假设hacker已经成功成为中间⼈  

1. 服务器具有非对称加密算法的公钥S,私钥S'

2. 中间⼈具有非对称加密算法的公钥M,私钥M'

3. 客⼾端向服务器发起请求,服务器明⽂传送公钥S给客⼾端

4. 中间⼈劫持数据报⽂,提取公钥S并保存好,然后将被劫持报⽂中的公钥S替换成为⾃⼰的公钥M, 并将伪造报⽂发给客⼾端

5. 客⼾端收到报⽂,提取公钥M(⾃⼰当然不知道公钥被更换过了),⾃⼰形成对称秘钥X,⽤公钥M加密X,形成报⽂发送给服务器

6. 中间⼈劫持后,直接⽤⾃⼰的私钥M'进⾏解密,得到通信秘钥X,再⽤曾经保存的服务端公钥S加 密后,将报⽂推送给服务器

7. 服务器拿到报⽂,用自己的私钥S'解密,得到通信秘钥X

8. 双⽅开始采⽤X进⾏对称加密,进⾏通信。但是⼀切都在中间⼈的掌握中,劫持数据,进⾏窃听甚至修改,都是可以的

问题本质出在哪里了呢?客户端无法确定收到的含有公钥的数据报文,就是目标服务器发送过来的!-->所以问题变成了我们如何保证公钥的合法性?? 

引入证书

关于CA的生态推荐可以去了解一些人物和故事!!

        首先我们要知道,任何技术的产生都离不开实际场景的应用,比如学硕(学习科学前沿技术,研究更多深入的论文),专硕(如何将目前已有的前沿技术转化为生产力),所以HTTPS也是一项技术,那么他也必须结合自己的实际应用场景去研究((万维网绑定的一种网络通信协议,确保双方进行资源获取或数据提交时的安全问题))。而针对“中间人攻击”的漏洞,他也必须在发展过程中探索出自己强有力的解决方案!!所以引入了CA这个第三方机构来解决这个问题。未来你想入网,你就必须申请CA证书。

引入CA证书

服务端在使用 HTTPS 前,需要向 CA 机构申领一份数字证书,数字证书里含有证书申请者信息、公钥信息等。服务器把证书传输给浏览器,浏览器从证书里获取公钥就行了,证书就如身份证,证明服务端公钥的权威性。

申请基本流程: 

基本理解:

这个 证书 可以理解成是一个结构化的字符串, 里面包含了以下信息:证书发布机构,证书有效期,公钥,证书所有者,签名, ......

需要注意的是:申请证书的时候,需要在特定平台生成,会同时生成一对密钥对,即公钥和私钥。这对密钥对就是用来在网络通信中进行明文加密以及数字签名的。

其中公钥会随着 CSR 文件,一起发给 CA 进行权威认证,私钥服务端自己保留,用来后续进行通信。(其实主要就是用来交换对称秘钥)

理解数据签名

签名的形成是基于非对称加密算法的,注意,⽬前暂时和 https 没有关系,不要和https 中的公钥私钥搞混了。

前面讲过,数据摘要是通过哈希算法形成的散列值,而数据签名就是将数据摘要通过私钥加密,这样就形成了数据签名。

当服务端申请 CA 证书的时候,CA 机构会对该服务端进行审核,并专⻔为该网站形成 数字签名,过程如下:

1. CA 机构拥有非对称加密的私钥 A 和公钥 A'

2. CA 机构对服务端申请的证书明文数据进行 hash,形成数据摘要

3. 然后对数据摘要用 CA 私钥 A'加密,得到数字签名 S

服务端申请的证书明文和数字签名 S 共同组成了数字证书,这样一份数字证书就可以 颁发给服务端了

客户端拿到服务端的CA整数之后,会将数据和数据签名分开。将数据进行哈希散列形成一个哈希值。再将数据签名使用CA机构的公钥进行解密,也得到一个哈希值。将这两个哈希值进行比较,如果相同,则说明证书是正确的。

方案五:非对称加密 + 对称加密 + 证书认证

在客户端和服务器刚一建⽴连接的时候, 服务器给客户端返回一个 证书,证书包含了之前服务端的公钥, 也包含了网站的身份信息。

这样客户端进行认证的时候,会获取这个证书,对证书进行校验:

• 判定证书的有效期是否过期。

• 判定证书的发布机构是否受信任(操作系统中已内置的受信任的证书发布机构)。

• 验证证书是否被篡改: 从系统中拿到该证书发布机构的公钥, 对签名解密, 得到一 个 hash 值(称为数据摘要), 设为 hash1。 然后计算整个证书的 hash 值, 设为 hash2。 对 比 hash1 和 hash2 是否相等。 如果相等, 则说明证书是没有被篡改过的。

在浏览器右上方三个点处点击设置,搜索证书管理,即可看到以下界面:

HTTPS的工作流程

客户端发起连接请求:客户端(通常是浏览器)向服务器发送一个安全连接请求,使用HTTPS的URL或点击HTTPS链接触发。
服务器证书发送:服务器收到请求后,将自己的数字证书发送给客户端。证书中包含了服务器的公钥、数字签名和其他相关信息。
客户端验证证书:浏览器接收到服务器证书后,会进行一系列的验证步骤,包括验证证书是否由受信任的证书颁发机构签发,以及证书中的域名是否与目标服务器的域名相匹配。如果验证通过,客户端可以确定所连接的服务器是可信的。
密钥协商:一旦服务器证书被验证通过,会生成基于双方交换的随机数和密钥交换参数(如 ECDHE 公钥)通过数学计算共同推导出的共享密钥。用于后续的数据加密和解密。
通信加密:服务器使用其私钥解密客户端发送的对称密钥,并与客户端之间建立起一个加密的安全通道。从此之后,客户端和服务器之间的数据传输都会在此加密通道中进行,保证数据的机密性。
安全数据传输:在建立了安全通道后,客户端和服务器可以安全地传输数据了。数据在发送前,会使用对称密钥对数据进行加密,然后在接收端使用相同的对称密钥解密。
完整性检查:为了确保数据在传输过程中没有被篡改,HTTPS使用消息摘要函数进行完整性检查。接收方会对接收到的数据进行校验,并比对校验结果与发送方计算的结果是否相同。

通过上述流程,HTTPS保证了在传输过程中的数据加密、身份认证和完整性保护,提供了更安全可靠的网络通信。这使得敏感信息的传输、交易和共享在更加安全的环境下进行。

也就是说:我们介绍HTTPS,更多是在介绍后面这个S,也就是对HTTP的加密方式。

基于HTTPS的一些思考

如何成为中间人?

(1)ARP欺骗:在局域网中,hacker经过收到ARPRequest⼴播包,能够偷听到其它节点的(IP,MAC)地址。例如黑客收到两个主机A,B的地址,告诉B(受害者),⾃⼰是A,使得B在发送给A的数据包都被黑客截取

(2)ICMP攻击:由于ICMP协议中有重定向的报⽂类型,那么我们就可以伪造⼀个ICMP信息然后发送给 局域⽹中的客⼾端,并伪装⾃⼰是⼀个更好的路由通路。从⽽导致⽬标所有的上⽹流量都会发送到 我们指定的接⼝上,达到和ARP欺骗同样的效果

(3)假wifi&&假网站等

完整流程

左侧都是客⼾端做的事情,右侧都是服务器做的事情

秘钥的总结

HTTPS⼯作过程中涉及到的密钥有三组:

第⼀组(非对称加密):用于校验证书是否被篡改.服务器持有私钥(私钥在形成CSR⽂件与申请证书时获 得),客户端持有公钥(操作系统包含了可信任的CA认证机构有哪些,同时持有对应的公钥).服务器在客户端请求时,返回携带签名的证书.客⼾端通过这个公钥进行证书验证,保证证书的合法性,进⼀步保 证证书中携带的服务端公钥权威性。

第⼆组(非对称加密):用于协商⽣成对称加密的密钥.客户端用收到的CA证书中的公钥(是可被信任的) 给随机生成的对称加密的密钥加密,传输给服务器,服务器通过私钥解密获取到对称加密密钥.

第三组(对称加密):客户端和服务器后续传输的数据都通过这个对称密钥加密解密.

其实⼀切的关键都围绕这个对称加密的密钥.其他的机制都是辅助这个密钥⼯作的.

第⼆组非对称加密的密钥是为了让客户端把这个对称密钥传给服务器.

第⼀组非对称加密的密钥是为了让客户端拿到第⼆组非对称加密的公钥. 

HTTPS就一定安全吗?

HTTPS并不一定真正安全,因为他有效地防止了中间人的攻击,而中间人的出现一般是为了窃取客户端信息的,但是不排除在有些情况下黑客会以客户端的身份来分析你服务端的数据(因为对称密钥的形成是在客户端形成的,所以服务端拿到后会和你通信进行交互,然后他就可以对服务端发来的信息做分析)然后对服务端做一些更深入的攻击,因此在大多数情况下我们的服务端还需要基于https来做一些二次加密,防止黑客对服务端的攻击。

为什么HTTP必须放在应用层去实现?

应用层涉及到的知识点非常多(序列化反序列化、报文的正确读取和正确写入、协议、加密……)而应用层必须放在用户层实现,是因为不同的人对协议有不同的定制需求,有不同的定制需求,有不同的序列化反序列化的方案,有不同的加密解密方案(不同的安全级别),所以上述所有的东西都不可能在内核里实现统一,否则一旦其中一个出现了问题,那么整个内核都得被改变。

HTTP 与 HTTPS 区别

HTTP协议是超文本传输协议,数据是明文传输,具有安全风险,HTTPS是具有安全性的SSL加密传输协议,对数据进行加密传输
HTTPS协议需要向权威机构申请数字证书,保证服务器的身份是可信的
HTTP的连接相对简单,只需要经过TCP的三次握手就可以进行数据传输,而HTTPS的连接需要经过TCP的三次握手后,再经过SSL的握手才能进行加密数据传输
两者的默认端口不一样,HTTP的默认端口是80,HTTPS的默认端口是443

什么是SSL/TLS握手过程

SSL/TLS握手是HTTPS连接建立的核心过程,主要步骤包括:

  1. 客户端发送"ClientHello"消息,包含支持的TLS版本、加密套件和随机数
  2. 服务器回应"ServerHello",选择TLS版本和加密套件,并发送自己的随机数
  3. 服务器发送数字证书(包含公钥)
  4. 客户端验证证书的有效性
  5. 客户端生成"预主密钥",用服务器公钥加密后发送
  6. 双方根据之前交换的信息独立计算出相同的会话密钥
  7. 客户端和服务器交换"Finished"消息,确认握手完成
  8. 开始使用会话密钥加密数据通信

什么是中间人攻击(MITM)?HTTPS如何防御这种攻击

中间人攻击是攻击者将自己置于客户端和服务器之间,拦截并可能修改双方的通信内容。攻击者可以冒充服务器与客户端通信,同时冒充客户端与服务器通信。

HTTPS通过以下机制防御中间人攻击:

  • 证书验证:服务器提供由可信任的证书颁发机构(CA)签名的数字证书,客户端可验证服务器身份
  • 公钥基础设施(PKI):确保只有持有私钥的真实服务器才能正确解密客户端发送的加密信息
  • 证书透明度(Certificate Transparency):要求CA公开记录所有颁发的证书,便于监控和检测欺诈证书
  • HSTS(HTTP严格传输安全):强制使用HTTPS连接,防止降级攻击

相关文章:

  • Gboard安卓版手势输入与多语言支持全面评测【输入顺滑】
  • Redis—内存淘汰策略
  • 09.传输层协议 ——— TCP协议
  • 在 NVIDIA Orin (JetPack 6.0) 上安装 PyTorch 2.4 + Torchvision 0.19
  • App爬虫工具篇-mitmproxy
  • GpuGeek:以弹性算力与全栈服务赋能产业智能升级
  • 关于团结引擎打包、或者项目出错并且崩溃
  • Linux中查询进程服务,通过端口方式关闭
  • MySQL中根据binlog日志进行恢复
  • TCP三次握手与四次挥手面试回答版本
  • 【Linux】用户权限
  • PostgreSQL 常用日志
  • Python数据分析与机器学习实战:从数据到洞察的完整路径
  • Java中常见API的分类概述及示例
  • Python爬虫实战:获取xie程网近两周长沙飞敦煌机票数据,为51出行做参考
  • Go语言中 defer 使用场景及深度注意事项指南
  • 如何应对政策变化导致的项目风险
  • 【Linux】静态库 动态库
  • Python 设计模式:访问者模式
  • AI+直播电商:短视频商城APP开发如何实现智能化推荐?
  • 世界最大全电驱可拆装环保绞吸船投入官厅水库清淤试点工程
  • 青岛:今年计划新增城镇住房约5.77万套,推动房地产市场回稳
  • 今年底,全国新拍电视剧、纪录片将基本实现超高清化
  • 大卫·第艾维瑞谈历史学与社会理论②丨马克斯·韦伯与历史学研究
  • 中国乒乓球队公示多哈世乒赛参赛名单,王楚钦孙颖莎混双重组
  • 空山日落雨初收,来文徵明的画中听泉