目录

前言

基础知识---加密

什么是USB Key?

USB Key的安全性

USB Key安全性应对策略

终篇---如何应对安全漏洞


注:本文整理转载自:http://apex.ncksoft.com/archives

前言

事实上,对于网银和USB Key,有些东西不吐不快,特别是有时在网上的一些论坛里看到有人“分析/评论”使用USB Key的网银的安全性时。于是写下此文,希望能够起到一点科普的作用。

基础知识---加密

我们常见的加密,使用的是“对称加密算法”,也就是说,用一个密码加密的东西,同样可以用这个密码来解密。我们称这样的加密算法为“对称加密算法”,用于对称加密算法中的密码,我们称之为“对称密钥”。一旦别人知道了你的密钥,那么他就可以任意的解密你的秘密数据了。这样的算法很多,常见的有 DES,3DES,AES,Blowfish等等。

而使用USB Key来保证网银的安全,实际上是利用了PKI(公开密钥体系)技术中的数字证书应用,而PKI技术中至关重要的一点就是“保证私钥的安全”。为了理解所谓的“保证私钥的安全”,举一个简单的例子:假定有这样一种计算方法,可以将一篇文章用一个密钥A加密,要想解密的话,必须用另一个密钥B来解密, 反过来也一样,用密钥B加密之后得到的密文只能用密钥A来解密。这里的密钥A和密钥B一定是成对出现的,一一对应,绝对不会出现用密钥A加密的东西可以用密钥C、密钥D…等等来解密。这样的算法我们称之为“非对称加密算法”,相对应的,这里的密钥A和密钥B我们称之为“密钥对”,因为它们是成对出现的。密钥对中的一部分可以随意公开,例如其中的密钥A,我们称之为“公开密钥”,简称公钥。而另外一半是自己持有的,需要保密,我们称之为“私有密钥”,简称私钥。所谓“公开密钥体系”,就是指这里的公钥了。我们常听到的RSA,就是这样一种算法。此外还有DSA、ECC(椭圆曲线算法)等等。

使用公开密钥体系,不仅仅可以用来对数据加密,还可以用来确定身份。试想一下:你有一对密钥对(A和B),其中A是公钥,被放在网上,任何人都可以 取得。现在有人(比如张三)想给你发送一份邮件,于是张三在网上找到你的公钥,然后将邮件用你的公钥加密并传送给你。那么,只要你的私钥没有泄露出去,就只有你能够解密这封邮件(使用和A相对应的私钥B来解密)。即使邮件在网络上传输的过程中被黑客获取了,没有私钥B,他也无可奈何。这就意味着,使用公开密钥技术,可以保证只有指定的人(其实就是指定的私钥啦)才可以阅读私密信息。

反过来,如果张三先用他自己的私钥对邮件加密,然后再用你的公钥对密文再次加密,那么不但只有你能够阅读这封邮件,而且还可以确认这封邮件一定是张三发出来的。这是因为你在收取到邮件之后,首先用自己的私钥解密,得到的还是一堆密文,然后你必须用张三的公钥再次解密,才能得到邮件的原文。既然是使用张三的公钥才能解密,那么这封邮件一定是用张三的私钥加密过的。

此外,还有一种用法:例如你的老板要发布一份公告,内容为“给所有员工补助500元”,要求每个员工都能够看到,不用加密。 但是这封邮件在网络上传输的时候,被有心人篡改了,变成了“给所有员工补助5000元”,喔,老板亏大了~~~为了防止这种事情的发生,老板将公告用自己的私钥加密并附加在公告的后面,然后一起发送。这样每个员工都能够用老板的公钥解密附加的密文,并与公告原文对比,于是就能够知道邮件在传输的过程中是否被篡改了。

拓展阅读

除了对称算法和非对称算法之外,还需要了解一种加密算法,称之为“散列”(也有人称之为“哈希”,英文名为Hash),与对称/非对称算法不同的是,散列算法是不可逆的,也就是说,加密后的数据是无法再解密了,常见的散列算法有MD5、SHA1等。散列算法还有一个特性就是无论原文有多长,散列之后的结果总是固定长度。例如MD5散列的结果总是16字节,SHA1散列的结果总是20字节。

非对称加密算法的加解密速度要远远低于对称加密算法,所以在实际应用中,往往会将对称、非对称及散列算法混合使用,以提升性能。例如,张三给你发邮件的时候,先产生一个随机数,用这个随机数来做对称算法的密钥并对邮件加密,随后用你的公钥对这个随机数加密,然后将邮件的密文和随机数的密文一起发给你。你收到邮件之后,先用自己的私钥解密随机数,然后用随机数作为对称算法的密钥解密邮件。

又如,老板发布公告的时候,将公告进行散列,然后用老板的私钥对散列后的结果加密(这个加密结果,就是通常所说的“数字签名”),而员工收到公告的时候,只需要再次对公告进行散列,并用老板的公钥对数字签名进行解密,然后将解密结果和公告的散列结果做对比,就能了解公告是否被篡改了。这个对比的过程,就是通常所说的“验证签名”。

由此可见,公开密钥体系能够做到:

  1. 数据加密;
  2. 不可抵赖(就是发送者无法否认);
  3. 防止数据被篡改。

有了这样的基础知识,就容易理解“保证私钥的安全”是多么重要了。

什么是USB Key?

在前文中我们已经了解了公开密钥体系的作用:数据加密、防止抵赖、防止篡改。但是这一切的前提就是保证私钥的安全。绝对不要泄露你的私钥。否则的话,黑客可以:

  • 偷看你给美眉写的肉麻情书;
  • 冒充你的身份给老板发邮件,然后你被叫到老板办公室谈心;
  • 在网上购物,花的却是你的血汗钱;

等等等,实在是太糟糕了。

刚开始的时候,网银系统颁发给用户的数字证书(其中包含私钥),是存放在硬盘上的,当然,对于普通用户来说,这些证书啊、公钥啊、私钥啊什么的,都 不知道放在什么地方,只是当要用到的时候它就自己跑出来了。但是黑客可不这么简单,他们能够在你的计算机里面放置病毒、木马什么的,悄悄的就把你的证书、 私钥全部偷走了。有些朋友会说,嗯,我记得证书存放到硬盘上的时候(就是备份证书),需要设置密码的,这样黑客不就没办法了么?没有这么简单。你早晚会用到你的私钥的。一旦你使用私钥,操作系统就必须从硬盘中读取,还可能会询问你密码,然后在内存中就是私钥的明文了。计算机的内存,天哪,对于黑客来说,简直就是自己的后花园一样。且不说层出不穷的木马,玩游戏的朋友应该知道一些游戏修改软件如“游戏修改大师”、“金山游侠”,或者早期的FPE等等,这些大众化的工具就能在整个内存中搜索自己感兴趣的内容。所以说,如果某个东西可能会出现在内存中,就意味着可能被黑客偷走。

因此,出现了USB Key。一定一定一定要澄清一个观点:USB Key不是U盘。

USB Key是这样的一个东西:首先它的外观和U盘很像,所以常常被误认为U盘。其实USB Key内部确实有一点点存储空间,能够存放你的证书、私钥等数据。但最关键的是它有一块智能卡芯片,可以完成私钥的相关运算,例如加密、解密等。而且,这块智能卡芯片保证了像私钥这样的秘密数据不能被外部访问,如果你要使用私钥干点什么,你只能把原始数据交给USB Key,然后USB Key内部完成各种运算,再将结果吐出来给你。任何人,包括USB Key的制造商在内,是不能将私钥读取出来的。而且,在你使用私钥之前,还需要通过USB Key的一个身份验证手续,也就是输入一个密码,这样可以防止USB Key丢失后被别人利用。啊,你说制造商可能留下后门,可以通过特别的方式读取私钥?天,哪个制造商敢冒这样的大不韪,给自己找麻烦~~~除非这个制造商不想混下去了。

更进一步的是,USB Key本身可以产生非对称加密算法要用到的密钥对,这样,私钥从出生开始就一直呆在USB Key内部,不见天日,终其一生不得离开USB Key。

所以,只要你保管好自己的USB Key,并且不要把USB Key的密码泄露,你的网银基本上就是安全的了。此时黑客再想花你的钱在网上购物,就必须知道你的银行帐号、网银登录密码、取款密码、拿到你的USB Key、从你脑子里找到USB Key的密码。

上面说到“基本安全”,是有原因的。具体如何,继续往下看。

USB Key的安全性

前面已经谈到,有了USB Key,我们的网银就“基本安全”了,那么,使用了USB Key还会有什么安全性的隐患,我们又该如何应对呢?在进一步阅读之前,请先明确一个事实:一切安全性都是相对的。越是安全的系统,对用户的要求就越高,使用起来就越繁琐。我们只能在安全性与易用性之间找一个平衡点,而这个平衡点也会随着技术的发展朝不同的方向偏移。

首先我们来看看进行一次利用网银进行网上支付的全过程:

  • 將USB Key连接到计算机上,并打开网银网站;
  • 输入帐号、密码等信息登录网银;
  • 输入转帐的目标账户和金额;
  • 要进行网上支付时,需要输入USB Key的PIN码(即个人识别码);
  • 网上支付完成。

其中,有可能在打开网银网站的时候就需要输入USB Key的PIN码,这是由网银系统设计决定的。

现在,让我们转变一下思维方式,假定我们现在来扮演黑客,我们来看看有什么地方可以侵入这个网银交易系统呢?嗯,我们已知的是,用户的私钥是无法得到的,但是看看,这里有好几个安全隐患:

  • 1. 输入帐号、密码信息;
  • 2. 输入USB Key的PIN码;
  • 3. 通常,在没有关闭浏览器之前,一般不用再次输入USB Key的PIN码。

那么,只要我能够植入一个键盘钩子类型的木马程序,监控用户的键盘输入,就可以得到他的帐号和密码了,同样的,也可以得到USB Key的PIN码了。植入木马的手段很多,例如诱惑用户访问一个嵌入木马的网站,或者发送一封具有诱惑力的邮件(其中嵌入木马),或者做一些工具软件帮助用户清除病毒(但实际上悄悄的嵌入了自己的木马),或者將一些软件破解版重新打包供下载,只不过在安装包中加入了木马,甚至可以出一款“Windows XP SP3无限激活版”,让用户下载,结果安装好的系统中就已经具有木马了,黑客的手段太多了。

好了,假定我们的木马已经进驻用户的电脑了。拿到帐号、密码以及USB Key的PIN码有什么用呢?毕竟我们无法拿到他的USB Key啊,也就没有办法使用他的私钥了。不要着急,让我们守株待兔吧。一旦用户將USB Key插入到电脑中,我们的木马程序第二部分就可以开始工作了,第二部分是以隐藏方式开启一个浏览器,模拟网上交易的全过程,包括填写帐号、密码、转帐金额、提供USB Key的PIN码、确认转帐等等,对于网银服务端来说,根本没有办法区分这是用户的正常操作,还是木马的行为。

当然,编写这样的木马程序需要极高的反向工程能力、系统分析能力以及编程造诣,但既然有这种可能,那么在某个时刻这个可能就会变成现实。啊,我听见有人说,我们可以防止键盘钩子,让木马无法获取键盘信息?但是我可以负责任的告诉你,键盘监控是无法彻底免除的,即使你使用驱动层次来首先截取输入,但是木马也可以,甚至木马可以使用网银不能使用的技术:rootkit。可以预见,在终极PK的时候,木马是占上风的。

再看看上述第三点漏洞,这就是一个典型的“安全性与易用性”取平衡点的结果。一旦打开浏览器,输入一次PIN码之后,后续的操作就无需再次输入了, 这样可以给用户一个比较好的使用体验。然而,倘若黑客在用户浏览器中嵌入一个BHO,一旦发觉用户成功完成一次转帐操作,就以黑客的帐号为目标帐号再次转帐一笔,瞧,多简单,都不用费心去获取什么帐号密码了。

发觉了这样的潜在攻击方式,大部分网银不得不降低易用性,要求每次转帐操作前,强制进行一次USB Key的PIN码验证,这样虽然增加了用户操作量,但可以有效防止因为转帐完成后忘记关闭浏览器而导致的隐藏攻击。

但无论如何,因为键盘木马的存在,普通的USB Key最终会败下阵来,只不过是时间问题。对了,这里请不要考虑杀毒软件,毕竟目前的杀毒软件都是“后知后觉”的,等一个木马被列入杀软的黑名单时,可能损失已经造成了。我们要讨论的是如何在不安全的环境下安全的完成网上交易。

注,上述攻击方式是理想化的分析,说起来简单,但是实现起来却是非常困难的,所以目前看来,普通的USB Key在一定时间内是可以为网银系统提供必要的安全性的。所以,目前各大银行采用的USB Key完全可以满足普通用户对于电子支付的安全要求,使用USB Key比使用纯文件类型的数字证书在安全性上有本质的提升。

USB Key安全性应对策略

好了,现在我们已经知道黑客无所不在,无所不用其极,目标就是我们网上银行的存款,或者信用卡里的额度。前文已经简要描述了目前的USB Key的潜在不安全因素,现在我们就来看看如何应对。

关于键盘木马,有一些“软”的方法可以在一定程度上进行遏止。例如“软键盘”,就是不再让用户通过键盘来输入USB Key的个人识别码(PIN码),而是在屏幕上显示一个虚拟键盘,用户需要通过鼠标点击虚拟按键来输入PIN码。事实上不仅仅是USB Key的PIN码输入采用这种方式,一些网银在不使用USB Key的,但是又需要更高级别安全性的一些地方,也采用“页面虚拟键盘”的方式,例如建行网银的登录页面就是这样的设计。还有一些USB Key的提供商也在键盘驱动上做文章:黑客不是想截取我的输入吗?好,我让你截个够!当进入PIN码输入状态的时候,底层键盘过滤驱动就自动产生无数的按键信息发送给上层软件,將真正的用户输入淹没在极大量的随机击键事件中,让键盘木马难以得知哪些是真的用户输入,哪些是假的。当然,上层软件知道其中的猫腻,可以从杂乱的数据中滤出真正的用户输入。

然而,这些方法都是治标不治本的,因为要完成持有者身份验证,就要將PIN码发送给USB Key,这PIN码总归会出现在电脑的内存中,这些方法只能够在一定程度上增加黑客破解的难度而已。

好了,我们不说这些小儿科的应对方法了,要真正提高USB Key的安全程度,就需要从USB Key的硬件使用方式上入手

对付键盘木马这种攻击方式,根本的解决方法就是根本不用输入PIN码。嗯,不输入PIN码,那么USB Key怎么知道我就是合法持有者呢?别着急,我们有生物识别技术啊,说白了,最常见的就是指纹识别了。在USB Key上集成一块指纹扫描装置,当需要验证持有者身份的时候,就刷一下指纹,OK,验证通过,可以转帐了,这比记一个USB Key的PIN码还方便,不是吗。而且,指纹的扫描、特征比对都是在USB Key内部完成,根本不与电脑发生任何关系,这就让黑客无计可施了。这样的“指纹USB Key”已经出现在市场上了,北京农村商业银行的“金凤凰网银”就采用了这样的指纹USB Key。

不过并非只要是指纹USB Key就一定安全,如果USB Key上的指纹扫描与识别没有很好的有机结合的话,其中仍然是有漏洞的,例如,如果把指纹扫描的数据传回电脑,由电脑进行指纹特征信息的比对,或者再由电脑將扫描的数据或者特征信息送回USB Key进行处理,黑客就有可能截取到指纹扫描得到的数据,进行“数据重放式攻击”。所以,安全的USB Key一定是由USB Key自己完成整个指纹扫描、特征值提取与比对的全过程的。

然而,指纹USB Key也有其缺点,就是技术含量高,但是成本也高。要想指纹USB Key能够广泛的应用起来,还需要时间。

那么,將键盘和USB Key结合起来,使得PIN码不用通过电脑传到USB Key,不也一样安全吗?是的,带键盘输入的USB Key也比较安全,但是请低头看看你的键盘右侧的数字键区域,只是加入0~9这几个数字键,就需要增加不少的体积,这对于需要满足“随身携带”这一特点的 USB Key来说,体积实在是大了些,不够实用。不过我想,随着技术的发展,超薄键盘、折叠式键盘、投影式虚拟键盘可能会改变这一状况。嘿嘿,想想投影式虚拟键盘,有点科幻的味道,不过这一天的到来应该不远了~~~

所以,成本高不合适,体积大也不合适,既然目前没有从根本上解决问题的合适的方法,我们就换个思路吧,不要忘了,一切安全性都是相对的~~~

既然黑客总是能够通过各种手段得到USB Key的PIN码,然后在用户没有发觉的情况下完成网上交易,那么,如果我们能够在每次需要USB Key来证明自己身份的时候,需要用户手工干预一下才能完成验证过程,是不是就能够解决这个“不知不觉中” 账户里的钱就不翼而飞的问题呢?事实上这样的USB Key已经出现了,国内的几家主要的USB Key厂商都纷纷推出了这种“按钮USB Key”。这种类型的USB Key比普通USB Key多了一个按键,当需要转帐的时候,就需要用户按一下按键,否则USB Key拒绝使用内置的密钥来证明你的身份(进行数字签名),也就无法完成网上交易。有了这个按钮式USB Key,你的每一次网上交易就明明白白了:只要有网上交易,一定是有人明确的按了这个按钮,而只要这个USB Key没有丢失,那就一定是你自己干的了。即使黑客得到你的PIN码,他也无法通过网络伸手到你的电脑前按一下这个按钮吧!!

好了,按钮式USB Key,这下安全了~~~

安全了?安全了?我带上黑客的帽子,在一边得意的笑了~~~

欲知“按钮USB Key”为何不安全,又如何应对其安全漏洞,请继续往下看。

终篇---如何应对安全漏洞

前文中最后提到的“带确定按键的USB Key仍然不够安全”的原因。

是的,带确定按键的USB Key可以做到每次使用硬件内部的私有密钥时都是持有者明确授权的(即持有者做了按下确认键的操作),但是不要忘记,你能保证被签名的数据就一定是你想要签名的数据吗?这句话听起来有点绕口,那么我们来举一个例子:
假如你正在淘宝上买东西,购物车里塞满了满意的商品,终于,你决定购买了,于是开始下订单,但是发现你的淘宝账户上余额不足。这是个小问题,因为我们可以立即使用网上银行转账到淘宝账户上。OK,你来到支付宝,选择已经开通了网上银行功能的银行,然后点击“现在就转账”,终于进入了网上银行转账的页面。

……其实,以上都是废话,因为我们不过是要提到网银转账的页面而已。不过,这可是我使用淘宝的真实流程……

在网银的转账页面上,一般需要提供三个信息:你的账户、对方账户以及转账金额。其中,你的账户是你在登陆网银时就隐含提供了,对方账户则需要你填写 (如果是向淘宝这样的商家转账,网上支付系统会自动填写),转账金额也要你填写(当然,如果是向一些商家转账,网上支付系统也会自动填写)。现在你小心翼 翼的填好了所有的内容,并仔细的检查了三遍,一切无误,可以转账了。于是你点下“转账”按钮,网页上提示:请按USB Key的确认键以继续转账操作。当然,因为一切无误,所以你按下了确认键,然后系统提示你:转账已成功!

好了,现在回到淘宝网站,下单吧~~~ :) 等等,为什么淘宝还是提示你余额不足?!无奈之下你只好给银行客服人员打电话,在核对了你的身份之后,你终于等来了一个噩耗,客服MM用甜美的声音告诉 你:对不起,我们的系统记录显示,您刚才确实有一次网上交易的操作,不过对方账号的开户行位于广州,是由一位名为“贺爱客”的先生持有的私人账号。

“贺爱客”?!鬼知道这是个什么人物,怎么你的钱就转给他了呢?现在你的脑袋里一片空白~~~~

……好了,不用空白了,让我来告诉你发生了什么事吧!通过远程注入、恶意浏览器插件、函数挂钩等诸多手段,你所填写的数据在准备送给USB Key进行数字签名之前的刹那,被修改了!对方账户不再是淘宝,而是“贺爱客”。然而USB Key本身并无法得知你要给谁转账,它只能机械的等待你确认,然后对传入的数据进行签名。从电脑屏幕上来看,数据一切正常,但是到了USB Key内部,就已经大不一样了。这正是三十六计之中的“偷梁换柱”。

偷梁换柱并不是什么困难的事情,最简单的就是使用浏览器插件。尤其是对于IE这种“公共厕所”级别的浏览器,随便谁都可以过来插一脚。曾经有朋友向我抱怨电脑上网越来越慢了,我检查了一下他的系统,发现IE中加载了几十个插件:三个工具栏插件、十几个用于网上看电影的插件、两个网银用到的插件、四个下载加速插件、PDF阅读插件、金山词霸插件、还有七八个不知道是什么东西的插件。我问他为什么装这么多插件,他还一头雾水的问我,插件是虾米东东??

难道说,在这样一个饿狼环伺,危险重重的恶劣网络环境下,我们就无法安全的使用网上银行,享受足不出户就能指点天下的便捷吗?

说到底还是要记住这句比较真实的话:一切安全性都是相对的~~~

浅谈网银USB key使用原理与安全策略相关推荐

  1. php的解析别名,浅谈laravel aliases别名的原理

    在laravel发现有些类可以直接use 类名,就能使用了,例如use DB;就可以使用DB类了,问题是DB这个类并不在根命名空间,这里面实际就是用到了别名. 先通过如下例子来分析基本原理 建立如下文 ...

  2. 浅谈Charles抓取HTTPS原理及HTTP CONNECT

    浅谈Charles抓取HTTPS原理 在关于HTTPS,你需要知道的全部中,分析了HTTPS的安全通信过程,知道了HTTPS可以有效防止中间人攻击.但用过抓包工具的人都知道,比如Charles,Fid ...

  3. 【NXP DN 系列】浅谈 DPAA1 Software Architecture 工作原理

    浅谈 DPAA1 Software Architecture 工作原理 一.介绍 DPAA1 的主要目的是在片上系统( SOC )的 IO 部分内提供智能处理,以进行路由和管 理与流量相关的处理工作, ...

  4. 浅谈vue双向绑定的原理

    一.什么是双向绑定 我们先从单向绑定切入 单向绑定非常简单,就是把Model绑定到View,当我们用JavaScript代码更新Model时,View就会自动更新 双向绑定就很容易联想到了,在单向绑定 ...

  5. 浅谈 EHT 黑洞照片拍摄原理

    来源:东晓科学网博客 前几天,EHT (Event Horizon Telescope)(事件水平线望远镜)研究团队发布重大新闻,公布了人类首次拍到的黑洞"照片"",同时 ...

  6. 浅谈飞鸽传书实现原理

    来自:http://www.freeeim.com/news/onews.asp?id=177 局域网聊天软件飞鸽传书是目前比较流行的局域网即时通讯软件,由于历史悠久,它具有比较多的用户. 因为 Fr ...

  7. Smart3D系列教程1之《浅谈无人机倾斜摄影建模的原理与方法》

    一.引言 倾斜摄影测量技术是国际测绘遥感领域近年发展起来的一项高新技术,以大范围.高精度.高清晰的方式全面感知复杂场景,通过高效的数据采集设备及专业的数据处理流程生成的数据成果直观反映地物的外观.位置 ...

  8. 浅谈Linux USB设备驱动

    1.USB基础介绍 1-1.USB硬件接口介绍 USB接口在硬件上总共有四根线组成VCC.D+.D-.GND,通过计算D+和D-的差值来确定数据.USB设备在传输速率上可以分为低速(1.5Mbps). ...

  9. 浅谈MOS管的工作原理

    1.MOS管简介   MOS管又称场效应管,即在集成电路中绝缘性场效应管.MOS英文全称为Metal-Oxide-Semiconductor,即金属-氧化物-半导体,表示为:在一定结构的半导体器件上, ...

  10. 浅谈Linux内核RCU机制原理

    RCU(Read-Copy Update)是数据同步的一种方式,在当前的Linux内核中发挥着重要的作用.RCU主要针对的数据对象是链表,目的是提高遍历读取数据的效率,为了达到目的使用RCU机制读取数 ...

最新文章

  1. 微软云平台媒体服务实践系列 1- 使用静态封装为iOS, Android 设备实现点播(VoD)方案...
  2. sketch软件_Sketch软件怎么用?怎么提升Sketch软件技巧?
  3. python变量名称跟着循环,在Python中使用列表中的名称循环创建新变量
  4. C# 使用Quartz简单实例以及备忘
  5. jdk文件夹里点哪个是安装_jdk在哪个文件夹里面
  6. Android运行原理及运行机制知识汇总
  7. MySQL二进制日志文件格式
  8. 微信小程序中的转发功能
  9. 不断网情况下,如何关闭红蜘蛛多媒体网络教室
  10. 修改select下拉箭头 使用背景图片
  11. EXCEL和公式里的 通配符
  12. 大O符号/大Ω符号/大Θ符号/小o符号/小w符号等各种算法复杂度记法含义
  13. 底物的分子描述符计算及 CYP450 酶-底物选择性技术研究
  14. three.js重新计算UV
  15. Django中遇到的问题以及解决方法
  16. 中国电子级玻纤布市场产销调研及投资前景预测报告2022-2028年
  17. odoo13 订单模板设置_Odoo + Anodoo功能介绍13-SaaS公司如何定义在线销售的订阅产品...
  18. compressor压缩_使用Compressor.io压缩和优化图像高达90%
  19. 光谱响应函数概念与等效遥感反射率的计算
  20. DisplayFusion—多屏管理软件

热门文章

  1. 2020中国互联网十大人物
  2. 后场村的加班别有不同
  3. 分布式数据库实战第三节 分布式数据库引擎、索引和事务
  4. Ubuntu系统清理瘦身
  5. springboot2集成sharding-jdbc分库分表
  6. CSS利用checkbook实现开关按钮
  7. 千字文(粱敕员外散骑侍郎周兴嗣撰)
  8. 一张图看懂零维到十维空间
  9. PostgreSQL数据库——Pigsty
  10. ORACLE EBS 启用REST服务-1-环境安装篇