網頁

搜尋此網誌

2015年9月24日 星期四

Cryptosystem 密碼系統

這篇記錄密碼系統 (Cryptosystem) 的分類

依安全性程度

  • 無條件安全 (Unconditionally Secure)
  • 計算安全 (Computationally Secure)

依加解密資料的處理方式

  • 串流 (Stream) 密碼系統:每次加解密一個 bit 或一個 byte。
  • 區塊 (Block) 密碼系統:以數個 bits 或數個 bytes 為一個單位進行加解密。

依加解密資料的格式

  • 文字 (Text)
  • 多媒體 (Multimedia)

依加解密金鑰的異同

並列出著名的加解密方法 (演算法),與其加密模式、加密方式。
  • 秘密金鑰密碼系統 (Secret-Key Cryptosystems),也稱對稱式密碼系統 (Symmetric Cryptosystems)、單金鑰密碼系統 (One-Key Cryptosystems)。
    • 資料加密標準 (Data Encryption Standard, DES):56 位元金鑰,以64位元為區塊加解密。若明文超過區塊大小則切割成數個區塊處理,各個區塊加解密的處理方式有下列加密模式:
      • ECB (Electronic Code Book) 加密模式:每個區塊各自獨立加解密處理。
      • CBC (Cipher Block Chaining) 加密模式:利用初始化向量 (IV) 與第一個明文區塊進行XOR運算後加密,第一個密文與第二個明文XOR運算後加密。
      • CFB (Cipher Feed Back) 加密模式:初始化向量加密後與第一個明文區塊進行XOR運算,第一個密文加密後與第二個明文區塊進行XOR運算。
      • OFB (Output Feed Back) 加密模式:初始化向量加密後與第一個明文區塊進行XOR運算,初始化向量加密二次後與第二個明文區塊進行XOR運算。
    • 三重資料加密標準(Triple Data Encryption Standard, Triple-DES 或 3DES):串接 3 個 DES 使用,金鑰為168 位元或112位元,一樣以64位元為區塊加解密。。
    • 先進加密標準 (Advanced Encryption Standard, AES),金鑰長度為 128、192 或 256 位元,128 位元區塊加解密,使用 Rijndael 演算法 (讀作“Rain Doll“)。
  • 公開金鑰密碼系統 (Public-Key Cryptosystems),也稱非對稱式密碼系統 (Asymmetric Cryptosystems)、雙金鑰密碼系統 (Two-Key Cryptosystems)。
    • RSA:第一個公開金鑰密碼系統,由 MIT 的 Ron Rivest, Adi Shamir, 與 Leonard Adleman 三位教授所發明,取其性是第一個字母而稱 RSA。目前標準為 PKCS#1或  RFC 3447。基於質因數分解,相同的明文會對應到相同的秘文。
    • ElGamal:基於解離散對數 (Discrete logarithm),相同的明文會對應到不同的秘文,密文長度為明文的 2 倍。
    • 橢圓曲線 (Elliptic curve):基於橢圓曲線的有限域 (finite field),其加解密的運算量較少 (與 RSA 和 ElGamal 相比之下)。
根據參考資料描述:「一般來說,對稱式密碼系統的加解密速度大約比非對稱式密碼系統快1000倍。」因此,為了解決金鑰管理和運算量的問題,通常會使用對稱式與非對稱式所組合成的混合式加密機制。另外,在非對稱式密碼系統的標準中,沒有明確規範金鑰長度。

參考資料: 黃明祥、林詠章著,資訊與網路安全概論(第二版):建構安全的電子商務系統,台北市:麥格羅希爾,2007。

###

2015年8月7日 星期五

Agile, Lean, Kanban 敏捷, 精實, 看板

這篇記錄軟體開發方法的一些原則

敏捷軟體開發 (Agile Software Development)

敏捷軟體開發的 4 大價值觀 (values)
  • 個人與互動 重於 流程與工具
    Individuals and interactions over processes and tools
  • 可用的軟體 重於 詳盡的文件
    Working software over comprehensive documentation
  • 與客戶合作 重於 合約協商
    Customer collaboration over contract negotiation
  • 回應變化 重於 遵循計劃
    Responding to change over following a plan
敏捷軟體的 12 個原則 (principles)
  1. 我們最優先的任務,是透過及早並持績地交付有價值的軟體來滿足客戶需求。
    Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
  2. 竭誠歡迎改變需求,甚至已處開發後期亦然。敏捷流程掌控變更,以維護客戶的競爭優勢。
    Welcome changing requirements, even late in development. Agile processes harness change for  the customer's competitive advantage.
  3. 經常交付可用的軟體,頻率可以從數週到數個月,以較短時間間隔為佳。
    Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
  4. 業務人員與開發者必須在專案全程中天天一起工作。
    Business people and developers must work together daily throughout the project.
  5. 以積極的個人來建構專案,給予他們所需的環境與支援,並信任他們可以完成工作。
    Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
  6. 面對面的溝通是傳遞資訊給開發團隊及團隊成員之間效率最高且效果最佳的方法。
    The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
  7. 可用的軟體是最主要的進度量測方法。
    Working software is the primary measure of progress.
  8. 敏捷程序提倡可持續的開發。贊助者、開發者及使用者應當能不斷地維持穩定的步調。
    Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
  9. 持續追求優越的技術與優良的設計,以強化敏捷性。
    Continuous attention to technical excellence and good design enhances agility.
  10. 精簡──或最大化未完成工作量之技藝──是不可或缺的。
    Simplicity--the art of maximizing the amount of work not done--is essential.
  11. 最佳的架構、需求與設計皆來自於能自我組織的團隊。
    The best architectures, requirements, and designs emerge from self-organizing teams.
  12. 團隊定期自省如何更有效率,並據之適當地調整與修正自己的行為。
    At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.

精實軟體開發 (Lean Software Development)

精實軟體開發的 7 大原則,源自於 Mary Poppendieck & Tom Poppendieck 在 2003 年出版的著作:Lean Software Development: An Agile Toolkit
  1. 消除浪費 (Eliminate waste)
  2. 增強學習 (Amplify learning)
  3. 盡量延遲決策 (Decide as late as possible)
  4. 盡快交付 (Deliver as fast as possible)
  5. 授權團隊 (Empower the team)
  6. 嵌入完整性 (Build integrity in)
  7. 著眼整體 (See the whole)

看板方法 (Kanban Method)

看板方法是由 David J. Anderson 在 2005 年所創造的流程控制方法。

看板方法的 4 個基本原則 (foundational principles)
  1. 從既有的流程開始
    Start with existing process
  2. 同意持續增量、漸進的變化
    Agree to pursue incremental evolutionary change
  3. 尊重當前的流程、角色、職責和頭銜
    Respect the current process, roles, responsibilities and titles
  4. 鼓勵各層級的領導行為
    Leadership at all levels
看板方法的 6 個實務 (core practices)
  1. 步驟1:視覺化
    Visualize
  2. 步驟2:限制半成品 (WIP) 數量
    Limit Work-In-Progress
  3. 步驟3:管理工作流程
    Manage flow
  4. 策略4:讓規則明確
    Make policies explicit
  5. 策略5:落實回饋循環
    Implement feedback loops
  6. 策略6:由協作改善,經實驗演進
    Improve collaboratively, evolve experimentally using models and the scientific method

參考資料
###

熱門文章