# Crypto [Learning] - Basic Concepts > [name=D] ## 資安的基本需求 ### CIA - ==機密性 Confidentiality== - 資料隱私的保護,未經授權者無法存取(讀取、瀏覽、列印) - ==完整性 Integrity== - 資料內容的完整,未經授權者無法更改(新增、更正、更新、刪除) - ==可用性 Availability== - 資料有效的存取,資料內容和格式均沒有錯誤,資訊系統可以正常運作(不被毀壞、延遲使用) ### 其他範疇 - 鑑別性 Authentication - 身分鑑別:系統需要快速且正確的驗證使用者身分 - 資料訊息來源鑑別:避免惡意的傳送者假冒原本的傳送者傳送不安全的訊息內容 - 方式:數位簽章、資料加密 - 不可否認性 Non-Repudiation - 傳送方跟接收方都不能否認自己曾經進行資料傳輸、接收及交易等行為 - 買家不能否認自己沒有在某網站買過東西 - 賣家不能否認自己沒有收到某買家的訂單 - 方式:數位簽章、公開金鑰基礎架構(PKI) - 存取控制 Access Control - 資訊系統內會依照每位使用者的不同,給予不同的使用權限 - 稽核 Accountabiliy - 藉由稽核紀錄 (Audit Log) 來追蹤非法使用者的入侵、攻擊 ## 資安的攻擊分類 - 被動攻擊 Passive Attacks - 試圖了解或利用系統的資訊,但不影響系統資源,不涉及對數據的更改,所以很難被發現,因此要解決被動攻擊,應該要預防,而不是檢測 - 對傳輸進行竊聽和偵測 - 信息內容的洩漏 release of message contents - 流量分析 traffic analysis  - 主動攻擊 Active Attacks - 試圖改變系統資源或影響系統運作,會對數據進行更改或偽造,所以很容易被發現,因此此攻擊不容易預防,但容易被檢測 - 對數據進行更改和偽造 - 偽造 masquerade  - 重送 replay  - 訊息修改 modification of message  - 拒絕服務 denial of service  - 被動攻擊 v.s. 主動攻擊  ## 實現傳送訊息的安全方法 - 網路下的安全模型  - 設計一個在安全傳送下,所適用的演算法 - 透過此演算法,產生一把金鑰 - 設計可以分配和分享此金鑰的方法 - 指定雙方所使用的協議,該協議可以透過安全演算法和金鑰實現安全服務 ## 密碼 == password? cipher? cryptography? > 當說到 **密碼** 時,我們或許會連想到 **password**, **cipher**, **cryptography** 的英文單字,但其實他們的差異非常大,在正式學習密碼學之前,這些觀念是有必要先釐清的。 - password 通行碼 - 是我們平常在登入頁面時,看到的密碼欄位,雖然我們在生活中常說要登入帳號密碼,但其實在這邊講密碼並不是正確的,因為 password 是通行碼,而不算是密碼,所以應該說輸入使用者自己的帳號 (account or username) 與通行碼 (password) 後,就可以成功登入。 - Wikipedia : https://zh.wikipedia.org/zh-tw/%E5%AF%86%E7%A2%BC_(%E8%AA%8D%E8%AD%89) - cipher 密碼演算法 - 是一種用於執行加密(encipher) / 解密(decipher)的演算法,也可以被說一種加密器 / 解密器,像是我們常聽聽到的 Caesar Cipher, Playfair Cipher 等等,都是 cipher 的例子。 - Wikipedia : https://zh.wikipedia.org/zh-tw/%E5%AF%86%E7%A2%BC - cryptography 密碼學 - 是一種研究信息保護和通訊安全的科學,就像是我們會說經濟學、哲學、心理學、生物學等等。 - Wikipedia : https://zh.wikipedia.org/wiki/%E5%AF%86%E7%A0%81%E5%AD%A6 ## 在密碼學中常見的用詞 > 學習密碼學中會出現什麼用詞前,我們可以先思考為什麼要有密碼學?密碼學可以幹嘛,可以在生活中帶給我們什麼效益呢? > > 首先可以透過生活中我們會偷偷摸摸做的事情下手,先想像一下現在是上課時間,但你想跟你的朋友講秘密,但由於現在是上課時間,再加上你跟你的朋友都怕被老師罵,所以上課期間絕對不能直接聊天,但又礙於你們的座位很遠,所以只剩下一種方法,那就是交換紙條,但是在交換紙條的過程中,會經過很多同學,你們的聊天內容又不想被其他同學看到,那這時就很需要密碼學了,用一種你跟你的朋友才看得懂的方法來將紙條做加密和解密吧 ! 這樣在過程中,即使其他人偷看到紙條了,也看不懂內容。 > > 再來可以思考的更廣一點,在現今社會中,我們不只是跟朋友們用訊息聊天,我們也常常需要在網站上傳送自己的資料,那這時如果沒有做加密,當你上傳完資料後,在網路上的所有人都很有機會看到你的個資,如果又是被有心人士利用了,那將會更危險,所以密碼學在社會中是相當重要的,其實也是我們每天都會接觸的學問。 - 需要哪些東西 - 紙條 - ==明文 Plaintext (M)== : 加密前的原始內容 - ==密文 Ciphertext \(C)== : 加密後的內容,大多是大家都看不懂的無意義文字 - 動作 - ==加密 Encryption (E)== : 將明文轉成密文 - ==解密 Decryption (D)== : 將密文轉成明文 - 用什麼東西執行動作 - ==金鑰 Key (K)== - 過程 -  - 公式 - ==C = E~k~(M)== / ==C = E(k, M)== - ==M = D~k~\(C) = D~k~(E~k~(M))== / ==M = D(k, C)== - 重要觀念 - 現代的加解密演算法都變為標準且公開,使用者僅保存私有金鑰 - 如果加解密演算法沒公開的話,傳送者跟接收者用不同的加解密方法,根本沒有辦法看到內容,相容性也會遇到問題 ## 密碼系統的分類 - 根據**加解密金鑰** - ==Secret-Key Cryptosystems 秘密金鑰密碼系統== - ==Symmetric Cryptosystems 對稱式密碼系統== - One-Key Cryptosystems 單金鑰密碼系統 - 傳送者與接收者都分享同一把 key - 加密解密所用的 key 為同一把,且只有一把 - key 要保密 - e.x. DES, AES - ==Public-Key Cryptosystems 公開金鑰密碼系統== - ==Asymmetric Cryptosystems 非對稱式密碼系統== - Two-Keys Cryptosystems 雙金鑰密碼系統 - 加密解密所用的 key 為不同把,分兩把 - 加密金鑰為 public key,要公開 - 解密金鑰為 private key,要保密 - e.x. RSA - 根據**處理(加解密)資料量的方式** - ==block 區塊密碼系統== - 以 block(數個位元) 為處理單元 - e.x. DES, IDEA - ==stream 串流密碼系統== - 以 bit 為處理單元 - e.x. RC4, OTP - 根據**加解密的運算方式** - ==Transporsition 置換法== - ==Substitution 替代法== ## 密碼系統的評估 ### 保密程度 > 破密者除了無法得知解密金鑰,但加解密演算法、密文都得知 - 從上到下,攻擊方式愈來愈厲害,如果能抵擋下面的攻擊方式,就可以說其保密程度很高 | 攻擊類型 | 破密者已知的訊息 | 破密者得到的訊息 | | ------------ | ---------------------------------------- | ----------------------------------------- | | 密文攻擊 | 加解密演算法、密文 | 密文 => 明文 | | 已知明文攻擊 | 加解密演算法、密文、與其相對應的明文 | 明文-密文配對 => 解密金鑰、其他密文、明文 | | 選擇明文攻擊 | 加解密演算法、選擇明文、與其相對應的密文 | 明文-密文配對 => 解密金鑰、其他密文 | | 選擇密文攻擊 | 加解密演算法、選擇密文、與其相對應的明文 | 明文-密文配對 => 解密金鑰、其他密文 | ## 關於通行碼常見的攻擊 - ==字典攻擊法 Dictionary Attack== - 以字典之中的單詞來測試使用者的通行碼 - ==窮舉攻擊法 Exhaustive Search Attack / Brute-Force Attack== - 將所有英文字母和數字一一測試 - ==重送攻擊法 Replay Attack== - 駭客即使不知道使用者加密處理前的通行碼,但如果駭客攔截到加密處理後通行碼,還是可以將此輸入到系統裡,通過驗證
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up