---
# System prepended metadata

title: Group Theory
tags: [數學工具]

---

# Group Theory
> 參考書目: William Stallings - Cryptography and Network Security
> 參考網站: [群-維基百科](https://zh.wikipedia.org/wiki/%E7%BE%A4)

**前言**: 在密碼學論文中，我們常會看到bilinear pairing這個東西。bilinear pairing定義了兩個群 G~1~、G~2~ mapping 到另一個群 G~T~ 的運算。我們可以看到它有一個很重要的元素-「Group」。那麼，Group是什麼呢?它有什麼樣的特性?為什麼我們需要它?這是這篇筆記想要探討的內容。

群論 (group theory) 是代數研究的分支 (Algebra)。所以在正式進入群論之前，簡單的介紹代數的概念。

在國小一開始我們學的四則運算中，我們會練習用四則運算的符號(運算子)和數字(運算元)去計算出一個結果。到了代數的世界裡，我們會把這些運算抽象化出來。運算元不再是一個實際的數字，而是一些一般化後的 notation。在代數研究中，我們會去研究這些==代數結構中有什麼樣的關係與特性==，而不去關心數字本身是什麼。(範例請見圖一)
###### 圖一、一個實際運算數字跟代數的例子
<center><img  src="//hackmd.io/_uploads/BkzYb-70h.png"></center>




在這系列的筆記中，將會介紹到群論裡常見的代數結構，包含環(Ring)、體(Field)...等等。各種群論中代數結構的關係圖請見圖二。
###### 圖二、Groups, Rings, and Fields
<center><img src="//hackmd.io/_uploads/Byyqdb7Rn.png"></center>


## Groups 群
簡單來說， ==群是一種集合(set)。並且比一般的集合來說更特別的是組成它的元素(element)是符合一定規則的元素。== 在數學表示中，一個群我們可以用 **G** 或 **{G,*}** 來表示它，代表了一個集合內的任取兩個元素 a, b 組成一個 ordered pair (a,b)間存在一個二元運算(binary operation)使(a*b)的運算結果仍是G裡面的一個元素。

>[name=熊] 對於群來說最重要的精神是「規則」，在Stallings的課本中提到 "These operations are subjects to spedific rules, which define the nature of the set."。我認為密碼學之所以需要群就是因為它有規則，在規則及符合規則的集合底下我們的元素都可以由這些規則推算出來，確保了我不會產生一個東西但運算後我解不回來的情況。

一個群應該符合以下公理(axioms):
---
* **Closure** : If $a$ and $b$ belongs to $G$, then $a\cdot b$ is also in $G$.
* **Assiciative** : $a \cdot (b \cdot c)=(a \cdot b) \cdot c$ for all $a$, $b$, and $c$ in $G$.
* **Identity element** : There is an element in $G$ such that $a \cdot e = e \cdot a = a$ for all $a$ in $G$.
* **Inverse element** : For each $a$ in $G$, there is an element $a^{\prime}$ in $G$ such that $a \cdot a^{\prime} = a^{\prime} \cdot a = e$.
