跳至主要内容

白话 IT 之 聊聊数据加密

原文地址白话 IT 之 聊聊数据加密,作者是 嘀嗒嘀嗒 微信公众号运营者angela,表示感谢

嘀嗒嘀嗒按:今天的分享来自我们 Airbnb 的数据加密的大牛桑立锋。说到桑同学,那比我牛出不止一个数量级了。俄亥俄州立大学毕业的 PhD,曾在Yahoo!、LinkedIn 等多家公司担任技术骨干。在过去三四年间获各种数据加密相关的专利达五项之多。

除了技术扎实,桑同学平时也是极好相处,又特别愿意帮助别人。在我过去和他不多的几次合作中,也不时又机会请教一二。虽然对于数据加密仍然是个门外汉,但是桑同学解释问题总能听得懂。因此在我的再三请求下,有了这篇科普性的文章。

虽然我们都就职于 Airbnb,但是这篇文章和 Airbnb 现在使用的技术没有直接关联。下面是正文。



数据加密是一个古老的问题,但又是一个无法做到完美的问题,尤其在一个复杂的大型系统中需要考虑方方面面的问题,包括 security, availability, usability, consistentcy, performance,extensibility 等等。除了那些完全不做的,大部分公司都会根据自身的需求,环境,资源以及工程师的能力等,设计和开发适合公司实际情况的解决方案。有做的好的,也有坦诚做的不好的,还有自己认为做的好的但其实经不起真正考验的。各种各样的都有。

就算在同一个公司,很多也会有不同的解决方案并存。有些是因为历史原因,比方说早期用方案A,后来开发了更牛逼的方案B,但没有把A完全干掉;或者扩张原因,比方说兼并了一个用不同方案的别家公司;又或者是政治原因,不同部门谁都不屌谁,各自用自认为合适的方案。  无论公司选择什么方案,因为话题的敏感性(法律原因,或者圈内的潜规则,或者仅仅是不想当出头鸟而被黑客们盯上),绝大部分都不会公开数据加密的细节。同样原因,这篇文章也不会涉及笔者公司怎么做数据加密的具体细节。想到哪儿写到哪儿吧。


先说为什么要做数据加密。越来越多的数据泄露事件,比方说 Yahoo 2013年被盗超过10亿用户信息 [链接1], Yahoo 2014年又被盗超过5亿用户信息 [链接2], LinkedIn 被盗一亿多用户密码 [链接3],Ashley Madison 被盗三千多万用户数据以及大量支付信息 [链接4],Target 被盗近七千万用户数据和银行账号 [链接5],Adobe 被盗三千八百万用户数据 [链接6] 等等,以及由此导致的大量法律纠纷和巨额赔偿,还有很多很多大大小小没有被公布的安全事件,都说明了数据加密和保护的重要性。

说到这些安全事件中用户密码的保护,插个题外话。笔者曾经跟很多工程师(包括很多应用领域专家)聊天的时候,都会被问到,为什么笔者认为仅仅 Hash 用户密码是不够的。很多人(包括网上的很多文章)都误认为用户密码只要 Hash了,就安全了,其实不然。不说 weak Hash 函数诸如 RC4 [链接7], MD5 [链接8]就算用 Bcrypt [链接9],KDF [链接10] 等运算复杂的Hash函数,虽然能防 Rainbow Table Attack [链接11],但对 Dictionary Attack [链接12] 却是无效的。当然这不是 Hash 函数本身的错,而是很多人会选一个容易记的密码,而这类密码往往 entropy 不够,很容易被解密。对用户密码而言,笔者一直建议不仅需要Hash,还要加密 (比方说用 keyed hash function,or MAC) [链接13]

还有很多公司要做加密不仅仅是因为保护用户隐私,更是法律法规的要求,不得不做。有些涉及特殊数据,如信用卡号码,那就要做 PCI (The Payment Card Industry Data Security Standard );如用户健康信息,那就要做 HIPAA (The Health Insurance Portability and Accountability Act)等等。

在笔者看来,任何一个收集以及存储客户数据的公司,就算是初创公司,都应该认真对待这个问题。在圈内我们常说,不是系统会不会黑,数据会不会被盗,而是何时被黑被盗的问题。也许有人会说,就算偷了,盗了,那又如何?这种事可大可小,笔者私下就知道有公司被黑后,被迫关门了的。所以安全领域内的及时投资,对公司长期来讲都是非常有益的。对重要数据(包括系统密码,用户信息等)进行有效保护,数据被黑被盗的门槛就高了;就算有一天系统被黑了,数据被盗了,也能把损失降到最小。


你说数据加密这么重要,怎么做呢?如果把加密这个问题抽象出来,其实就是要计算一个加密函数:
encrypt(data, key)
(当然还有一个函数就是解密,跟加密类似道理,暂且不论)。看上去似乎是一个非常简单的问题,但要把它做好非常不容易。尤其是在一个系统复杂的公司,要考虑的问题很多很多。比方说,密码界有很多算法,应该用什么加密算法,对称的还是非对称的?具体选哪个,AES,DES,RSA,ECC等等,各有什么特点?题外话,笔者在曾经工作过的公司见过很多有趣的例子,比方说有些早期开发人员用 XOR 来加密,或者做点简单的迭代替换,或者自创所谓的加密算法(有点掩耳盗铃的感觉)等等,这些最后都变成 technical debt,需要花很大力气去清理。

每个算法也有不同的变种和模式,各有什么特点,性能如何?如果某个算法被宣布不安全了,如何快速迭代?这个 key 怎么来?多长才是安全的?怎么启动?怎么保存?怎么传播?怎么控制访问权限?怎么知道谁访问了什么?怎么来监控?怎么来预警?怎么来系统性的更新这些 key?key 能不能丢,丢了怎么办?不同的应用可能是用不同的语言写的,怎么兼容?怎么支持大流量等等,等等。还有更加不近人情的要求,比方说如何保证被加密的数据能够 preserve 原始数据的顺序,支持搜索,但又不牺牲安全性等(这方面 MIT 有学者在研究,有兴趣的朋友可以看看他们的论文)。

一个好的加密设计方案,不仅仅方案本身要满足安全上严格的要求,解决上面提到的很多问题,还需要实用,容易扩展和维护。在数据加密变得越来越重要,系统越来越复杂的年代,如果资源允许,应该把加密服务独立出来,然后提供高性能,统一,简单又容易理解的接口来进行数据加密,让应用开发人员很方便的使用,这样他们只需要专注他/她所擅长的领域,而不需要去思考怎么解决安全问题,因为术业有专攻。好的加密方案应该把数据和秘钥的存储分开,并且把存储和运算分开,尤其在 SOA 架构下, 这可能跟很多传统的数据加密方法(比方说直接实用某个语言的内置库加密解密)非常不一样。很多解决方案往往密钥和被加密的数据同时存在一个服务中,结果就是如果那个服务被黑了,那就整个被黑了。下面就捡几个要点简略讲讲。

(1)为什么要把运算和存储的分离?很多需要被加密的数据,往往和具体商业逻辑数据一起,属于不同的服务,比方说支付信息属于支付服务,护照号码属于用户服务等。把运算和存储分离可以带来很多好处,比方说:
  • 加密服务变得简单和高效。因为不需要存储那些被加密的数据,加密服务系统不会很复杂,也不需要负责存储系统所带来的维护,扩展等诸多问题;
  • 加密服务的安全性能提高很多。因为运算和存储的分离,如果仅仅是被加密的数据泄露(比方说数据库被盗),那些数据就没法被解密,因为黑客没法从外部访问加密服务。如果仅仅是客户服务被黑,想要盗取大量数据并且通过加密服务来解密而不被发现也很难。如果仅仅是加密服务服务被黑,因为加密服务本身并不拥有数据,被泄露的数据也不会很多。只有当加密服务和客户服务同时被黑,才会泄露大量数据,而同时能够侵入加密服务和客户服务的难度要高很多很多;
  • 灵动性。因为数据属于客户服务,不同的客户可以对数据进行不同的处理,比方说不同的有效性规则,数据交易完整性等等。

(2)其次是 granular control。假设支付服务要求加密/解密信用卡号码,用户服务要求加密/解密护照号码,如何能保证用户服务不能加密/解密信用卡号码。这就需要解决两个基本问题:客户认证(authentication)和权限控制(authorization)。怎么做客户认证(authentication)?客户认证要知道每一个请求是谁发出的。因为只有知道客户是谁才可以进行权限检查。常用的有基于客户证书的(如 client certificate over TLS),基于 OAuth(开放授权)的,或者各种各样定制的方案,如基于 Curve25519 [链接14] 等等。笔者一般遵循两个原则:
  1. 是不是业界公认的。如果不是,最好避免。业界公认的解决方案往往经过过严格的检验, 评价,批评,经得起考验;
  2. 有没有广泛的类库支持,以及多语言的支持。如果有,可以节省大量的开发以及维护的时间和精力。

(3)数据监控和预警。为了审计以及安全的需求,一般要对加密服务做很多的数据监控,预警的工作。这样可以知道谁在访问这些数据,何时访问的,怎么访问的,访问的模式是怎么样的。监控系统还需要侦测异常的流量变化,进行流量控制以及快速的反攻击保护。

(4)最后,重中之重,怎么保护 root key?无论是用哪种 envelope encryption的变种,都会涉及到怎么保护 root key。这是一个很有意思的话题,但篇幅关系就不展开来讲了。常见的有用 secret sharing [链接15] 的一些变种方式,也有通过公证人公证整个过程藏在银行保险箱的,也有藏在创始人地下室的:)怎么来 bootstrap 和 deploy 这个 root key 到加密服务里也是一个非常有意思和挑战的问题。

总的来说,数据加密不是一件神秘的事情,但要做好非常不容易,需要一定的技术积累和资源的投入。做任何一个安全系统,风险都不小。圈内人第一反应是怀疑,因为职业病;圈外人很多也觉得重要,但不关心,或者说不知道怎么关心。但不管如何,无论是因为潜在的法律风险还是用户的信任风险,这种安全上的投入从长期来说一定是值得的。


链接1:http://money.cnn.com/2016/12/14/technology/yahoo-breach-billion-users/
链接2:http://money.cnn.com/2016/09/22/technology/yahoo-data-breach/?iid=EL
链接3:https://techcrunch.com/2016/05/18/117-million-linkedin-emails-and-passwords-from-a-2012-hack-just-got-posted-online/
链接4:https://www.wired.com/2015/08/happened-hackers-posted-stolen-ashley-madison-data/
链接5:http://money.cnn.com/2015/10/14/pf/target-pin-credit-card/index.html?iid=EL
链接6:http://krebsonsecurity.com/2013/10/adobe-breach-impacted-at-least-38-million-users/
链接7:https://en.wikipedia.org/wiki/RC4
链接8:https://en.wikipedia.org/wiki/MD5
链接9:https://en.wikipedia.org/wiki/Bcrypt
链接10:https://en.wikipedia.org/wiki/Key_derivation_function
链接11:https://en.wikipedia.org/wiki/Rainbow_table
链接12:https://en.wikipedia.org/wiki/Dictionary_attack
链接13:https://en.wikipedia.org/wiki/Message_authentication_code
链接14:https://en.wikipedia.org/wiki/Curve25519
链接15:https://en.wikipedia.org/wiki/Secret_sharing

Popular posts from 产品随想的博客

产品随想 | 周刊 第127期:晨光只开一刻钟,但比千年松,并无甚不同

Cherry Studio   https://github.com/CherryHQ/cherry-studio Cherry Studio is a desktop client that supports for multiple LLM providers. Support deepseek-r1 Aalto Repository beta   https://repo.aalto.fi/ Images, sounds and videos from Aalto University 这个系列,价值极高 Nokia Design Archive   https://nokiadesignarchive.aalto.fi/ 芬兰这个国家很了不起 对话影石刘靖康:两代未出现划时代的产品,就会沦为平庸的品牌   https://www.geekpark.net/news/308996 还挺喜欢这个创始人的,有一种海盗的内涵 从哈佛、明星创业者到酷家乐副总裁,苏奇的传奇   https://app.modaiyun.com/mdy/article/3FO4K4W0M259 WHO关于猫狗咬伤、抓伤的处理建议 动物咬伤: https://www.who.int/zh/news-room/fact-sheets/detail/animal-bites 狂犬病: https://www.who.int/zh/news-room/fact-sheets/detail/rabies 关于狂犬病的10个事实: https://www.who.int/zh/news-room/facts-in-pictures/detail/rabies INDIGO 新年直播(2025)   https://www.youtube.com/live/ZIgPvSDGAfY 对2024年AI发展的回顾部分特别好 Artab   https://github.com/get-artab/artab Get Inspired by the World's Greatest Artworks Every Time You Open a New Tab. Extension Available for Chrome, Edge, and...

MongoDB学习笔记

这是我阅读《MongoDB权威指南》的学习笔记,前七章侧重在开发者角度谈MongoDB,后面才是运维管理者角度 一. 理论部分 入门 文档:多个键及其关联的值有序地放置在一起便是文档 集合:一组文档 虽然子集合没有特别的地方,但还是很有用,很多MongoDB工具中都包含子集合 GridFS是一种存储大文件的协议,使用子集合来存储文件的元数据,这样就与内容块分开了 MongoDB的Web控制台通过子集合的方式将数据组织在DBTOP部分 绝大多数驱动程序都提供语法糖,为访问指定集合的子集合提供方便。例如:在数据库shell里面,db.blog代表blog集合,db.blog.posts代表blog.posts集合 在MongoDB中使用子集合来组织数据是很好的方法,在此强烈推荐 数据类型 JSON表现力也有限制,因为只有null,布尔,数字,字符串,数组和对象几种类型, MongoDB保留JSON键值对基础上,增添了其他一些数据类型 使用GridFS存储文件有如下原因: 会直接利用业已建立的复制或分片机制,所以对于文件存储来说故障恢复和扩展都很容易 可以避免用户上传内容的文件系统出现的某些问题 不产生磁盘碎片,因为MongoDB分配数据文件空间以2GB为一块 开发者角度到此为止,下一篇是运维角度的学习

无处不在的监控: Hacking Team:WP8 监控代码分析

原文来自乌云,备份 地址 0x00 背景 最近Hacking Team被黑客入侵,近400GB的资料泄漏,在安全界炒的沸沸扬扬.其中泄漏的资料包括:源代码,0day,资料入侵项目相关信息,相关的账户密码,数据及音像资料,办公文档,邮件及图片。 Hacking Team在意大利米兰注册了一家软件公司,主要销售入侵及监视功能的软件。其远程控制系统可以监测互联网用户的通讯,解密用户的加密,文件及电子邮件,记录各种通信信息,也可以远程激活用户的麦克风及摄像头。其产品在几十个国家使用 在源代码中有各个操作系统平台的远程控制软件源码, RCS(Remote Control System) 。经过我们的分析,发现其监控内容不可谓不详尽。 Android,blackberry,ios,windows,window phone,symbian 均有与之对应的监控代码。 在源码中,rcs为前缀的源码文件是其远控功能,包括代理 控制 监控数据库 隐藏ip 等,而针对特定平台架构的是以core前缀命名。其中和相关window phone监控代码在 core-winphone-master.zip 文件中。其主要用于实时手机系统的系统状态信息如(电池状态,设备信息,GPS地址位置),联系人,短信记录,日历日程安排,照片;同时还能录音,截取手机屏幕,开启摄像头,话筒等功能,由此可见监控信息的详细程度令人害怕。 0x01 WP8监控源码分析 core-winphone-master\MornellaWp8\MornellaWp8 下是其主要核心代码,主要文件如下: 通过观察源码流程图可以看出,整个监控项目源码的逻辑还是比较复杂的,但是深入之后,发现其还是设计的比较巧妙 0x01-1 程序框架分析 1.项目主要分为3大块 Modules,Events,Actions ,主要的功能Modules核心监控代码在此处,Event等待监控事件的到来并调用对应的监控模块,Action主要负责一些行为的启动和停止 程序启动流程如下: main->mornellaStart->BTC_Init->CoreProc->Core->Task setLoadLibraryExW 分支主要负责加载一些API函数的地址,...

产品爱好者周刊 第26期:PRISM, XKeyscore, Trust No One

  Products Gitea - Git with a cup of tea   https://gitea.io/en-us/ A painless self-hosted Git service. 自建Git服务,避免GitHub隐私侵犯 https://github.com/objective-see/LuLu LuLu is the free macOS firewall 监视Mac的出站流量,且阻断 OverSight   https://github.com/objective-see/OverSight OverSight monitors a mac's mic and webcam, alerting the user when the internal mic is activated, or whenever a process accesses the webcam. 监视是否有应用调用Mac的麦克风、摄像头 Mozilla Hubs   https://github.com/mozilla/hubs The client-side code for Mozilla Hubs, an online 3D collaboration platform that works for desktop, mobile, and VR platforms. 开源的多人虚拟空间,Mozilla打造,企业级VR诉求 数字移民   https://shuziyimin.org 关于内容源、工具的推荐,适合刚接入国际的新人 SimpleLogin   https://simplelogin.io/ 匿名邮箱工具,转发用,Michael Bazzell推荐 Telegram 群组、频道、机器人 - 汇总分享   https://congcong0806.github.io/2018/04/24/Telegram/#机器人-bot https://archive.ph/iJMBj 献给那些将来到Telegram的朋友 Design Patrick Wardle   https://www.instagram.com/patrickwardle/?hl=en 他的IG,摄影也精彩,审美...

产品随想 | 周刊 第126期:Think of your life as a rainbow arcing across the horizon of this world

FolderPaint   https://github.com/MichaelTr7/FolderPaint Folder colour changing application for macOS. 乔布斯说:“对于我和苹果公司的许多人来说,索尼的盛田昭夫是最大的灵感来源之一。我希望我们今天的所想所为能让他会心一笑。” 乔布斯甚至从索尼挖走了一位顶级设计师。哈特穆特·艾斯林格被苹果挖走前,已在 100 多种索尼产品的创造中发挥了重要作用。 供职于索尼时,艾斯林格所在的设计工作室与管理办公室和工厂车间享有同等地位。他说,这样有助于促进公司生产和设计团队之间在一定程度上达成团结,这正是乔布斯试图重建的团结。 艾斯林格指出:“乔布斯有能力洞察事物的好坏,却不知道如何实现以及如何通过组织去构建。因此,我们向苹果提出的第一个建议是,赋予设计师一定的话语权。” 斯卡利表示,乔布斯和盛田之间的深厚友谊和相互敬重可以归结为对于设计的共同热忱。 “他们以非常积极的方式产生了共鸣”,斯卡利说,“两位来自不同文化背景的创始人共聚一堂,这是非常难能可贵的。他们讨论设计原则,却从不谈及商业模式。” “Think of your life as a rainbow arcing across the horizon of this world. You appear, have a chance to blaze in the sky, then you disappear.” City Lights Bookstore   https://en.wikipedia.org/wiki/City_Lights_Bookstore?useskin=vector 旧金山的城市之光独立书店 Vesuvio Cafe   https://en.wikipedia.org/wiki/Vesuvio_Cafe?useskin=vector 好奇怪,这家Cafe居然没有太多的介绍 “One of the things that I was fortunate of was to see and understand the context of San Francisco through the eyes of Steve Jobs,” Mr. Ive said. “He kn...

产品随想 | 周刊 第128期:将时间转化为知识和体验

自行车棚效应:我们为什么在小事上纠结,却对大事视而不见?   https://limboy.me/posts/bike-shedding Benz-Patent   https://www.mercedes-benz.com/en/innovation/milestones/benz-patent-motor-car/ 豐田博物館   https://toyota-automobile-museum.jp/tw/ 值得一去的汽车博物馆 一人公司   https://github.com/cyfyifanchen/one-person-company one-person-company, 一人公司 AI 工具系列 wujiaxian   https://wujiaxian.com/ 可能吧创始人的个人Blog,介绍自己的方式,很值得学习 日本京都10大設計熱點!「建築大師貝聿銘操刀美術館,皆川明設計旅館、選物店,還有全球最美的藍瓶咖啡店舖!」   https://www.elle.com/tw/life/style/g33846398/2020-kyoto-10-hotspots/ 京都真是非常美 Henry L. Stimson   https://en.wikipedia.org/wiki/Henry_L._Stimson?useskin=vector While Kyoto may have satisfied the military criteria for a useful target, Stimson objected, declaring in a meeting if the Interim Committee on June 1, 1945, "...there was one city that they must not bomb without my permission and that was Kyoto." 人性的努力保护了京都 Brooke Astor, 105, Aristocrat of the People, Dies   https://www.nytimes.com/2007/08/14/obituaries/14astor.html 值得尊敬...

产品随想 | 张鸣论中国传统政治

原始文章目录 张鸣:皇权不确定性下的统治术——传统中国官场机会主义溯源   https://www.aisixiang.com/data/68897.html 张鸣:从科举制到市场经济转型——官本位的源流及滥觞   https://www.aisixiang.com/data/59273.html 张鸣:权力边界何在,实话空间几许?——论中国政治传统中的权力与真理关系   https://www.aisixiang.com/data/67054.html Insight: 中国自秦汉以来一直是官僚化的帝制结构,虽然皇帝最终要凭借官僚这个中介才能统治国家,但官员的权力来源和合法性依据都是皇权。官僚机器只是帝制的“车轮”。所以,皇帝要怎么样,官员只要迎合,就能获利。只有在皇帝明显违反常识道理、造成重大灾祸之时,官员才可能凭借儒家伦理对皇帝提出批评。理性选择的结果使得官员更多地趋向于顺从皇帝。 ——符合历史以来的感知 中国尽管有两千多年官僚制的传统,但守规矩、遵法制、走程序的现代理性官僚制度却一直都没有建立起来。考试取官的确是理性官僚制的一个重要因素,但中国古代官僚制只是万里长征走完了第一步,然后就再也不走了。隋唐科举制建立的初衷也并非建设官僚体系,而是防止贵族垄断官职,强化君权。科举制度越来越严密,选拔出来的人才也愈发精英化。但是,官僚的行为却没有程式化和规法化。官员的个人行为偏好往往直接影响一地的发展。 ——如何再往前走一步,可以看看新加坡 官员的行为模式往往以皇帝的喜好为风向标。一般来说,皇帝喜欢什么,一个朝代就兴什么。汉初皇帝喜欢黄老,臣子们就清静无为;东汉皇帝喜欢儒生,则臣子们多为经学家;唐初皇帝喜人上书言事,则多诤谏之徒;到晚唐,皇帝喜欢佛教了,则多礼佛之士;清代嘉庆之后,皇帝提倡节俭,带头穿补丁衣服,则满朝文武衣服上都打了补丁,有的补丁比衣服本身还贵。 ——Interesting 皇帝行为的不确定性,势必导致官员行为无法程序化、规范化,而皇帝行为的不确定往往是由统治术决定的,属刻意为之。多数王朝都外儒内法,崇尚权术,甚至迷信权术。秦始皇和丞相李斯之间,有过一个小故事。李斯随从车马过盛,很是招摇,皇帝看了不高兴。随行的宦官就把这事告诉了李斯,李斯于是轻车简从,低调起来。秦始皇马上知道身边有人泄密,又审不出来,于是把当时在身边的人都杀...

ifconfig参数备忘

       主要指标说明: eth0/lo:网络接口名 Link encap:网络类型

产品随想 | 读《中国是部金融史》:第三章至第五章

  第三章 犯我货币者,虽强必诛(汉高祖一汉武帝) 刘邦大概没有想到,他的土地政策奠定了此后两千年的社会结构:皇帝是社会最高层,具有至高无上的权力;皇帝之下是三公九即等封建官僚,拿皇帝的钱,逐级管理小农;最底层是万千小农,他们对帝国纳税,用自己的血汗钱养活帝王与封建官僚。此后,中国封建社会结构始终没有摆脱“皇权一封建官僚一小农”这个三位一体的窠臼。 既然消灭了异姓王,正常思维应该是仿效秦始皇强化郡县制,但是这位平民皇帝选择了…条谁也想不到的道路,他分封自己的兄弟子侄为王,并与诸王约定,此后非我子孙称王,天下人都可以杀了他(非刘氏而王者,天下共击之)。刘邦亲眼目睹了秦帝困的分崩离析,危急时刻无人愿意支撑起破败的帝国。华竟,官僚靠薪水吃饭, 就算贪污的本事很大,也没有理由维护别人的一姓天下。 如果没有血浓于水的同姓诸侯王,汉帝国将来同样无法应对真正的危机。事实证明,分封刘氏诸王是对的,如果没有刘邦留下来的同姓诸侯,恐怕汉朝早就得跟着皇后吕雉姓“吕”了。 人们习惯于将刘邦的皇后吕雉称呼为“吕后〞,这是中国古代历史上第一位临朝称制的太后,另外两位要等到盛唐和晚清才能在本书中出镜,三位女强人都是中国货币史上浓墨重彩的人物。 然而,从吕雉开始,仅仅不到一个世纪, 破败的汉帝国就一跃变为当时世界上最强盛的国家,直接把打遍天下无敌手的匈奴骑兵赶到了西欧,让罗马帝国受尽了欺凌。吕后末年,西汉单个农业劳动力的原粮产量已经突破了三干四百斤,这不但是西欧一干五百年后的劳动生产率,也远高于1973年中四的劳动生产率(二千二百四十斤)。应该说,中西文明争霸就是从汉帝国驱赶匈奴开始的,在第一轮交锋中,西欧完败。 ──原来西汉能超过1978年,厉害 吕雉坚决执行了一项前无古人(后有来者)的税收政策—“十五而税一”,换算一下,吕雉时代庶人个人收入所得税税率为 6.6%,而且,没有累进税率。 《二年律令》彻底改变了中国历史的发展轨迹,秦人以军功授田,刘邦以服兵役为代价授田,只有到了吕雉才真正实现了全困范用的“均田“。这是中国历史上第一次以法律形式明确了土地私有制度,每一个最普通的庶人都获得了土地,整个社会实现了孟子的“百亩之田、五亩之宅”理想。这是无数先贤追求的大同世界梦想一“耕者有其田”,请注意,我没有说这是“耕者有其田"的雏形,而是实实在在的“耕者有其田"。 ──对汉朝,充满敬...

常用建筑素材站点

高大上的建筑竞赛效果图中的素材是如何收集的回答,感谢知乎 Vincent Ku 以下是之前搜寻过的素材网站,应该这些够用了 http:// skalgubbar.se/ http:// skalgubbrasil.tumblr.com / http://www. immediateentourage.com/ http://www. gobotree.com/ http://www. mrcutout.com/ http://www. cutoutlife.com/ http://www. nonscandinavia.com/ http://www. escalalatina.com/ http://www. mayang.com/textures/ind ex.htm http://www. textures.com/ ===== 感谢知友 @SJTUboy 补充 http:// maps.stamen.com/# watercolor/12/37.7706/-122.3782 http:// maps.stamen.com/m2i/# toner-background/2000:2000/10/31.1674/121.6063 作者:Vincent Ku 链接:https://www.zhihu.com/question/31584353/answer/73642305 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。