2015年4月9日 星期四

Amazon AWS – 架構與服務

當我們在Amazon Cloud上註冊了一個免費帳號後,興高采烈的按一下左上方Services連結,會出現密密麻麻一堆令人眼花瞭亂的服務及功能,這麼多的項目與產品,各有不同的功能不同的目的與精密的計費方式,頭一眼看到真是令人望之卻步。
    沒關係,透過本文,希望可讓你可以很快的先瞭解AWS的架構,以及基本的功能和服務。
    下方是AWS的平台架構,該架構演示了AWS所有的服務與產品,我們先從最下方的Infrastructure來看起。
  1. Global Infrastructure

  1. 目前AWS共有11個Regions,每個Region擁有數個Availability Zones。
    • Region指的是一個實際的大範圍地區,例如Western United States(美國西部)與Eastern United States(美國東部)
    • Zone指的是資料中心(機房)。
  2. 此外目前有52個Edge Locations。
    • Edge Location指的是CDN End Points(CDN是Content Distribution Network的縮寫。)
    • Cloud Front是AWS中針對Edge Location的服務。
  3. 以下是AWS在全球的分佈據點介紹:



  1. AWS Edge locations分佈:
    接下來我們再往上看,這些是AWS所提供的各項服務:

  1. Networking

    • Route53:DNS服務,把名稱 (如 www.example.com) 轉換為電腦用於互相連接的數字 IP 地址 (如 192.0.2.1)。
    • Direct Connect:連接本地設施(私人網路)和 AWS 的專用網路連線,例如,我們可以透過此服務將公司內部的應用程式連到AWS的資料庫。
    • Virtual Private Cloud(VPC):將多種的AWS服務運作於自訂的Virtual Private Cloud中,好像擁有個人機房一樣。
  1. Compute:有四項主要的服務

    • EC2(Elastic Compute Cloud):可自行調整大小容量的雲端運算服務。
    • AutoScaling:與EC2搭配,可依據目前loading自動調整運算服務的大小容量。
    • Elastic Load Balancing:針對Web server或Application server,與Route53搭配使用,分配需求到各個服務主機,並且可避開有問題的主機。
    • Workspaces:提供VDI桌面服務,例如微軟的Windows 7/8… 等。
  1. Storage:

    • S3(Simple Storage Service):可以單獨使用,也可以與其他 AWS 服務搭配使用,最大支援5TB file size。
    • Glacier:針對不常存取且可接受數小時擷取時間的資料儲存服務,因此費用較S3更低廉,因此適用於不常存取且大量的資料儲存。
    • EBS(Elastic Block Store):與EC2搭配使用,以提供持久性儲存磁碟區,為資料區塊級(Block level),可建立partition存放任何filesystem種類的系統及檔案。
    • Storage Gateway:與使用者端的應用程式配合使用,屬於一種雲端儲存的服務,在兩者之間提供無縫且安全的整合,並可視需求自動擴展空間。
    • Import/Export:針對資料雲端遷移、異地備份、災難復原、交換資料等需求,可將大量資料快速的移入或移出 AWS 雲端,它不透過Internet而使用實體的便攜式儲存裝置來匯出或匯入。
  1. Databases:

    • RDS(Relational Database Services):提供常見的關聯式資料庫服務,可讓使用者在雲端設定、操作和擴展資料庫的相關工作;目前提供五大類型的資料庫:MySQL、Oracle、Microsoft SQL Server PostgreSQL及 Amazon Aurora。
    • DynamoDB:針對近來流行的NoSQL 資料庫所提供,支援文件(Files)和鍵值(Key-Value)等類型的NoSQL資料庫。
    • Elastic Cache:一種記憶體內快取的資料庫服務,這項服務可從記憶體內的快取系統中擷取資訊,而不是完全仰賴速度較慢的磁碟型資料庫,目前支援兩種記憶體內快取引擎:Memcached和Redis。
  1. Analytics:

    • RedShift:一種大型的,以PB為單位的雲端資料倉儲服務,用以處理巨量資料及分析。
    • Kinesis:可即時性的針對大型、分散式等資料流進行資料處理,而且每小時內就可以從數十萬個來源持續性的擷取和存放高達數百TB的資料。
    • EMR(Elastic MapReduce):架構在目前最流行的BigData儲存管理雲端平台Hadoop以及MapReduce技術,提供快速且經濟實惠處理大量資料的服務。
  1. Applications:

    • SQS(Simple Queue Service):應用於程式之間進行訊息交換或知會的Message Queue訊息佇列服務。
    • SWF(Simple Workflow Service):一種狀態追蹤器和任務協調器的服務,可協助開發人員建構、執行和調整以平行或連續步驟進行的背景任務;例如,如果應用程式的步驟需要 500 毫秒以上才能完成,並在任務失敗時恢復或重試,這時就需要SWF 服務。
    • SNS(Simple Notification Service):一種推送簡訊收發服務,可將通知推送到Apple、Google、Fire OS和Windows 裝置,也可以透過SMS簡訊或電子郵件將通知傳遞給 Simple Queue Service (SQS) 佇列,或傳遞給任何 HTTP 終端節點。
    • SES(Simple Email Service):純粹針對外寄(out-bonding)的電子郵件發送服務,多用於發送交易電子郵件、行銷訊息等等。
    • Elastic Transcoder:即時且快速的線上影音轉檔服務。
    • Cloud Search:提供網站或應用程式的網路搜尋功能,它支援34種語言與熱門搜尋功能,例如反白、自動完成及地理空間搜尋。


  1. Deployment & Managementr:

    • Opsworks:一種應用程式管理服務,用於部署和操作不同形態和規模的應用程式。
    • IAM(Identity and Access Management):控制使用者對AWS服務和資源的存取權限,使用者可使用IAM來建立和管理AWS使用者和群組,並使用各種權限來允許和拒絕他們存取AWS資源。
    • Cloud Watch:針對AWS雲端資源和執行的應用程式進行監控的服務,使用者可利用 CloudWatch收集和追蹤指標、監控記錄檔以及設定警示。
    • Elastic Beanstalk:只要你的Web應用程式或服務是用Java、.NET、PHP、Node.js、Python、Ruby、Go或Docker所開發的,那麼只需上傳程式碼,從容量佈建、負載平衡、自動擴展到應用程式運作狀態監控的部署,Elastic Beanstalk 都可自動處理。
    • CloudTrail:用於記錄帳戶的AWS API 呼叫並提供日誌檔案,所記錄的資訊包括了API 呼叫者的身份、API 呼叫的時間、API 呼叫者的來源 IP 地址、請求參數以及 AWS 服務返回的回應元素等等。
    • Data Pipeline:在不同的AWS運算服務或儲存服務之間移轉或處理的服務,例如S3、RDS、DynamoDB、EMR之間等等。
    • Cloud Formation:提供一種可讓開發人員和系統管理員建立和管理相關AWS資源集合的簡單方式,並透過有序且可預測的方式對其加以佈建和更新。

  以上對於Amazon的架構和服務作了大致的介紹,接下來,我會在後續的文章中繼續介紹各項服務的操作及使用方式。

2015年4月2日 星期四

認識密碼學

王旭正教授目前任職於中央警察大學,他曾經撰寫過數本知名的資安相關書籍,可算是國內知名的密碼與資訊安全相關領域的權威,在這本剛剛於本月(三月)所出版的「認識密碼學的第一本書」中,王教授試著用淺顯與故事性的方法介紹密碼的起源與現代密學的發展,讓一般人也能一覽密碼學的奧秘而不被複雜難懂的數學與冰冷理論所嚇著。
認識密碼學的第一本書
如果您沒看過這本書,建議您可以買來看看,如果捨不得或懶得買,那麼,也可以直接瀏覽這幾頁濃縮整理的精華重點,應該涵蓋了書中八成的主要內容吧,看完後也等於讀完該本書了。



A)阿拉伯數字的由來

    阿拉伯數字並非阿拉伯人發現,而是印度人發明,再經由阿拉伯人經由戰爭和貿易而傳播到歐洲地區,取代了原本使用的羅馬數字,所以歐洲人才會稱為「阿拉伯數字」。
    不過,你知道為什麼這些阿拉伯數字會長成這樣子?有什麼緣由或改變嗎?
    其實古代阿拉伯數字的寫法與外觀是有棱有角,與現代的圓弧形有極大的差異,也就是它們所代表的「數」與「角度」存在著一定的規則:有一個角度的就是代表數字「1」,二個角度的代表數字「2」,有三個角度的代表「3」…依此類推,請注意下圖中圓點所標注之處就是數字的角度,而你可以看出「0」是沒有任何角度的。

B)密碼學的母親-質數

    質數其實跟密碼網路安全有很深的關連性,就是因為它們不能再做因數分解,才能用來當作保護機制,這牽連到中國古代一個跟質數密碼相關的故事:
    韓信幫劉邦統一江山後,生性猜忌的劉邦開始害怕韓信有了兵力後會趁機造反,因此在一次宴席中,劉邦特意詢問韓信兵力的狀況,韓信一聽便理解其言外之意,於是想出一個避重就輕的回答:
    我不知道我總共有多少士兵,但我只知道三個一數會剩兩個,五個一數會剩三個,七個一數會剩兩個。」…    劉邦聽了之後一頭霧水,在旁的軍師也算不出總共有多少兵力,於是韓信憑著過人的機智逃過一劫。
    在這故事中,韓信講的「三個一數」「五個一數」和「七個一數」都是質數,就是有名的「中國剩餘定理」,也就是常聽到的餘式定理,簡單來說,韓信的總兵力就是同時可以滿足這三個條件的數目。
只要所有除數彼此互質,就可以用「中國剩餘定理」來計算可能的數目,而同樣的,如果我們增加了更多的條件,也就是再加上諸如「11個一數」或「13個一數」,那麼,就需要更多的時間來計算出答案了。
所以,根據下列的原則
「5」「7」「11」 → 除數,不能公開
「2」「3」「4」 → 餘數,可公開
「367」 → 所要保密的最終的答案
因此從這個角度來看,這是一個很好用的密碼應用,例如,如果我們和另外兩位朋友私底下用「5」「7」「11」當作代號-這是除數,而且也是我們彼此之間知道而已,另外用「2」「3」「4」-也就是餘數,作為在網路上傳遞訊息用的數字,此數字被別人知道也沒有關係,而答案「367」則是我們要保密的數字,不能被外界知道,除非「5」「7」「11」這組數字被洩露出去了。

C)近代密碼學的兩大門派

    大家應當都很清楚,對稱式(Symmetric)與非對稱式密碼系統兩者最大的差異在於加密和解密用的是不是同一組密碼,舉例來說,如果上鎖和開鎖用的不是同一把鑰匙(也就是所謂的金鑰),那麼它就是非對稱式密碼系統,反之則稱為對稱式密碼系統。
目前最知名且還廣為使用的對稱式密碼,就是DES與AES。

1)對稱式加密:

DES(Data Encryption Standard):DES是近四十年來最廣為應用的金鑰密碼系統,它利用長度為56位元的金鑰來對長度為64位元的區塊進行加密演算,但由於目前的電腦處理速度成長相當迅速,使得採用56位元長度金鑰的DES已不夠安全,出現了一種3-DES的變形,它會進行三次的加/解密運算,也就是相當於使用了56x3=168位元長度的金鑰作加密。
AES(Advanced Encryption Standard):AES發展於2000年,一開始目標便以取代DES為目的,它可選擇三種金鑰長度:128192、256位元進行加密,對於明文區塊容量也更大128位元,因此可說是目前對稱式密碼系統中最安全的,例如,目前普遍使用的藍芽4.0版就是利用128位元的AES進行資料加密。

2)非對稱式加密:

又稱「公開金鑰密碼系統」,概念是建立在數學的單向函數上,單向的意思類似單行道,行進方向只有一個,換言之不會有出現逆向行駛的可能;所以公開金鑰可以很大方的公開於網路上,無需擔心被反向破解;我們也可以把公開金鑰密碼系統想像成喇叭鎖,就更容易理解了,任何人只要按下鎖頭都可以把門鎖上,但是要把門打開,就一定要找到對的鑰匙。
例如RSA就是有名的公開密碼應用,它是利用「對極大數作質因數分解的困難度」這樣單向函數概念而產生,也就是建立在針對一個極大的數字作質因數分解的困難度上,我們平常上網使用的SSL這類對於網路資料送所進行的加密方式,就是一種應用RSA的例子。

3)混合公開金鑰:

對稱式加密的優點是加解密速度快,而非對稱式的優點則是安全性高,在實際應用上,我們常常取兩者的優點,截長補短做成混合系統。

D)數位簽章-避免資料遭受竄改或偽造

    上述的密碼系統可以保護資料不被竊取,然而,卻無法保證其所保護的內容是正確無誤、原汁原味沒有被掉包或修改過的,因此,我們必須要使用另一項功能,來保證資料的真實性,也就是「雜湊函數」(Hash)。
    如上圖所示,無論輸入為空值或任何數值,都會傳回不同且一定長度的資訊,而且你無法從傳回的資訊反推算出原來訊息,所以Hash函數具有三種特殊的性質:
「單向性」:只能得到單向的得到右邊輸出結果,但是無法反推回去。
「抗碰撞」:不同的文字有不同的輸出結果,不會有不同文字卻具有相同輸出結果的情況。
「擴張性」:就算是微小的差異或改變,也會得到和原來差異極大的輸出結果。
應用在資訊的傳送上,如果我們將原來的資訊先使用Hashj函數產生出摘要資訊,再將此摘要資訊連原始訊息一併傳送給對方,那麼,對方只要比對自己產生的摘要資訊與所接收的是否一致,即可驗證資料是否正確以及完整;一般在生活的應用上,這種將Hash驗證與金鑰系統作結合的功能,稱之為「數位簽章」,如下方是利用雜湊函數應用的數位簽章流程。

E)憑證-避免中間人攻擊

    不過,經過數位簽章過的資訊,尚無法解決一個俗稱「掉包」的風險,也就是駭客在中途將公開金鑰掉包,替換為自己的公開金鑰,這就是所謂的「中間人攻擊」。
要怎麼來預防中間人攻擊呢?從上面的流程中,我們可看出問題的所在,是公開金鑰沒有被認證,如果我們能在取得金鑰的同時就進行比對,確認這把金鑰是誰發出的,就可以防止此金鑰中途被人掉包。

憑證

    憑證就是在公開金鑰上,再加上數位簽章,就可以認證該金鑰是誰所擁有的。
    不過,它需要一個公正及受信賴的第三方(憑證機構,我們稱為Certification Authority,CA),針對使用者的個人身份資料以及使用者本身的公鑰,進行簽署認證的動作,若正確無誤,則核發數位憑證,而此憑證為了保證有效性,因此有一定的使用期限,並非永久有效。