Web 開發者技能樹演講

Web 開發者技能樹演講 2018/08/24

原筆記網址:https://hackmd.io/S_BIlfpyRxGJWiLb5E7Nvg?view

我要提問

關於我

  • 宏碁
  • 摩茲工程師
  • 今年年初遭到裁員(自由的狐狸)

今天你將學到

  • web 開發基礎
  • 前端技術
  • 後端技術
  • 開發及維護
    • 以上的概要

看完就九死一生,不看就十死無生

web 的好處:全公開標準
很多資源很多工作,不怕找不到工作

前端?後端?開發及維運?

前端

前端就是你看到很美的東西。

後端

後端就是後面很醜的東西你看不到。

開發及維運

十萬個正妹及十萬個看不見的東西如何維護。當專案變大後,會變得相對重要。

踏入 Web 這塊,你可以先選擇你要走前端還是後端。
如果你走後端,但又沒有走太深入,可以試試看走 DevOps(開發及維運)

Web 開發基礎

  • 資料結構及演算法
  • HTTP / HTTPS 和 Web API
  • SSH 及簡單的命令列操作
  • Git / GitHub

資料結構與演算法

可以自行 Google,總之很重要

HTTP / HTTPS 和 Web API

HTTP 協定 1.0/1.1/2,HTTPS加密

  • 要寫 Web 要很清楚 HTTP 協定是甚麼
  • 要知道 HTTP 是怎麼加密的

    HTTP 請求方法

HTTP 狀態碼

  • 2XX:成功
  • 3XX:重新導向
  • 4XX:使用者錯誤
  • 5XX:伺服器錯誤
    發送對的狀態碼給用戶很重要

因為 HTTP 沒有狀態,因此 Cookie 被發明出來,可以用來記錄狀態

Cache

快取可以讓用戶在下次瀏覽時更加快速,也減輕伺服器負擔

SSH 及簡單的命令列操作

SSH 相關指令、金鑰控管

如題

Shell Script(BASH, zsh.. 等)

可以透過 Shell Script 自動執行一些指令

Linux 服務及運作原理

要知道其原理,以及如何去開關一些服務,才能有效管理你的程式與服務

Git / GitHub(全球最大男性工程師交友網站)

最近最流行的版本控制是 Git,但也有其他的版本控制軟體

個人

可以透過版本控制來管理複雜的版本

團隊

把所有人寫的程式合起來,可以有效解決空間與時間的限制。

了解 git 的運作方式

以下略,總之就是 Git,我相信大家都已經會了 OwO

GitHub

GitHub 是用 issue 的方式來管理

進階開始

Web 服務流程

有人會畫 Markdwon 流程圖嗎QQ
使用者 - 前端 - 後端

Web 前端技術的概要

  • HTML:標題與目錄,一個簡單的 document 檔案:語法、元素、建立 DOM tree 和相關屬性
  • CSS:網站的外觀與美化,用於潤飾網站,進階一點的內容有 Flexbox、Grid 等
  • JavaScript:如何操作 DOM、事件傳遞、物件、Ajax&XHR、ES6
  • 選修 jQuery:可以讓你寫 JS 的時候更簡單

VBScript 已死 [name=蔡孟達]

基礎練習

如果沒基礎,可以嘗試構思不同的響應式網頁(RWD)來練習,使用 JavaScript 加入互動

如果不會可以在 GitHub 上找開源專案,找找 Good First Bug 可以解

進階

  • NPM / Yarn 套件管理腳本,講者喜歡用 NPM,可是我是 Yarn 派的
  • PostCSS CSS 的前處理器,讓 CSS 更好管理
  • Bootstrap 響應式網頁的框架,可以快速開發出響應式網頁
  • Webpack 打包靜態網站所需要的資源
  • ESLint JavaScript 程式碼檢查工具

    進階練習

    可以嘗試新增一個專案,讓自己充分了解並練習如何將複雜網站從開發到釋出的流程

高級

  • 熱門前端框架:

    • React:開發者滿意度最高,可是他背後的公司(FB)很母湯,有問題可以問江俊廷
    • Vue:壯哉我大 Vue,是最近最熱門的前端框架,有問題可以問陳威任/姚韋辰(其實還有火柴)
    • Angular:Google 出產,目前最冷門的ㄏ,Angular和 Angular2是不同的東西,Angular 已經過時了,時代的眼淚,千萬別搞錯XD
  • 測試工具:單元測試、整合測試及功能測試

  • 伺服器端渲染

  • 更多:Canvas、HTML 5 Web API、WebGL、SVG

人家大神ni 前 Mozila 台灣區產品經理

Web 後端技術

  • Scripting:Python、Ruby、PHPNode.js
  • Commercial:Java.Net
  • New:GolangRustKotlinSwift

基礎練習

學習使用套件管理,開始練習簡單的輸入輸出、封裝及釋出專案
在 GitHub 上找技術開源專案,找找 Good First Bug 可以解

進階

框架

資料庫

  • 關連式:MySQL、PostgreSQL
  • 非關連式:NoSQL、MongoDB
  • 快取:Redis、Memcached
  • 授權及認證:OAuth、JWT

    OAuth 介紹:https://www.dcard.tw/f/tku/p/227852547

    進階練習

  • 實作一個部落格 RESTful API 來完成
    • 登入
    • 文章

高級

  • 搜尋引擎:ElasticSearch、Solr
    • 如果常規的資料庫無法應付的話,可以考慮用這個
  • 訊息接收器:RabbitMQ、Kafka
    • 不可能讓使用者在等待,所以會用 Message Queue
  • 其他:Docker、Nginx、Apache、GraphQL、Graphic 資料庫
    • Docker:可以把系統環境包起來,讓你可以快速在任何地方建置起來你的服務,也可以提升安全性
    • Nginx、Apache:網頁伺服器

      開發及維運(DevOps)

      DevOps

基礎

不適合新手跳進來的領域

  • 作業系統概念:
    • I/O 管理
    • 虛擬化
    • 記憶體和儲存空間
    • 檔案系統
    • 處理程序管理
    • 線程和並行處理
    • Socket
  • 網路和安全:
    • DNS
    • HTTP
    • HTTPS
    • FTP
    • SSL
    • TLS
  • 伺服器管理: Linux Server
    • Ubuntu:新手向(?
    • Debian:穩定到爆的伺服器系統,但軟體都喜歡用舊一點的(因為穩定)
    • CentOS:背後有大公司支援的伺服器系統,也滿穩的
    • Red Hat Enterprise Linux(RHEL):大公司支援的,但超貴,
    • OpenSUSE:大蜥蜴(? 是變色龍!

基礎練習

  • 安裝或是使用已有的 Linux Server
  • 練習命令列操作:Shell Script、文字編輯、編譯 App、調校系統效能、監控管理程序、網路管理指令

進階

  • 架設服務
    • Web Server
    • Cache
    • Proxy
    • 負載平衡
    • 防火牆
  • 如何擴展服務
    • 容器(Docker)
    • 組態管理(Ansible)
    • 架構管理(Terraform)
  • 學習持續整合與持續發佈(佈署)

    example: 某訂房網站:完成開發後送到雲端上,若有問題則自動下架,回到前一個版本。

  • 監控:
    • 紀錄檔
    • 基礎設施
    • 應用程式
  • 雲端服務廠商:
    • AWS(Amazon)
    • GCP(Google)
    • Azure(Microsoft)
    • Heroku:和上面的有點差別,滿陽春的,但勝在方便和快速

額外資源

持續學習,持續進步!(謝謝)(…)
Mozila 講很多~

Free Code Camp

RealWorld

系統設計入門

JavaScript Testing in 2018

系統設計入門(繁中)

提問:

Q:我想知道現在 Web 工程師寫網頁時通常都在哪個瀏覽器上測試OuO
A:Google Chrome 先測,Firefox 和 Safari Mobile 。
先測當前版本,往前往後兩個

Q:台灣 Firefox 社群最近有哪些坑,有哪些適合後端開發者關注的?
A:Rust

Q:有什麼推薦的 GitHub 開源專案或 Good First Bug 嗎?
哪裡容易找到 Good First Bug 呢?

Python 網路爬蟲

今天你將會學到

  • 什麼是爬蟲
  • Python 虛擬環境
  • 用爬蟲抓取網頁內容的程式
  • 用爬蟲抓取 iCook 最新食譜並建檔

什麼是網路爬蟲

  • 自動抓取網頁內容的程式
  • 代替人進行重複且繁瑣的資料收集工作且不出錯
  • 例如:收集十萬筆Google搜尋結果的標題

為什麼要學習 Python

  • 使用時機

    • 大數據資料分析和呈現
    • 人工智慧模型訓練
    • ex: 熱門話題分析、價格歷史波動和預測
  • Python 易於上手,且在各領域被廣泛使用

建立開發環境

  • Python3、Pip3
  • VirtualEnv 學習資源
  • Requests
  • BeautifulSoup4 (bs4)
  • requirements.txt

更多

  • 瀏覽器開發者工具
  • 處理登入狀態
  • 前端動態渲染內容
  • 其他爬蟲常用框架或是涵式庫
  • 使用爬蟲的正確禮儀
  • 構思甚麼是你/你想的第一個爬蟲?

影像辨識/機器學習連結

影像辨識/機器學習連結

tags: 機器學習

活動主旨

會議記錄

學習紀錄

[name=廖勗宏]


推薦書單

[name= 海豹]

[name= 黃俊諺]

Black Hat Asia 年會參與心得 By Adr

Black Hat Asia 年會參與心得 By Adr

Author : William Mou

關於故事

分析評審口味 ouo

  • HITCON TALK

    • APT
    • 網站漏洞
    • 滲透
  • Black Hat 專案大概類型

    • 整合網站分析工具/VPS服務測試工具
    • 假網路基地台/偵測假網路基地台
    • 藍牙設備測試工具
    • 機器學習偵測惡意程式
    • 一些知名到爛掉的專案 ex:Flare VM

挑選審稿委員一直很愛的題目
挑選以前從未被選上的冷門題目

自動化程式碼的編譯器(機器碼層級混淆)

夠冷門
對大部分人來說挺髒不想摸的領域

  • Sum Up:怎麼提高題目被錄取的機會
    • 整合某個領域的技術成一篇稿件,整理得相當完美接近精華的境界
      eg:筆記小神童
    • 你的題目有夠冷門,冷到可以唱Let It Go,並且整合的夠完善可以讓聽眾耳目一新
    • 研究擁有重大突破,輾壓全場
    • 趁研討會打架時投稿。(黑暗兵法)

研究方式

  • 養成訂閱資安推播文章,有趣的文章會由固定的資安專家推播
  • 外國很多資安專家總是很大嘴巴的愛把研究進度/新的研究成果貼在推特上 XDD
    • SubTee
    • 與他的朋友

投稿專案細節–讓後門再次偉大

前導

  • C++ Calling convention
    • 由C++經由編譯器轉成組合語言,可以由組合語言猜測c++語法
    • 若習慣使用IDA Pro反推c++,則可以如下隱藏實際要用的function
    • –> 干擾研究人員辨別惡意程式
      1
      2
      3
      4
      5
      6
      __ASM
      psuh 0
      呼叫 fun1

      fun1:
      呼叫message_box

      防毒軟體

  • 使用特徵碼辨別惡意程式
  • 藉由adr寫的C#,在得到機械碼後,可以將函數位置更改

成品

  • 藉由__ASM替換或轉換呼叫,就可以做到大程度破壞原程式碼的邏輯
    • 插入垃圾程式碼
    • 混淆程式碼邏輯

克服問題

克服英文口說障礙

  • 練到背起來
  • 台灣人英文其實沒這ㄇ爛

事前練習

  • 每一頁投影片大概要提到什麼重點

  • 用英文句子練習這一頁怎麼解釋

  • 相信自己英文沒那麼差

  • 即使你英文講得很爛,大部分老外會很尊重的聽完你的分享

    • 但僅限於社群分享
  • 把不尊重的外國人當Son Of Bitch,上面不適用於學術論文場合

跨國投稿分享

  • 在Speaker晚宴認識一堆大神朋友潮棒der
    • 當你有一堆大神朋友,自己看起來也像大神了
  • 有些很酷的想法或很ㄎㄧㄤ的作為
    • 奇怪ㄉ帽子
    • 現場酒品
    • 神奇的吊牌
  • 對於參與研討會的心態也跟台灣不ㄧ太一樣
    • 問問題很多
    • 歡迎討論

區塊鏈應用場景高峰會

區塊鏈應用場景高峰會 & Block Chain Insight

tags: 資訊講座 區塊鏈

能源、醫療、食安、與區塊鏈

泛科知識 總編輯 致詞

感謝中油國光合辦

區塊鏈應用與服務創新議題 (Reki吳李祺 博士)

與大家分享區塊鏈研究成果

前言 比特幣與區塊鏈

  • 關於資策會
  • 虛擬貨幣(Crypto Currrencies)
    • 虛擬貨幣=火車
    • 區塊鏈=鐵軌
  • 區塊鏈的核心概念
    • 共享帳本
    • 智能合約
    • 個人隱私
    • 共享網路
  • 這情形 10,25 年前遇過
    • 雲端計算
    • Internet

      當每一個新的科技與概念出現,都經歷過「這是什麼?」

  • What is Blockchain
    • Block chain is a Distributed Ledger
      • 分散式帳簿
      • Bitcoin
      • 萊特幣
    • Block is World Computer
      • If a surver has missed..
      • We would like to create a world computer to be a world surver
    • Blockchain is a smart contract
    • Block is a Enterprise Solution
      • Hyperledger
        • 分散式帳本專案
        • 區塊鏈專案
      • Enterprise ethereum alliance
        • 希望有一個公開的環境供企業使用

本文:區塊鏈於產業的應用

  • Public or Enterprise(private)

    公有鏈 vs 私有鏈(企業解決方案)

    • 國際概況:ECO System
    • 我國樣貌:
  • 創新主題應用:
    • 公義眾籌
      • 不可竄改
      • 金流追朔
      • 透明信任
    • 紅利點數交換
      • 兌換合約
      • 追溯驗證
      • 低營運成本
        • 發行成本見低
        • 即時交易清算
        • 合約執行,簡化清算流程
        • 點數彈性轉移
        • 消費軌跡透明易稽核
    • 電子票券(企業授權給使用者使用的手段)
      • 授權發行
      • 周邊效益
      • C2C互動
        • 票券安全防偽
        • 資訊共享又保障隱私性
        • 介面統一,串連周邊
        • 個人靈活轉讓
    • 主題發展:勢不可擋

以下工商

  • 應用共創中心(Chaincenter)
    • 區塊鏈創新服務推動
      產業發展議題與技術規格需求
    • Go-Labs
      • 產業結盟
      • 實證規劃:
        • 法律詢問
        • 情境研究
        • 技術顧問
  • 區塊鏈產業聯盟/協會
    • 建立典範
    • 產業共識
    • 政策建言
  • 106研究報告:洞察區塊鏈

結論

  • In the future
    • Blockchain is not Bubble
    • 新的技術出來時,我們習慣用已知的事情說明他
    • 然而,新技術已經用不同的邏輯來思考了
  • 數位世界中的資產交易-數位資產
    • Cypto Kitties
  • 改變-從資訊分享到價值轉移
    • 網際網路(Web 2.0)
      • 資訊分享
      • 傳遞複製
    • 區塊鏈(Web 3.0)
      • 價值轉移
      • 信賴機制
  • Blockchain:The Trust Machine

共識科技

  • 代幣去中心化應用

    • 避免資料被單一平台控制
    • 分散風險 資料不易不見
  • ICO

    • ICO 區塊鏈上的募資手段(方便
      • 募集有價值的虛擬貨幣作為全新的募資手段
      • 公司給予楙買者公司發行的代幣,可在區塊鏈上自由分割、移動、交易
      • 目前95%以上公司發行代幣使用Ethereum平台,ETH為通用貨幣
    • 2017年3~12月ICO金額已達到70億美元,超越VC投資總和3億美元
    • 2018每年ICO更達到13億元
    • ICO代幣市值500億美元
    • 委內瑞拉都想發行石油幣
  • ETHEREUN ERC-20TOKEN

    • 乙太幣支持智能合約 叫比特幣優秀
      • (比特幣也有智能合約系統
  • 中心化交易所

    • 但是代幣交易所可能被駭客攻擊
    • 不能確定交易對象
    • 規則不確定 因人而異
    • 礦工決定交易是否成功
    • 交易不一定成功 不成功還得付手續費
  • 混合式去中心話

    • 包含中心化的安全
    • 還有去中心化的速度
  • ps 歌手登記創作音樂要去國家圖書管~~

  • 音樂的區塊鏈應用

    • 買公播權
    • 創作不易被偷 不會消失

分布式能源 運用區塊鏈科技釋放再生能源大潛力

  • DTCO Compay Profile
    • 過去
      • 2016生技新藥:IPSeeds
      • 2017健康醫療產業:phrOS
      • 2018協助原住民社區建立自己的數位身份:IDGO
    • 業務
      • 提供智能合約設計
      • 提供能源區塊鏈改善
  • 能源問題
    • Extreme Weather, Climate Change PM2.5
    • 看遠一點 放眼未來
    • 電網 設備都是屬於19世紀留下的
    • 傳統的無法支持現在的綠能
    • 無法創新 因為只有他一家而且算是獨佔事業

文化娛樂產業區塊鏈生態

  • Bitmark 數位資產
    • 區塊鏈可以解決娛樂產業的問題
      • 盜版
      • 無限量發行「限量」虛寶
      • 創作分潤不夠透明
    • 區塊鏈可以創造娛樂產業的機會
      • 利用區塊鏈作群募
      • 確時執行限量發行
      • 創造社群

健康醫療金融服務區塊鏈應用

前言-現況

  • 作者
    • 黃家煦 博士
    • 睿富金融科技/吉立生技
  • 區塊鏈應用發展的現況
    • 先有數據才有AI
    • Blcokchain Startups
  • 台灣電子病歷管理現況
    • 電子病例交換中心
      • 中央健保署
      • 憑證中心
      • 甲醫院
      • 乙醫院
    • 健康存摺
    • 台灣醫療費用支付的現況
  • 健康醫療服務為何需要區塊鏈?
    1. 去中心化與識別化-落實個資保護與資料管理
    2. 醫療資訊即時交互與互信-不需重複檢查
    3. 病例可惜與即時性醫療資訊-緊急治療與急救
    4. 個人病歷成為個人資產-國際通用
    5. 實踐共享經濟-健保ICO

如何應用區塊鏈於醫療領域

  • DR.PAY區塊鏈方案-混合式區塊鏈
    • 醫院方
    • 區塊鏈
    • 第三方軟體
  • DR.PAY區塊鏈方案-Hybrid Blockchain
  • DR.PAY醫療數位金融服務平台
    • 案件登入
    • 病患醫療分期支付
    • 醫院代表接收
  • DR.PAY生物辨識機制
    • 診所客戶-通過DR.PAY KIOSK
      • 人臉辨識
      • 指紋辨識
      • 健康辨識
    • DR.PAY綜合信評機制
      • 社群網路平等
      • 健康紀錄平等
      • 財務紀錄平等
      • 最終憑膽紀錄
  • DR.PAY所包蘭的服務
    • 客戶查詢
    • 合約資料
    • 醫療紀錄
    • 電子支付
    • 建立中-跨境第三方支付
    • 合約與交易紀錄
  • 嬌寵醫生(寵物醫療)+DR.PAY(四月上市)

結論

  1. 區塊鏈是好工具,善用工具創造產業價值
  2. 資料(數據)是王道,得資料者得天下
  3. 健保資料庫是公有財,開放共享經濟
  4. 擁抱ICO,再創台灣資訊產業的榮景

奧丁丁OwlTing 工商QQ

  • OwlTing Services in one page
    • BLockchain
      • OutNet
      • Outchain
    • 不斷拜訪生產者

關鍵對談:區塊鏈法治議題

在新的法律中,「電子簽章法」「金融電子沙盒」「金融創新實驗條例」等等,公司認為有哪裡需要調整的?

* 台灣是個守法的國家,但是無法就是違法,政府法律可能限制新創的開發,建議參考其他國家的法律
* 很多事情政府要管,先做了再說,之後就很難受,希望政府能夠將細則講清楚,使業者得以遵循與討論
* 可能不該比較鄰近國家,可以比較墨西哥,看看合法後,我們能變成什麼樣子,台灣法律仍然是極權的管制,而這與實際上民主的風情不相符。企業應自己自律,不是在搞破壞或騙人家可以先做。
* 使用加密貨幣的人,通常都是去中心化的信仰者。但若要跟隨政府腳步,那等法律出來就不用做了。在台灣,我們的法律應該是一個負面表列,現在政府沒有立法ICO到底能不能做,那應該憑良心快點做。你說虛擬貨幣剛出來的時候,中國做了再說,不合法在繞過它,而這也是台灣相對的一個缺點。另外,虛擬貨幣沒有地方可以追溯,政府很難管理,建議列出一些規範或方向,讓企業盡量去遵守

在目前政府的整個法令,有無需要建立一個區塊鏈的標準或消費者保護機制?或說國外是否有一個好的機制可供借鏡

* 關於這個問題,政府就算定了,也不一定有用。那你說以太坊是一個組織嗎?不是。整個以太坊是一個共識,政府要來規範,必須要有技術、要有社群,區塊鏈才能繼續走下去。
而國外的還是以民間為主,社群導向,而政府的動作是相對慢的,其實我還是不看好政府QQ
* 我們這個虛擬世界的區塊鏈,早晚是要跟實體世界接軌,所以我們還是要遵守政府的一些規則。
而日本政府是可以借鏡的對象,透過良性的監管,合理地在資安制定一些規則,希望台灣政府可以往日本這樣的方向,而不是往中國大陸的方向
* 我覺得做一個技術標準是相當困難的事情,畢竟區塊鏈是跨國的技術,你要制訂標準誰會聽呢?我們又不是汽車製造大國,所以我認為關於技術,要與時俱進,而關於保護消費者,我認為依然是要沿用的。
* 我之前就是做政府的標案,大概理解一些政府的想法。應該是訂大方向,而不該訂細節。區塊鏈架構也是,我們應該用獎勵的方式,訂定雙方的平衡等,而不該往所有細節訂定
關於個資法:若有特殊需求等等,需要取得個人的紙本簽名,提醒各同業需要小心

自由提問時間:

  • 國家有本來的用途,但是若失去稅金、去中心化後,政府如何經營?

    • 政府存在也不過是短短的時間,
    • 網路和區塊鏈形容成多中心化,它可以使企業往前走,而比特幣是不是只是一個貨幣,我想這跟台灣是不是一個國家是同樣的問題。
    • 你想一個人的生活環境,只有區塊鏈能活嗎?我們還是要生活,而在做區塊鏈的同時,仍要與生活結合,而政府可以從其中課稅,沒問題。
  • ICO是一個特殊的管道,若經過ICO後,併購等等仍然需要利用ICO嗎?

  • 投資人角度,是因為投機嗎,還是因為長期投資,而這樣的

    • 我覺得ICO在多中心化有巨大的貢獻,我們知道公司在集資是多大的辛苦。

    • 台灣一個新創公司很難拿到錢,我覺得這是一個很偉大的發明。現在所有的ICO是天使融資,因為ICO沒有限制投資的門檻,雖然現在90%ICO都可能會倒,你也知道IPO 90%的新創公司都會倒,那你在ICO中投注,那你之後也可以享受很好的生活。說個故事我到台灣所有的創投去拜訪,三個月只找了20多家,而在ICO之後,只要你做得好,全世界每個角度的人都可以看到你,投資你。

  • 科技日新月異,關於量子電腦的產生,也許新的硬體會使區塊鏈崩潰?

    • 量子電腦仍然是電腦,其實他的算力還是不會比挖礦機好。挖礦機高度平行化的單元,兩台屌打100台天河二號。而若新的電腦出現,算法本身是一種共識,仍是可以改的。
  • 我們現在好不容易有一種監理沙河,我們從科技的角度當然是希望他月開放越好,但政府和民眾都有疑慮,我有個狂想,是不是能像以前加工出口區的方式,個點開放,若真的很成功,再拓展到其他城市,不知道這樣想法是否可行?畢竟歷來想要發展新科技,都要有個破口?

    • 這是一個好想法,政府也想過了,但又回到一個基本的問題,台灣太過 民粹 ,哪個地區要給產業嘗試,再說台灣土地又太貴,而居民不一定會同意,如同博弈法,當地居民有可能不同意,受到非常大的限制。

Taiwan Cyber Security Summit 2018 台灣資安大會

IP cam 資安標準制定與推動的經歷

背景

  • 物聯網的資安威脅
    • HP研究:七成物聯網有被駭風險
    • 經家中螢幕跳出FBI付款通通知
  • 資安產業對ICT產業的衝擊
    • 路由器網路攝影安全性不足,友訊遭美國政府告上法院
    • 華碩路由器被美國稽核20年,看如何確保物聯網安全
    • 旗下產品為DDoS打手,中國豪邁召回產品

計畫介紹

政府委任資策會通動此計劃
協助廠商提升資安,推動產業發展

  • IOT 資安提升推動方案
    • 標準推動 ➡️ 制度建立 ➡️ 產業提升
      • 標準推動:參照國際資安標準
      • 制度建立:推動檢測紀錄
      • 產業提升:輔導廠商提升資安品質

        建立產業的資安要求,並期望能協助產業發展

  • 影像監控系列與資安標準說明
    • 資安標準發展與流程
    • 資安發展該念:
      • 產業需求搜集 ➡️ 選擇標準標的物 ➡️ 標的特性分析 ➡️ 標的物重要資產 ➡️ 資安威脅分析 ➡️ 資安標準需求 ➡️ 標準測試規範底稿
    • 資安實務流程:
      • 撰寫標準草稿 ➡️ 編列代表 ➡️ 專家會議 ➡️ 公開招標
    • 標準框架:
    • 資安標準與分級(一)
      針對 IP CAM 的 5大安全構面訂定20大分項安全要求,並依照「一班消費」、「商用」與「關鍵任務」等應用領域訂定產品資安分級。適用不同廠商定位與使用者需求。
      • 資訊安全
      • 系統安全
      • 通訊安全
      • 身份識別與授權安全
      • 隱私保護
    • 不合規問題案例
  • 實測常見不合規項目
    • 為用防拆螺絲可輕鬆破壞外殼
    • XSS injection弱點
    • 預設未加密
    • 明碼傳輸
  • 認證制度架構:
    • 透過第三方檢測
  • 產品認證時程推動

結語

  • 資訊安全檢測不能達到 100%的安全,但可建立產品的資安基準,讓廠商與使用者有所依循
  • 資安的提昇要資建立資安意識,不以通過檢測為目的,而是隨時注意資訊安全提升廠商資安能力。

Response Before Incident:制敵機先!主動式資安事件處理

系統、surver 無法通通保持最新

網站安全

選擇套件的同時,你就要承擔它存在的風險

系統安全 thrusted zone

CPU重新隔一塊,儲存私密資訊

建立好的防守比攻擊更困難

New trend of user identity from cloud giants today

In the past

  • user

    • Facebook:2.12B
    • Google:2B
    • Apple iCloud:782M
    • Microsoft Offive 365:120M
  • How to identify who is who?

    • IP
    • Passwords
  • problem of ID/Passwords

    • 強制修改、後與前不重複
      一但密碼常換
      • 過多
      • 易忘
    • 換密碼麻煩,不方便
      一但密碼不換
      • 釣魚
  • Data breach is worst than what we can inagine

    • 2015 - 2017 資料外洩 > 4.2B

      90% Data breach is from ID/Password phishing
      data source : Risk Based Security
      ==could security : ID/Password 儼然成為最薄弱的防線==

What Next?

  • No Password

    • 指紋驗證
    • 綠色的銀行近月上市
  • 2nd Factor Authentication

    • 驗證碼
    • 雙證件
  • Options of passeordless & 2-step login

    • Microsoft
      • Widows:Hello login (No Password )
      • Azure:MFA(2nd factor authentication)
    • Google
      • OTP-SMS and Google Authenticator
      • FIDO U2F key
      • Phone login
    • Facebook
      • OTP - SMS, Facebook Authenticator, Google Authenticator, etc.
      • FIDO U2F Key
    • Apple
      • MacOS:Apple watch or third party phone login (No Password)
      • SMS OTP

        Email OTP
        SMS OTP

  • Problem for SMS and one-time password 2-step login

    • Not user friendly for everyone
    • Third party APP is complicatrd to setup
    • SMS isn’t security, it could be Interception.
  • Bitcoin Wallet was hached Video

  • New trend todat & tomorrow

    • Windows Hello Passworldless login
    • FIDO - base hardware security key for 2nd factor Authentication
      • Windows - USB & NFC & BLE
      • MAcOS - USB & BLE
      • Android BLE & NFC
      • IOS -BLE
  • Advantage to use FIDO-based produt

    • google, facebook, Lenovo, Paypal, Gotrust, etc. All member
    • Open standard
    • 手機硬體中做互聯互通

      END

網路自動化機器人辨識與防護

  • 自動化程式類別
    • 暴力密碼猜測
      • 以限速避免
    • 網路蜘蛛-起始URL去爬每個子link
      • 檢視hyperlink
      • 檢視cookie
      • 自動生成白名單
    • 網路爬蟲-搜集廠商數據➡️對營運造成影響
      • 透過檢視user-Agent 快速進行爬蟲模式效果管理
    • 自動化網頁機器人
      • 檢測應用程式行為,搭配rat limit、使用者輸入辨識等,進行防護
  • 暴力密碼的測試
    1. 下載對應檔案內容:https://drive.google.com/drive/folders/1dODxIpFLRyuMhsGPEm6j-HqMn2JnwTSH
    2. 開啟Burp Suite Community Edition 使用方式
    3. 設定Burp Suite 攔截 Proxy:127.0.0.1:8080
    4. 設定Firefox 路經 Proxy:127.0.0.1:8080
    5. 開啟intercept 攔截request 內容
    6. 用正確帳號密碼登入後,得到正確的Respone內容
    7. 點選action -> send to intruder
    8. add $ 參數 $
    9. 更改成 暴力破解 cluster bomb
    10. payload引入參數集
    11. option更改比對內容為正確的Respone內容
    12. 勾選掉Exclude HTTP headers
    13. Start attack
  • 網路蜘蛛的測試
    1. 開啟websphinx.jar 可直接網路蜘蛛 (含 graph)
  • 網路爬蟲

Mcafee

  • 多維度與人工智慧進階威脅分析
    • 快速過濾
      • 特徵碼
      • 信譽
      • 模擬
    • 動態分析
      • 沙箱觀察
      • 沙箱迴避
    • 靜態程式碼分析
      • 消除混淆碼
      • 反組譯並揭露執行碼
      • 比對同類家族
    • 人工智慧分析
      • 多維度的分析病毒代碼
  • 自適應進階威脅聯防架構
    1. 收到包含可疑代碼之附件
    2. 送往surver確認
    3. 進入沙箱確診
    4. 即時傳回端點
    5. 於TIE比對過去存在的攻擊
    6. SIEM儲存與管理IOC
  • 人工智能安全管理解決方案
    最佳化威脅與合理的安全管理(ESM+UBA)
    • AI與智能分析
      • 即時進行分析
    • 可執行的
    • 整合式安全管理
  • 政府案例分享
  • CASB-skyhigh
    • 自動識別
      • 個資
      • PCI
      • Shadow Apps
    • 控制
    • 保護
      • DRM
      • 加密
  • 單一控制點-無摩擦部署
    • 於雲端架設單一consol
    • 不需於每台Device部署
    • 建立Sky Link 透過API 可採去監控阻擋等訪滬措施

量子時代下的重裝駭客

  • 何謂量子力學
    • 描述圍觀物質(原子,亞原子粒子)行為的物理學理論
      • 一種數學模型
      • 一種描述物理世界的方法
      • 一種模擬世界或人腦的方式
    • 量子力學的歷史
      • 薛丁格波動方程式
      • 不確定性理論
      • 波函數塌縮
      • 迪拉克方程式
    • 量子特性:
      • 量子態疊加
        • 經典比特 | 0 | 1 |
        • 量子比特 |0> |1>
      • 量子糾纏
  • 何為量子電腦
    • 是一種使用量子邏輯進行通用計算的裝置
      • 物質分子和化學反應的模擬
      • 快速解決一些傳統電腦需要長時間解決的問題
    • 涼子特性
      • 量子疊加
      • 兩子糾纏
    • 量子Gate
      • Unitary
    • 量子霸權
      • 處理器要達到49量子為元
      • 雙涼子為元錯誤率低於0.5%
      • 屆時運算能力將會超越世界上所有電腦,具有解決傳統電鬧所解決不了問題的能力

        台大開放式課程-量子力學

  • 量子電腦哪裡找?
    • Quantum Gate 類型的
      • IBM有提供實驗性機器與API
      • Microsoft VS + Q#,Python
      • Rigetti python(Quil)+Quantum Visual Machine
    • Quantum Annealing 類型的
      • D-Wave + quantum machine instruction(QMI)
  • Quantum Gate
    • Hadamard gate
    • Controlll not
    • Swap gate

      qiskit-sdk ( python3 )
      Try ‘local simulator’

駭客如何用量子電腦做壞事

  • 他可以做啥?

    • 植樹分解
    • 對稱式演算法孤寂
    • 量子金鑰傳輸 ( QKD )
    • 量子比特幣(qBitcoin)
    • 量子數位簽章
    • :smile: Quantum machine learing
    • Traveling Salesman Problem
  • 質數分解

    • 質數分解困難度為基礎GG
    • short algorithm
  • RSA

    • 仰賴質因數分解的困難度
    • 私鑰可以快速被算出
    • 傳統RSA是 non quantum-safe
  • 橢圓曲線密碼

  • 對稱式演算法攻擊

    • Grover’s Search Algorithm
  • 其實我 ( gasgas ) 從頭到尾只想用量子電腦挖比特幣:smile:

    • proof-of-work可以算快一點
    • 讓授權交易的橢圓曲線千張可以偽造/取代
  • 晴天霹靂的 Hash function!

    Quantum Lower Bound for the Collision Problem
    Quantan attack at Bitcoin, and how to protect against them

下兩篇By Jeffery Lin

金融數位化時代下的資訊風險與控制管理

-為什麼需要煞車?風險管理用來控管快速成長
-資訊風險管理:對資訊系統仰賴度提高、所處的環境越來越複雜(駭客、員工盜取資料、仍要符合政府法規)資訊風險管理協助管理重要資訊
-新興科技:GDPR、Fintech,需要評估導入新興科技的風險,挑戰更勝過去
-注意面向:安全性、可用性、效能(不彰導致使用者抱怨影響聲譽、可能會影響可用性)、法遵

-資訊風險管理( IT Risk Management) vs資訊安全管理( IT Security Management)

資訊風險管理( IT Risk Management):找作業流程的風險、確保監控風險、Like 家教、協助組織通過稽核

資訊安全管理( IT Security Management):確保資訊無外流、無沒權限人取得access

-好處:降低資訊風險管理發生的機率和影響、有效跨部門溝通、協助風控化繁為簡
-技巧:風險管理矩陣(要知道自己目標)、自行查核(找出問題)、風險註冊

FinTech – 金融科技的美麗與哀愁

-演進:1991-Internet, 1995-ebay, 1998- paypal, 2007-iPhone, 2009-bitcoin, 2014-Apple Pay
-最多 Fintech 用戶地區:中國、印度(發展快速、偽幣問題)
最多 Fimtech 使用年齡層:Y世代
-台灣概況:行動支付、跨境支付、P2P借貸、機器人理財、虛擬貨幣
-Apple Pay 代碼化(Tokenization)技術:商家、收單機構看不到卡號(減少偽卡)

-信用卡側錄裝置(Card Skimmer Device):不一定是店家所為
QRCode 支付:偷換店家QRCode
-行動銀行:惡意app(bankbot) 覆蓋在正常行動銀行app上,騙取帳密,還可攔截簡訊
-SWIFT 系統金融犯罪(釣魚信件、水坑攻擊植入後門,再找SWIFT帳密進行攻擊)
-區塊鏈
-Smart Contract
-資安風險:交易所、Smart Contract 漏洞、盜取 private key
-金融電子化:駭客只要能控制資訊流,就能控制金流
-控制好權限(雙重認證)

圖片後補

AI

AI會取代我嗎?
如果你問這個問題,代表你不了解AI,那未來就會被取代

資安現況

  • 資安產業鏈:

  • 資安產業中使用AI的三個層次

    1. Malware識別惡意程式:識別黑名單機制
      • 可以漏判
      • 低錯誤率
    2. Icident識別攻擊活動:人為書寫規則
    3. Situation調查攻擊案情:找到駭客攻擊TPP、計劃等等
      • 不只知道這是兇刀,還要知道他是怎麼來的

資安現況Demo

Demo網站

兩面刃:網管與駭客都喜歡用的平行移動工具

  • psexec.exe

資安現況解決方案

工人智慧 -> 人工智慧

  • AI判斷異常指令
  • 神奇圖形化介面
  • 判斷問題等級
  • 快速勾勒回傳report
  • 產生脈絡圖

cycarrier

  • 節省專家繁瑣的日誌分析時間
  • 系統引導人類做決策
  • 累積更豐富的專家情資來讓平台自動Hunting
  • 無人能取代的專家,彼此相輔相成

SITOCN 2018 議程筆記

由淺入坑區塊鏈~從認識架構到應用智能合約! - 牟展佑

開場影片

講者資訊

  • 松資活動/總務
  • 學長推坑SITCON
  • 偏好將資訊結合金融領域
  • 願在成為工具人之前成長茁壯(?

Part 0 銀行、中心化、比特幣到去中心化

貨幣

  • 以物易物>金銀銅鐵錫>法幣>信用卡
  • 法定貨幣缺點: 中心化

Part 1 區塊鏈架構

數位簽章(電腦的帳本)

  • 雜湊(hash)演算法SHA-256
  • 交易事件加密(簽章)

加密

  • 對稱加密: 相同鑰匙加密解密
  • 非對稱加密: 分為私鑰和公鑰,私鑰加密公鑰解密

礦工收到: 紀錄 簽章

  1. SHA-256(紀錄) >雜湊1
  2. 用私鑰加密
  3. 加密雜湊 >簽章
  4. 用公鑰解密 >雜湊
  5. SHA-256(紀錄) > 雜湊2
  6. 驗證 雜湊1 == 雜湊2

去中心化

  1. 把元改成BTC(加密)
  2. 把需要根付換成支付(數位簽章)
  3. 確認支付量(無法查詢餘額故每筆交易都以過去的交易作為基礎)
  4. 交易雙方的名字改成帳號(避免重名)
  5. 轉帳紀錄存於各節點

一致性問題

  • 避免紀錄竄改->區塊相連
  • 紀錄同步->產生新區塊
  • 避免重複使用->每筆交易會和前一個來源一起加密

如何實現

  • hash 區塊 > hash值前72位為0 > 挖到礦
  • CPU > GPU > 礦機 > 一堆礦機(礦場)

獎勵機制

  1. 挖到得到 12.5BTC(2017)
  2. 交易手續費

    算力過剩

  • 調整難度

    同時產生區塊?

  • 保留最長的區塊

小結

* 利用SHA-256 & 非對稱加密製作數字簽名
* 利用區塊練儲存交易紀錄
* 設置外的工作控制單位時間生產數
* 將一定數量比特幣發給礦工,促進成長
* 轉帳不依賴任何銀行或政府機構
* 比特幣網路內總量不超過2100萬個比特幣

交易方式

  • 場外交易:信任的人
  • 場內交易:交易所(bitoex、maicoin)

Part 2 從比特幣到以太坊

  • 把數字改成文字

    Etherenum

  • 智能合約
  • 快速驗證(1min以下)
  • 有錢就可做到無窮迴圈(有錢就是任性?)
  • 目前無專用礦機
智能合約
  • Browser-
  • Geth:讓我們能夠執行合約..等
  • Mist:錢包

智能合約的應用 ex:勞基法 老闆有智能合約 ->加班的錢放入智能合約->判斷要給錢給員工(員工加班)還是退還老闆(員工放假)

Part 3 區塊練3.0

HITCON FreeTalk 2018 暢談 CPU 處理器的歷史包袱

HITCON FreeTalk 2018 暢談 CPU 處理器的歷史包袱 共同筆記

主辦單位:社團法人台灣駭客協會(HITCON)
時間: 2018/01/19(五) 13:20 - 17:00
報名網址: https://hitcon.kktix.cc/events/hitconfreetalk20180119
直播網址: https://www.facebook.com/HITCON/

1
2
3
4
5
6
7
8
9
議程表:
12:50 - 13:20 報到
13:20 - 13:30 開場
13:30 - 14:00 Spectre & Meltdown 漏洞原理說明與 POC 剖析(講師:Bletchley)
14:00 - 14:30 從晶片設計角度看硬體安全(講師:中原大學 黃世旭教授)
14:30 - 15:00 下午茶交流
15:00 - 15:30 Spectre & Meltdown 漏洞的修補策略與 risk mitigation(講師:gasgas)
15:30 - 16:00 詭譎多變威脅下的資安應變與治理(講師:林宏嘉協理)
16:00 - 17:00 Panel Discussion

歡迎大家針對這次的議題作共筆!

一、Spectre & Meltdown 漏洞原理說明與 POC 剖析 (講師: Bletchley)

Overview of Meltdown and Spectre

  • Threat: adversary who can execute low privilege code can read unpermitted memory region
  • Impact:
    • Meltdown: Most Intel Processors
    • Spectre: Intel, AMD, ARM processors
  • Reason:
    • INconsistent between processor architecture and microarchitecture(cache)
    • Lack of permission checking when CPU optimization
  • Website: meltdownattack.com

Execute low privilege code can read unpermitted memory region

Google 研究團隊發布漏洞的網站 - https://meltdownattack.com

CPU Architecture 中,frontend 是作 fetch and decode 的部分,接著才交給 backend 去做 execution,其中 code (record) buffer 也在這邊

out-of-order execution

有時候處理器為了加速,會偷跑排在後面的指令,例如後面指令可能是一個加法指令,而且已經在 register 中,就可能會被選為偷跑項目

但有時候偷跑會發生出錯,一旦出錯,有可能被處理器丟棄,不會 commit 到 CPU 的輸出結果中(memory write)

speculative execution

這個是 branch instruction 的一種執行方法,會去猜測 condition instrcution 的成立與否,如果猜對了,就會 commit 到 CPU 的 memory

偷跑動作的時候,會去存取記憶體,subsytem cache 不知道是偷跑的,所以還是會把獨進來的資料做處理,這就是漏洞

Flush + Reload Attack

1
var = array[ secret* cache_line_size ]

256 accesses time helps discover one byte data ()

CVEs

  • CVE-2017-5753
  • CVE-2017-5715
  • CVE-2017-5754

Inside the CPU

  • Frontend

  • Execution Engine

    • Reorder Buffer
      • 重排序缓冲区
    • Execution Unit
      • CPU執行單位
    • 漏洞的緣由
      • CPU 偷跑後面順序可以先執行的指令
      • 若發現偷跑的指令不合
      • 不commit偷跑資料回cpu
      • 但Cpu cache 仍留存資料
      • 可是於memory與cpu中無法觀察之
      • 可利用預執行cache資料
  • attack-meltdown

    • Attack想法
      • 設一array
      • 若讀取過的array[x]會存於cache
      • cache資料的讀取時間<memory讀取時間
      • 統計時間即可洩漏曾讀取過的值
      • 256 accesse can discover a Byte.
    • Meldown Attack Steps
      • Cpu預先執行超出權限的資料
      • 即使資料永遠不會被程式讀取
      • 仍然有機會預先儲存於cache中

  • attack-spectre

    • Attack想法
      • No cache:array1_size,array2
        1
        2
        if (x<array1_size )
        y = array2[array1[x]*256];
      • if後執行較慢
      • 連續數執行後
      • Cpu預先執行第二行
      • 帶入不進入的if x
      • 會預先執行而得到y值存於cache
    • spectre Attack Steps



文獻連結

Meltdown Proof-of-Concept
Spectre POC
main differences between Meltdown and Spectre

筆者按

  • Branch predCiition兩種變形
    • out-of-order execution = 預測下一個要執行的程序並預處理
    • speculative execution = 在分支時預測下個要執行的分之進行預處理

討論

array = [ secret * cache_line_size]
read all array and count how many element loaded to cache = secret value
看不出來這兩個漏洞的差異啊,好像都是同一個方法

[name=CK] 雖然漏洞被區分為兩種,他們概念都以out-of-order execution為核心。可以把Spectre看成Meltdown的擴充,比較大的差異是Spectre加入branch prediction做攻擊。

[name=Ethen] 之前我看到Meltdown的特點不只是讀取數據,還可以打破隔離(寫入),沒介紹到…
如果按照上面的比較表兩邊都是僅讀取,只是讀取範圍不一樣(kernel space v.s. user space any process),那為什麼Maltdown可以直接傷到虛擬化環境?ring -1不是單純讀取kernel就可以跳進去的啊

[name=Austin]Guset攻擊Host的部份是屬於Spectre-Variant2的範疇,它其實是利用從Guest program去推敲kvm.ko, vmlinux的記憶體位置,在將資料流至user space。雖然Guset跟Host看起來是分離的,其實有很多共用的特性,可以這樣去推敲記憶體位置

[name=Austin]我的理解沒錯的話,Spectre跟Meltdown的差異在於後者使用了Out of order execution,兩者都有使用speculative execution(branch prediction),另外講者沒有提到的是到底如何取得secret的資料,根據POC code給的
char secret = “The Magic Words are Squeamish Ossifrage.”;
malicious_x = (size_t)( secret - (char
) array1 );
當我們推敲出array = [ array1[x] * cache_line_size] 裡面array1[x]的值後,其實就可以推導secret的內容:
array1[x] = addrress of array1 + offset x = addrress of array1 + address of secret - address of array1 = address of secret = ‘T‘

[name=Ethen] 站在攻擊者的立場,Meltdown對我來說會是一個不錯的攻擊輔助資訊,我可以拿到核心記憶體中的帳號密碼或知道有開啟什麼服務輔助我攻擊,但這僅限於當下的作業系統,如果能夠寫入或直接提權那會好用的多
單純推敲kvm.ko能做的事情有限,如果hypervisor沒有放出可攻擊的服務或權限,我會很難往上打,頂多去讀其他虛擬機器試圖利用其他虛擬機上的服務弱點去一台一台打,這樣就沒那麼好用了

二、從晶片設計角度看硬體安全(講師:中原大學 黃世旭教授)

邏輯化簡漏洞

  • 進行邏輯化簡時
    • Don’t care的部分可能會產生非預期的值
    • 或Dont’ care的輸入會輸出=預期的答案










out of order executed

將無前後關係的排成同時運作
降低使用運算時間

branch executed


可以與cache無關:透過時間差取得之前的key

meltdown & spectre 探討

* 同上

設計硬體安全的困難

結語

其他大大的筆記

現代CPU設計由於Multithread & Multicore的因素CPU執行指令運算之前需要peak一下CPU的狀態與看預算時需求的Memory是否會產生lock,這個過程會在CPU的底層做(注意到這裡OS已無法管理,指令並須被執行除非CPU drop這個指令,CPU drop會通知回OS)

利用這個方法去看CPU Handle的記憶體區段Peak其他區域的記憶體位置(OS無法阻擋),或者CPU上的Memory管理機制重新回Initial state

在邏輯電路裡設計狀態機(FSM)時傳統訓練方法有don’t care condition可能會造成電路運行時產生你所不期望的狀態循環,例如重回initial state,所以設計時不太應該使用don’t care(雖然可以節省電路成本與最邏輯複雜度最佳化),但為了安全性,應當把所有組合列出,額外去處理不期望的例外。

PUF -> physical unclonable function
Some basic description about PUF

電路最佳化問題
- 電路複雜度
- 電路成本
- Data Store(Cache & Register )漏電問題
- 面積

Intel identified the vulnerabilities as:

CVE-2017-5705 – Multiple buffer overflows in kernel in Intel ME Firmware allowing an attacker with local access to the system to execute arbitrary code.

CVE-2017-5708 – Multiple privilege escalations in kernel in Intel ME Firmware allowing unauthorized processes to access privileged content via unspecified vector.

CVE-2017-5711 & CVE-2017-5712 – Multiple buffer overflows in Active Management Technology (AMT) in ME Firmware allowing attacker with local access to the system to execute arbitrary code with AMT execution privilege.

CVE-2017-5706 – Multiple buffer overflows in kernel in Intel SPS Firmware 4.0 allow attacker with local access to the system to execute arbitrary code.

CVE-2017-5709 -Multiple privilege escalations in kernel in Intel SPS Firmware 4.0 allows unauthorized process to access privileged content via unspecified vector.

CVE-2017-5707 – Multiple buffer overflows in kernel in Intel TXE Firmware 3.0 allow attacker with local access to the system to execute arbitrary code.

CVE-2017-5710 – Multiple privilege escalations in kernel in Intel TXE Firmware 3.0 allows unauthorized process to access privileged content via unspecified vector.

原文:
https://meltdownattack.com/meltdown.pdf

三、Spectre & Meltdown 漏洞的修補策略與 risk mitigation(講師:gasgas)

前言

  • 你認為得資訊安全?
    • 降低風險,而不可能100%修補
    • Risk = Vulnerable X Threat X Asset
    • 風險 = 資安漏洞 X 駭客進不進得來 X 資產價值

該怎麼做?

  • 漏洞因應流程:
    • 資訊盤點 ➡️ 漏動檢查 ➡️ 測試機測試 ➡️
      系統備份 ➡️ DRP演練 ➡️ 進行修補 ➡️ 持續觀察
  • 漏洞檢查:
  • 漏洞修補:
    • CPU Level修補:Firmware Update
      • 程式千萬別看錯執行錯,變磚機率爆高!
      • 目前還不是 CPU Microcode 修補的好時機,可能都只是暫時修補,後續的修補應該會比較全面也比較安全。
    • Bios Level修補:notebook機器為主的修補方式
      • 修補會是個比較好的選擇 (其中也包含 CPU Microcode),變磚機率低一點點。
      • [name=Wisely] BIOS Update 目前只能修補其中一個 Spectre 的弱點

      • Amazon (AWS)/(VMware) 已修補完畢
    • OS Level修補:見官網
    • Application Level修補:
      • 程式重新編譯
        * 未重新 comliler 的程式還是有機會有風險
      • Google Retpoline:GCC,LLVM版本
        徹底分支
      • Visual Studio 2017 version 15.5 /Qsperctre
        lfence :系統執行到此會停止預先運算
    • 安全最大風險Brower:
      使用javascript打包poc放在網路上,瀏覽器看了,記憶體的資料就被偷了

      提醒

  • 修補一定要從官方下載
  • 前漏洞衍伸 ➡️ skyfall and solace:不好修

討論

[name=Ethen] 不對啊,目前的弱點需要讀取變數/建立陣列/評估cache速度,這些在JS / Java翻譯成實際執行在CPU上的native code不太可能還包在同一個分支中,他是怎麼有辦法說這樣是可以攻擊的?有成功案例嗎?

[name=Austin]如果JS注入的code(browser->OS->CPU)是在同一個process或可控制的process就可以互相做存取,簡單的範例影片在這:https://www.youtube.com/watch?v=RbHbFkh6eeE

[name=Ethen] 這個影片看起來是在本機端執行原生程式,來撈取另一個程式的記憶體內容,好像不是JS / Java?
即便都在同一顆CPU上,但直譯語言被翻過去到CPU上應該會有多不少東西,如Java有GC的動作,也沒有指標可直接讀取,這些東西混進去會導致執行不是連貫的或不是同一個分支,影響分析結果
[name=gasgas] 是..這樣的測試會有很多干擾, 也會大大地影響到結果. 所以只能參考用. 這個javascript POC 目前爭議還很大..XDDD

..

四、詭譎多變威脅下的資安應變與治理(講師:林宏嘉協理)

概念 & 觀念

  • 對應新的威脅與正確的認知
    • can’t stop all attack
    • Human Experience and Behaviors
    • Detect in mobile
      Defence in deep
  • Attacker Decision Cycle:
    • Observe
    • Orient
    • Decide
    • Act
  • 加速決策 & 擺脫困境
    • Maximize Visibility(
      最大化可視性
      • internal
      • external
    • reduce manual step(and error)
      減少手動步驟(錯誤)
    • Maximize human impact
      善用人力資源

使用者影響

  • 受影響的CPU

簡報節錄


















Panel 問題(歡迎大家先來填寫)

1.面對 zero day attack,如何偵查與預防
2.arm64 為何也會有同樣的問題~目前的解法是什麼??
3.今年剛舉辦的 CES 2018 上所展示的最新型筆電,同樣也使用 Intel 第八代 CPU,是否有受此次漏洞影響?畢竟很多人會猶豫是否要再等待下一代的 CPU 再購買,謝謝。
gasgas回答: 8th Gen Intel CPU 一樣有這三個漏洞, 一樣需要修補, 請參考https://hothardware.com/news/intel-8th-gen-core-cpus-10-slowdown-javascript-spectre-meltdown-patches
第八代正在賣,第九代再測試,第十代正在做,可能等到第十一代才沒有

4.依據 ITHOME 的訊息(https://www.ithome.com.tw/news/120312), 目前透過OS更新的方式為針對 meltdown 的弱點修補,請問關於 Spectre 漏洞是否有 OS 或是 firmware 的修補連結嗎?
5.問題一:目前全世界尚無發生災情,如果BIOS更新會拖慢電腦效能,那公司內部先發佈KB4056892更新檔的有效阻擋程度。 問題二:台灣國內有哪些資安網站可即時發佈及提供解決方案。
6.如何能更有效率的檢查並修補該漏洞
7.如何進行CPU攻擊
8.對於晶片出包的問題,未來是否有更好的因應方式?如果來不及修補該如何自保?
9.想請問針對Meltdown & Spectre 漏洞,對於一般做為系統、網站伺服器之主機有何影響,如果不更新作業系統只單靠防火牆進行過濾控管(EX:限定某幾個ip可以連線)可以避免被駭客入侵嗎?
10.為什麼對一般使用者電腦影響較低,對雲端業者卻衝擊很大? 作業系統修補,成效如何?會對微軟的效能有重大影響嗎? 雲端的衝擊有何應對之道?
11.這次Meltdown和Spectre更新檔有其必要更新嗎?看一些報導上說更新後的問題還比較多。
12.除了CPU外,其它的GPU或TPU等,是否應該也會如此呢?該如何因應處理?
13.針對微軟官方說明網頁:https://support.microsoft.com/en-us/help/4072698/windows-server-guidance-to-protect-against-the-speculative-execution 請問其中的 To enable the fix 部分所提到的機碼是否為安裝了微軟的 Patch,且新增這三個機碼就可修補 CVE-2017-5715、CVE-2017-5753和CVE-2017-5754 三個漏洞嗎?還是除了進行以上步驟後,仍需更新Server硬體製造商給的 BIOS 才能阻擋攻擊呢?(微軟官方建議還是要更新硬體BIOS才能完整修補漏洞,但如果只上OS Patch 就能有效防禦的話,是否就可以不用急著更新BIOS了)
14.如果在虛擬主機上,Host端打上了Patch,但是Guest端沒有打上,這樣在Guest端能引發攻擊嗎?
15.Variant2 Branch target injection, hacker是如何對Branch history buffer進行訓練以及達到修改目的地位置,使得它會進行推測執行然後執行到hacker的gadget? 跟ROP(Return oriented programming)的攻擊方式是一樣的嗎?
16.對於因CPU漏洞修補而造成其他系統運作的問題時,在整個產業生態系統方面是否有更好的解決方式,以避免MIS人員害怕系統出問題而不願意修補漏洞?
17.如何評估修補前與修補後的效能差異?網路上有人說差異不大,也有人說差異滿多的,是否有較客觀的評估方法?
18.CPU層級的弱點需要靠明確的指令碼來利用,我的理解是只有在Native code已經可以執行的情況下可以藉此竊取資料或提權,不過可以看到各大瀏覽器在第一時間就做了修補。想請問是否代表這個弱點可以在不使用native code的情況下利用?

Microsoft Blockchain 合作案例

區塊鏈實作:在成功得案例上做出您的第一個應用

WiFi access:

msevent998dl

Azure Blockchain-as-a-service(Demo)-30mins

Michael Chi 軟體開發工程師

作者GitHub:https://github.com/michael-chi/blockchain-learning

Before we start

  • What is …

    • Blockchain
    • distributed ledger
    • smart contract
  • Plus

    • have programming knowledge
    • Azure Knowledge
  • 純技術 Workshop

  • 區塊鏈解決方案中遇到問題如何解決,以解決的思路

  • Blockchain Case:

    • 東南亞航空公司
    • 農業產銷的公司,類似台糖的農產品版本

農業產銷的公司

  • 有數個 farmer 管理者,用以確認 農人、農地大小、產品品質
  • 農民有數種、法律有數種、農地有數種,希望解決繁瑣的問題

解決方式

IPFS 行星檔案系統:類似區塊鏈 p2p 的分散式檔案系統

  • 將農民資訊 ID 放到 smart contract 上,而藉由 hash ID ,將個人資料儲存於資料庫,不上鏈
  • 農地資料同上,ID 上鏈,其餘放到 IPFS 上

東南亞港口管理的機構

港口想要建造一艘新的船隻,非常麻煩,可能需要 3060 張的憑證,需要 36 個月,而其中多數憑證需要人工申請,非常耗時耗人力。

解決方式

一家船隻的擁有者,造船時,創建一個 smart contract 放到區塊鏈上,每張 smart contract 都代表一個憑證,取得憑證後,交給監管驗證,核發後建造。

Baseline

  • 參與者多
  • 資料共享者多
  • 憑證可以透過區塊鏈在多個機構中流通

參與者越多,越適合用區塊鏈來解決問題

How we work with the customer

  • 3 週聯絡交流
  • 2 週前往顧客公司討論
  • 2 月 coding

航空公司

希望多家航空公司的里程數(紅利)可以共用,多個參與者可以擁有共通的交流平台。

  • 擁有一個共通的貨幣,用以交換產品或價值
  • 一個開放的平台,任何人只要他想,就可以來參與這個平台
  • 這個平台必須夠安全
  • 必須是全球性的
  • 輕易的加入這個聯盟

解決方式

我們認為區塊鏈是好的解決方案、一個安全的方式,資料在其中是分享的,且是一個分散式的系統,資料就會在節點之中去 Ledger。
How do we

  • 創建一個 Token 、 ETH 、 Hyperledger?
  • 外幣交換的機制?
  • Track Transaction?
  • 如何與現有的會員系統做整合?
  • interact with other participates?
  • 如何建立一個全球可信賴的系統?
  • 多國間的資料如何同步?
  • 如何管理?

思考方向

  • 先解決簡單的問題
  • 設計一個給單一客戶的架構
  • 延伸至其他公司

業務場景

  • 創建一個貨幣,將各個公司的會員點數擁有一個共通的轉換媒介
  • 所有透過這個貨幣的交易都必須被完整的記錄下來
  • 所以的夥伴必須被管理,必須是某個航空公司的會員才能轉換

區塊鏈角度

  • 所有的客戶、智能合約都是一個 address 。
  • 需要數個 contract
    • Token contract
    • Exchange Rate Contract
    • Transaction Contract
      • 記錄一些特殊的交易邏輯

We decide to

微軟在 eth 有各種合作,又 因為有 80% 的 Token 都是 ERC 20 所以採取 ERC20

  • smart from eth
  • uses ERC 20 Standard
    • Function
      • total supply
      • balanceOf
      • Transfar
      • transferFrom
      • Approve
      • allowance
    • Events
      • Transfer
      • Approval
  • openzepplin:一個針對安全性做增強的 Token 範本

Create Digital Token

==等補簡報中的 3 個 smart contract 的 Function==

  • Transaction
  • Token
  • Echange Rate

Questions

Now we have smart contracts ready

  • Q:如果邏輯需要更改時該如何是好?
    • 如何 update ?
  • A:Proxy Pattern
    • 將邏輯與資料分開
    • 透過更改 Proxy contract ,判斷應該呼叫哪個版本
  • Q:如何使 API、操作 smart contract ,使之呈現於終端裝置上?
  • A:需要一個
    • Library
    • API
    • Authentication
      • In smart contract
      • In API
        • Truffle.js 部署 Smart Contracts 並測試
    • WEB3.JS

      Challenge

  • Q:如何管理雲端的 eth 與離線的 Database
  • A:在 Azure 上
    • Function App
    • Web App/API app
    • Vitual Machines

兩種解決方式

oracle

小結

  • 呼叫己身 API
  • 管理自己的會員
  • 以 VPN 等等網路傳到區塊鏈上同步
  • 需要報表時,從 Databasr 查詢
  • 需要驗證時,從 Blockchain 查詢

未來的問題

  • 區塊鏈、SQL 哪邊是主體
  • 是否能夠讓網路互連
  • 普通的 CI/CD 可以使用 Azure 內建的 CI/CD
  • Smart Contract CI/CD
    • 當你部署一個新的版本後,對區塊鏈來說就是一個全新的事情,而究竟要不要自動使用 CI/CD 尚未有定論。

What’s Next

  • 我們不希望每一個 case 都從頭開始
  • 我們希望能夠有個 base ,之後的開發都由此延伸
  • 我們有一個解決方案在 Azure 上,只要將它組合起來

Before Start

https://www.microsoftazurepass.com/SubmitPromoCode
https://onedrive.live.com/?authkey=%21AHCMYjJIaYWpXF0&id=E0579E51F1904020%21363386&cid=E0579E51F1904020

快速的建立區塊鏈並運用
運用 Azure 上的 template

從 60% ~ 70% 開始建立區塊鏈
之後會把代碼開源出來到 GitHub (大驚!!

For 聯盟鏈

SITCON 夏令營 2017 chatbot 共筆

一小隊 2017 SITCON 夏令營 bot 共筆

bot目的:處理日常金融用途1

@book_keeping_bot


日常記帳

  • 收/支出、時間、內容、金額、總金額
        * 記錄前次內容提供清空
        * 將記帳紀錄固定於單一訊息
    

指令:

  • /list:將目前表格秀出

         讓用戶可選擇要編輯的訊息
    
  • 輸入順序:收入(+)/支出(-) 項目 金額

         直接設定成表格填空
         從使用者API中提取時間
    
  • /start 開始說明

    book-keeping, [19.01.18 13:10]
    OK, William
    你準備好了…… 讓我們開始記帳吧

book-keeping, [19.01.18 13:10]
記帳請依序輸入 /add +/-

book-keeping, [19.01.18 13:10]
請輸入/list查看帳本,輸入/total 獲取總資產

book-keeping, [19.01.18 13:10]
借款請依序輸入 /lend <@username>

book-keeping, [19.01.18 13:10]
查看借貸請輸入 /ldict <@username>


user借還錢

  • 借貸時間、內容、金額、備註
        * 利用@表示被借錢者
        * 借還錢時與@確認借據正確性
         
         指令:將目前欠款人統一成一張清單
         指令:查詢目前欠款紀錄
         指令:查詢歷史借款人(username/借款次數、金額
         
    

借貸實際測試範例

William Mou, [19.01.18 13:10]
/lend @WilliamMou 100

book-keeping, [19.01.18 13:10]
借款給 @WilliamMou 100元

book-keeping, [19.01.18 13:10]
請借款人 @WilliamMou 回傳 /borrow @WilliamMou 1516338639 驗證

William Mou, [19.01.18 13:10]
/borrow @WilliamMou 1516338639

book-keeping, [19.01.18 13:10]
提醒:輸入 /payback @WilliamMou 1516338639 還款

William Mou, [19.01.18 13:11]
/ldict @WilliamMou

book-keeping, [19.01.18 13:11]
欠款確認,欠100元


Bot架構

      array:
          0:
              id:
              time:
              type:
              proj:
              money:
              total:
          ...

相關bot

bot:
@RawDataBot

相關網站

bot&python3
telegpot說明文件
python telegram定義
git版本控制

技術問題

  1. telegram如何輸出適合螢幕大小的記帳表格

```python=

-- coding: utf8 --

import telepot
from telepot.loop import MessageLoop
from telepot.namedtuple import (
ReplyKeyboardMarkup,
KeyboardButton,
InlineKeyboardMarkup,
InlineKeyboardButton
)
from random import choice
import json
import time

TOKEN = ‘’

bot = telepot.Bot(TOKEN)
telBot=telepot.Bot (TOKEN)
Bot_inf=telBot.getMe()

#資料結構:{chatid:[[+-,money,event],[+-,money,even],[+-,money,even]]}
moneydict={}
#資料傑{idtousername:{data:[1,]}} 0:未確認 1:確認 2:還款確認 pop:還款完成
lenddict={}

def print_msg(msg):
print(json.dumps(msg, indent=10))

def on_chat(msg):
print_msg(msg)
print(“~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~”)
header = telepot.glance(msg, flavor=”chat”,long =True)
data=””
if header[0] == “text”:
text = msg[“text”]
# command
if text.startswith(“/“):
command = text.lstrip(“/“)

        if command == "start":
            text = "OK, {}\n你準備好了...... 讓我們開始記帳吧"
            bot.sendMessage(header[2], text.format(msg["from"]["first_name"]))
            bot.sendMessage(header[2], "記帳請依序輸入 /add +/- <money> <porj>")
            bot.sendMessage(header[2], "請輸入/list查看帳本,輸入/total 獲取總資產")
            bot.sendMessage(header[2], "借款請依序輸入 /lend <@username> <money> <porj>")
            bot.sendMessage(header[2], "查看借貸請輸入 /ldict <@username>")
            
        elif command[:3] == "add":
            #data=[+-,money,event]
            data=command[3:].split()
            if data[0] == '+' or data[0]=='-':
                try:
                    int(data[1])
                    bot.sendMessage(header[2],"增加收支細項"+str(data[2]))
                    if header[2] in moneydict:
                        moneydict[header[2]].append(data)
                    else:
                        moneydict[header[2]]=[data]
                    bot.sendMessage(header[2],"收支帳本"+str(moneydict[header[2]]))
                except:
                    bot.sendMessage(header[2],"請符合格式ouo")
            else:
                bot.sendMessage(header[2],"請符合格式ouo")

        elif command[:4] == "lend":
            data=command[4:].split()
            bot.sendMessage(header[2],"借款給 "+str(data[0])+" "+str(data[1])+"元")
            if msg["from"]["username"]+"to"+str(data[0][1:]) in lenddict:
                lenddict[str(msg["from"]["username"])+"to"+str(data[0][1:])][msg["date"]]=[0,str(data[1])]
            else:
                lenddict[str(msg["from"]["username"])+"to"+str(data[0][1:])]={msg["date"]:[0,str(data[1])]}

            bot.sendMessage(header[2],"請借款人 "+str(data[0])+" 回傳 /borrow @"+str(msg["from"]["username"])+" "+str(msg["date"])+" 驗證")
            #bot.sendMessage(header[2],str(lenddict))

            '''
            if str(msg["from"]["username"])+"to"+str(data[0]) in lenddict:
                lenddict[str(msg["from"]["username"])+"to"+str(data[0])]={msg[data]:0}
                bot.sendMessage(header[2],0)
            else:
                lenddict[str(msg["from"]["username"])+"to"+str(data[0])]={msg[data]:0}
            '''    
        #commond: /borrow @username date
        elif command[:6] == "borrow":
            data=command[6:].split()
            lenddict[data[0][1:]+"to"+msg["from"]["username"]][int(data[1])][0]=1
            #bot.sendMessage(header[2],str(lenddict))
            bot.sendMessage(header[2],"提醒:輸入 /payback " + data[0] + " " +data[1]+" 還款")
            
        #commond: /payback @username date
        elif command[:7] == "payback":
            data=command[7:].split()
            lenddict[data[0][1:]+"to"+msg["from"]["username"]][int(data[1])][0]=2
            bot.sendMessage(header[2],"請 "+data[0]+" 確認 @"+str(msg["from"]["username"])+" 是否還款,並輸入 /payok @"+msg["from"]["username"]+" "+str(data[1])+" 確認")
            
        #commond: /payok @username date
        elif command[:5] == "payok":
            data=command[5:].split()
            lenddict[msg["from"]["username"]+"to"+data[0][1:]].pop(int(data[1]))
            bot.sendMessage(header[2],"還款確認完成><資料已核銷")
            
        elif command == "list":
            for i in range(len(moneydict[header[2]])):
                bot.sendMessage(header[2],"收支帳本"+str(moneydict[header[2]][i]))
                
        # /ldict @username
        elif command[:5] == "ldict":
            data=command[5:].split()
            if msg["from"]["username"]+"to"+data[0][1:] in lenddict:
            #for i in lenddict[msg["from"]["username"]+"to"+data[0][1:]]:
                for i in lenddict[msg["from"]["username"]+"to"+data[0][1:]]:
                    if lenddict[msg["from"]["username"]+"to"+data[0][1:]][i][0]==0:
                        bot.sendMessage(header[2]," 欠款待確認,欠"+str(lenddict[msg["from"]["username"]+"to"+data[0][1:]][i][1])+"元")
                    elif lenddict[msg["from"]["username"]+"to"+data[0][1:]][i][0]==1:
                        bot.sendMessage(header[2]," 欠款確認,欠"+str(lenddict[msg["from"]["username"]+"to"+data[0][1:]][i][1])+"元")
                    elif lenddict[msg["from"]["username"]+"to"+data[0][1:]][i][0]==2:
                        bot.sendMessage(header[2]," 還款待確認,欠"+str(lenddict[msg["from"]["username"]+"to"+data[0][1:]][i][1])+"元")
            else:
                bot.sendMessage(header[2],str(data[0])+" 暫無欠您的款項")
                
        elif command[:5] == "total":
            s=0
            for i in range(len(moneydict[msg['chat']['id']])):
                if moneydict[msg['chat']['id']][i][0]=='+':
                    try:
                        s+=int(moneydict[msg['chat']['id']][i][1])
                    except:
                        pass
                else:
                    try:
                        s-=int(moneydict[msg['chat']['id']][i][1])
                    except:
                        pass
            bot.sendMessage(header[2],str(msg['chat']['id'])+"總資產:"+str(s))
        
        elif command[:9] == "del_list":
            del moneydict[msg['chat']['id']]
            bot.sendMessage(header[2],"以清除您的儲蓄列表")
          


    # other msg
    #else: 
        # 我覺得不行!
        #image_url = "https://cdn.pixabay.com/photo/2016/03/22/23/45/money-1273908_960_720.jpg"
        #bot.sendPhoto(header[2], image_url)
#bot.sendMessage(header[2],"輸入/start查看指令")
    if "@all" in msg["text"]:
        admins_list=[]
        admins_dict=telBot.getChatAdministrators (msg["chat"]["id"])
        chat_name=msg["chat"]["title"].encode('utf8')
        print(admins_dict)
        for admin in admins_dict:
            if 'username' in admin['user']:
                admins_list.append('@'+str(admin['user']["username"])+" ")
            else:
                user_id=admin["user"]["id"]

                try :
                    first_name=admin["user"]["first_name"]
                except:
                    pass
                try :
                    last_name=admin["user"]["last_name"]
                except:
                    pass
                try:
                    admins_list.append('@ '+first_name+" "+last_name)
                except:
                    try:
                        admins_list.append('@'+first_name)
                    except:
                        pass
                    try:
                        admins_list.append('@'+last_name)  
                    except:
                        pass
            print(admins_list)
        send=""
        for admin in admins_list:
            send+= admin + " "
        bot.sendMessage(header[2], send)
        print(admins_list)
    
    if "@book_keeping_bot 閉嘴" in msg["text"] or "shut up" in msg["text"]:
        bot.sendMessage(header[2], '@' + msg['from']['username'] + " 對不起Q.Q")
        time.sleep(5)
        bot.sendMessage(header[2], '@' + msg['from']['username'] + " 你以為我會這樣說ㄇ?")
        bot.sendMessage(header[2], '@' + msg['from']['username'] + "\n\

——————/´ ¯/) \n
—————–/—-/ \n
—————-/—-/ \n
———–/´¯/‘–’/´¯`·\n
———-/‘/–/—-/—–/¨¯\n
——–(‘(———- ¯~/‘–’)\n
———\————-‘—–/\n
———-‘'————
-·´\n
————\———–(\n
————-\———– “)

    elif "@book_keeping_bot" in msg["text"]:

        bot.sendMessage(header[2], '@' + msg['from']['username'] + " 我可是很忙得")
        image_url ="https://www.moedict.tw/%E5%88%B7%E5%88%B7.png"
        bot.sendMessage(header[2], '@' + msg['from']['username'] + " 找我有啥事情?")
        bot.sendMessage(header[2],"孤單寂寞覺得冷?")
        bot.sendMessage(header[2],"簡單,我可以陪你刷起來!")
        for ii in range(3):
            bot.sendPhoto(header[2], image_url)
            
    
    

MessageLoop(bot, {
‘chat’: on_chat,
#’callback_query’: on_callback_query,
}).run_as_thread()

print(‘Listening …’)