聚會時間公告: 因應COSCUP 2011, Kalug 8月份休會一次

九月 30, 2016
» LibreOffice 5.2.2 釋出

LibreOffice 5.2.2 已經釋出,這是 5.2 系列的的第二個錯誤修正版本。
對於企業使用者,文件基金會建議在有認證專家做為後盾的情形下部署 5.1 系列到大型企業及組織,以提供額外的加值服務。

新聞來源:LibreOffice 5.2.2 available for download

九月 19, 2016
» LibreOffice Confernece 2016 過程與心得

Day 0

今年(2016年)的 LIbreOffice Conference 在捷克共和國 (Czech Republic) 的布爾諾 (Brno) 於 9/7~9/9 舉辦,我們(我跟 Franklin Weng)在臺灣桃園機場搭乘晚上七點半,國泰航空的班機,先飛往香港國際機場,讓我覺得蠻特別的是,這班飛機上的飛機餐是起司雞肉捲,而不是之前我印象中都是裝成一盤一盤的那種類型的飛機餐,在香港國際機場轉機時,在候機長廊上看到一家名稱就叫作「臺灣牛肉麵」的店家,但是仔細一看發現他們的牛肉麵一碗要價88元港幣XD,雖然說這個價格在機場這種地方應該算是蠻正常的價位,不過我還是覺得頗貴Orz,經過了約莫一個小時的等待後,我們就搭上了飛往法國巴黎戴高樂機場的法國航空班機,不過這班比較久一點,單程約莫是13個小時左右,所以這班飛機提供了兩餐的餐點,但是第一份上來的時間已經是 UTC+8 時區的大約11點多12點左右的時間,以時間來看比較像是在吃宵夜而非晚餐,餐點也算是中規中矩,不過空服員都還算蠻親切的XD,然後飛機上的安全宣導影片也挺有趣的,讓人不得不佩服法國航空在這方面的用心,中間經過了大約8到9個小時的睡眠後(其實沒那麼久,因為在飛機上並不好睡),空服員會在快抵達戴高樂機場前約一小時推出早餐(其實不管以 UTC+8 或是法國當地時間我都不覺得那是早餐就是了......,因為當時如果是用法國當地時間計算的話是約凌晨4點多快5點,若是用 UTC+8 的時間來看也早上10點多快11點了)而到達巴黎戴高樂機場已經是當地時間快早上6點了,這次轉機時間也不久,但是我還是在登機門旁的休息區照了夜晚的機場(順帶一提,因為我沒有調整相機的時間,所以相片上的時均是 UTC+8 時區的時間),順帶一提,可能是因為先前恐攻的關係,這裡的安檢明顯比其他機場要嚴格很多。

DSCI0075
夜晚的巴黎戴高樂機場

Day 1

再來就是搭乘法國航空往捷克布拉格機場的班機,不過這班比較小一點,大約只有兩百人的座位,不過飛行時間也只有兩個半小時左右,而且上面提供的是麵包(只有兩種),大概是因為航班的時間並沒有碰到早餐或是午餐的時間吧?到了布拉格機場後,一路上入境都蠻順利的(順帶一提,因為捷克有簽署申根協定,所以我們在法國的時候就已經先過了一次海關,故視為已在申根區內,不需要在布拉格再次通過海關,所以速度快很多),不過機場內的外幣兌換的匯率真的不是很好,一歐元只換得到約22捷克克朗,在其他地方換都可以換到約26到27左右,所以如果火車票等等都是事先買好的話,其實在機場只要換到足夠坐 Airport Express 的錢就好了,不必一次換太多。再來我們就搭機場外的 Airport Express 接駁車到布拉格火車站,這裡約莫也要半個多小時的時間,然後到了火車站稍事休息後又要搭兩個半小時的火車到布爾諾火車站,順帶一提,因為是我們的火車票是中午12點接近1點的時間,所以我們在布拉格火車站裡的漢堡王吃了一餐,再度抱怨歐洲的物價真的是蠻貴的XD。
DSCI0089
到布爾諾的最後半小時車程
到了布爾諾後,我們又換乘當地的輕軌電車(布拉格與布爾諾的電車其實都很密集)到本次旅館的所在地,再走一小段路便到達旅館,在旅館裡比較讓我驚訝的是,這裡其實是沒有飲水機的,直接裝自來水就可以喝了。另外,這一天傍晚我們也在布爾諾的市中心稍微走走晃晃了一下,其實這整個城市也是蠻漂亮的,以復古的建築物為主,現代化的基礎設施為輔,融合出一種微妙的古城風情。此外,布爾諾這裡的代表物是一隻稱為布爾諾龍 (Brno Dragon) 的鱷魚,傳說這個布爾諾龍是在中古世紀危害布爾諾當地,而後被聰明的旅人以石灰與牛皮解決掉的一隻巨獸。我們這天出來也看到了很多其他的東西,就不一一敘述了。
DSCI0096
被稱為布爾諾龍 (Brno Dragon) 的鱷魚
不過這天晚上我睡得並不是很安穩,不知道是因為時差的關係還是其他原因。

Day 2

這天我因為睡不著,所以一大早就起來了(捷克當地時間早上4點多......),大約6點半時到飯店樓下吃了早餐,其實還算蠻多樣化的,再來10點時我就和 Mark Hung 一起出去布爾諾火車站附近走走逛逛,順便去前一天沒上去看過的教堂看了一下,中間也經過了孟德爾的博物館。
DSCI0107
中午就在附近解決了,下面這一份餐點149捷克克朗,其實以歐洲的物價來說算是很便宜的。
DSCI0130
吃完飯後就搭電車到會場(布爾諾科技大學的其中一個校區)了,不過報到處的工作人員說我們太早到了,叫我們先去旁邊坐一下XD,這個校區我覺得算是還蠻漂亮的。
DSCI0134
再來就是參加下午的 Community Workshop 了,不過真的不得不說全英文溝通讓我有點不太適應......,其中也是討論到蠻多的問題就是了,結束之後我們就去對面的咖啡廳參加這次的 Welcome Party,小點心蠻多的XD。

Day 3

這天開始就都是整天的議程了,今天早上基本上就是聽 The Document Foundation 的工作人員開場並介紹專案目前的狀況,接著是 Sponsor Keynotes,下午的話,因為除了社群軌的前兩場以外我都不太想聽,所以就又自己跑去布爾諾火車站附近逛了逛,順便在紀念品店買了一些東西,包含了明信片、鑰匙圈與撲克牌,才又搭電車回飯店跟 Franklin Weng 與 Mark Hung 會合,一起去 HackNight 的場地,也就是 Red Hat 在捷克的分公司,在當地的科技園區處,在那裡與開發者討論某個 Calc 的日期相關問題要怎麼修復等,不過因為我懶得帶筆電去,所以就只是去吃吃喝喝跟看別人打撞球XD。

Day 4

這天終於換到我要上臺了,所以早上也就待在 Community Track 那一間作簡報方面的最後衝刺,順便聽聽其他人的議程,這天不少其他議程也是與在地化等等議題相關的議程,不只是我這場,但是輪到我的時候,還是覺得很緊張,所以自己感覺也沒有講出所有該講的東西,還讓 Franklin Weng 幫我補充東西,講完也匆匆忙忙的收拾東西下臺,還花了一點時間修不知道發生什麼事的 Plasma 工作空間......。
DSCI0145
我也去聽了 Franklin Weng 的兩場議程,不過正好都跟我在不同間場地,雖然就在隔壁而已XD,也參加了下午的幾場 Workshop,不過除了最後一場的 Marketing Workshop 以外其實都不太有趣......。
晚上就到當地在火車站附近的 Charlie's Square 參加 Conference Party,不過當時有聊到天的人不多就是了QQ。

Day 5

這天的議程也不少,其中有一個說到了 LibreOffice 相關的 E-learning,不過受限於我的英語聽力,所以也聽得不是很懂,另外也有幾場與日本目前的自由軟體環境相關的議程,以及一些與學校和政府等公部門或教育相關的單位的議程,下面這張照片是其中一個我覺得蠻有趣的句子:
DSCI0165
至於下午就是關於遷移到自由軟體的議程與另一個建立與發展在地化社群的議程,不過我個人認為裡面並沒有說到什麼詳細的資訊QAQ,再來就是閉幕了,TDF 的工作人員也出來了不少啊XD。

Day 6

這天等 Franklin Weng 吃完飯我們就從飯店出發去火車站了,畢竟是9點半多一點的火車,不過我們到火車站的時間其實才大約9點而已,還在車站內逛了逛,看到了一家二手書店竟然有在賣一些大概2009以前的微軟技術書籍XD,不過我們要搭的這班火車也延誤了10分鐘......,在月臺上有點無聊XD。
DSCI0167
布爾諾火車站的月臺
12點多時終於到了布拉格火車站,因為已經中午了,所以又在第一天的那間漢堡王吃午餐,隨後就去售票處買了往機場的 Airport Express 車票,不過讓我覺得比較奇怪的一點是,第一天我們買的車票一張要 60 捷克克朗,但是這天在售票處竟然只要 37 捷克克朗?!而且竟然還能上車......,我實在是搞不懂這裡的售票機制啊......,總而言之,我們還是順利坐上車到了機場,在機場又把捷剋剋朗換回歐元,不過機場的匯率真的很差,來的時候一歐元只換得到22捷克克朗,但是換回去卻要30捷克克朗才能換到一歐元......,其實這匯差也蠻大的,不過也算是一次經驗這樣啦,從布拉格到阿姆斯特丹飛機航程才一個多小時,不過是一百多人座的小飛機,在阿姆斯特丹停留稍微久了一點,所以就在候機長廊裡的商店買了一些紀念品,本來考慮蠻久的,有一些東西不知道該不該買,後來想說反正帶回去也是被匯差吃掉,不如在這裡多花一點,然後就上了回臺灣的飛機了,不過這班飛機其實終點是馬尼拉,到臺北(其實是到桃園機場,不過國外的機場都是寫到 Taipei XD)算是中轉站?在飛機上我那個座位的機上娛樂系統一直當掉,空服員久久才幫我重開一次,不過沒想到他們的機上娛樂系統竟然是用 Linux 當核心XD,看來把別人的系統搞掛也是有好處的(?),飛了十多個小時後終於抵達桃園機場了,在領完行李,並與 Franklin Weng 分道揚鑣後,我也搭上了往高鐵站的接駁車,然後搭上了高鐵回到家了,不得不說,這次到捷克真的讓我感覺到不同地方文化有多麼的不同。

最後還是要感謝舉辦這次 Conference 的所有工作人員!

九月 17, 2016

小惡魔AppleBOY
AppleBOY
小惡魔 – 電腦技術 – 工作筆記 – AppleBOY is about »

tag cloud

» 在 Travis 實現 Docker Cache

docker 前一篇寫了『用 Travis 自動上傳 Docker Image』,Travis 跑完測試成功後才自動編譯 Docker Image 並且上傳到 Docker Hub。在每次 commit 後,Travis 執行 docker build 時間總是非常長,當然原因很多。如果選用的 Docker base image 非常肥,指令非常多,每次編譯都要重新下載及執行指令,所以執行時間就是這麼長。本篇就是想辦法減少 Travis 編譯 Image 時間,就像把 node_modules 壓縮起來,下次執行測試前先解壓縮再安裝,可以大幅減少 npm install 時間(可以參考之前的『用一行指令加速 npm install』)。這邊我們就需要用到 Travis 的 Cache 功能

啟動 Travis Cache 快取服務

啟動方式如下:
cache:
  directories:
    - ${HOME}/docker
假設有其他目錄需要 cache,像是 npmnode_module 或是 Laravelvendor,都可以透過此方式設定。

讀取 Docker Cache 快取

before_install 內透過 docker load 指令讀取 cache 資料
before_install:
  - if [ -f ${DOCKER_CACHE_FILE} ]; then gunzip -c ${DOCKER_CACHE_FILE} | docker load; fi
其中 DOCKER_CACHE_FILE 可以定義在 env 內
env:
  global:
    - DOCKER_CACHE_FILE=${HOME}/docker/cache.tar.gz

儲存 Docker Image cache 快取

經過測試及編譯 Image 後,就可以進行 儲存 Docker 快取
script:
  # 進行測試
  - make test
  # 編譯 Image
  - make docker
  # 儲存快取
  - if [ "$TRAVIS_BRANCH" == "master" ] && [ "$TRAVIS_PULL_REQUEST" == "false" ]; then
    mkdir -p $(dirname ${DOCKER_CACHE_FILE});
    docker save $(docker history -q appleboy/drone-line:latest | grep -v '<missing>') | gzip > ${DOCKER_CACHE_FILE};
    fi
透過 docker save 指令將 Image 存起來,這樣下次再執行編譯 Image 時,就會先找看看是否有快取。上面設定只有 master branch 才會儲存快取,但是在任何一個 branch 都可以享受到快取的服務喔。

» 用 Travis 自動上傳 Docker Image 到 Docker Registry

docker 在今年七月寫了一篇『在 Travis 升級 Docker 和 docker-compose 版本』,就在上個月底 Travis 終於將 Docker 預設版本換成 1.12.x 版本,並且將 docker-compose 也一併升級到 1.8.0,這樣就可以不用手動升級了。那這篇會紀錄如何用 Travis 自動編譯 Docker Image 並且上傳到 Docker Hub。Docker Hub 提供兩種方式讓開發者上傳 Image,第一種是透過 Command line 下指令手動上傳,另外一種則是在 Docker Hub 後台指定 Dockerfile 路徑及需要執行編譯的分支,這樣只要 Push commit 到 Github,Docker Hub 就會根據 Dockerfile 來自動編譯 Docker Image。本篇會介紹如何透過 Travis 服務來自動上傳 Dokcer Image,像是 Golang 的部屬方式通常是編譯出 Binary 執行檔後,將此執行檔加入 Image 最後才上傳。

在 Travis 啟動 Docker Service

啟動方式非常簡單,只要加入底下程式碼到 .travis.yml
services:
  - docker

準備 Dockerfile 編譯 Image

我們用 Golang 為例,底下是 Dockerfile 範例
FROM alpine:3.4

RUN apk update && \
  apk add \
    ca-certificates && \
  rm -rf /var/cache/apk/*

ADD drone-line /bin/
ENTRYPOINT ["/bin/drone-line"]
接著透過底下指令編譯出 Dokcer Image
$ docker build --rm -t $(DEPLOY_ACCOUNT)/$(DEPLOY_IMAGE) .
DEPLOY_ACCOUNT 是 Dokcer hub 帳號,以我的帳號為例就是 appleboyDEPLOY_IMAGE 則是 Image 名稱。請將這指令寫道 .travis.yml 內的 script
script:
  # 執行測試
  - make test
  # 通過測試後開始編譯 Image
  - docker build --rm -t $DEPLOY_ACCOUNT/$DEPLOY_IMAGE .
最後一道指令就是上傳了

上傳 Image 到 Docker Hub

由於上傳到 Docker Hub,需要登入帳號密碼,而 Travis 提供兩種方式讓開發者設定 Private global value,你不會想把帳號密碼用明碼方式寫在 .travis.yml 吧。在早期 Travis 只提供一種方式就是透過 travis 指令來新增,詳細指令可以參考這文件,這邊就不教大家指令了,而另一種方式就是到 Travis 管理頁面直接進到 settings 設定即可 Screen Shot 2016-09-17 at 3.03.12 PM 將帳號密碼設定完成後,請在 after_success 加上上傳指令
after_success:
  - if [ "$TRAVIS_BRANCH" == "master" ] && [ "$TRAVIS_GO_VERSION" == "1.7.1" ] && [ "$TRAVIS_PULL_REQUEST" == "false" ]; then
    docker login -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD";
    make docker_deploy tag=latest;
    fi
上面表示只要是 master 分支,測試環境為 Golang 1.7.1 且不是在 Pull Request 狀態就執行登入,並且上傳,其中 make docker_deploy tag=latest 代表意思如下 (我把指令寫在 Makefile 內):
docker tag $(DEPLOY_ACCOUNT)/$(DEPLOY_IMAGE):latest $(DEPLOY_ACCOUNT)/$(DEPLOY_IMAGE):$(tag)
docker push $(DEPLOY_ACCOUNT)/$(DEPLOY_IMAGE):$(tag)
上面步驟完成,之後只要 commit 到主分支,Travis 就會自動編譯 Image 並且上傳到 Dokcer Hub,蠻方便的。

九月 16, 2016
» calibre 2.68 釋出

自由的跨平臺電子書管理軟體,calibre 2.68 正式版釋出,此版本新增了幾個功能以及修正了 11 個 bug。
calibre 2.X 版本支援 Windows Vista~ 10 (皆含 32 位元及 64 位元版本)、Mac OS X 10.7 或更新、各種 Linux 發行版。若您的作業系統是 Windows XP 或是 Mac OS X 10.5、10.6,請繼續使用 1.48 版。

來源:http://calibre-ebook.com/whats-new

九月 14, 2016
» 應用內政部20公尺網格數值地形模型資料

政府開放資料的挑戰

2016/09/09 台灣政府內政部發布開放全臺及澎湖地區的20公尺網格DTM,這真是政府開放地理資訊之一大里程碑!

在此筆資料發布之前,台灣政府已經陸陸續續發布了相當多以 WMSKML、GeoJSON 等格式的地圖資料集,特別是七月底發布的經建版地形圖數值檔 (比例尺為2萬5千分之1、5萬分之1及10萬分之1),一舉將原本每幅圖檔收費150元(非加值型)、600元(加值型)改成以政府資料開放授權條款散布!

內政部部國土測繪中心的「經建版地形圖數值資料檔(比例尺為二萬五千分之一、五萬分之一及十萬分之一)」前經「105年行政院資料開放諮詢小組第2次會議」列為甲類資料,並經本部105年7月26日台內地字第1051306149號令修正發布「國土測繪成果資料收費標準」第2條附表附件2,開放資料供免費下載使用,授權條款採用行政院「政府資料開放授權條款-第1版」

這批 2016/07/28 釋出的圖檔包括二萬五千分之一經建版地形圖計262幅、五萬分之一經建版地形圖計80幅及十萬分之一經建版地形圖計7幅,共計349幅。

不含等高線圖層,但是包含水系、道路、行政界線、鐵道、高壓線、建築區等圖層,及圖例、中文註記等向量圖層。

雖然這批經建版地形圖數值檔的部份圖檔年代久遠,座標系統部份因為製圖時偏好,選用了 TWD67(119分帶)TWD67(121分帶)TWD97(121分帶) 等等不同的座標系統,格式也是需要私有軟體 AutoCAD 2013/2014 的 AC1027,實務上仍需要整理之後才有使用價值。

但是這項開放政策代表政府機關終於願意改變預設立場,將此圖資所能帶來的歲入財源,換取開放資料活化應用的經濟價值。而這種預設立場是過往法條的規範所造成的,例如規費法第7條與第8條明定:「為特定對象之權益辦理下列事項,應徵收行政規費;交付特定對象或提供其使用下列項目,應徵收使用規費。」,在「特定對象」的授權前提下,依據規費法所定義的各種政府資料管理辦法就會變成

  • 限制利用目的;
  • 禁止將資料或加值/衍生產品自由移轉、散布;
  • 要求利用人之委託人管制資料的利用。

以至於降低各種資料再度利用的可能性。如果今天這筆資料沒有以政府資料開放授權條款發布,我也無法依照測繪圖資供應收費基準透過購買加值型授權後,將資料初步處理後開放給 OSM 社群再產製程其他格式的地圖。

社群交流

這不是一夜之間發生的事情,前前後後有來自不同的非營利組織的許多專家、學者與政府官員開會交流。

以開放街圖社群為例子,社群代表早在 2014 年中開始與行政院接觸,前前後後開了不少次會議

這些會議的主題基本圍繞著

目的是逐一針對釋出資料的可行性等等討論。

最初的會議相當令人挫折,很多時候會由於雙方對於期待「開放」的程度不同,討論難以有交集,加上具體需要調適的繁複法規,以及對於變動政策後難以預期的民意反應等等,往往讓進度難以快速推進,所幸一直有積極的政務官支持推進。

即使有最高層級的官員支持,從願意採納意見到實際釋出資料,還要好長一段時間。

這些工作包含要調適法規,包含釋出的資料必須仍在個人資料保護法、著作權法之下,以及行政罰法、規費法等等都會影響各機關的支持度。法規不甚完備,加上政府機關的缺乏積極動機,維持資料正確與即時性需要透入預算與資源,但是政府機關往往並非資料利用的受益者,公開資料只會帶來違法的風險。

數值地形模型資料的應用

其實內政部100公尺網格數值地形模型資料是最早開放的資料,但是 100 公尺的精度缺乏實用價值,且早在 2011 年就有學者建議國安單位應該逐步開放更高精度的 DTM 資料。許多使用開放圖資的用戶使用 NASA Shuttle Radar Topography Mission (SRTM) 的 DEM 資料,它的理論精度是 1 arc/second (30公尺),但由於它是插點處理,仍有缺陷。但是那是一般研究單位或是 OpenStreetMap 可以拿到的免費資料,也因此許多拿 OpenStreetMap 為底圖做戶外運動的使用者會拿 SRTM 作為等高線地形圖的參考資料。

作為一個以登山為主要應用的開放街圖使用者,在 2014/07/27 在行政院開的第一次會議上,我就提議將數值地形模型優先開放。

第一次會議後足足過了兩年,終於等到這筆20公尺網格DTM數值地形模型

這批資料的 HDR 資料顯示是 2006 年測製,由財團法人成大研究發展基金會使用 5M 網格資料疏化重製 20M 網格資料。座標系統則是 TWD97 / TM2 zone 121DTM數值地形模型 不只是可用於產製等高線 (Contour lines) 與彩色暈渲圖 (Hillshade map),尚可用於工程模擬、地形查詢、立體地形圖、坡度計算等等。

以目前台灣的登山社群而言,可以立刻用於取代原本的 SRTM 地圖資料。
例如地圖產生器在 v4.02 即已經使用此數據作為地形高度查詢的參考資料
也可以用於產生 Mapsforge 離線向量圖資,目前台灣社群已經長期供應的有 Jing 的 ASTER.OSM綠野遊蹤離線圖資來源。這些圖資將可以用於手機的 OsmAndLocus MapOruxMaps綠野遊蹤等軟體。

也可以產製成 Garmin 裝置所需的地圖格式,台灣有 ASTER.OSM台灣登山地圖 – Taiwan TOPO 等。

由於這批資料的座標系統是 二度分帶(TWD97,中央經線121度),為了使用方便,我將原始的 GeoTIFF / ASCII gridded XYZ raster datasets 一律轉成 WGS84,以方便再度後製使用。

目前轉好的格式有

  • GeoTIFF 與 LZW 壓縮版 GeoTIFF。可用於產生彩色暈渲圖、地形查詢等。
  • Shapefile – 分成 10公尺、20公尺、50公尺、250公尺間距的等高線向量圖。可用於 QGIS 或其他 GIS 軟體。
  • Postgres/PostGIS SQL – 分成 10公尺、20公尺、50公尺、250公尺間距的 MULTILINESTRING 等高線圖層。可以用 PostgreSQL/PostGIS 接上 QGIS 顯示,或是透過 mapnik/CartoCSS 等工具輸出成圖磚 (slippy map).
  • SRTM HGT – 由於 HGT 格式需求此為 downsampling 成 3601×3601 版本。可以放進手機,部份軟體支援直接畫出等高線或地形圖。由於是縮減取樣處理,不建議作為再產製原料。
  • OSM PBF – 10 公尺間距的等高線資料。可以用於合併 OSM 圖資,生成手機用的離線 Mapsforge 圖資或是 Garmin 版本地圖。

相關格式的圖資以及轉換的命令語法,請於此下載 http://goo.gl/Wku11y

如果有圖資應用上的問題,歡迎到 OpenStreetMap台灣 社群討論。如果有手機使用此版圖資的問題,可以洽詢手機GPS登山推廣計畫及其經驗交流聯誼會,或是別讓自己迷失(手機GPS應用)以及正在籌備成立的福爾摩沙山難預防協會

此資料集以 CC0 授權。使用者利用此資料,受有損害或損失,或致第三人受有損害或損失,而遭求償者,不負任何賠償或補償之責。

圖資預覽

目前已知的幾個問題,一是外海部份由於有負數高程,導致海岸線出現方框或人工痕跡。另外無論是分幅雲林縣資料或不分幅全台資料,在 (120.682650, 23.608483) 與 (120.682283, 23.604167) 兩處有高達六千公尺的奇怪外星建築。

外星建築

與 SRTM 比對發現可用性高很多。以往 SRTM 圖資精度不足,使許多河谷的等高線錯誤,容易將河谷誤判為稜線。

SRTM 版本

內政部版本

以下與 2001 的經建三版兩萬五千分之一紙圖比對。可能很多山友會在登百岳的時候購買上河文化的地圖,或是在爬中級山的時候,使用地圖產生器印出經建三版的紙本地圖,然後用膠帶防水貼好帶上山。

經建三版套疊等高線

透過內政部這次釋出的資料搭配 OSM 的山岳路線,山友將可以搭配使用產生出具備高即時性,使用便利的手機或專業手持衛星定位裝置離線地圖。

感謝這一路以來,努力謀求共識的各位政府機關、專家朋友們!

九月 13, 2016

小惡魔AppleBOY
AppleBOY
小惡魔 – 電腦技術 – 工作筆記 – AppleBOY is about »

tag cloud

» Drone CI Server 搭配 Atlassian Bitbucket Server (前身 Stash)

Screen Shot 2016-09-13 at 10.36.58 AM 目前團隊是使用 Atlassian Bitbucket 搭配 Bamboo,雖然 Bamboo 搭配自家的 Bitbucket (前身是 Stash Server) 整合得相當不錯,但是個人覺得設定上蠻複雜的,所以才想測試看看其他家 CI Service 對團隊學習及設定上更容易。最近找到一套用 Golang 寫的 CI Server 就是 Drone,Drone 線上文件提供了 Github, Gitlab, Gogs, Bitbucket (Stash) 等整合。在整合 Drone 搭配 Bitbucket 時,文件寫得不是很清楚,尤其是在 Bitbucket 建立 Application Link 遇到許多問題,官方文件也沒寫得很清楚,故寫此篇記錄如何將 Drone 服務整合 Bitbucket 伺服器。

建立 Application Link

Screen Shot 2016-09-13 at 10.59.51 AM 表單需要注意的地方是 Customer KeyShared Secret 這兩欄位請直接到 Drone 設定檔內找到
DRONE_SECRET: "replace-this-with-your-own-random-secret"
DRONE_STASH_CONSUMER_KEY: "AppleBoy46"
最下面的 Create Incoming Link 要勾選,完成後按下一步會出現底下畫面 Screen Shot 2016-09-13 at 11.07.59 AM 這邊要注意的是我們尚未建立 Public Key,所以請繼續看底下如何建立。

建立 Private Key File

要跟 Bitbucket 的 OAuth 建立連線,則需要 private 跟 public RSA certificate,底下是建立 private certificate
$ openssl genrsa -out /etc/bitbucket/key.pem 1024
上面會建立一把 private key 存放到 mykey.pem,下一個指令則是產生 public certificate
$ openssl rsa -in /etc/bitbucket/key.pem -pubout >> /etc/bitbucket/key.pub
完成後,請打開 /etc/bitbucket/key.pub,將內容複製到上述表單內 public key 欄位。另外要將 /etc/bitbucket/key.pem 位置設定在 Drone config 內。
DRONE_STASH_CONSUMER_RSA: "/etc/bitbucket/key.pem"
完成後就可以看到底下畫面 Screen Shot 2016-09-13 at 11.21.24 AM 看到這畫面算是大功告成了。送了新 PRDrone 官方團隊,今天寫文件才知道之前送的 PR 有錯誤。

參考

九月 12, 2016
» Plasma 5.7.4 與其他許多重要的套件已經可用 (Chakra GNU/Linux)

KDE Plasma 的最新更新現在都已提供給所有的 Chakra 使用者,也包含其他大部份在 core 套件庫中的重要套件。另外,我們現在也在套件庫中提供 Vulkan API 相關的套件與驅動程式。

Plasma 5.7.4 則提供了錯誤修復與新翻譯,其中大部份的變動都在 Plasma 桌面與工作空間套件上。

其他值得注意的套件更新包含了:

[core]

  • systemd 231
  • mesa 12.0.1
  • vulkan API 套件
  • intel-ucode 20160607
  • libinput 1.4.0
  • xf86-input-libinput 0.16.0
  • libpng 1.6.24
  • fontconfig 2.11.94
  • rust 1.11.0

[desktop]
  • libreoffice 5.2.1

[lib32]
  • wine 1.9.18

請在 Pacman 詢問您是否要取代套件時一律回答 yes。若您有任何的疑問或是遇到關於此更新的任何問題,請在對應的論壇貼文詢問或回報。

我們大多數的鏡像可能需要12至24小時同步,同步完後,更新應該是相當安全的。我們也提供了一個簡單的鏡像狀態頁面來檢查您的鏡像在什麼時候與主伺服器同步。

新聞來源:Plasma 5.7.4 and several important package updates available in Chakra

九月 9, 2016
» 用於開放街圖的人工智慧技術

工人智慧之協同合作

無國界醫生組織 (Doctors Without Borders/Médecins Sans Frontières) 在七月份發表了一個新的手機軟體 MapSwipe,這個軟體的功能是讓志工可以透過手機協助預分析衛星圖 (pre-screen satellite imagery),協助醫療團隊判斷哪些偏遠地區的群聚部落,以便派人前往提供疫苗接種等醫療服務。

MapSwipe 是一個開放原始碼軟體使用方式非常簡單,透過後端系統將衛星圖切好豆腐,透過手機介面讓志工選出地圖上可能的道路或建築物。這個計畫可以與 OpenStreetMap 的 Humanitarian TeamMissing Maps Project 合作,在大型災害發生時,透過最新的衛星圖資料,讓志工可以快速的區分出尚存的建築物。然後再發布於 HOT Task Manager 上,由後續的圖客 (Mapper) 接手進行細部的地圖繪製工作。可以爭取時效由全球的志工,為地面隊伍提供更新過得地圖情報。

機械學習用於社經發展判讀

然而,這是使用工人智慧進行衛星圖,利用大量的人力來做地圖判讀。

大型的科技公司如 Facebook ,為了達成他們的連結全世界遠景,也必須找出人口分布,這是傳統的人口統計無法提供的資訊。於是他們與衛星影像公司 Digital Global 合作,利用 machine learning 的影像處理技術找出人造建築,來推算人口分布度。Facebook Connectivity Lab 的技術文章說明了技術的概念

至於非營利組織與學術界,只好利用開放的資料。類似的工作有 Arnhold Institute for Global Health 的 Senior Data Analyst, Patrick Doupe 使用 LANDSAT7 的衛星圖,計算預測特定區域社經狀態。初期的程式碼已經發布在 github 上。

Standford 大學的研究學者 Marshall BurkeStefano Ermon 的團隊,則是更的藉由分析白天和夜間的衛星影像來建立模型,因為電力的基礎設施可以反應出當地的經濟水平,然後再以地面的基礎設施作為 filters,將模型轉移成預測貧困地區 (中文)。透過這套技術,可以以衛星影像取代過往利用大量人力普查的成本,長期的觀察偏遠區域的發展現況。然而,衛星資料仍有其侷限性,研究團隊也在考慮如何蒐集行動電話的 metadata作為原始數據. 論文中以 R 3.2.4 與 Python 2.7. 實做的程式碼與配置教學已經放到 github 上。

深度學習的特徵搜尋

這些技術使用的都是 convolutional neural network,有別傳統的 Geographic Object-Based Image Analysis 技術,有更多應用場景。

像是快速搜索衛星圖中的特定影像特徵。

Terrapattern 提供了一個普羅大眾都可以輕易使用的反向搜尋引擎。透過 OSM 標籤分類衛星圖像,以 Deep Convolutional Neural Network 訓練,但他的目的不是自動區分出建築物的類型。而是讓使用者可以快速透過 Cover Tree 的依據影像特徵快速搜尋地景,最好用來搜尋哪些不容易出現在地圖上的設施,像是廢氣泳池、冷氣機組等等。同樣的技術也可以用在受災區域的空照圖,可以很快的辨識出毀損的建築與橋樑道路等。程式碼是以 MIT 授權發布,網站上的資料也很有參考價值

人工智慧實踐自動與偵錯

本文開始提到的以工人智慧方式檢測衛星影像,以便加速急難救助時候的繪圖速度,其實也可以透過人工智慧的技術加速處理。Stanford 的同學 Lars Roemheld 在他的學習課程 CS231n: Convolutional Neural Networks for Visual Recognition 的報告,詳細的描述了他嘗試的方法,以及碰到的問題

Development SeedAnand Thakker 在 2016 的 SoTM US 的演講 Skynet 則成功的展示如何利用 Machine Learning 找出道路。他提到、雖然 OSM 圖資中已經有許多的道路可以作為訓練資料,但是由於道路的寬度並未正確得標注,所以仍需要一些調整後才能正確的訓練出模型。細節請參考投影片測試資料程式碼

光是標注出路線只完成了一小份工作,人工智慧與衛星影像並無法提供路名。

Facebook 在某些區域,已經開始使用 OSM 當作地圖基本資料,作為打卡的基礎地圖,Sadi Khan, Yin Wang, Luke Walsh 等幾位 Facebook 工程師在 SoTM US 上分享了他們針對埃及所進行的一些實驗,預測可以增加 20%-30% 道路網絡,並開始測試從 POI 取出路名,然後讓使用者回報選擇正確的路名,進一步提高資訊的完整度。雖然已經匯入部份部份路網,但是由於程序問題且品質不佳,已經回退修改

其他的社群實驗還有 GeometalabSamuel Kurath 做的 Crosswalk-Detection,用於偵測馬路上的斑馬線,據說目前已經有了 98% 的準確率

在開放街圖社群已經有社群將技術用於改善圖資品質。專門做專業登山地圖軟體 Gaia GPSTrailBehind, Inc,利用 TensorFlow 開發自動偵錯工具 DeepOSM,利用衛星影像識別道路,並與現有的圖資對照是否正確。這是最早將類神經網路技術利用於 OSM 的計畫之一。

未來發展

深度學習/機械學習的進入門檻越來越低,主要的線上雲端服務供應商包含 Amazon, Microsoft Azure, Google 都陸續推出適合類神經網路計算使用的 GPU 伺服器。可以很方便的取得計算資源,進行一些實驗開發。
除此之外,DigitalGlobe, CosmiQ Works 與 Amazon 合作推出SpaceNet 資料集。這些圖資來自 DigitalGlobe 的 WorldView-2 商業衛星,50 cm 的高畫質圖資,包含八個波段多光譜影像 (8-band multispectral data)。以及 220,594 組建築物圖像可以作為人工智慧訓練資料。

從 Development Seed 的分享,社群已經開始將技術用在完善 Dar es Salaam 路網或是與 World Bank 合作。但是這些新技術在 OSM 社群中引起一些政治衝突,OSM 社群一直都是由志工徒步踏查從無到有畫出來的,這些志工很珍惜透過聚會所建立的社群,只須要宅在家裡的鍵盤畫圖活動一直都不太受到歡迎

而現在到達了一個 機械化編輯 (Robot mapping) vs 人力編輯 (Craft mapping) 的十字路口

作為一個實用主義者,我個人相信機械化編輯可以大幅降低成本的維持高品質的圖資資料,而人力編輯可以相輔相成的專注於提供本地知識。

九月 8, 2016
» LibreOffice 5.2.1 在 LibreOffice Conference 2016 上釋出

LibreOffice Conference 2016 目前正在捷克共和國的布爾諾舉行中,而文件基金會也在研討會的第一天釋出了 LibreOffice 5.2 系列的第一個錯誤修正版本,至於企業方面,文件基金會仍建議使用 LibreOffice 5.1.5 並配合基金會認證的專家們提供的支援使用。

新聞來源:Community conference starts with 10th release of LibreOffice in 2016

九月 5, 2016
» 永不停歇的系統安全工作

這篇文章是閱讀了 Kuon Ding 在 COSCUP 2016 發表的演講簡報「開源編譯器,如何實現系統安全最後一哩路」的一點想法。因為 COSCUP 一直待在場外聊天,未進入演講廳聽講,這些心得僅僅參考投影片的資訊。

私認為資訊安全沒有最後一哩路[1],需要保持紀律的環環層層不停的造橋鋪路。

這場演講分享了開放原始碼編譯工具針對系統安全的發展,編譯工具的確是重要一環,以 Ubuntu 為例[2], gcc 的 Stack Protector、built as PIE for exec ASLR、Fortify Source、Read-only relocation 都做額外的補釘加強安全性。然而 toolchain 不能提供獨立的安全保護,像是 Address Space Layout Randomization (ASLR) 必須是從 kernel 層做的。不管是融合桌面、手機環境的 Ubuntu 或是以手機為主的 Android 而言,安全性的發展都是盡可能的降低攻擊範圍(attack surface) 並層層疊加安全限制。

以最近發布的 Android 7[7][8] 為例子,針對系統面的保護改進用 SELinux 與 seccomp sandboxing 中減少 ioctl 的白名單呼叫範圍、 Library ASLR[3]、從 Grsecurity 學來的 CONFIG_DEBUG_RODATA 等等。這些都一步步的減少了攻擊暴露範圍。

舉例而言,文中提到了像是 2016/08 的 DEFCon 24 發布的 QuadRooter 相關漏洞[4],許多都是來自 SoC 的程式碼設計缺陷所造成,而這些缺陷很難透過代碼審查的方式查出,特別是由於智慧產權的限制,很多有問題的驅動程式是以二進位檔散布的,作業系統廠商或終端硬體品牌商是拿不到原始碼的。這些只能透過系統安全機制[15]來防護。

如 QuadRooter 中提到的 CVE-2016-2059: Linux IPC router binding any port as a control port,這個攻擊的前提是系統關掉 kASLR[5],然後才有機會做 Heap Spraying,但是要再拿到 root 還得關閉 SELinux 才行。而攻擊第一步 iocl 命令是可以透過 SELinux Policy 抑制的,例如 CVE-2016-0820 中,MediaTek 的 WiFi 驅動程式的 private ioctl 漏洞,可以關掉一般程式存取 device private commands[6].

編譯器未能防止類似的問題,必須依賴其他機制來保護系統。

編譯器[9]實踐的 KAsan (Kernel Address Sanitizer)[21] 功能可以查找 QuadRooter 中 CVE-2016-2503/CVE-2016-2504 等 use-after-free attack[22] 問題,但是一樣需要核心的支援[10]。而這個在 4.4 中的功能能夠發送到使用者手上尚須要一段時間[14],不僅僅是更新 toolchain 重新編譯即可。

不是所有的理論技術都可以在安全、便利性、效能上帶來好處,作業系統往往必須做出取捨。

  • 例如啟動了投影片中[1]提到 vtable verification feature[27],這個功能會讓一些重要的軟體如 Firefox 炸掉[11],因為開發者會對 vtable 用一些奇計淫巧。
  • 例如前述的 Ubuntu 中的 built as PIE 在 i686 平台上會造成 5-10% 的效能損失[12],只能挑某些重要的庫使用。到 16.10 才因為 64 bit 環境成熟而預設啟用。
  • 例如啟動了 Kernel Address Space Layout Randomisation (kASLR) 後,在 x86 上就無法讓電腦休眠[13] ,對沒電時需要緊急休眠的筆記型電腦使用者是無法接受的。

每項安全設計都不能只從單方面來看,需要全局的評估。有些無法在編譯器中實踐的功能,可以在 kernel 中完成,kenrel 的問題可以透過 app sandboxing 來補強。

而最近幾年的作業系統發展趨勢以 Isolation (Sandboxing) 為方向,像是 Android 使用 Selinux 的 Sandbox、ChoromeOS 中使用 Minijail[16],Linux Desktop 上的 xdg-app/Flatpak[17][18],以及 Ubuntu 使用 Snappy (Apparmor)[19][20] 等等技術。除了 Linux 以外,Apple OSX 基於 TrustedBSD Mandatory Access Control (MAC) Framework 的 Sandbox[23][24][25], 以及 Microsoft 的 Windows Runtime sandbox[26] 等等。這些系統的設計都是為了保護使用者的資料,除了防止惡意程式之外,如果程式遭到破解,所能造成的破壞也會被侷限在沙箱內。

最大的挑戰之一,或許是針對新的 security model 設計具備彈性 API,以及在多重限制的運行環境下仍可提供友善便利的使用者體驗吧。

[1] 開源編譯器,如何實現系統安全最後一哩路 by Funny Systems – https://speakerdeck.com/FunnySystems/kai-yuan-bian-yi-qi-ru-he-shi-xian-xi-tong-an-quan-zui-hou-li-lu
[2] https://wiki.ubuntu.com/Security/Features
[3] Implement Library Load Order Randomization – https://android.googlesource.com/platform/bionic/+/4f7a7ad3fed2ea90d454ec9f3cabfffb0deda8c4%5E%21/
[4] QuadRooter Research Report – https://www.checkpoint.com/downloads/resources/quadRooter-vulnerability-research-report.pdf
[5] Kernel address space layout randomization [LWN.net] – https://lwn.net/Articles/569635/
[6] Only allow shell user to access unprivileged socket ioctl commands. – https://android.googlesource.com/platform/external/sepolicy/+/57531ca%5E%21/
[7] Security | Android Open Source Project – https://source.android.com/security/
[8] Security Enhancements in Android 7.0 | Android Open Source Project – https://source.android.com/security/enhancements/enhancements70.html
[9] [ASan] Initial support for Kernel AddressSanitizer · llvm-mirror/llvm@e9149f4 – https://github.com/llvm-mirror/llvm/commit/e9149f4f8cd3b915ada134d80452c6eae7875ca4
[10] KASan support for arm64 – http://lkml.iu.edu/hypermail/linux/kernel/1511.0/02583.html
[11] Crash in mozJSComponentLoader::ModuleEntry::GetFactory when compiled with GCC 4.9.0 and VTV – https://bugzilla.mozilla.org/show_bug.cgi?id=1046600
[12] PIE has a large (5-10%) performance penalty on architectures with small numbers of general registers (e.g. x86) – https://wiki.ubuntu.com/Security/Features#pie
[13] Prefer kASLR over Hibernation – Patchwork – https://patchwork.kernel.org/patch/8765121/
[14] KASan support for arm64 – http://lkml.iu.edu/hypermail/linux/kernel/1511.0/02583.html
[15] Google Online Security Blog: Protecting Android with more Linux kernel defenses – https://security.googleblog.com/2016/07/protecting-android-with-more-linux.html
[16] Chromium OS Sandboxing – The Chromium Projects – https://www.chromium.org/chromium-os/developer-guide/chromium-os-sandboxing#h.l7ou90opzirq
[17] Projects/SandboxedApps – GNOME Wiki! – https://wiki.gnome.org/Projects/SandboxedApps
[18] Sandbox · flatpak/flatpak Wiki – https://github.com/flatpak/flatpak/wiki/Sandbox
[19] snapcraft – Snaps are universal Linux packages – http://snapcraft.io/
[20] Snappy Interfaces | Labix Blog – http://blog.labix.org/2016/04/22/snappy-interfaces
[21] Kernel Address Sanitizer – https://github.com/google/kasan/wiki
[22] Four new Android privilege escalations [LWN.net] – https://lwn.net/Articles/696716/
[23] The Apple Sandbox https://media.blackhat.com/bh-dc-11/Blazakis/BlackHat_DC_2011_Blazakis_Apple%20Sandbox-Slides.pdf
[24] The Apple Sandbox https://media.blackhat.com/bh-dc-11/Blazakis/BlackHat_DC_2011_Blazakis_Apple_Sandbox-wp.pdf
[25] SandBlaster: Reversing the Apple Sandbox – https://arxiv.org/pdf/1608.04303.pdf
[26] WinRT: The Metro-politan Museum of Security https://conference.hitb.org/hitbsecconf2012ams/materials/D1T2%20-%20Sebastien%20Renaud%20and%20Kevin%20Szkudlapski%20-%20WinRT.pdf
[27] Improving Function Pointer Security for Virtual Method Dispatches https://gcc.gnu.org/wiki/cauldron2012?action=AttachFile&do=get&target=cmtice.pdf

九月 2, 2016
» calibre 2.66 釋出

自由的跨平臺電子書管理軟體,calibre 2.66 正式版釋出,此版本新增了幾個功能以及修正了 8 個 bug。
calibre 2.X 版本支援 Windows Vista~ 10 (皆含 32 位元及 64 位元版本)、Mac OS X 10.7 或更新、各種 Linux 發行版。若您的作業系統是 Windows XP 或是 Mac OS X 10.5、10.6,請繼續使用 1.48 版。

來源:http://calibre-ebook.com/whats-new

» 我被黑了嗎?請愛用密碼管理軟體

Dropbox 在 2012 的時候曾經傳出被入侵盜走六百九十萬筆個人資料。結果最近媒體發現[1],其實是被偷走 68,680,741 筆,其中31,865,280 組密碼使用 bcrypt hashing 加密,而另外的36,815,461組密碼則使用SHA1 hashing 加密。「我被黑了嗎?」(Have I been pwned[2]) 的站長 Troy Hunt[3] 拿到這批資料,驗證[4]之後確定是 Dropbox 被偷走得資料、不是假資料。

這些資料包含電子郵件與密碼,雖然這些密碼是被加密過,但是還是可能被破解猜出來。若沒有用不同密碼的習慣,別人就可能有機會用同樣帳號密碼登入不同的服務。而這些資料除了某些熟門路的人拿的到,像是 LeakedSource[5] 也提供付費版 API[6] 供人取用受害者原始資料 (亦即加密後的密碼等資料)。

比較好的習慣是使用密碼管理軟體 (Password Manager) 與雙因素授權 (Two factor authentication, 2FA)[9]。

密碼管理軟體的基本功能就是幫你產生亂數密碼,自動登入等,所以你可輕易在不同服務間使用難破解的密碼。密碼管理器的選擇很多[7][8],我自己是使用 Lastpass[11],它在瀏覽器與 Android 平台上整合的很方便。而且價格是 12 USD 一年,相較其他軟體更為便宜,雖然目前服務的公司有提供免費帳號,但是我已經買了好幾年了。Lastpass 雖然在 2015 也被入侵過[12],不過由於安全設計得當,並沒有產生重大問題。

我每個月都會定期做一次 Lastpass security challenge[10],他會檢查密碼強度、是否重複使用密碼,以及類似 Have I been pwned[2]、LeakedSource[5] 的功能,會查找已知的受害者資料庫,提醒是否為高風險需要採取任何行動。

快選一個密碼管理器吧。 https://lastpass.com/f?4133426

同場加映: Password manager security papers | Wilders Security Forums – http://www.wilderssecurity.com/threads/password-manager-security-papers.365724/

  • “Password Managers: Risks, Pitfalls, and Improvements” (2014)

    We study the security of popular password managers and their policies on automatically filling in passwords in web pages. We examine browser built-in password managers, mobile password managers, and 3rd party managers. We show that there are significant differences in autofill policies among password managers. Many autofill policies can lead to disastrous consequences where a remote network attacker can extract multiple passwords from the user’s password manager without any interaction with the user. We experiment with these attacks and with techniques to enhance the security of password managers. We show that our enhancements can be adopted by existing managers.

  • “Protecting Users Against XSS-based Password Manager Abuse” (2014)

    To ease the burden of repeated password authentication on multiple sites, modern Web browsers provide password managers, which offer to automatically complete password fields on Web pages, after the password has been stored once. Unfortunately, these managers operate by simply inserting the clear-text password into the document’s DOM, where it is accessible by JavaScript. Thus, a successful Cross-site Scripting attack can be leveraged by the attacker to read and leak password data which has been provided by the password manager. In this paper, we assess this potential threat through a thorough survey of the current password manager generation and observable characteristics of password fields in popular Web sites. Furthermore, we propose an alternative password manager design, which robustly prevents the identified attacks, while maintaining compatibility with the established functionality of the existing approaches.

  • “Vulnerability and Risk Analysis of Two Commercial Browser and Cloud Based Password Managers” (2013)

    Web users are confronted with the daunting challenges of managing more and more passwords to protect their valuable assets on different online services. Password manager is one of the most popular solutions designed to address such challenges by saving users’ passwords and later auto-filling the login forms on behalf of users. All the major browser vendors have provided password manager as a built-in feature; third-party vendors have also provided many password managers. In this paper, we analyze the security of two very popular commercial password managers: LastPass and RoboForm. Both of them are Browser and Cloud based Password Managers (BCPMs), and both of them have millions of active users worldwide. We investigate the security design and implementation of these two BCPMs with the focus on their underlying cryptographic mechanisms. We identify several critical, high, and medium risk level vulnerabilities that could be exploited by different types of attackers to break the security of these two BCPMs. Moreover, we provide some general suggestions to help improve the security design of these and similar BCPMs. We hope our analysis and suggestions could also be valuable to other cloud-based data security products and research.

  • “Automated Password Extraction Attack on Modern Password Managers” (2013)

    To encourage users to use stronger and more secure passwords, modern web browsers offer users password management services, allowing users to save previously entered passwords locally onto their hard drives. We present Lupin, a tool that automatically extracts these saved passwords without the user’s knowledge. Lupin allows a network adversary to obtain passwords as long as the login form appears on a non-HTTPS page. Unlike existing password sniffing tools, Lupin can obtain passwords for websites users are not visiting. Furthermore, Lupin can extract passwords embedded in login forms with a destination address served in HTTPS. To determine the number of websites vulnerable to our attack, we crawled the top 45,000 most popular websites from Alexa’s top website list and discovered that at least 28% of these sites are vulnerable. To further demonstrate the feasibility of our attack, we tested Lupin under controlled conditions using one of the authors’ computers. Lupin was able to extract passwords from 1,000 websites in less than 35 seconds. We suggest techniques for web developers to protect their web applications from attack, and we propose alternative designs for a secure password manager.

  • “Keys to the Cloud: Formal Analysis and Concrete Attacks on Encrypted Web Storage” (2013)

    To protect sensitive user data against server-side attacks, a number of security-conscious web applications have turned to client-side encryption, where only encrypted user data is ever stored in the cloud. We formally investigate the security of a number of such applications, including password managers, cloud storage providers, an e-voting website and a conference management system. We find that their security relies on both their use of cryptography and the way it combines with common web security mechanisms as implemented in the browser. We model these applications using the WebSpi web security library for ProVerif, we discuss novel attacks found by automated formal analysis, and we propose robust countermeasures.

  • “On The Security of Password Manager Database Formats” (2012)

    Password managers are critical pieces of software relied upon by users to securely store valuable and sensitive information, from online banking passwords and login credentials to passport- and social security numbers. Surprisingly, there has been very little academic research on the security these applications provide.
    This paper presents the first rigorous analysis of storage formats used by popular password managers. We define two realistic security models, designed to represent the capabilities of real-world adversaries. We then show how specific vulnerabilities in our models allow an adversary to implement practical attacks. Our analysis shows that most password manager database formats are broken even against weak adversaries.

  • From Web-based Attacks on Host-Proof Encrypted Storage (2012):

    Cloud-based storage services, such as Wuala, and password managers, such as LastPass, are examples of so-called host-proof web applications that aim to protect users from attacks on the servers that host their data. To this end, user data is encrypted on the client and the server is used only as a backup data store. Authorized users may access their data through client-side software, but for ease of use, many commercial applications also offer browser-based interfaces that enable features such as remote access, form-filling, and secure sharing.
    We describe a series of web-based attacks on popular host-proof applications that completely circumvent their cryptographic protections. Our attacks exploit standard web application vulnerabilities to expose flaws in the encryption mechanisms, authorization policies, and key management implemented by these applications. Our analysis suggests that host-proofing by itself is not enough to protect users from web attackers, who will simply shift their focus to flaws in client-side interfaces.

利益揭露: lastpass 的邀請連結是我的個人 premium referral link.

[1] Hackers Stole Account Details for Over 60 Million Dropbox Users | Motherboard – http://motherboard.vice.com/read/hackers-stole-over-60-million-dropbox-accounts
[2] Have I been pwned? Check if your email has been compromised in a data breach – https://haveibeenpwned.com/
[3] Troy Hunt, a Microsoft Regional Director and Most Valuable Professional awardee for Developer Security – https://haveibeenpwned.com/About
[4] Troy Hunt: The Dropbox hack is real – https://www.troyhunt.com/the-dropbox-hack-is-real/
[5] Find the source of your leaks – https://www.leakedsource.com/
[6] LeakedSource API Purchase – https://www.leakedsource.com/api/purchase
[7] Password Managers Compared http://www.howtogeek.com/?p=240255
[8] Best Password Manager http://www.asecurelife.com/dashlane-vs-lastpass-vs-1password-vs-roboform-vs-keepass/
[9] https://en.wikipedia.org/wiki/Multi-factor_authentication
[10] https://blog.lastpass.com/tag/lastpass-security-challenge/
[11] https://lastpass.com/f?4133426
[12] LastPass Hacked http://lifehacker.com/lastpass-hacked-time-to-change-your-master-password-1711463571

九月 1, 2016
» OpenStreetMap 向量圖資的授權方式

OpenStreetMap 從 2012/09/12 後的資料,是使用 ODbL (Open Database License)[1] 散布。ODbL 條款[2][3][4]有寬鬆的授權模式 (permissive license)、 Copyleft 授權等特性,這些特性影響到利用 OSM 為基礎開發的其他作品是否也該以 ODbL 授權方式 (條款 4.4 節) 再次散布,或是只要聲明資料來自使用 ODbL 的 OSM 資料庫 (條款 4.3 節)。

而作品的區分方式分為

  • Produced Work 產製作品
  • Derived Work 衍生作品

例如把 OSM 輸出成圖檔或是紙本地圖,這即是「產製作品」。如果是直接改造原始資料庫,則為「衍生作品」。

給行動裝置用的向量圖資 (Garmin img 或 MapsForge[9]) 是一個模糊的地帶,因為實際上地圖並非以圖檔格式 (raster graphic) 散布,而是將原始 OSM 資料庫轉換成另外一種資料庫型態散布。但是由於這些向量圖檔的主要用途仍是離線顯示地圖,在 OSM 社群的討論[8][9]上,是被認可為「產製作品」[6]。除非新增額外的資訊到資料庫或增修其向量圖檔,或將其作為資料庫使用,則會被視為「衍生作品」[11]。

所以如果你散布的是未經過增修的向量圖資則請按照 4.3 節規定,在授權處說明

並請於輸出註明 “© OpenStreetMap contributors” [12]

[1] Open Database License – OpenStreetMap Wiki – https://wiki.openstreetmap.org/wiki/Open_Database_License
[2] Open Database License (ODbL) v1.0 | Open Data Commons – http://opendatacommons.org/licenses/odbl/1-0/
[3] 20121120-ODbL-1.0非官方正體中文翻譯 | Lu-six Person’s Notes – http://lucien.cc/?p=2358
[4] 20121120-DbCL-1.0非官方正體中文翻譯 | Lu-six Person’s Notes – http://lucien.cc/?p=2360
[5] 20121018-從開源軟體到開放資料-論 Open Database License v1.0 | Lu-six Person’s Notes – http://lucien.cc/?p=2348
[6] Licence/Community Guidelines/Produced Work – Guideline – OpenStreetMap Foundation Wiki – http://wiki.osmfoundation.org/wiki/Licence/Community_Guidelines/Produced_Work_-_Guideline
[7] Open Data License/Produced Work – Guideline – OpenStreetMap Wiki – https://wiki.openstreetmap.org/wiki/Open_Data_License/Produced_Work_-_Guideline
[8] [OSM-legal-talk] Garmin maps and license – https://lists.openstreetmap.org/pipermail/legal-talk/2016-February/008382.html
[9] Selling routable OSM maps for garmin – OSM Help – http://help.openstreetmap.org/questions/48251/selling-routable-osm-maps-for-garmin
[10] 台灣 MapsForge 圖資檔案 – osmtw.hackpad.com – https://osmtw.hackpad.com/%E5%8F%B0%E7%81%A3-MapsForge-%E5%9C%96%E8%B3%87%E6%AA%94%E6%A1%88-tcm2Owggcqb
[11] Legal FAQ – OpenStreetMap Wiki – https://wiki.openstreetmap.org/wiki/Legal_FAQ#3c._If_I_make_something_with_OSM_data.2C_do_I_now_have_to_apply_your_license_to_my_whole_work.3F
[12] Legal FAQ – OpenStreetMap Wiki – https://wiki.openstreetmap.org/wiki/Legal_FAQ#3._Using

八月 31, 2016
» 移除所有中國 CA 簽章

先前注意到中國 CA 憑證簽發單位[1]可能會濫發簽章,而導致中間人攻擊等風險,而過去也的確發生過一些隨意簽發 Google 網域簽章的案例[2]。最近看到 Mozilla 討論 WoSign 的安全疑慮[3][4],如濫發 github.com 簽章等。決定把中國的 CA 全數移除。

RevokeChinaCerts[5] 可以

  • 移除 Network Security Service 中的設定。 (需要裝 libnss3-tools)
  • 移除全系統的 default internet SSL certificate trustchains. (ca-certificates)

修正了 Linux 版本的的問題[6]。

另外發現 Ubuntu 還沒有做 ArchLinux 上那種簡易黑名單簽章管理機制[7]。

[1] http://blog.nutsfactory.net/tag/cnnic/
[2] http://bit.ly/2bBnm9g
[3] Mozilla 在考慮移除 WoSign 的 CA Root http://bit.ly/2bwXAbU
[4] Incidents involving the CA WoSign – http://bit.ly/2bOoHx8
[5] https://github.com/chengr28/RevokeChinaCerts
[6] http://bit.ly/2bymDKF
[7] Managing SSL certificates – http://bit.ly/2bFAoUX

八月 30, 2016
» Modern Linux Graphic Stack

FESCo[1]投票決定[4],預定在 2016/11/15 [2]發布的 Fedora 25 [3]預期將會使用 Wayland 取代 X.Org 圖形系統,效能看起來稍須改進[8]。配合新的 GTK 3.22[5],整合[8]平板電腦所需的 pad events[7] 支援了。

同場加映: 目前在 Ubuntu 16.10 上面測試 Unity8 + Mir[9],雖然還有些問題,但是可用性已經相當高。看起來 Linux Desktop 環境揚棄 X.org 改用新的 Wayland/Mir 圖形系統的時間就在今年後了。

[1]: https://fedoraproject.org/wiki/Fedora_Engineering_Steering_Committee “FESCo is the Fedora Engineering Steering Committee”
[2]: https://fedoraproject.org/wiki/Releases/25/Schedule “Releases/25/Schedule – FedoraProject”
[3]: https://fedoraproject.org/wiki/Releases/25/ChangeSet “Releases/25/ChangeSet – FedoraProject”
[4]: https://fedorahosted.org/fesco/ticket/1615 “#1615 (Consider Wayland by default for F25) – FESCo”
[5]: https://wiki.gnome.org/ThreePointTwentyone/ReleaseNotes “ThreePointTwentyone/ReleaseNotes – GNOME Wiki!”
[6]: https://blogs.gnome.org/carlosg/2016/08/24/wayland-%E2%99%A1-drawing-tablets/ “Wayland ♡ drawing tablets – Carlos Garnacho”
[7]: https://blogs.gnome.org/carlosg/2016/04/06/gtk-wayland-tablet-support-is-merged/ “GTK+ Wayland tablet support is merged – Carlos Garnacho”
[8]: http://www.phoronix.com/scan.php?item=f25-alpha-wayland&num=1&page=article “Trying Out Fedora 25 With Wayland, Early Benchmarks Included – Phoronix”
[9]: https://www.youtube.com/watch?v=cWLgY-2bZZM “Ubuntu 16.10 Unity 8 / Mir – Current State – YouTube”

» Linux 二十五週年

Linux 二十五週年了。OMG Ubuntu 的圖[1]提供了一些數據,被移植到各種不同的裝置產品[2][3]上。根據 Linux Foundation 的資料[5][6],過去十一年以來自 1300 間公司、超過13500位開發者參與核心開發,Intel 超越 RedHat 是貢獻第一名的公司。由於核心開發者深受企業需求,只有 7.7% 開發者非企業員工,且逐年下降。

不知道讀者在這四分之一的世紀中,參與過幾個 Linux 產品開發呢?
[1] http://www.omgubuntu.co.uk/2016/08/happy-25th-birthday-linux
[2] http://www.omgubuntu.co.uk/2016/08/25-awesome-unexpected-things-powered-linux
[3] https://insights.ubuntu.com/2016/08/25/25-linux-devices-to-celebrate-25-years-of-linux/
[4] https://medium.freecodecamp.com/linux-is-25-yay-lets-celebrate-with-25-rad-facts-about-linux-c8d8ac30076d
[5] http://ht.ly/iWhw303FMmo
[6] http://ht.ly/1Tm9303FMlT

八月 27, 2016
» 台灣可用的語音電話服務

台灣幾個大的電信商都有電話會議服務[1][2][3],這是最穩定保險的機制,但是成本高昂。四十個人兩個小時的會議,費用將近兩萬五千台幣。

有 VoIP 能力的網路聊天室服務人數有上限,Google Hangout[4] 免費版十人、企業板二十五人、Skyep 二十五人[5] 人。

而 IM 類型的
Facebook Messenger – 50 人。
LINE – 200 人。
WeChat – 8 人。

另外網路上的免費語音電話如 Free Conference Call International[9][10],如果使用電話撥打接入,費用則由撥打者支付。但如果使用 Android 手機,可以使用免費 VoIP 撥打接入。

[1] 中華電信會議電話服務 Conference Service – https://www.twgate.net/concall/page_01_tel.php
[2] 台灣大哥大商務服務_會議電話_產品服務 – http://www.twmsolution.com/svc/voice/vo_20150127_355110.html
[3] 遠傳雲端電話會議服務 – http://www.fetnet.net/cs/Satellite/EBU/ebAudioCon
[4] Hangouts system requirements on your computer – Google+ Help – https://support.google.com/plus/answer/1216376?hl=en
[5] https://www.skype.com/en/features/group-calls/
[6] LINE Introduces New Group Voice Call Feature | LINE Corporation | News – https://linecorp.com/en/pr/news/en/2016/1268
[7] David Marcus – Really excited to announce the global roll out of… – https://www.facebook.com/photo.php?fbid=10156931343110195&set=a.489597915194.389572.800665194&type=3&theater
[8] 多人通話人數上限為9人 – https://help.wechat.com/cgi-bin/micromsg-bin/oshelpcenter?t=help_center/topic_detail&opcode=2&plat=android&lang=en&id=1208117b2mai141125A7rUvi&Channel=helpcenter
[9] Free Conference Call International – https://www.freeconferencecall.com/
[10] https://www.freeconferencecall.com/free-international-conference-call/Default.aspx?lang=tw&altlang=zh-tw
[11] Conference Call Apps for iPhone & Android | FreeConferenceCall.com – https://www.freeconferencecall.com/apps
[12] FCC-Dialer on the App Store – https://itunes.apple.com/us/app/fcc-dialer/id350911070?mt=8
[13] Free Conference Call – Google Play Android 應用程式 – https://play.google.com/store/apps/details?id=com.freeconferencecall.fccmeetingclient

八月 26, 2016
» calibre 2.65.1 釋出

自由的跨平臺電子書管理軟體,calibre 2.65.1 正式版釋出,此版本新增了幾個功能以及修正了 7 個 bug。
calibre 2.X 版本支援 Windows Vista~ 10 (皆含 32 位元及 64 位元版本)、Mac OS X 10.7 或更新、各種 Linux 發行版。若您的作業系統是 Windows XP 或是 Mac OS X 10.5、10.6,請繼續使用 1.48 版。

來源:http://calibre-ebook.com/whats-new

» Toolchain in a container

一般的桌面 Linux distro 往往不像是 embedded linux distro 如 busybox/openwrt/Yocto 提供 self-contained 的開發環境,所以編譯某個軟體前需要安裝特定的 toolchain. 如果 distro 版本差異太大,可能會互相衝突。過去在 Debian 的作法是用 pbuilder, dchroot/schroot/mk-sbuild 中解決,這些工具可以造出一個 chroot 環境,編譯的時候裝上相依工具,編譯結束則還原到原始狀態。

近來 Linux Container (LXC) 技術成熟,透過 Docker/LXD 也可以很容易的建立起統一的開發環境給開發者使用。透過 container 的好處是確保每個人手上的開發環境肯定百分之百相容,不會受到 host os 的版本影響,也不會因為上游的 SDK package archive 更新,以至於無意中弄壞開發環境。

Ubuntu SDK 前兩個月發布了新的 Beta 版本[1][2][3],就是藉由 lxc 的技術來發送開發環境,一舉免去設置環境問題。只要裝了 Ubuntu SDK (Qt Creator)[4],就可以透過圖形界面設定編譯環境。你也可以透過 script 來手動建立與進入環境,細節可參考我在 gist 上發布的範例[7]。

另外強者我同事 Vicamo Yang 整理一落 Docker Images[5][6] 供開發者使用。

#lxd #docker #phablet #ubuntu #canonical
[1] 新的Ubuntu SDK IDE开放测试 | Ubuntu developer portal – https://developer.ubuntu.com/en/blog/2016/06/17/calling-testers-new-ubuntu-sdk-ide-pos/
[2] Calling for testers of the new Ubuntu SDK IDE | Ubuntu developer portal – https://developer.ubuntu.com/en/blog/2016/06/14/calling-testers-new-ubuntu-sdk-ide-post/
[3] New Ubuntu SDK Beta Version | Ubuntu developer portal – https://developer.ubuntu.com/en/blog/2016/06/28/new-ubuntu-sdk-beta-release3/
[4] Tools – development : “Ubuntu SDK team” team – https://launchpad.net/~ubuntu-sdk-team/+archive/ubuntu/tools-development
[5] Phablet images – https://hub.docker.com/u/phablet/
[6] phablet/docker_platform-devel: Docker images for Ubuntu Phablet platform development – https://github.com/phablet/docker_platform-devel
[7] How to use LXC/LXD images from Ubuntu SDK for Ubuntu Phone and Snappy – https://gist.github.com/chihchun/30fd95f9f906ab1e7731040eddc840ee

support:

biggo.com.tw

A Django site.