5 Indeks = Logaritma Diskret

Kita telah membahas subgrup siklik a\left<a\right> dari (/n)*({\mathbb Z}/n{\mathbb Z})^* yang dibangkitkan oleh unsur aa dalam bukti versi Teorema Lagrange 3.13, sebagai langkah menuju Teorema Euler 3.14. Ingat bahwa subgrup itu terdiri atas semua pangkat aa (lebih tepatnya, [a]n[a]_n) dalam (/n)*({\mathbb Z}/n{\mathbb Z})^*. Berikut beberapa contoh:

Subgrup siklik dari (/n)*({\mathbb Z}/n{\mathbb Z})^* untuk n=2,,8n=2,\dots,8
nn ϕ(n)\phi(n) (/n)*({\mathbb Z}/n{\mathbb Z})^* aa a\left<a\right> ordn(a)\operatorname{ord}_n(a)
2 1 {1}\{1\} 1 {1}\{1\} 1
3 2 {1,2}\{1,\ 2\} 1 {1}\{1\} 1
2 {2,221}\{2,\ 2^2\equiv1\} 2
4 2 {1,3}\{1,\ 3\} 1 {1}\{1\} 1
3 {3,321}\{3,\ 3^2\equiv1\} 2
5 4 {1,2,3,4}\{1,\ 2,\ 3,\ 4\} 1 {1}\{1\} 1
2 {2,224,233,241}\{2,\ 2^2\equiv4,\ 2^3\equiv3,\ 2^4\equiv1\} 4
3 {3,324,332,341}\{3,\ 3^2\equiv4,\ 3^3\equiv2,\ 3^4\equiv1\} 4
4 {4,421}\{4,\ 4^2\equiv1\} 2
6 2 {1,5}\{1,\ 5\} 1 {1}\{1\} 1
5 {5,521}\{5,\ 5^2\equiv1\} 2
7 6 {1,2,3,4,5,6}\{1,\ 2,\ 3,\ 4,\ 5,\ 6\} 1 {1}\{1\} 1
2 {2,224,231}\{2,\ 2^2\equiv4,\ 2^3\equiv1\} 3
3 {3,322,336,344,355,361}\{3,\ 3^2\equiv2,\ 3^3\equiv6,\ 3^4\equiv4,\ 3^5\equiv5,\ 3^6\equiv1\} 6
4 {4,422,431}\{4,\ 4^2\equiv2,\ 4^3\equiv1\} 3
5 {5,524,536,542,553,561}\{5,\ 5^2\equiv4,\ 5^3\equiv6,\ 5^4\equiv2,\ 5^5\equiv3,\ 5^6\equiv1\} 6
6 {6,621}\{6,\ 6^2\equiv1\} 2
8 4 {1,3,5,7}\{1,\ 3,\ 5,\ 7\} 1 {1}\{1\} 1
3 {3,321}\{3,\ 3^2\equiv1\} 2
5 {5,521}\{5,\ 5^2\equiv1\} 2
7 {7,721}\{7,\ 7^2\equiv1\} 2

Setiap subgrup siklik a\left<a\right> ini mempunyai ukuran, yakni orde ordn(a)\operatorname{ord}_n(a) dari pembangkitnya, yang membagi ukuran grup induk (/n)*({\mathbb Z}/n{\mathbb Z})^*, sebagaimana dijamin oleh versi Teorema Lagrange 3.13.

Dengan bukti yang masih sangat terbatas pada tabel ini, kita juga dapat membuat beberapa pengamatan sementara yang mungkin benar secara umum, mungkin juga tidak:

  • sering kali terdapat unsur aa yang membangkitkan subgrup siklik sebesar mungkin: a=(/n)*\left<a\right>=({\mathbb Z}/n{\mathbb Z})^*;

  • grup satuan (/n)*({\mathbb Z}/n{\mathbb Z})^* tampaknya selalu mempunyai subgrup siklik sebesar itu ketika nn prima;

  • bahkan beberapa nn komposit menghasilkan (/n)*({\mathbb Z}/n{\mathbb Z})^* yang mempunyai subgrup siklik besar, kecuali pangkat 22 terbesar yang telah kita coba, yaitu n=23n=2^3.

Untuk melihat apakah dugaan umum sementara itu masih bertahan, mari kita hitung dua contoh lagi. Demi menghemat tempat, kita hanya mencantumkan ukuran (/n)*({\mathbb Z}/n{\mathbb Z})^* dan a\left<a\right>, bukan daftar lengkap unsurnya; unsur-unsur (/n)*({\mathbb Z}/n{\mathbb Z})^* sendiri dapat dibaca pada kolom berlabel “aa”:

Subgrup siklik dari (/n)*({\mathbb Z}/n{\mathbb Z})^* untuk n=16n=16 dan n=17n=17
nn ϕ(n)\phi(n) a(/n)*a\in({\mathbb Z}/n{\mathbb Z})^* ordn(a)\operatorname{ord}_n(a)
16 8 1 1
3 4
5 4
7 2
9 2
11 4
13 4
15 2
17 16 1 1
2 8
3 16
4 4
5 16
6 16
7 16
8 8
9 8
10 16
11 16
12 16
13 4
14 16
15 8
16 2

Dugaan kita (pangkat besar dari 22 kurang baik; nilai nn lain, terutama yang prima, lebih baik) masih bertahan. Tentu saja, bukti empiris berhingga sebanyak apa pun belum dapat memastikan pernyataan matematika yang bersifat umum.

Sekarang kita beralih ke analisis formal.

5.1 Sifat-Sifat Lain Orde Multiplikatif

Sebelum itu, kita memerlukan beberapa fakta tambahan tentang orde [multiplikatif].

Teorema 5.1. Misalkan nn\in{\mathbb N} dan aa\in{\mathbb Z} memenuhi n2n\ge2 dan gcd(a,n)=1\gcd(a,n)=1. Maka, untuk kk\in{\mathbb N}, berlaku ak1(modn)a^k\equiv1\pmod{n} jika dan hanya jika ordn(a)k\operatorname{ord}_n(a)\mid k.

Bukti. Satu arah sangat mudah: jika kk\in{\mathbb N} memenuhi ordn(a)k\operatorname{ord}_n(a)\mid k, maka d\exists d\in{\mathbb N} sedemikian sehingga k=ordn(a)dk=\operatorname{ord}_n(a)\cdot d. Jadi, ak=aordn(a)d=(aordn(a))d1d=1(modn).a^k=a^{\operatorname{ord}_n(a)\cdot d}=(a^{\operatorname{ord}_n(a)})^d\equiv1^d=1\pmod{n}\ .

Sebaliknya, misalkan kk\in{\mathbb N} memenuhi ak1(modn)a^k\equiv1\pmod{n}. Terapkan Algoritma Pembagian untuk memperoleh q,r0q,r\in{\mathbb Z}_{\ge0} sedemikian sehingga k=ordn(a)q+rk=\operatorname{ord}_n(a)\cdot q+r dan 0r<ordn(a)0\le r<\operatorname{ord}_n(a). Maka 1ak=aordn(a)q+r=(aordn(a))qar1qarar(modn).1\equiv a^k=a^{\operatorname{ord}_n(a)\cdot q + r}=(a^{\operatorname{ord}_n(a)})^q\cdot a^r\equiv1^q\cdot a^r\equiv a^r\pmod{n}\ . Namun, menurut definisi orde, ordn(a)\operatorname{ord}_n(a) adalah bilangan bulat positif terkecil yang membuat aa berpangkat bilangan tersebut kongruen dengan 1. Karena itu, ar1(modn)a^r\equiv1\pmod{n} dan 0r<ordn(a)0\le r<\operatorname{ord}_n(a) hanya mungkin jika r=0r=0. Jadi, k=ordn(a)qk=\operatorname{ord}_n(a)\cdot q dan ordn(a)k\operatorname{ord}_n(a)\mid k, seperti yang diinginkan. ◻

Artinya, ketika bekerja dalam subgrup siklik dari (/n)*({\mathbb Z}/n{\mathbb Z})^* yang dibangkitkan oleh suatu unsur aa, kita harus memperlakukan pangkat-pangkat aa seolah-olah pangkat tersebut hidup dalam /(ordn(a)){\mathbb Z}/(\operatorname{ord}_n(a)){\mathbb Z}. Tepatnya:

Teorema 5.2. Misalkan nn\in{\mathbb N} dan aa\in{\mathbb Z} memenuhi n2n\ge2 dan gcd(a,n)=1\gcd(a,n)=1. Maka, untuk j,kj,k\in{\mathbb N}, berlaku ajak(modn)a^j\equiv a^k\pmod{n} jika dan hanya jika jk(modordn(a))j\equiv k\pmod{\operatorname{ord}_n(a)}.

Bukti. Sekali lagi, satu arah sangat mudah. Misalkan j,kj,k\in{\mathbb N} memenuhi jk(modordn(a))j\equiv k\pmod{\operatorname{ord}_n(a)}. Karena kesimpulannya simetris dalam jj dan kk, tanpa mengurangi keumuman ambil jkj\ge k. Dengan demikian, 0\exists\ell\in{\mathbb Z}_{\ge0} sedemikian sehingga j=k+ordn(a)j=k+\operatorname{ord}_n(a)\cdot\ell, dan aj=ak+ordn(a)=ak(aordn(a))ak1=ak(modn).a^j=a^{k+\operatorname{ord}_n(a)\cdot\ell}=a^k\cdot (a^{\operatorname{ord}_n(a)})^\ell\equiv a^k\cdot1^\ell=a^k\pmod{n}\ .

Sebaliknya, misalkan j,kj,k\in{\mathbb N} memenuhi ajak(modn)a^j\equiv a^k\pmod{n}. Jika j=kj=k, kesimpulannya langsung berlaku. Jika jkj\ne k, tanpa mengurangi keumuman ambil j>kj>k, sehingga jkj-k\in{\mathbb N}. Kalikan kedua ruas kongruensi dengan (a1)k(a^{-1})^k, yang ada karena gcd(a,n)=1\gcd(a,n)=1. Kita memperoleh ajk1(modn)a^{j-k}\equiv1\pmod{n}. Menurut Teorema 5.1, ordn(a)(jk)\operatorname{ord}_n(a)\mid(j-k), atau dengan kata lain jk(modordn(a))j\equiv k\pmod{\operatorname{ord}_n(a)}. ◻

Contoh 5.3. Baris-baris pada Tabel 5.1 memperlihatkan Teorema 5.1 dan 5.2: banyaknya unsur dalam setiap subgrup siklik (baris) membagi nilai ϕ(n)\phi(n) yang bersesuaian, dan pangkat pembangkit aa hanya ditentukan modulo ordn(a)\operatorname{ord}_n(a).

Tampaknya, beberapa subgrup siklik yang lebih kecil juga kadang-kadang muncul sebagai himpunan bagian dari subgrup siklik yang lebih besar. Jadi, modulo n=7n=7, jika a=3a=3 dan b=a22b=a^2\equiv2, kita mempunyai inklusi ba\left<b\right>\subset\left<a\right>. Di sini, b\left<b\right> terdiri atas separuh unsur a\left<a\right>, yaitu pangkat-pangkat genap dari aa: b={b,b2,b3}={2,4,1}={32,34,36}{3,32,33,34,35,36}=a\left<b\right>=\left\{b,\ b^2,\ b^3\right\}=\left\{2,\ 4,\ 1\right\}=\left\{3^2,\ 3^4,\ 3^6\right\}\subset\left\{3,\ 3^2,\ 3^3,\ 3^4,\ 3^5,\ 3^6\right\}=\left<a\right> Jika kita beralih ke c=336c=3^3\equiv6, tetap berlaku ca\left<c\right>\subset\left<a\right>, tetapi sekarang c\left<c\right> terdiri atas sepertiga unsur a\left<a\right>, yakni pangkat-pangkat aa yang merupakan kelipatan 33: c={c,c2}={6,1}={33,36}{3,32,33,34,35,36}=a\left<c\right>=\left\{c,\ c^2\right\}=\left\{6,\ 1\right\}=\left\{3^3,\ 3^6\right\}\subset\left\{3,\ 3^2,\ 3^3,\ 3^4,\ 3^5,\ 3^6\right\}=\left<a\right>

Bagian terakhir contoh ini mengisyaratkan suatu pernyataan umum: seberapa besar himpunan bagian dari subgrup siklik a\left<a\right> yang dibentuk oleh subgrup siklik ak\left<a^k\right> untuk suatu kk\in{\mathbb N}? Ukurannya adalah orde unsur aka^k tersebut, sehingga kita memerlukan teorema berikut.

Teorema 5.4. Misalkan nn\in{\mathbb N} dan aa\in{\mathbb Z} memenuhi n2n\ge2 dan gcd(a,n)=1\gcd(a,n)=1. Maka, k\forall k\in{\mathbb N}, ordn(ak)=ordn(a)gcd(ordn(a),k)\displaystyle\operatorname{ord}_n(a^k)=\frac{\operatorname{ord}_n(a)}{\gcd(\operatorname{ord}_n(a),k)}.

Bukti. Tetapkan suatu kk\in{\mathbb N}, lalu tuliskan r=ordn(ak)r=\operatorname{ord}_n(a^k) dan s=ordn(a)s=\operatorname{ord}_n(a). Dengan notasi ini, kita hendak membuktikan bahwa r=sgcd(s,k)\displaystyle r=\frac{s}{\gcd(s,k)}.

Dalam bukti ini kita akan berulang kali menggunakan fakta bahwa, karena gcd\gcd merupakan pembagi, gcd(s,k)s\gcd(s,k)\mid s dan gcd(s,k)k\gcd(s,k)\mid k. Oleh sebab itu, sgcd(s,k),kgcd(s,k)\displaystyle\frac{s}{\gcd(s,k)},\frac{k}{\gcd(s,k)}\in{\mathbb N}.

Sekarang kita mulai pembuktiannya.

Menurut definisi orde, rr adalah bilangan asli terkecil yang memenuhi (ak)r1(modn)(a^k)^r\equiv1\pmod{n}. Perhatikan bahwa (ak)sgcd(s,k)=(as)kgcd(s,k)1kgcd(s,k)=1(modn).(a^k)^{\frac{s}{\gcd(s,k)}}=(a^s)^{\frac{k}{\gcd(s,k)}}\equiv 1^{\frac{k}{\gcd(s,k)}}=1\pmod{n}\ .

Menurut Teorema 5.1, kita menyimpulkan bahwa r(sgcd(s,k))\displaystyle r\mid \left(\frac{s}{\gcd(s,k)}\right).

Terlepas dari sifat minimalnya, karena akr=(ak)r1(modn)a^{kr}=(a^k)^r\equiv1\pmod{n}, Teorema 5.1 memberikan skrs\mid kr. Jadi, m\exists m\in{\mathbb N} sedemikian sehingga ms=krms=kr. Dengan membagi kedua ruas oleh gcd(s,k)\gcd(s,k), kita memperoleh persamaan bilangan asli m(sgcd(s,k))=(kgcd(s,k))r;m \left(\frac{s}{\gcd(s,k)}\right)=\left(\frac{k}{\gcd(s,k)}\right) r; yang berarti sgcd(s,k)(kgcd(s,k))r.\frac{s}{\gcd(s,k)}\mid \left(\frac{k}{\gcd(s,k)}\right)r\ . Menurut Teorema 1.26, gcd(sgcd(s,k),kgcd(s,k))=1\displaystyle\gcd\left(\frac{s}{\gcd(s,k)},\frac{k}{\gcd(s,k)}\right)=1, maka Lemma Euklides 2.6 menyatakan bahwa sgcd(s,k)r\displaystyle\frac{s}{\gcd(s,k)}\mid r.

Kita telah menunjukkan bahwa rr dan sgcd(s,k)\displaystyle\frac{s}{\gcd(s,k)} saling membagi. Dengan demikian, keduanya sama, seperti yang hendak dibuktikan. ◻

Latihan untuk §5.1

Latihan 5.1. Misalkan nn\in{\mathbb N} memenuhi n2n\ge2. Buktikan bahwa jika terdapat a(/n)*a\in({\mathbb Z}/n{\mathbb Z})^* sedemikian sehingga ordn(a)=n1\operatorname{ord}_n(a)=n-1, maka nn prima.

Latihan 5.2. Misalkan pp adalah bilangan prima ganjil dan a(/p)*a\in({\mathbb Z}/p{\mathbb Z})^*. Buktikan bahwa jika k\exists k\in{\mathbb N} sedemikian sehingga ordp(a)=2k\operatorname{ord}_p(a)=2k, maka ak1(modp)a^k\equiv-1\pmod{p}. [Petunjuk: lihat bukti Lemma 3.8.]

Latihan 5.3. Misalkan nn\in{\mathbb N} memenuhi n2n\ge2 dan a,ba,b\in{\mathbb Z} memenuhi gcd(a,n)=gcd(b,n)=1\gcd(a,n)=\gcd(b,n)=1. Buktikan bahwa ordn(ab)ordn(a)ordn(b).\operatorname{ord}_n(ab)\mid\operatorname{ord}_n(a)\operatorname{ord}_n(b)\ .

Latihan 5.4. Buktikan, dengan melengkapi perincian kerangka berikut, bahwa terdapat tak berhingga banyak bilangan prima yang kongruen dengan 1 modulo 4:

  1. Buktikan: jika bilangan prima ganjil pp dan nn\in{\mathbb Z} memenuhi n21(modp)n^2\equiv-1\pmod{p}, maka 4ϕ(p)4\mid\phi(p) [gunakan sebuah teorema dalam bagian ini]. Mengapa bilangan prima genap harus dikecualikan di sini?

  2. Jadi, untuk nn\in{\mathbb Z}, setiap pembagi prima ganjil dari n2+1n^2+1 kongruen dengan 1 modulo 4.

  3. Sekarang, andaikan demi memperoleh kontradiksi bahwa hanya terdapat berhingga banyak bilangan prima p1,,pnp_1,\dots,p_n yang kongruen dengan 1 modulo 4, lalu tinjau bilangan (2p1pn)2+1(2p_1\cdot\dots\cdot p_n)^2+1. Terapkan langkah sebelumnya ….

5.2 Selingan yang Diperlukan: Teorema Gauss tentang Jumlah Nilai Fungsi Phi Euler

Kelak dalam bab ini, kita akan memerlukan sebuah fakta tentang fungsi ϕ\phi Euler yang pertama kali dibuktikan oleh Gauss:

Teorema 5.5. Untuk setiap nn\in{\mathbb N},  ddnϕ(d)=n.\displaystyle\sum_{\substack{d\in{\mathbb N}\\d\mid n}} \phi(d) = n\ .

Kita akan memberikan dua bukti yang menyoroti aspek berbeda dari identitas ini:

Bukti 1. Tetapkan nn\in{\mathbb N}.

Untuk setiap pilihan pembagi positif dnd\mid n, definisikan himpunan bagian dari {1,,n}\{1,\dots,n\} berikut: Sd={k1kndangcd(k,n)=d}.S_d=\left\{k\in{\mathbb N}\mid 1\le k\le n\ \text{dan}\ \gcd(k,n)=d\right\}\ .

Himpunan-himpunan ini saling lepas. Memang, untuk setiap kk\in{\mathbb N} dengan 1kn1\le k\le n, nilai d=gcd(k,n)d=\gcd(k,n) sudah tertentu, sehingga kk hanya berada dalam SdS_d tersebut.

Untuk kSdk\in S_d, berlaku gcd(k,n)=d\gcd(k,n)=d. Menurut Teorema 1.26, gcd(k/d,n/d)=1\gcd(k/d,n/d)=1. Jadi, #(Sd)\#(S_d) adalah banyaknya unsur \ell\in{\mathbb N} dalam rentang 1n/d1\le\ell\le n/d yang relatif prima terhadap n/dn/d; dengan kata lain, #(Sd)=ϕ(n/d)\#(S_d)=\phi(n/d).

Setiap kk\in{\mathbb Z} dalam rentang 1kn1\le k\le n berada tepat dalam satu SdS_d semacam ini, dengan dd suatu pembagi positif dari nn. Oleh karena itu, {1,,n}=ddnSd\{1,\dots,n\} = \bigcup_{\substack{d\in{\mathbb N}\\d\mid n}} S_d sehingga n=#({1,,n})=#(ddnSd)=ddn#(Sd)=ddnϕ(n/d).n=\#\left(\{1,\dots,n\}\right) = \#\left(\bigcup_{\substack{d\in{\mathbb N}\\d\mid n}} S_d\right) = \sum_{\substack{d\in{\mathbb N}\\d\mid n}} \#\left(S_d\right) = \sum_{\substack{d\in{\mathbb N}\\d\mid n}} \phi(n/d)\ . Namun, ketika dd merentang seluruh pembagi positif nn, demikian pula n/dn/d. Dengan kata lain, {dd,1dn dan dn}={n/dd,1dn dan dn}\left\{d\mid d\in{\mathbb N},\ 1\le d\le n\text{\ dan\ }d\mid n\right\}=\left\{n/d\mid d\in{\mathbb N},\ 1\le d\le n\text{\ dan\ }d\mid n\right\}

Karena itu, persamaan besar terakhir dapat ditulis ulang sebagai n=ddnϕ(n/d)=ddnϕ(d)n=\sum_{\substack{d\in{\mathbb N}\\d\mid n}} \phi(n/d)=\sum_{\substack{d\in{\mathbb N}\\d\mid n}} \phi(d) seperti yang hendak dibuktikan. ◻

Bukti 2. Pendekatan ini berpusat pada fungsi F(n)=ddnϕ(d),F(n)=\sum_{\substack{d\in{\mathbb N}\\d\mid n}} \phi(d)\ , yang mempunyai beberapa sifat sangat baik.

Sebagai contoh, misalkan pp prima dan kk\in{\mathbb N}. Pembagi-pembagi pkp^k adalah 1,p,p2,,pk1,p,p^2,\dots,p^k, sehingga F(pk)=ϕ(1)+ϕ(p)+ϕ(p2)++ϕ(pk)=1+(p1)+(p2p)++(pkpk1)=pk.F(p^k)=\phi(1)+\phi(p)+\phi(p^2)+\dots+\phi(p^k) =1+(p-1)+(p^2-p)+\dots+(p^k-p^{k-1}) = p^k\ .

Selanjutnya, jika pp dan qq adalah bilangan prima berbeda, pembagi-pembagi pqpq adalah 11, pp, qq, dan pqpq. Selain itu, gcd(p,q)=1\gcd(p,q)=1. Jadi, menurut Teorema 2.33, F(pq)=ϕ(1)+ϕ(p)+ϕ(q)+ϕ(pq)=ϕ(1)+ϕ(p)+ϕ(q)+ϕ(p)ϕ(q)=(1+ϕ(p))(1+ϕ(q))=F(p)F(q).\begin{align*} F(pq)&=\phi(1)+\phi(p)+\phi(q)+\phi(pq)\\ &=\phi(1)+\phi(p)+\phi(q)+\phi(p)\phi(q)\\ &=(1+\phi(p))(1+\phi(q))\\ &=F(p)F(q)\ . \end{align*} Dari fakta ini, dapat dibuktikan (sebagai latihan di bawah) bahwa F(ab)=F(a)F(b)F(ab)=F(a)F(b) setiap kali a,ba,b\in{\mathbb N} relatif prima. Artinya, FF mempunyai sifat multiplikatif terhadap faktor-faktor yang relatif prima, sama seperti ϕ\phi.

Sekarang kita siap menyelesaikan bukti. Ambil sebarang nn\in{\mathbb N} dengan n>1n>1 (untuk n=1n=1, teorema ini langsung benar). Misalkan faktorisasi prima dari nn diberikan oleh n=p1k1prkr,n=p_1^{k_1}\cdot\cdots\cdot p_r^{k_r}\ , dengan {p1,,pr}\{p_1,\dots,p_r\} bilangan-bilangan prima yang berbeda. Karena itu, gcd(piki,pjkj)=1\gcd(p_i^{k_i},p_j^{k_j})=1 jika iji\neq j. Dengan memakai sifat multiplikatif FF dan perhitungan FF untuk pangkat-pangkat bilangan prima, kita menyimpulkan F(n)=F(p1k1prkr)=F(p1k1)F(prkr)=p1k1prkr=n,\begin{align*} F(n)&=F(p_1^{k_1}\cdot\cdots\cdot p_r^{k_r})\\ &=F(p_1^{k_1})\cdot\cdots\cdot F(p_r^{k_r})\\ &=p_1^{k_1}\cdot\cdots\cdot p_r^{k_r}\\ &=n\ , \end{align*} seperti yang hendak dibuktikan. ◻

Latihan untuk §5.2

Latihan 5.5. Selesaikan bukti kedua Teorema Gauss 5.5 dengan membuktikan bahwa F(ab)=F(a)F(b)F(ab)=F(a)F(b) untuk setiap a,ba,b\in{\mathbb N} yang relatif prima.

5.3 Akar Primitif

Sekarang kita kembali ke unsur-unsur yang membangkitkan subgrup siklik besar. Unsur-unsur tersebut mempunyai nama khusus:

Definisi 5.6. Untuk nn\in{\mathbb N} dengan n2n\ge2, unsur a(/n)*a\in({\mathbb Z}/n{\mathbb Z})^* disebut akar primitif modulo nn jika ordn(a)=ϕ(n)\operatorname{ord}_n(a)=\phi(n). Kita juga menyebut bilangan bulat xx\in{\mathbb Z} sebagai akar primitif modulo nn jika [x]n[x]_n merupakan akar primitif dalam pengertian yang baru saja didefinisikan.

Contoh 5.7. Dari kedua tabel dalam pendahuluan bab ini, kita dapat membaca akar-akar primitif berikut untuk setiap modulus nn:

Akar primitif untuk n=2,,8,16,17n=2,\dots,8,16,17
nn Akar primitif modulo nn ϕ(n)\phi(n) ϕ(ϕ(n))\phi(\phi(n))
2 1 1 1
3 2 2 1
4 3 2 1
5 2, 3 4 2
6 5 2 1
7 3, 5 6 2
8 tidak ada 4 2
16 tidak ada 8 4
17 3, 5, 6, 7, 10, 11, 12, 14 16 8

Kita menyertakan kolom ϕ(n)\phi(n) karena setiap akar primitif harus mempunyai orde tersebut. Kita juga menambahkan kolom ϕ(ϕ(n))\phi(\phi(n)) karena, seolah-olah melalui suatu keajaiban, nilai itu sering menghitung banyaknya akar primitif.

Mari kita nyatakan secara formal dan buktikan hasil umum yang tampak dalam contoh ini:

Teorema 5.8. Untuk nn\in{\mathbb N} dengan n2n\ge2, jika nn mempunyai akar primitif, maka nn mempunyai tepat ϕ(ϕ(n))\phi(\phi(n)) akar primitif.

Bukti. Misalkan a(/n)*a\in({\mathbb Z}/n{\mathbb Z})^* suatu akar primitif. Artinya, a={a,a2,aordn(a)}=(/n)*\left<a\right>=\left\{a,\ a^2,\ \dots\ a^{\operatorname{ord}_n(a)}\right\}=({\mathbb Z}/n{\mathbb Z})^* karena ordn(a)=ϕ(n)=#((/n)*)\operatorname{ord}_n(a)=\phi(n)=\#\left(({\mathbb Z}/n{\mathbb Z})^*\right). Setiap akar primitif lain bb, sebagai unsur (/n)*({\mathbb Z}/n{\mathbb Z})^*, harus merupakan salah satu pangkat aa tersebut. Dengan memilih wakil pangkat secara unik, terdapat tepat satu kk dengan 1kϕ(n)1\le k\le\phi(n) sedemikian sehingga b=akb=a^k.

Agar bb ini menjadi akar primitif, ordenya harus ϕ(n)\phi(n). Namun, menurut Teorema 5.4, ordn(b)=ordn(a)gcd(ordn(a),k)=ϕ(n)gcd(ϕ(n),k).\operatorname{ord}_n(b)=\frac{\operatorname{ord}_n(a)}{\gcd(\operatorname{ord}_n(a),k)} =\frac{\phi(n)}{\gcd(\phi(n),k)}\ .

Jadi, b=akb=a^k merupakan akar primitif jika dan hanya jika gcd(ϕ(n),k)=1\gcd(\phi(n),k)=1. Menurut definisi fungsi ϕ\phi Euler , di antara 1kϕ(n)1\le k\le\phi(n) terdapat tepat ϕ(ϕ(n))\phi(\phi(n)) nilai kk semacam itu. ◻

Mari kita lihat apakah, dalam keadaan tertentu, kita dapat membuktikan keberadaan akar primitif yang menjadi syarat awal teorema di atas. Keadaan termudah tampaknya terjadi ketika modulusnya prima, sebab dalam kasus itu kita mempunyai perangkat yang paling kuat.

Mencari unsur dengan orde tertentu dd antara lain berarti mencari solusi persamaan xd10(modp)x^d-1\equiv0\pmod{p}. Langkah pertamanya ialah teorema Lagrange berikut yang lebih umum mengenai polinomial modulo pp:

Teorema 5.9. Untuk nn\in{\mathbb N} dan a0,,ana_0,\dots,a_n\in{\mathbb Z}, polinomial

anxn++a1x+a00(modp),a_nx^n+\dots+a_1x+a_0\equiv0\pmod{p}\ , dengan an0(modp)a_n\not\equiv0\pmod{p} mempunyai paling banyak nn solusi dalam /p{\mathbb Z}/p{\mathbb Z} jika pp prima.

Bukti. Kita menggunakan induksi pada derajat nn. Kasus dasar n=1n=1 berarti menyelesaikan kongruensi linear a1x+a00(modp)a_1x+a_0\equiv0\pmod{p} dengan a10(modp)a_1\not\equiv0\pmod{p}. Karena pp prima, hal ini berarti gcd(p,a1)=1\gcd(p,a_1)=1. Jadi, menurut versi Teorema 2.13 yang dinyatakan dalam Catatan 2.14, kongruensi linear tersebut mempunyai solusi unik modulo pp.

Untuk langkah induksi, andaikan teorema benar untuk suatu nn\in{\mathbb N}, lalu kita buktikan kasus n+1n+1. Misalkan a0,,an+1a_0,\dots,a_{n+1}\in{\mathbb Z} memenuhi an+10(modp)a_{n+1}\not\equiv0\pmod{p}. Jika a(x)=an+1xn+1+anxn++a1x+a0a(x)=a_{n+1}x^{n+1}+a_nx^n+\dots+a_1x+a_0 tidak mempunyai akar modulo pp, teorema jelas benar untuk polinomial berderajat n+1n+1 ini: banyaknya solusi a(x)0(modp)a(x)\equiv0\pmod{p} adalah 0<n+10<n+1.

Sebaliknya, jika a(x)a(x) mempunyai sekurang-kurangnya satu akar modulo pp, pilih wakil bilangan bulatnya z1z_1. Pembagian panjang polinomial memberikan a(x)=b(x)(xz1)+r(x)a(x)=b(x)(x-z_1) + r(x) dengan b(x)b(x) dan r(x)r(x) polinomial berkoefisien bilangan bulat yang memenuhi 0deg(r(x))<deg(xz1)=1.0\le\deg(r(x))<\deg(x-z_1)=1\ . Karena itu, r(x)r(x) merupakan polinomial konstan, katakanlah bernilai r1r_1\in{\mathbb Z}.

Substitusikan z1z_1 ke dalam rumus hasil pembagian polinomial di atas: 0a(z1)b(z1)(z1z1)+r1r1(modp).0\equiv a(z_1)\equiv b(z_1)(z_1-z_1)+r_1\equiv r_1\pmod{p}\ . Jadi, r10(modp)r_1\equiv0\pmod{p}, sehingga a(x)b(x)(xz1)(modp)a(x)\equiv b(x)(x-z_1)\pmod{p}. Koefisien an+1a_{n+1} sama dengan koefisien utama b(x)b(x), sehingga koefisien utama itu tidak kongruen dengan 00 modulo pp.

Karena itu, hipotesis induksi berlaku bagi b(x)b(x) dan menyatakan bahwa b(x)b(x) mempunyai paling banyak nn akar modulo pp. Akar-akar b(x)b(x) tersebut, ditambah satu akar dari (xz1)(x-z_1), berjumlah paling banyak n+1n+1 akar bagi a(x)b(x)(xz1)(modp)a(x)\equiv b(x)(x-z_1)\pmod{p}.

Untuk menuntaskan bukti, kita hanya perlu memastikan bahwa setiap akar a(x)a(x) memang merupakan akar b(x)b(x) atau (xz1)(x-z_1). Misalkan rr\in{\mathbb Z} suatu akar. Maka a(r)=b(r)(rz1)0(modp),a(r)=b(r)(r-z_1)\equiv0\pmod{p}, yang berarti pb(r)(rz1)p\mid b(r)(r-z_1). Menurut Proposisi 3.5, haruslah pb(r)p\mid b(r) atau p(rz1)p\mid(r-z_1). Dengan kata lain, b(r)0(modp)b(r)\equiv0\pmod{p} atau (rz1)0(modp)(r-z_1)\equiv0\pmod{p}, seperti yang diharapkan. [Ini menggunakan apa yang dalam aljabar dasar disebut “sifat hasil kali nol”. Sifat tersebut berlaku dalam /p{\mathbb Z}/p{\mathbb Z} untuk pp prima menurut Proposisi 3.5; dalam aljabar abstrak, kita mengatakan bahwa /p{\mathbb Z}/p{\mathbb Z} merupakan suatu domain jika pp prima.]

Jadi, semua akar a(x)a(x) berasal dari akar b(x)b(x) atau (xz1)(x-z_1), sehingga banyaknya paling besar n+1n+1. Langkah induksi pun terbukti. ◻

Demikianlah batas maksimum banyaknya akar. Dalam kasus khusus berikut, kita dapat menentukan banyaknya akar secara tepat:

Teorema 5.10. Jika pp prima dan dd\in{\mathbb N} memenuhi dp1d\mid p-1, maka, hingga kongruensi modulo pp, terdapat tepat dd solusi bagi kongruensi

xd=1(modp).x^d=1\pmod{p}\ .

Bukti. Misalkan pp dan dd seperti dalam pernyataan, lalu definisikan m=(p1)/dm=(p-1)/d\in{\mathbb N}. Kita menggunakan faktorisasi cerdik berikut: a(x)=xd1,b(x)=xdmd+xdm2d++xd+1,danc(x)=xp11\begin{align*} a(x)&=x^d-1,\\ b(x)&=x^{dm-d}+x^{dm-2d}+\dots+x^d+1,\ \text{dan}\\ c(x)&=x^{p-1}-1 \end{align*} sehingga c(x)=a(x)b(x)c(x)=a(x)b(x).

Menurut Teorema Kecil Fermat, c(x)c(x) mempunyai tepat p1p-1 akar berbeda modulo pp, yaitu {1,,p1}\{1,\dots,p-1\}. Selain itu, menurut Teorema 5.9, b(x)b(x) mempunyai paling banyak deg(b(x))=dmd=p1d\deg(b(x))=dm-d=p-1-d akar. Seperti dalam bukti teorema tersebut (pada bagian tentang “sifat hasil kali nol” ), himpunan akar c(x)c(x) adalah gabungan himpunan akar a(x)a(x) dan b(x)b(x). Karena p1p-1 akar berbeda itu harus tertampung dalam gabungan tersebut, sedangkan b(x)b(x) mempunyai paling banyak p1dp-1-d akar, a(x)a(x) mempunyai sekurang-kurangnya dd akar. Di sisi lain, Teorema 5.9 membatasi polinomial berderajat dd ini pada paling banyak dd akar. Jadi, a(x)=xd1a(x)=x^d-1 mempunyai tepat dd akar modulo pp. ◻

Sekarang kita dapat menghitung secara tepat kelas-kelas kongruensi dalam /p{\mathbb Z}/p{\mathbb Z}, untuk pp prima, yang mempunyai orde tertentu:

Teorema 5.11. Jika pp prima dan dd\in{\mathbb N} memenuhi dp1d\mid p-1, maka terdapat tepat ϕ(d)\phi(d) kelas kongruensi berbeda berorde dd dalam /p{\mathbb Z}/p{\mathbb Z}.

Bukti. Misalkan pp dan dd seperti dalam pernyataan, lalu tuliskan ψ(k)=#({1p1 dan ordp()=k}).\psi(k)=\#\left(\left\{\ell\in{\mathbb Z}\mid1\le\ell\le p-1\text{\ dan\ }\operatorname{ord}_p(\ell)=k\right\}\right)\ . Menurut versi Teorema Lagrange kita, Teorema 3.13, setiap \ell\in{\mathbb Z} dengan 1p11\le\ell\le p-1 mempunyai orde yang membagi ϕ(p)=p1\phi(p)=p-1. Jadi, kkp1ψ(k)=p1.\sum_{\substack{k\in{\mathbb N}\\k\mid p-1}} \psi(k) = p-1\ . Selain itu, menurut Teorema Gauss 5.5 , kkp1ϕ(k)=p1.\sum_{\substack{k\in{\mathbb N}\\k\mid p-1}} \phi(k) = p-1\ .

Dengan demikian, kkp1ϕ(k)=kkp1ψ(k).\sum_{\substack{k\in{\mathbb N}\\k\mid p-1}} \phi(k) = \sum_{\substack{k\in{\mathbb N}\\k\mid p-1}} \psi(k)\ . Sekarang cukup ditunjukkan bahwa ψ(k)ϕ(k)\psi(k)\le\phi(k) untuk setiap kk\in{\mathbb N} yang membagi p1p-1. Karena kedua jumlah berhingga di atas sama, ketaksamaan tersebut kemudian harus berupa kesamaan untuk setiap kk.

Ambil kk\in{\mathbb N} dengan kp1k\mid p-1. Jika ψ(k)=0\psi(k)=0, tidak ada unsur berorde kk, dan tentu saja ψ(k)ϕ(k)\psi(k)\le\phi(k) karena ϕ(k)>0\phi(k)>0.

Sekarang misalkan ψ(k)>0\psi(k)>0, sehingga terdapat unsur aa berorde kk dalam /p{\mathbb Z}/p{\mathbb Z}. Untuk setiap nn\in{\mathbb N}, (an)k=(ak)n1n1(modp)(a^n)^k=(a^k)^n\equiv1^n\equiv1\pmod{p}. Jadi, a,,aka,\dots,a^k merupakan kk unsur berbeda dalam /p{\mathbb Z}/p{\mathbb Z} yang semuanya memenuhi

xk10(modp).x^k-1\equiv0\pmod{p}\ . Menurut Teorema 5.10, kongruensi ini mempunyai tepat kk solusi. Dengan demikian, a,,aka,\dots,a^k merupakan seluruh solusinya. Di antara solusi tersebut terdapat semua unsur /p{\mathbb Z}/p{\mathbb Z} yang berorde kk , serta mungkin unsur berorde pembagi kk.

Teorema 5.4 menentukan secara tepat orde unsur-unsur a,,aka,\dots,a^k: orde aa^\ell adalah ordp(a)gcd(ordp(a),)=kgcd(k,).\frac{\operatorname{ord}_p(a)}{\gcd(\operatorname{ord}_p(a),\ell)}=\frac{k}{\gcd(k,\ell)}\ .

Jadi, unsur-unsur /p{\mathbb Z}/p{\mathbb Z} berorde kk adalah tepat unsur aa^\ell dengan 1k1\le\ell\le k dan gcd(k,)=1\gcd(k,\ell)=1. Banyaknya tepat ϕ(k)\phi(k); dengan kata lain, ψ(k)=ϕ(k)\psi(k)=\phi(k). ◻

Jadi, inilah kesimpulan utamanya:

Akibat 5.12. Jika pp prima, terdapat ϕ(p1)\phi(p-1) akar primitif dalam /p{\mathbb Z}/p{\mathbb Z}.

Bukti. Gunakan d=p1d=p-1 dalam teorema sebelumnya. ◻

Untuk menuntaskan rangkaian dugaan yang mengawali bab dan bagian ini, mari kita buktikan teorema berikut.

Teorema 5.13. Misalkan kk\in{\mathbb N} memenuhi k3k\ge3. Maka 2k2^k tidak mempunyai akar primitif.

Bukti. Kita akan membuktikan dengan induksi pada kk bahwa, untuk setiap bilangan ganjil aa, a2k21(mod2k)a^{2^{k-2}}\equiv1\pmod{2^k} Untuk kasus dasar k=3k=3, perhatikan semua kelas kongruensi dalam /8{\mathbb Z}/8{\mathbb Z} yang mempunyai wakil ganjil beserta kuadrat kelas-kelas tersebut: [1]82=[1]8,[3]82=[9]8=[1]8,[5]82=[25]8=[1]8, dan [7]82=[49]8=[1]8.[1]_8^2=[1]_8,\qquad[3]_8^2=[9]_8=[1]_8,\qquad[5]_8^2=[25]_8=[1]_8, \text{\ \ \ \ \ dan\ \ \ \ \ \ }[7]_8^2=[49]_8=[1]_8\ . Jadi, kasus dasar k=3k=3 terbukti.

Sekarang andaikan pernyataan berlaku untuk nilai kk, yang berarti bahwa untuk setiap aa ganjil, a2k21(mod2k).a^{2^{k-2}}\equiv1\pmod{2^k}\ . Dengan kata lain, \exists\ell\in{\mathbb Z} sedemikian sehingga a2k2=2k+1.a^{2^{k-2}}=2^k\ell+1\ . Dengan menguadratkan kedua ruas, kita memperoleh a2k1=(a2k2)2=(2k+1)2=22k2+22k+1=2k+1(2k12+)+1,a^{2^{k-1}}=\left(a^{2^{k-2}}\right)^2=\left(2^k\ell+1\right)^2= 2^{2k}\ell^2+2\cdot2^k\ell+1=2^{k+1}\left(2^{k-1}\ell^2+\ell\right)+1, yang berarti a2(k+1)2=a2k11(mod2(k+1)).a^{2^{(k+1)-2}}=a^{2^{k-1}}\equiv1\pmod{2^{(k+1)}}\ .

Dengan demikian, bukti induktif bagi pernyataan awal selesai. Perhatikan bahwa untuk setiap aa ganjil, atau dengan kata lain setiap a(/2k)*a\in({\mathbb Z}/2^k{\mathbb Z})^*, Teorema 5.1 memberikan ord2k(a)2k2\operatorname{ord}_{2^k}(a)\mid2^{k-2}, sehingga ord2k(a)2k2<2k1\operatorname{ord}_{2^k}(a)\le2^{k-2}<2^{k-1}. Jadi, 2k2^k tidak mempunyai akar primitif: akar semacam itu harus berupa bilangan ganjil berorde ϕ(2k)=2k1\phi(2^k)=2^{k-1}. ◻

Seperti yang tampak dari beberapa contoh yang telah kita hitung, pangkat besar dari dua tidak mempunyai akar primitif.

Latihan untuk §5.3

Latihan 5.6. Nyatakan setiap akar primitif modulo 1717 sebagai pangkat dari salah satunya.

Latihan 5.7. Temukan semua akar primitif untuk bilangan prima 1111 dan 1313, lalu nyatakan masing-masing sebagai pangkat dari salah satu akar primitifnya.

Latihan 5.8. Untuk setiap orde yang mungkin, temukan semua unsur /13{\mathbb Z}/13{\mathbb Z} yang mempunyai orde tersebut.

Latihan 5.9. Dengan menyatakan semuanya sebagai pangkat dari satu akar primitif, gunakan Akibat 5.12 untuk membuktikan satu arah Teorema Wilson.

Latihan 5.10. Jika rr merupakan akar primitif dari bilangan prima ganjil pp, buktikan bahwa r(p1)/21(modp)r^{(p-1)/2}\equiv-1\pmod{p}. Buktikan pula bahwa jika ss adalah akar primitif lain dari pp, maka rsrs tidak mungkin merupakan akar primitif.

Latihan 5.11. Buktikan bahwa invers suatu akar primitif selalu merupakan akar primitif.

Latihan 5.12. Jika pp prima dan kongruen dengan 1mod41\mod{4}, buktikan bahwa untuk setiap akar primitif rr dari pp, nilai r-r juga merupakan akar primitif. Jika pp prima dan kongruen dengan 3mod43\mod{4}, buktikan bahwa ordp(r)=(p1)/2\operatorname{ord}_p(-r)=(p-1)/2.

5.4 Indeks

Untuk beberapa nilai nn\in{\mathbb N}, terdapat akar primitif a(/n)*a\in({\mathbb Z}/n{\mathbb Z})^*. Dalam keadaan itu, kita telah melihat bahwa a={a,a2,aordn(a)}=(/n)*.\left<a\right>=\left\{a,\ a^2,\ \dots\ a^{\operatorname{ord}_n(a)}\right\}=({\mathbb Z}/n{\mathbb Z})^*\ . Artinya, setiap b(/n)*b\in({\mathbb Z}/n{\mathbb Z})^* merupakan suatu pangkat dari aa. Mungkin Anda bertanya, “Pangkat yang mana?” Untuk menjawabnya, kita membuat definisi berikut.

Definisi 5.14. Jika nn\in{\mathbb N} mempunyai akar primitif aa, maka untuk setiap bb\in{\mathbb Z} dengan gcd(b,n)=1\gcd(b,n)=1, bilangan terkecil kk\in{\mathbb N} yang memenuhi bak(modn)b\equiv a^k\pmod{n} disebut indeks bb relatif terhadap aa dan dinotasikan dengan inda(b)\operatorname{ind}_a(b).

Kita kadang-kadang juga membahas inda(x)\operatorname{ind}_a(x) untuk x(/n)*x\in({\mathbb Z}/n{\mathbb Z})^*. Maksudnya ialah indeks relatif terhadap aa dari sebarang wakil bb bagi kelas kongruensi xx.

Contoh 5.15. Berdasarkan tabel-tabel di atas (5.1, 5.2, dan 5.3), kita dapat dengan mudah menghitung sejumlah contoh. Pertama, untuk modulus-modulus kecil yang hanya mempunyai sedikit akar primitif:

Nilai indeks untuk modulus n=2,3,4,5,7n=2,\ 3,\ 4,\ 5,\ 7
nn aa bb inda(b)\operatorname{ind}_a(b)
2 1 1 1
3 2 1 2
2 1
4 3 1 2
3 1
5 2 1 4
2 1
3 3
4 2
5 3 1 4
2 3
3 1
4 2
Nilai indeks untuk modulus n=2,3,4,5,7n=2,\ 3,\ 4,\ 5,\ 7
nn aa bb inda(b)\operatorname{ind}_a(b)
7 3 1 6
2 2
3 1
4 4
5 5
6 3
5 1 6
2 4
3 5
4 2
5 1
6 3

Dari dua modulus lebih besar yang telah kita hitung, hanya n=17n=17 yang mempunyai akar primitif. Karena (/17)*({\mathbb Z}/17{\mathbb Z})^* mempunyai 16 unsur dan 8 akar primitif, kita membuat tabel yang lebih besar khusus untuk modulus ini:

Nilai indeks untuk modulus n=17n=17
1-18 bb
3-18 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
1-18 3 16 14 1 12 5 15 11 10 2 3 7 13 4 9 6 8
2-18 5 16 6 13 12 1 3 15 2 10 7 11 9 4 5 14 8
2-18 6 16 2 15 4 11 1 5 6 14 13 9 3 12 7 10 8
2-18 7 16 10 3 4 15 13 1 14 6 9 5 7 12 11 2 8
2-18 10 16 10 11 4 7 5 9 14 6 1 13 15 12 3 2 8
2-18 11 16 2 7 4 3 9 13 6 14 5 1 11 12 15 10 8
2-18 12 16 6 5 12 9 11 7 2 10 15 3 1 4 13 14 8
2-18 14 16 14 9 12 13 7 3 10 2 11 15 5 4 1 6 8
1-18

Berdasarkan contoh-contoh dan definisi indeks yang sederhana ini, beberapa dugaan muncul secara alami. Banyak di antaranya sangat mudah dibuktikan (dan dijadikan latihan):

Teorema 5.16. Misalkan nn\in{\mathbb N} mempunyai akar primitif aa. Maka

  1. inda(1)=ordn(a)=ϕ(n)\operatorname{ind}_a(1)=\operatorname{ord}_n(a)=\phi(n); secara ekuivalen, inda(1)0(modϕ(n))\operatorname{ind}_a(1)\equiv0\pmod{\phi(n)};

  2. inda(a)=1\operatorname{ind}_a(a)=1;

  3. untuk setiap b,cb,c\in{\mathbb Z} yang memenuhi gcd(b,n)=gcd(c,n)=1\gcd(b,n)=\gcd(c,n)=1, berlaku inda(bc)inda(b)+inda(c)(modϕ(n))\operatorname{ind}_a(bc)\equiv\operatorname{ind}_a(b)+\operatorname{ind}_a(c)\pmod{\phi(n)}

  4. untuk setiap bb\in{\mathbb Z} dengan gcd(b,n)=1\gcd(b,n)=1 dan setiap kk\in{\mathbb N}, berlaku inda(bk)kinda(b)(modϕ(n))\operatorname{ind}_a(b^k)\equiv k\cdot\operatorname{ind}_a(b)\pmod{\phi(n)}

Sifat-sifat inda\operatorname{ind}_a ini sangat mirip dengan sifat dasar logaritma berbasis aa. Karena itu, dalam literatur ilmu komputer, indeks disebut logaritma diskret. Untuk aplikasi kriptologi, penting untuk memerhatikan bahwa, pada keluarga parameter besar yang dipilih dengan sesuai, eksponensiasi dalam (/n)*({\mathbb Z}/n{\mathbb Z})^* merupakan calon fungsi satu arah yang sangat baik:

  • Jika nn, aa, dan kk diberikan, eksponensiasi modular cepat merupakan komputasi layak untuk memperoleh b=akb=a^k modulo nn.

  • Jika nn, aa, dan bb diberikan dengan parameter dari keluarga semacam itu, belum dikenal algoritme klasik layak yang menemukan k=inda(b)k=\operatorname{ind}_a(b) dengan akb(modn)a^k\equiv b\pmod{n}.

Dalam bagian-bagian berikutnya, kita akan membahas beberapa protokol kriptologi yang berbasis logaritma diskret.

Sebelum beralih ke kriptologi, kita menjelajahi beberapa penerapan matematis murni dari indeks. Seperti penerapan logaritma dalam aljabar dasar, kegunaan indeks berasal dari Teorema 5.16, yang memungkinkan manipulasi aljabar terhadap pangkat dan perkalian secara mudah. Berikut sebuah contoh.

Contoh 5.17. Kita menggunakan indeks untuk menyelesaikan kongruensi 3x54(mod7)3x^5\equiv4\pmod{7} dengan mula-mula mengambil ind5\operatorname{ind}_5 pada kedua ruas: ind5(3)+5ind5(x)ind5(4)(mod6)\operatorname{ind}_5(3)+5\operatorname{ind}_5(x)\equiv\operatorname{ind}_5(4)\pmod{6} dan menerapkan semua aturan dalam Teorema 5.16. Dengan melihat Tabel 5.5, kita mengubahnya menjadi 5+5ind5(x)2(mod6)5+5\cdot\operatorname{ind}_5(x)\equiv2\pmod{6} atau, setelah diselesaikan, ind5(x)513533(mod6)\operatorname{ind}_5(x)\equiv5^{-1}\cdot3\equiv5\cdot3\equiv3\pmod{6} yang, setelah kita kembali melihat tabel, berarti x=6x=6.

Sebagai pemeriksaan, perhatikan bahwa 365=233284(mod7)3\cdot6^5=23328\equiv4\pmod{7}.

Bagaimana jika kita menyelesaikan persamaan yang sama, tetapi memakai akar primitif yang berbeda sebagai basis indeks? Hitung ind3(3)+5ind3(x)ind3(4)(mod6)\operatorname{ind}_3(3)+5\operatorname{ind}_3(x)\equiv\operatorname{ind}_3(4)\pmod{6} sehingga 1+5ind3(x)4(mod6)1+5\cdot\operatorname{ind}_3(x)\equiv4\pmod{6} dan kita memperoleh persamaan serupa, ind3(x)5133(mod6)\operatorname{ind}_3(x)\equiv5^{-1}\cdot3\equiv3\pmod{6} sehingga solusinya tetap x=6x=6.

Tanda peringatan untuk bagian dengan penalaran rumit

Kesalahan umum ketika menggunakan indeks ialah memakai modulus yang sama untuk indeks dan kongruensi asal. Padahal, ketika kongruensi asal adalah modulo nn, untuk nn\in{\mathbb N}, kongruensi indeks adalah modulo ϕ(n)\phi(n)!

Latihan untuk §5.4

Latihan 5.13. Untuk modulus n=17n=17, gunakan indeks untuk menyelesaikan kongruensi berikut:
 4x114x\equiv11 (b) 5x675x^6\equiv7 x1213x^{12}\equiv13
 8x5108x^5\equiv10 9x889x^8\equiv8 7x77^x\equiv7

Latihan 5.14. Aturan logaritma dalam Teorema 5.16 sangat mirip dengan aturan logaritma biasa, tetapi satu aturan belum ada: rumus perubahan basis. Tentukan bentuk rumus tersebut dalam konteks indeks, nyatakan secara formal, lalu buktikan.

Latihan 5.15. Misalkan pp bilangan prima ganjil dan aa suatu akar primitif modulo pp.

  • Buktikan bahwa inda(1)=(p1)/2\operatorname{ind}_a(-1)=(p-1)/2.

  • Jika x,y(/p)*x,y\in({\mathbb Z}/p{\mathbb Z})^* memenuhi xy1(modp)xy\equiv1\pmod{p}, apa hubungan antara inda(x)\operatorname{ind}_a(x) dan inda(y)\operatorname{ind}_a(y)? Buktikan!

  • Jika x,y(/p)*x,y\in({\mathbb Z}/p{\mathbb Z})^* memenuhi x+y0(modp)x+y\equiv0\pmod{p}, apa hubungan antara inda(x)\operatorname{ind}_a(x) dan inda(y)\operatorname{ind}_a(y)? Buktikan!

5.5 Pertukaran Kunci Diffie–Hellman

Sekitar setahun sebelum kriptosistem RSA diciptakan, Whitfield Diffie dan Martin Hellman menerbitkan New directions in cryptography (Diffie dan Hellman 1976), uraian lengkap pertama dalam literatur ilmiah terbuka mengenai kriptosistem kunci publik yang dapat berfungsi.1 Dalam makalah itu mereka mendefinisikan sesuatu yang kemudian dinamai menurut keduanya:

Definisi 5.18. Protokol berikut disebut pertukaran kunci Diffie–Hellman [DHKE]:

  1. Alice dan Bob menyepakati sebuah bilangan prima besar pp beserta akar primitif r(/p)*r\in({\mathbb Z}/p{\mathbb Z})^*, lalu mengumumkan keduanya.

  2. Alice memilih α\alpha\in{\mathbb Z} yang memenuhi 2αp22\le\alpha\le p-2, menghitung A=rα(modp)A=r^\alpha\pmod{p}, merahasiakan α\alpha, tetapi mengumumkan AA.

  3. Bob memilih β\beta\in{\mathbb Z} yang memenuhi 2βp22\le\beta\le p-2, menghitung B=rβ(modp)B=r^\beta\pmod{p}, merahasiakan β\beta, dan mengumumkan BB.

  4. Alice memperoleh nilai publik BB dan menghitung S=Bα(modp)S=B^\alpha\pmod{p}.

  5. Bob memperoleh AA dan menghitung nilai yang sama, S=Aβ(modp)S=A^\beta\pmod{p}.

  6. Alice dan Bob memakai rahasia bersama SS sebagai kunci untuk komunikasi selanjutnya, yang dienkripsi dengan suatu kriptosistem simetris yang telah mereka sepakati sebelumnya.

Nilai SS yang dimiliki Alice dan Bob [tetapi tidak dimiliki Eve] disebut kunci bersama atau rahasia bersama mereka.

Gambaran grafisnya sebagai berikut:

Proposisi 5.19. Jika Alice dan Bob mengikuti protokol DHKE, keduanya menghitung kunci bersama yang sama; dengan kata lain, DHKE berfungsi.

Bukti. Hanya sedikit yang perlu diperiksa. Dengan memakai notasi dalam definisi dan, tepat di tengah, sifat komutatif perkalian, kita memperoleh Bα(rβ)αrβαrαβ(rα)βAβ(modp).B^\alpha \equiv \left(r^\beta\right)^\alpha \equiv r^{\beta\cdot\alpha}\equiv r^{\alpha\cdot\beta} \equiv\left(r^\alpha\right)^\beta\equiv A^\beta\pmod p\ . Ujung kiri kongruensi ini adalah SS yang dihitung Alice, sedangkan ujung kanannya adalah SS yang dihitung Bob; keduanya sama sebagai kelas modulo pp. ◻

Contoh 5.20. Dalam pembicaraan terbuka, Alice dan Bob sepakat memakai bilangan prima p=617p=617 beserta akar primitifnya r=17r=17.

Alice secara privat memilih nilai rahasianya α=19\alpha=19 dan mengirim nilai A=1719385(mod617)A=17^{19}\equiv385\pmod{617} kepada Bob melalui surel yang tidak aman. (Tentu saja, setiap surel tanpa enkripsi tidak aman.)

Bob memilih nilai rahasianya β=13\beta=13 dan mengirim nilai B=1713227(mod617)B=17^{13}\equiv227\pmod{617} kepada Alice melalui surel yang tidak aman.

Alice menghitung rahasia bersama S=Bα=22719127(mod617).S=B^{\alpha}=227^{19}\equiv127\pmod{617}\ .

Bob menghitung rahasia bersama yang sama melalui S=Aβ=38513127(mod617).S=A^{\beta}=385^{13}\equiv127\pmod{617}\ .

Mereka kemudian dapat memakai nilai ini sebagai kunci kriptografi simetris untuk sisa komunikasi tersebut.

Bagaimana dengan kepraktisan DHKE? Seperti dibahas dalam §4.4, mencari bilangan prima [besar] pp (kita tetap memakai notasi dari Definisi 5.18) layak secara komputasi, demikian pula beberapa eksponensiasi modular dalam protokol DHKE. Masih tersisa persoalan mencari akar primitif rr.

Salah satu caranya ialah menghindari pencarian rr lebih dari sekali. Setelah satu bilangan prima pp beserta akar primitif rr modulo pp ditemukan, setiap pengguna dapat memilih rahasianya sendiri (α\alpha milik Alice dan β\beta milik Bob) tanpa tumpang tindih atau konflik. Pendekatan ini disarankan dalam sejumlah standar Internet; lihat, misalnya, (Harkins dan Carrel, t.t.) dan (Lepinski dan Kent 2008).

Strategi lain yang lebih matematis didasarkan pada definisi berikut. Kita menyertakannya karena konsep ini menarik secara matematis dan tokoh yang namanya diabadikan di dalamnya menjalani kehidupan yang luar biasa.

Definisi 5.21. Bilangan prima pp yang membuat 2p+12p+1 juga prima disebut prima Sophie Germain.

Belum diketahui berapa banyak prima Sophie Germain yang ada, meskipun diduga jumlahnya tak hingga. Bahkan, terdapat dugaan yang cermat mengenai kepadatan asimtotik prima semacam itu serta teknik algoritmik untuk membangkitkannya secara efisien; lihat (Shoup 2009).

Contoh 5.22. Tujuh belas prima Sophie Germain pertama ialah

2,3,5,11,23,29,41,53,83,89,113,131,173,179,191,233,2392,\ 3,\ 5,\ 11,\ 23,\ 29,\ 41,\ 53,\ 83,\ 89,\ 113,\ 131,\ 173,\ 179,\ 191,\ 233,\ 239

Barisan semua prima Sophie Germain adalah barisan A005384 dalam On-Line Encyclopedia of Integer Sequences, oeis.org.

Pada saat naskah sumber ini ditulis, prima Sophie Germain terbesar yang diketahui ialah

18543637900515×2666667118543637900515\times2^{666667}-1

yang ditemukan pada 2012 oleh Philipp Bliedung dan sebuah jaringan besar komputer terdistribusi.

Kegunaan prima Sophie Germain dalam DHKE diselidiki pembaca melalui latihan di bawah ini.

Seperti disebutkan dalam bagian sebelumnya 5.4, keamanan DHKE pada keluarga parameter besar yang dipilih dengan sesuai bergantung pada asumsi bahwa eksponensiasi modular berperilaku sebagai fungsi satu arah: layak dihitung ke arah maju (dengan eksponensiasi modular cepat), tetapi belum dikenal cara klasik yang layak untuk membalik operasi itu (yakni menghitung suatu indeks).

Jika logaritma diskret dapat dihitung dengan algoritme layak, Eve dapat membobol DHKE sepenuhnya. Berawal dari nilai publik AA dan BB, ia akan menghitung α=indr(A)\alpha=\operatorname{ind}_r(A) dan β=indr(B)\beta=\operatorname{ind}_r(B). Selanjutnya ia dapat menghitung SS sebagai BαB^\alpha, AβA^\beta, atau langsung sebagai rαβr^{\alpha\cdot\beta}. Setelah memperoleh SS, ia dapat mendekripsi komunikasi Alice dan Bob yang lewat.

Sebenarnya, Eve tidak harus mampu menghitung logaritma diskret selama ia dapat menyelesaikan suatu masalah komputasi tertentu.

Definisi 5.23. Masalah Diffie–Hellman [DHP] adalah pertanyaan berikut. Diberikan

  • bilangan prima pp,

  • akar primitif r(/p)*r\in({\mathbb Z}/p{\mathbb Z})^*, dan

  • dua unsur a,b(/p)*a,b\in({\mathbb Z}/p{\mathbb Z})^* yang diketahui berbentuk a=rxa=r^x dan b=ryb=r^y untuk x,yx,y\in{\mathbb N}, meskipun xx dan yy tidak diketahui,

hitung

  • rxyr^{xy} .

Cara efisien untuk menghitung logaritma diskret tentu menghasilkan penyelesaian DHP. Namun, belum diketahui apakah DHP dapat diselesaikan tanpa algoritme lengkap untuk menghitung logaritma diskret. Karena pertanyaan ini masih terbuka pada saat naskah sumber ditulis, pernyataan yang paling cermat ialah bahwa membobol DHKE berarti menyelesaikan DHP. Untuk keluarga parameter besar yang dipilih dengan sesuai, tidak dikenal algoritme klasik yang layak untuk melakukannya.2

DHKE merupakan salah satu protokol kriptologi yang paling luas digunakan di Internet. Protokol ini atau variannya dipakai, antara lain, dalam SSL, TLS, SSH, IPsec, dan banyak VPN.

Latihan untuk §5.5

Latihan 5.16. Andaikan Anda mempunyai algoritme efisien untuk membangkitkan prima Sophie Germain yang besar. Jelaskan cara memakainya untuk memilih parameter publik awal DHKE: telusuri semua tahap penyiapan protokol ini dan jelaskan bagaimana setiap tahap dapat dilakukan secara layak, berdasarkan pembahasan terdahulu tentang perhitungan yang dapat kita lakukan secara layak atau berdasarkan gagasan baru yang Anda kembangkan di sini.

Latihan 5.17. Bilangan p=11717p=11717 adalah prima dan r=103r=103 merupakan akar primitif modulo pp. Dengan berperan sebagai Alice, pengajar Anda telah menghitung A=5123A=5123.

Berperanlah sebagai Bob dan lakukan apa yang diperlukan untuk membentuk kunci bersama dengan pengajar Anda: hitung SS seperti dalam DHKE dan kirimkan BB Anda melalui surel agar pengajar juga dapat menghitung SS. Kemudian tunggu petunjuk lanjutan melalui surel balasan yang dienkripsi dengan rahasia bersama.

Anda mungkin perlu melakukan perhitungan yang sulit dikerjakan dengan kalkulator genggam. Jika Anda memiliki akses ke dan terbiasa dengan sistem komputer seperti Octave, Matlab, atau Mathematica, perhitungan ini dapat dilakukan dengan sistem tersebut. Jika tidak, cobalah mencari frasa “fast modular exponentiation applet” dengan mesin pencari favorit Anda atau memakai wolframalpha.com.

Latihan 5.18. Uraikan dengan perincian matematis yang cermat semua langkah yang digunakan dalam serangan man-in-the-middle terhadap DHKE.

5.6 Kriptosistem ElGamal

Seperti disebutkan dalam bagian sebelumnya, untuk keluarga parameter besar yang dipilih dengan sesuai, eksponensiasi modulo bilangan prima publik pp merupakan calon fungsi satu arah yang baik. Perhitungan ke arah maju berlangsung cepat (layak), sedangkan inversnya, yakni logaritma diskret relatif terhadap akar primitif rr modulo pp, belum diketahui dapat dihitung dengan algoritme klasik yang layak—bahkan ketika akar itu diketahui publik. Asumsi ini mendasari DHKE; kini kita membahas cara memakai gagasan satu arah tersebut untuk membentuk kriptosistem kunci publik yang lebih lazim, yaitu kriptosistem ElGamal.

Dalam kriptosistem kunci publik RSA, enkripsi dilakukan dengan eksponensiasi modulo n=pqn=pq. Dekripsi kemudian dilakukan dengan eksponen yang merupakan invers multiplikatif eksponen enkripsi modulo ϕ(n)\phi(n). Pemilik kunci privat, yang mengetahui faktor rahasia pp dan qq, juga dapat mengetahui eksponen dekripsi karena ia dapat menghitung ϕ(n)\phi(n).

Dengan cara serupa, ElGamal memakai operasi aritmetika elementer—mengalikan bentuk numerik pesan dengan suatu faktor pengacak modulo bilangan tertentu— untuk melakukan pengacakan yang diperlukan dalam enkripsi. Cipherteks membawa informasi secukupnya agar penerima yang dituju, yang mengetahui nilai logaritma diskret tertentu, dapat membatalkan perkalian pengacak itu. Berikut rinciannya. Konstruksi buku teks ini menetapkan cara kerja dan kebenaran fungsionalnya; jaminan keamanan yang lebih kuat memerlukan asumsi mengenai grup, pembangkitan parameter, enkode, dan keacakan baru yang independen yang tidak dibuktikan di sini.

Definisi 5.24. Untuk memulai, Alice memilih bilangan prima besar pp, akar primitif rr modulo pp, dan nilai rahasia α\alpha\in{\mathbb N} yang memenuhi 2αp22\le\alpha\le p-2. Ia menghitung a=rα(modp)a=r^\alpha\pmod p, lalu memasang kunci publik [enkripsi] ElGamal miliknya, yaitu (p,r,a)(p,r,a), di situs webnya.

Kunci privat [dekripsi] ElGamal milik Alice adalah (p,r,α)(p,r,\alpha). Hubungan kunci dekripsi dengan kunci enkripsi diberikan oleh :(p,r,α)(p,r,rα(modp)){\mathcal E}:(p,r,\alpha)\mapsto(p,r,r^\alpha\pmod{p}).

Ruang pesannya ialah ={m2mp1}{\mathcal M}=\{m\in{\mathbb Z}\mid 2\le m\le p-1\}. Kita menganggap setiap unsurnya dapat ditafsirkan sebagai pesan bermakna yang dienkode secara numerik dengan suatu skema yang dikenal luas.

Misalkan Bob ingin mengirim plainteks mm\in{\mathcal M} kepada Alice. Untuk setiap pesan baru mm, ia membangkitkan bilangan acak baru β\beta\in{\mathbb N} yang memenuhi 2βp22\le\beta\le p-2, lalu membentuk cipherteks untuk enkripsi ElGamal, yang terdiri atas dua komponen c=e(p,r,a)(m)=(rβ(modp),maβ(modp)).c=e_{(p,r,a)}(m)=(r^\beta\pmod{p},\ m\cdot a^\beta\pmod{p})\ .

Ketika menerima cipherteks c=(c1,c2)c=(c_1,c_2), Alice dapat memulihkan plainteks dengan dekripsi ElGamal d(p,r,α)(c1,c2)=c2c1p1α(modp).d_{(p,r,\alpha)}(c_1,c_2) =c_2\cdot c_1^{p-1-\alpha}\pmod p\ .

Semua komponen di atas bersama-sama membentuk kriptosistem ElGamal.

Pertama-tama, kita perlu memastikan bahwa konstruksi ini benar dalam arti berikut.

Proposisi 5.25. Dengan notasi dalam Definisi 5.24, berlaku d(p,r,α)(e(p,r,a)(m))=mm.d_{(p,r,\alpha)}(e_{(p,r,a)}(m)) = m\quad\forall m\in{\mathcal M}\ .

Bukti. Cukup lakukan perhitungan berikut: d(p,r,α)(e(p,r,a)(m))maβ(rβ)p1α(modp)m(rα)β(rβ)p1α(modp)mrαβ+β(p1)αβ(modp)m(rp1)β(modp)m1β(modp)m(modp)\begin{align*} d_{(p,r,\alpha)}(e_{(p,r,a)}(m)) &\equiv m\cdot a^\beta\cdot(r^\beta)^{p-1-\alpha}\pmod{p}\\ &\equiv m\cdot (r^\alpha)^\beta\cdot(r^\beta)^{p-1-\alpha}\pmod{p}\\ &\equiv m\cdot r^{\alpha\beta+\beta(p-1)-\alpha\beta}\pmod{p}\\ &\equiv m\cdot (r^{p-1})^\beta\pmod{p}\\ &\equiv m\cdot 1^\beta\pmod{p}\\ &\equiv m\pmod{p} \end{align*} Perhatikan bahwa eksponen p1αp-1-\alpha pada suku c1c_1 dalam dekripsi menghasilkan (c11)α(c_1^{-1})^\alpha tanpa memakai pangkat negatif, berdasarkan Teorema 5.2. ◻

Secara grafis:

ElGamal juga memiliki algoritme tanda tangan digital yang menarik:

Definisi 5.26. Misalkan Alice memiliki kunci privat ElGamal (p,r,α)(p,r,\alpha) dan ingin menandatangani pesan mm\in{\mathcal M} secara digital. Untuk setiap tanda tangan baru, mula-mula ia memilih γ\gamma\in{\mathbb N} secara acak sehingga 1<γ<p11<\gamma<p-1 dan gcd(γ,p1)=1\gcd(\gamma,p-1)=1.

Tuliskan x=rγ(modp)x=r^\gamma\pmod{p} dan y=γ1(mαx)(modp1)y=\gamma^{-1}\cdot(m-\alpha x)\pmod{p-1}, dengan invers diambil modulo p1p-1. Tanda tangan digital pada mm ialah pasangan (x,y)(x,y).

Untuk memverifikasi tanda tangan (x,y)(x,y) pada pesan mm dengan kunci publik Alice (p,r,a)(p,r,a), Bob memeriksa apakah axxyrm(modp)a^x\cdot x^y\equiv r^m\pmod{p}. Jika ya, ia menerima; jika tidak, ia menolak.

Sekali lagi, kita ingin memastikan bahwa prosedur ini memberikan hasil yang semestinya.

Proposisi 5.27. Dengan notasi di atas, Bob akan menerima setiap pesan bertanda tangan yang dihasilkan Alice menurut prosedur tersebut.

Bukti. Andaikan pesan bertanda tangan (m,x,y)(m,x,y) dibuat Alice seperti di atas. Karena yγ1(mαx)(modp1)y\equiv\gamma^{-1}(m-\alpha x)\pmod{p-1}, kita mempunyai γymαx(modp1)\gamma y\equiv m-\alpha x\pmod{p-1}. Dengan Teorema 5.2, kita menghitung axxy(rα)x(rγ)y(modp)rαx+γy(modp)rαx+(mαx)(modp)rm(modp)\begin{align*} a^x\cdot x^y &\equiv (r^\alpha)^x\cdot(r^\gamma)^y\pmod{p}\\ &\equiv r^{\alpha x+\gamma y}\pmod{p}\\ &\equiv r^{\alpha x+(m-\alpha x)}\pmod{p}\\ &\equiv r^m\pmod{p} \end{align*} Jadi, Bob akan menerima tanda tangan tersebut. ◻

Secara grafis:

Latihan untuk §5.6

Latihan 5.19. Pengajar Anda masih menyukai bilangan prima p=11717p=11717 dengan akar primitif r=103r=103 dari latihan terdahulu 5.17 tentang DHKE. Selain itu, pengajar telah menghitung nilai a=1020a=1020 untuk melengkapi kunci publik ElGamal (p,r,a)=(11717,103,1020)(p,r,a)=(11717,103,1020).

Dengan kunci publik ini, Anda ingin mengirim pesan berupa bilangan 42 kepada pengajar (bagaimanapun, itulah jawaban atas “kehidupan, alam semesta, dan segala sesuatu”). Cipherteks apa yang akan Anda kirim? Tunjukkan perhitungan Anda!

Latihan 5.20. Sekarang pengajar ingin mengirimkan nilai ujian terbaru Anda melalui surel. Untuk mendukung klaim bahwa surel itu benar-benar berasal dari pengajar, surel tersebut memuat nilai 97 beserta tambahan: “Nilai ini ditandatangani dengan tanda tangan digital ElGamal memakai kunci publik saya [kunci publik pengajar yang sama seperti dalam Latihan 5.19, yaitu (p,r,a)=(11717,103,1020)(p,r,a)=(11717,103,1020)]; nilai tanda tangannya adalah (6220,10407)(6220,10407).”

Apakah tanda tangan itu lolos verifikasi? Dengan asumsi pengikatan identitas–kunci pengajar telah diautentikasi dan kunci privatnya tidak terkompromi, apakah Anda menerima surel tersebut sebagai benar-benar berasal dari pengajar? Tunjukkan perhitungan Anda!

Latihan 5.21. Buat kunci publik ElGamal dan kirimkan kepada pengajar melalui surel. Tunggu pesan balasan yang dienkripsi dengan ElGamal, lalu kirim kembali plainteksnya kepada pengajar.

Selain itu, gunakan kunci publik Anda untuk menandatangani bilangan 17 sebagai pesan. Kirimkan bilangan bertanda tangan itu kepada pengajar dan tunggu kabar apakah tanda tangannya diterima atau ditolak.


  1. Sebenarnya, beberapa bentuk kriptografi kunci publik yang dapat berfungsi telah ditemukan lebih dahulu di lingkungan intelijen AS dan Britania Raya, tetapi tidak dibagikan kepada publik. Sejak masa awal Perang Dingin, sejumlah pemerintahan besar telah merahasiakan teorema dan bukti matematika.↩︎

  2. Seperti pada faktorisasi, terdapat algoritme yang diketahui untuk komputer kuantum yang menyelesaikan DHP secara efisien; lihat (Shor 1994).↩︎