給資安工程師開源授權觀念
曾義峰 (Ant)
yftzeng@gmail.com
2019-11-16
開源駭客
2/92
曾義峰 (ant)
→ 曾於英業達 (Inventec) 及廣達電腦 (Quanta) 等教授自由軟體授權相關課程。
→ 於 2011 年 OSDC( 開源開發者大會 ) 分享《開源專案之授權自動化分析工具》
→ 於 2018 年 COSCon( 中國開源年會 ) 分享《谈开源授权态样如何融入 DevOps 之持续整合》
相關文章
2011-03-07 淺談 App Store 與開放源碼軟體授權的案例: VLC 的合法上架與 Miro Video Converter 的非法下架
https://www.openfoundry.org/tw/enterprise-application/8274
2011-03-15 淺談將開放源碼軟體改名並違法販售: Butterfly Media on Amazon
https://www.openfoundry.org/tw/enterprise-application/8275
2011-07-12 從 Red Hat 變更 RHEL 釋出方式來探討 GPL 對原始碼範圍的定義
https://www.openfoundry.org/tw/enterprise-application/8393
2011-08-17 開放原始碼的相容與互斥性:從 Ruby 社群變更開放原始碼授權來探討
https://www.openfoundry.org/tw/enterprise-application/8419
2012-03-03 談 GPL 軟體原始碼定義及瑕疵修復方式-從 GNU Emacs 違反 GPL 授權條款一事說起
https://www.openfoundry.org/en/news/8629
2012-03-08 授權流言終結者 #1 : VirtualBox 授權分析與探討
https://www.openfoundry.org/tw/enterprise-application/8636
2012-03-29 授權流言終結者 #2 : The JSON License 的分析與探討
https://www.openfoundry.org/tw/enterprise-application/8657
2012-04-23 授權流言終結者 #3 : jQuery 授權的分析與探討
https://www.openfoundry.org/en/news/8680
2012-04-29 授權流言終結者 #4 : MongoDB 授權的分析與探討(雙重授權模式 2.0 )
https://www.openfoundry.org/enterprise-application/8687
2012-06-26 授權流言終結者 #5 : Neo4j 授權的分析與探討
https://www.openfoundry.org/enterprise-application/8738
3/92
Q1
Linux Kernel 是何種自由 / 開放源碼軟體授權?
☐ MIT
☐ BSD-3-Clause
☐ GPL-2.0
☐ GPL-3.0
☐ 其它 ______________________________
4/92
Myth 1
Reverse engineering of software is a pretty gray area
逆向工程總是處在灰色地帶
5/92
Ref: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
LGPL-2.1 明文允許逆向工程
6/92
Ref: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
7/92
LGPL-2.1 明文允許逆向工程
( 若 EULA 與之抵觸時, EULA 無效 )
Ref: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
8/92
Ref: https://opensource.org/licenses/lgpl-3.0.html
LGPL-3.0 明文允許逆向工程
9/92
Ref: https://opensource.org/licenses/lgpl-3.0.html
10/92
Ref: http://www.gnu.org/licenses/gpl-3.0.html
GPL/AGPL 有隱性但相關的規定
11/92
Ref: http://www.gnu.org/licenses/gpl-3.0.html
12/92
Q1
Linux Kernel 是何種自由 / 開放源碼軟體授權?
☐ MIT
☐ BSD-3-Clause
☐ GPL-2.0
☐ GPL-3.0
☐ 其它 ______________________________
13/92
Q1
Linux Kernel 是何種自由 / 開放源碼軟體授權?
☐ MIT
☐ BSD-3-Clause
☐ GPL-2.0
☐ GPL-3.0
☑ 其它 GPL-2.0 + User space exception
14/92
Q2
Android 主要是何種自由 / 開放源碼軟體授權?
☐ MIT
☐ Apache-2.0
☐ GPL-2.0 (with User space exception)
☐ Apache-2.0 + GPL-2.0 (with User space exception)
☐ Apache-2.0 + GPL-3.0
15/92
Myth 2
You can't make money from Open Source
你無法從開源賺錢
16/92
Ref: https://www.redhat.com/en/about/press-releases/ibm-acquire-red-hat-completely-changing-cloud-landscape-and-becoming-worlds-1-hybrid-cloud-provider
IBM 以 340 億美元收購 Red Hat
(2018-10-28)
17/92
Ref: https://www.redhat.com/en/about/press-releases/ibm-acquire-red-hat-completely-changing-cloud-landscape-and-becoming-worlds-1-hybrid-cloud-provider
18/92
Ref: https://www.f5.com/company/news/press-releases/f5-acquires-nginx-to-bridge-netops-devops
F5 Networks 以 6.7 億美元收購 NGINX
(2019-03-11)
19/92
Ref: https://www.f5.com/company/news/press-releases/f5-acquires-nginx-to-bridge-netops-devops
20/92
Ref: https://seekingalpha.com/symbol/ESTC
Elastic 市值 60 億美元
ElasticSearch (2019-05-31)
21/92
Ref: https://seekingalpha.com/symbol/ESTC
22/92
Q2
Android 主要是何種自由 / 開放源碼軟體授權?
☐ MIT
☐ Apache-2.0
☐ GPL-2.0 (with User space exception)
☐ Apache-2.0 + GPL-2.0 (with User space exception)
☐ Apache-2.0 + GPL-3.0
23/92
Q2
Android 主要是何種自由 / 開放源碼軟體授權?
☐ MIT
☐ Apache-2.0
☐ GPL-2.0 (with User space exception)
☑ Apache-2.0 + GPL-2.0 (with User space exception)
☐ Apache-2.0 + GPL-3.0
24/92
Q3
所有自由 / 開源軟體授權的最低遵循義務為何?
☐ 沒有義務,且可以修改 / 去除原著作權聲明
☐ 需保留著作權聲明,且使用若出事可向原作者求償
☐ 需保留著作權聲明,且使用若出事不可向原作者求償
25/92
Myth 3
Open Source has no Copyright
開源軟體沒有著作權
26/92
Ref: https://opensource.org/licenses/MIT
MIT License
27/92
Ref: https://opensource.org/licenses/BSD-3-Clause
3-Clause BSD License
28/92
Ref: https://opensource.org/licenses/Apache-2.0
Apache License 2.0
29/92
Ref: https://opensource.org/licenses/GPL-3.0
GPL 3.0
30/92
Q3
所有自由 / 開源軟體授權的最低遵循義務為何?
☐ 沒有義務,且可以修改 / 去除原著作權聲明
☐ 需保留著作權聲明,且使用若出事可向原作者求償
☐ 需保留著作權聲明,且使用若出事不可向原作者求償
31/92
Q3
所有自由 / 開源軟體授權的最低遵循義務為何?
☐ 沒有義務,且可以修改 / 去除原著作權聲明
☐ 需保留著作權聲明,且使用若出事可向原作者求償
☑ 需保留著作權聲明,且使用若出事不可向原作者求償
32/92
Q4
AGPL-3.0 授權的互惠性 / 感染性要求包括哪些行為?
☐ 指令輸出
☐ 靜態連結
☐ 動態連結
☐ 網路傳輸
33/92
Myth 4
Open Source is only about Copyright
開源軟體只涉及著作權
34/92
Ref: https://opensource.org/licenses/Apache-2.0
Apache License 2.0
35/92
Ref: https://opensource.org/licenses/Apache-2.0
Apache License 2.0
36/92
Ref: https://opensource.org/licenses/GPL-3.0
GPL 3.0
37/92
Ref: https://opensource.org/licenses/GPL-3.0
GPL 3.0
38/92
Q4
AGPL-3.0 授權的互惠性 / 感染性要求包括哪些行為?
☐ 指令輸出
☐ 靜態連結
☐ 動態連結
☐ 網路傳輸
39/92
Q4
AGPL-3.0 授權的互惠性 / 感染性要求包括哪些行為?
☐ 指令輸出
☑ 靜態連結
☑ 動態連結
☑ 網路傳輸
40/92
Q5
最新版本 MongoDB 資料庫的授權為下列何者?
☐ MIT
☐ Apache-2.0
☐ GPL-3.0
☐ AGPL-3.0
☐ SSPL (Server Side Public License)
41/92
Myth 5
Open Source (licenses) are revocable
開源軟體 ( 授權 ) 可以撤銷
42/92
Ref: https://opensource.org/licenses/Apache-2.0
Apache License 2.0
43/92
Ref: https://opensource.org/licenses/GPL-3.0
GPL 3.0
44/92Ref: https://opensource.org/licenses/MIT
Ref: https://opensource.org/licenses/BSD-3-Clause
MIT License
3-Clause BSD License
45/92Ref: https://opensource.org/licenses/MIT
Ref: https://opensource.org/licenses/BSD-3-Clause
MIT License
3-Clause BSD License
多數開源授權條款內容未提及是否可以撤銷,
但根據美國聯邦巡迴法院 Jacobsen v. Katzer (2008) 案例判決,
除非違反條款內容時方可撤銷。
46/92
Q5
最新版本 MongoDB 資料庫的授權為下列何者?
☐ MIT
☐ Apache-2.0
☐ GPL-3.0
☐ AGPL-3.0
☐ SSPL (Server Side Public License)
47/92
Q5
最新版本 MongoDB 資料庫的授權為下列何者?
☐ MIT
☐ Apache-2.0
☐ GPL-3.0
☐ AGPL-3.0
☑ SSPL (Server Side Public License)
48/92
Q6
自由 / 開放源碼軟體授權涉及下列哪幾種智財權?
☐ 著作權
☐ 商標權
☐ 專利權
☐ 營業秘密
49/92
Myth 6
I want / can avoid Open source software
我想要 / 能夠避免使用開源軟體
50/92
軟體開發必須面對的真相
如果沒有了 Google ( 搜尋引擎 )
很多軟體工程師就無法辦事了
51/92
52/92
53/92
54/92
沒有著作權聲明,甚至不確定該著作的來源 ( 他也是抄來的 )
55/92
Q6
自由 / 開放源碼軟體授權涉及下列哪幾種智財權?
☐ 著作權
☐ 商標權
☐ 專利權
☐ 營業秘密
56/92
Q6
自由 / 開放源碼軟體授權涉及下列哪幾種智財權?
☑ 著作權
☑ 商標權
☑ 專利權
☐ 營業秘密
57/92
Q7
Firefox 是自由 / 開放源碼軟體,得以自由使用其商標?
☐ 是
☐ 否
58/92
Myth 7
My lawyer can solve Open Source License problem
我的律師可以解決開源軟體授權問題
59/92
Ref: https://opensource.org/licenses/category
目前單是 OSI( 開放源碼促進會 ) 通過的條款就達 92 種
還不包括未通過的又常見的,例如 Ruby License
60/92
Ref: https://opensource.org/licenses/category
61/92
Ref: https://opensource.org/licenses/category
更麻煩的還是授權彼此間的交互相容性
62/92
程式交互性
A 程式授權 B 程式授權
A 程式授權 B 程式授權
函式呼叫 / 靜態連結 / 動態連結 / 網路交互
63/92
程式交互性
B 程式授權
( 互惠 / 感染 )
A 程式授權 B 程式授權
函式呼叫 / 靜態連結 / 動態連結 / 網路交互
64/92
程式交互性
( 互斥 / 不相容 )
A 程式授權 B 程式授權
函式呼叫 / 靜態連結 / 動態連結 / 網路交互
65/92
GPL-2.0 與 GPL-3.0 是否相容?
GPL-2.0 與 AGPL-3.0 是否相容?
GPL-3.0 與 AGPL-3.0 是否相容?
LGPL-2.1 與 GPL-2.0 是否相容?
LGPL-3.0 與 GPL-2.0 是否相容?
MIT 與 GPL-2.0 是否相容?
Apache-2.0 與 GPL-2.0 是否相容?
66/92
GPL-2.0 與 GPL-3.0 是否相容?
GPL-2.0 與 AGPL-3.0 是否相容?
GPL-3.0 與 AGPL-3.0 是否相容?
LGPL-2.1 與 GPL-2.0 是否相容?
LGPL-3.0 與 GPL-2.0 是否相容?
MIT 與 GPL-2.0 是否相容?
Apache-2.0 與 GPL-2.0 是否相容?
GPL-3.0 / AGPL-3.0
LGPL-2.1 / GPL-2.0
GPL-2.0
67/92
Q7
Firefox 是自由 / 開放源碼軟體,得以自由使用其商標?
☐ 是
☐ 否
68/92
Q7
Firefox 是自由 / 開放源碼軟體,得以自由使用其商標?
☐ 是
☑ 否
iceweaselFirefox
69/92
Q8
Apache-2.0 的軟體,作者隨其上的專利可自由施行?
☐ 是
☐ 否
70/92
Myth 8
Open source (licenses) are hard to understand
開源 ( 授權 ) 很難理解
71/92
互惠性 : 三大分類 ( 舊 )
License scope – Reciprocal ( 互惠性 )
Low High
(GPLed)
GPL
LGPL
AGPL
(MPLed)
MPL
EPL
(BSDed)
BSD
MIT
Apache
Gift license Sharing-with-files Sharing-with-rules
Give me credit Give me fixes Give me everything
72/92
互惠性 : 四大分類
License scope – Reciprocal ( 互惠性 )
GPL
LGPL
MPL
EPL
BSD
MIT
Apache
Gift
license
Sharing with
files
Sharing with
rules
Give me
credit
Give me
fixes
Give me
everything
AGPL
Sharing with
network
Give me
everything
even in network
Low High
73/92
Ref: https://tldrlegal.com/
74/92
Copyright (C) 2015
Ref: http://www.dwheeler.com/essays/floss-license-slide.html
Creative Commons “Attribution-Share Alike 3.0 License”; the GNU Free Documentation License; or the GNU GPL (version 2 or later)
75/92
Copyright (C) 2015
Ref: https://www.gnu.org/licenses/quick-guide-gplv3.html
76/92
Copyright (C) 2015
Ref: https://www.gnu.org/licenses/quick-guide-gplv3.html
但這兩張圖無法解決所有問題,
例如不包括 PHP/Python/Ruby 授權等,
交互未區別函式呼叫 / 靜態連結 / 動態連結 / 網路交互等。
Ref: http://www.dwheeler.com/essays/floss-license-slide.html
Creative Commons “Attribution-Share Alike 3.0 License”; the GNU Free Documentation License; or the GNU GPL (version 2 or later)
77/92
此領域需要懂法律智財權,加上瞭解工程技術者,
將授權條款的文字,解析為工程技術上的實施與流程
Open Source License Tech Lawyer
78/92
更勝一般開源授權技術律師,能看透並提出合法規避者
( 隨時可搬出 7 種以上的鑽法律漏洞合法規避者 )
Open Source License Hacker
79/92
Q8
Apache-2.0 的軟體,作者隨其上的專利可自由施行?
☐ 是
☐ 否
80/92
Q8
Apache-2.0 的軟體,作者隨其上的專利可自由施行?
☑ 是
☐ 否
81/92
Q8
Apache-2.0 的軟體,作者隨其上的專利可自由施行?
☑ 是
☐ 否
同樣地,你是否有注意到,
若你的軟體依 Apache-2.0 開源,其上之專利亦需自由共享。
82/92
Q9
LLVM 的授權條款
☐ BSD-3-Clause
☐ Apache-2.0
☐ 其它 ______________________________
83/92
Myth 9
Providing obfuscated code instead of source code
可混淆原始碼或提供中間碼來規避提供「真實」原始碼
84/92
Ref: http://www.gnu.org/licenses/gpl-3.0.html
GPL-3.0 針對「原始碼」有其定義
85/92
Ref: http://www.gnu.org/licenses/gpl-3.0.html
原始碼,指的是「程式供他人修改的最佳格式」。
86/92
Ref: https://en.wikipedia.org/wiki/Source_code
Wikipedia 對於「原始碼」的定義
87/92
Linux : 原始碼指的是人類輸入的最原始文字。
FSF : 原始碼的轉譯或減化,都不能算是原始碼。
Ref: https://en.wikipedia.org/wiki/Source_code
88/92
Ref: https://en.wikipedia.org/wiki/Source_code
89/92
Q9
LLVM 的授權條款
☐ BSD-3-Clause
☐ Apache-2.0
☐ 其它 ______________________________
90/92
Q9
LLVM 的授權條款
☐ BSD-3-Clause
☐ Apache-2.0
☑ 其它 Apache-2.0 + LLVM Exceptions
91/92
Q9
LLVM 的授權條款
☐ BSD-3-Clause
☐ Apache-2.0
☑ 其它 Apache-2.0 + LLVM Exceptions
以前是 BSD-3-Clause ,
後來改為 Apache-2.0 + LLVM Exceptions 。
主因是 Apache-2.0 與 GPL-2.0 不相容。
故採用破壞 Apache-2.0 部分條款使之相容的方式。
92/92
yftzeng@gmail.com
https://www.facebook.com/yftzeng.tw
https://twitter.com/yftzeng

給資安工程師開源授權觀念