Skip to content

Latest commit

 

History

History
272 lines (212 loc) · 19.4 KB

basic.md

File metadata and controls

272 lines (212 loc) · 19.4 KB

Basic Concept of Cryptography

Definition

Characteristics of Cryptography

  • 機密性(Confidentiality):確保資料只會給對方看到
  • 完整性(Integrity):確保資料的完整性
  • 身份驗證(Authentication):傳送和接收都需要驗證
  • 不可否認性(Non-Reputation):提供雙方互動的證明

柯克霍夫原則 (Kerckhoffs’ principle)

  • 古典密碼學和現代密碼學最大的區別就是在有柯克霍夫原則後才開始有了變化,柯克霍夫原則(Kerckhoffs’ principle),大致上就是在強調即使密碼系統的任何細節被人知道了,只要密鑰(key)未洩漏,它也是安全的。換句話說,加密技術就算演算法被知道了,資料也不會有危險。

Elliptic Curve Cryptography

DSA (Digital Signature Algorithm)

EdDSA (愛德華茲曲線數字簽名算法)

  • SA,DSA,ECDSA,EdDSA和Ed25519都用於數字簽名,但只有RSA也可以用於加密。(ref)
    • RSA(Rivest–Shamir–Adleman)是最早的公鑰密碼系統之一,被廣泛用於安全數據傳輸。它的安全性取決於整數分解,因此永遠不需要安全的RNG(隨機數生成器)。與DSA相比,RSA的簽名驗證速度更快,但生成速度較慢。
    • DSA(數字簽名算法)是用於數字簽名的聯邦信息處理標準。它的安全性取決於離散的對數問題。與RSA相比,DSA的簽名生成速度更快,但驗證速度較慢。如果使用錯誤的數字生成器,可能會破壞安全性。
    • ECDSA(橢圓曲線數字簽名算法)是DSA(數字簽名算法)的橢圓曲線實現。橢圓曲線密碼術能夠以較小的密鑰提供與RSA相對相同的安全級別。它還具有DSA對不良RNG敏感的缺點。
    • EdDSA(愛德華茲曲線數字簽名算法)是一種使用基於扭曲愛德華茲曲線的Schnorr簽名變體的數字簽名方案。簽名創建在EdDSA中是確定性的,其安全性是基於某些離散對數問題的難處理性,因此它比DSA和ECDSA更安全,後者要求每個簽名都具有高質量的隨機性。
  • Ed25519是EdDSA簽名方案,但使用SHA-512 / 256和Curve25519;它是一條安全的橢圓形曲線,比DSA,ECDSA和EdDSA 提供更好的安全性,並且具有更好的性能。
    • spec256r1、spec256k1、ed25519都是簽名算法,而且是具體數字算法的實現。(ref)
    • spec256k1、spec256r1都屬於橢圓曲線數字簽名算法ECDSA(Elliptic Curve Digital Signature Algorithm)簽名的具體實現,只是橢圓曲線函數不同。是由NIST(National Institute of Standards and Technology)這個組織確定的。
    • ed25519屬於EdDSA (Edwards-curve Digital Signature Algorithm) 簽名算法的具體實現,是由ANFS組織推進的ed25519密鑰體系相關進展。

Homomorphic Encryption

-[Video]What is Homomorphic Encryption Explained | Paillier Cryptosystem | PHE | SHE | FHE -Partially Homomorphic Encryption (PHE) - only ADDITION or only MULTIPLICATION, but an infinite number of time -Somewtat Homomorphic Encryption (SHE) - both ADDITION & MULTIPLICATION, but for a limited number of times -Fully Homomorphic Encryption (FHE) - both ADDITION & MULTIPLICATION & an infinite number of times

Paillier Encryption (is a kind of PHE)

  • Paillier_cryptosystem
    • Choose two large prime numbers p and q randomly, gcd(pq,(p-1)(q-1))=1
    • Compute n = pq and $\lambda$=lcm(p-1,q-1)
  • Encryption
    • Let m be a message to be encrypted where 0<=m<n
    • Select random r where 0<r<n
    • Compute ciphertext as: c = g^m.r^n mod n^2
  • Homomorphic properties[ref]
    • A notable feature of the Paillier cryptosystem is its homomorphic properties along with its non-deterministic encryption (see Electronic voting in Applications for usage). As the encryption function is additively homomorphic, the following identities can be described :
      • Homomorphic addition of plaintexts
      • Homomorphic multiplication of plaintexts
  • [Video]Implementation of Homomorphic Encryption: Paillier
    • Tutorial and implementation by Python
  • [Video]Paillier's cryptosystem - Addtive homomorphic encryption
    • Tutorial and details

Decisional Diffie–Hellman (DDH)

Schnorr Digital Signature

-wiki -[Video]Schnorr Digital Signature

Strong RSA Assumption

Semantic Security

對於相同的明文稱作 x,則今天用同態加密方法 En去加密他,也就是得到 En(x)。對同樣的 x 和相同的 En計算 En(x) 100 次,你會發現這一百次出來的結果都不一樣。但是呢,你將這一百個值做解密,會發現給出的答案都是 10。( for 同態加密(homomorphic encryption))

Fiat-Shamir Heuristic(Transform/Paradigm)

Bitcoin Improvement Proposal (BIP)

ERC-20 / ERC721

  • ERC-20 代幣簡介
    • 在以太坊中,ERC 指的是以太坊評論請求。這些皆為概述以太坊程式化標準的技術文件。請勿與以太坊改進提案 (EIP) 混淆,這就像是比特幣的 BIP,可針對協定本身提出改善方案。另外,ERC 旨在建立可讓應用程式與合約輕鬆互動的慣例。
    • 穩定幣(與法幣掛鉤的代幣)通常會採用 ERC-20 代幣標準。其中一項範例就是稍早引用的 BUSD 合約交易,且大多數主流穩定幣也有提供此格式。
    • 若要遵循 ERC-20,則您的合約必須包含六項強制函數:totalSupply、balanceOf、transfer、transferFrom、approve 及 allowance。此外,您還可以指定 name、symbol 及 decimal 等可選函數。
  • 以太坊系列標準介紹(ERC20/ERC721)
    • ERC(Ethereum Request for Comment)並非一項技術或是程式,而是以太坊通用徵求意見協議(RFC)。
    • ERC為開發者提供了建設技術指導。而開發者可以通過提交EIP(Ethereum Improvement Proposal),向以太坊社區提交新的ERC標準提案。
    • 提交內容包括協議規範和合約標準。一旦該EIP獲得以太坊委員會的批准並最終定型,它就會成為一個新的ERC。

Unspent Transaction Output (UTXO)

  • 從比特幣上的一筆交易來看 UTXO 架構 【Day 4】
  • 什麼是UTXO?
    • UTXO (Bitcoin 採用)與 帳戶餘額模型(Account;Ethereum 採用) 優劣比較:
      • UTXO 可簽發多筆交易,並廣播到區塊鏈網路
      • 帳戶餘額模型易理解且容易編寫程式;而UTXO要考慮到輸入與輸出之間的關係,在程式上比較難編寫
      • 帳戶餘額模型的每一筆交易都只需要一個簽名,而輸入與輸出都是地址,能節省儲存空間。
      • UTXO只要驗證當前的交易是符合輸出與輸入規則,不用去追朔先前交易;而帳戶餘額模型只要金額有問題必須追朔先前交易的金流動向。
      • Account模型需要有更多的機制去保護資金;而UTXO對於雙花攻擊(Double Spending)與重放攻擊(Replay Attack)有先天的保護
  • These are a group of public-key cryptography standards devised and published by RSA Security LLC, starting in the early 1990s.
  • The company published the standards to promote the use of the cryptography techniques to which they had patents, such as the RSA algorithm, the Schnorr signature algorithm and several others.
  • 橢圓曲線迪菲-赫爾曼密鑰交換,是一種匿名的密鑰合意協議(Key-agreement protocol),這是迪菲-赫爾曼密鑰交換的變種,採用橢圓曲線密碼學來加強性能與安全性。
  • 在這個協定下,雙方利用由橢圓曲線密碼學建立的公鑰與私鑰對,在一個不安全的通道中,建立起安全的共有加密資料。
  • 臨時ECDH(ECDH Ephemeral,ECDHE)能夠提供前向安全性。
  • 前向保密(Forward Secrecy)有時也被稱為完全前向保密(Perfect Forward Secrecy,是密碼學中通訊協定的一種安全特性,指的是長期使用的主金鑰泄漏不會導致過去的對談金鑰泄漏。
  • 前向保密能夠保護過去進行的通訊不受密碼或金鑰在未來暴露的威脅。
  • 如果系統具有前向保密性,就可以保證在私鑰泄露時歷史通訊的安全,即使系統遭到主動攻擊也是如此。

Tutorial


Questions

Q1: Why ECDSA is better than RSA?

ECC vs. RSA Ref: NIST

addition addition1 Ref: [Video] Elliptic Curve Cryptography橢圓曲線密碼簡介(鄧安文教授)

Q2: How is Bitcoin Public key converted to address?

address address1


Resource