<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Matematika, Kriptografi, Kuantum on kenji.blog</title><link>http://kenji.blog/id/categories/matematika-kriptografi-kuantum/</link><description>Recent content in Matematika, Kriptografi, Kuantum on kenji.blog</description><generator>Hugo -- gohugo.io</generator><language>id</language><copyright>kenjinote</copyright><lastBuildDate>Sun, 06 Sep 2026 12:00:00 +0900</lastBuildDate><atom:link href="http://kenji.blog/id/categories/matematika-kriptografi-kuantum/index.xml" rel="self" type="application/rss+xml"/><item><title>【Pemahaman Lengkap dengan Rumus】 Mengapa "GNFS" Klasik Terkuat Dikalahkan oleh Algoritma Kuantum? Pergeseran Paradigma dalam Faktorisasi Prima</title><link>http://kenji.blog/id/p/gnfs-to-shors-algorithm-math-deepdive/</link><pubDate>Sun, 06 Sep 2026 12:00:00 +0900</pubDate><guid>http://kenji.blog/id/p/gnfs-to-shors-algorithm-math-deepdive/</guid><description>&lt;img src="http://kenji.blog/p/gnfs-to-shors-algorithm-math-deepdive/quantum_vs_gnfs_eyecatch_1788616101508.jpg" alt="Featured image of post 【Pemahaman Lengkap dengan Rumus】 Mengapa "GNFS" Klasik Terkuat Dikalahkan oleh Algoritma Kuantum? Pergeseran Paradigma dalam Faktorisasi Prima" />&lt;p>Keamanan informasi dalam masyarakat internet modern dilindungi oleh kriptografi kunci publik seperti kriptografi RSA. Dasar keamanan kriptografi RSA bergantung pada fakta bahwa &lt;strong>&amp;ldquo;faktorisasi prima dari bilangan komposit yang sangat besar sangatlah sulit secara komputasi&amp;rdquo;&lt;/strong> .&lt;/p>
&lt;p>Dalam artikel ini, kita akan mengungkap mekanisme matematis dari &lt;strong>&amp;ldquo;General Number Field Sieve&amp;rdquo;&lt;/strong> (GNFS), algoritma faktorisasi prima terkuat untuk komputer klasik, dan mendalami mengapa algoritma ini sepenuhnya dikalahkan oleh &lt;strong>&amp;ldquo;Algoritma Shor&amp;rdquo;&lt;/strong> yang ditemukan oleh Peter Shor. Kita akan mengeksplorasi pergeseran paradigma ini secara mendalam menggunakan rumus dan diagram konseptual.&lt;/p>
&lt;hr>
&lt;h2 id="1-pendekatan-faktorisasi-prima-dalam-komputasi-klasik-perkembangan-dari-metode-faktorisasi-fermat">1. Pendekatan Faktorisasi Prima dalam Komputasi Klasik: Perkembangan dari Metode Faktorisasi Fermat
&lt;/h2>&lt;p>Masalah faktorisasi prima adalah masalah untuk menemukan bilangan prima $p, q$ sedemikian rupa sehingga $N = p \times q$ untuk suatu bilangan komposit $N$ yang diberikan.&lt;/p>
&lt;p>Ide dasarnya bermuara pada penemuan $x, y$ non-trivial yang memenuhi persamaan kongruensi berikut:&lt;/p>
$$ x^2 \equiv y^2 \pmod N $$
&lt;p>Jika kita memodifikasinya, kita mendapatkan:&lt;/p>
$$ x^2 - y^2 \equiv 0 \pmod N $$
$$ (x - y)(x + y) \equiv 0 \pmod N $$
&lt;p>Di sini, jika $x \not\equiv \pm y \pmod N$, kita dapat memperoleh faktor non-trivial dari $N$ dengan menghitung $\gcd(x-y, N)$ atau $\gcd(x+y, N)$. Fakta ini merupakan dasar dari algoritma faktorisasi modern seperti GNFS.&lt;/p>
&lt;hr>
&lt;h2 id="2-algoritma-klasik-terkuat-kedalaman-dari-general-number-field-sieve-gnfs">2. Algoritma Klasik Terkuat: Kedalaman dari &amp;ldquo;General Number Field Sieve&amp;rdquo; (GNFS)
&lt;/h2>&lt;p>&lt;strong>&amp;ldquo;GNFS&amp;rdquo;&lt;/strong> adalah algoritma faktorisasi prima tercepat yang diketahui untuk komputer klasik saat ini. Kompleksitas waktunya membutuhkan waktu sub-eksponensial (Sub-exponential).&lt;/p>
&lt;h3 id="kompleksitas-gnfs">Kompleksitas GNFS
&lt;/h3>&lt;p>Jika kita asumsikan jumlah digit dari $N$ adalah $b = \log_2 N$, kompleksitas GNFS dapat dinyatakan sebagai berikut:&lt;/p>
$$ O\left( \exp \left( \left(\frac{64}{9} b\right)^{1/3} (\log b)^{2/3} \right) \right) $$
&lt;p>Seperti yang dapat dilihat dari rumus ini, kompleksitasnya bukanlah waktu polinomial, melainkan &lt;strong>&amp;ldquo;waktu sub-eksponensial&amp;rdquo;&lt;/strong> yang sedikit lebih lambat dari eksponensial. Meskipun demikian, seiring dengan bertambahnya jumlah digit, waktu komputasi akan meningkat secara astronomis.&lt;/p>
&lt;h3 id="mekanisme-matematis-dari-gnfs">Mekanisme Matematis dari GNFS
&lt;/h3>&lt;p>GNFS sebagian besar terdiri dari 4 langkah:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Pemilihan Polinomial (Polynomial Selection)&lt;/strong>&lt;/li>
&lt;li>&lt;strong>Penyaringan (Sieving)&lt;/strong>&lt;/li>
&lt;li>&lt;strong>Pengurangan Matriks (Matrix Reduction)&lt;/strong>&lt;/li>
&lt;li>&lt;strong>Perhitungan Akar Kuadrat (Square Root)&lt;/strong>&lt;/li>
&lt;/ol>
&lt;h4 id="21-pemilihan-polinomial-dan-medan-aljabar">2.1. Pemilihan Polinomial dan Medan Aljabar
&lt;/h4>&lt;p>Pertama, pilih polinomial tak tereduksi $f(x)$ dan $g(x)$ dengan koefisien bilangan bulat. Keduanya diatur untuk memiliki akar persekutuan $m$ modulo $N$. Yaitu:&lt;/p>
$$ f(m) \equiv 0 \pmod N $$
$$ g(m) \equiv 0 \pmod N $$
&lt;p>Biasanya, $g(x)$ dipilih sebagai polinomial derajat pertama $g(x) = x - m$. Jika akar dari $f(x)$ adalah $\alpha$, maka &lt;strong>&amp;ldquo;Medan Aljabar&amp;rdquo;&lt;/strong> (Number Field) $\mathbb{Q}(\alpha)$ akan dibentuk. Kita membandingkan operasi dalam gelanggang $\mathbb{Q}(\alpha)$ dan operasi dalam gelanggang bilangan bulat biasa $\mathbb{Z}$ melalui homomorfisme $\phi: \alpha \mapsto m$.&lt;/p>
&lt;h4 id="22-penyaringan-sieving">2.2. Penyaringan (Sieving)
&lt;/h4>&lt;p>Selanjutnya, kita mencari sejumlah besar pasangan bilangan bulat koprima $(a, b)$. Tujuannya adalah untuk menemukan pasangan sedemikian rupa sehingga kedua nilai berikut adalah &lt;strong>&amp;ldquo;B-smooth&amp;rdquo;&lt;/strong> (hanya terdiri dari faktor prima yang relatif kecil):&lt;/p>
&lt;ol>
&lt;li>$a - bm$ (nilai pada gelanggang bilangan bulat)&lt;/li>
&lt;li>$b^d f(a/b)$ (sesuai dengan norma $N(a - b\alpha)$ pada medan aljabar)&lt;/li>
&lt;/ol>
&lt;p>Di sini, teknik pencarian cepat yang disebut &lt;strong>&amp;ldquo;Saringan&amp;rdquo;&lt;/strong> (Sieve) digunakan. Hal ini memungkinkan ekstraksi pasangan $(a, b)$ yang memenuhi kondisi dari kandidat dalam jumlah yang sangat besar secara efisien.&lt;/p>
&lt;h4 id="23-pengurangan-matriks-linear-algebra-over-gf2">2.3. Pengurangan Matriks (Linear Algebra over GF(2))
&lt;/h4>&lt;p>Dari pasangan $(a, b)$ yang dikumpulkan, kita membentuk vektor eksponen dan mencari ruang nol kiri dari matriks renggang (sparse matrix) besar pada $\mathbb{F}_2$ (medan dengan elemen hanya 0 dan 1).&lt;/p>
&lt;p>Kita mencari solusi vektor $v$ sehingga relasi $ \prod (a_i - b_i m) $ dan $ \prod (a_i - b_i \alpha) $ masing-masing menjadi elemen kuadrat sempurna. Hal ini tidak lain adalah menyelesaikan sistem persamaan linear:&lt;/p>
$$ M \mathbf{x} \equiv \mathbf{0} \pmod 2 $$
&lt;p>Di sini, algoritma komputasi numerik tingkat lanjut seperti Block Lanczos Algorithm atau Block Wiedemann Algorithm dimanfaatkan.&lt;/p>
&lt;h4 id="24-perhitungan-akar-kuadrat">2.4. Perhitungan Akar Kuadrat
&lt;/h4>&lt;p>Terakhir, kita mengambil akar kuadrat dari medan aljabar dan gelanggang bilangan bulat, yang menghasilkan relasi $x^2 \equiv y^2 \pmod N$. Kemudian, kita menghitung $\gcd(x-y, N)$ dan memperoleh faktornya.&lt;/p>
&lt;hr>
&lt;h2 id="3-terobosan-komputasi-kuantum-algoritma-shor">3. Terobosan Komputasi Kuantum: &amp;ldquo;Algoritma Shor&amp;rdquo;
&lt;/h2>&lt;p>Berbeda dengan GNFS yang membutuhkan waktu sub-eksponensial, &lt;strong>&amp;ldquo;Algoritma Shor&amp;rdquo;&lt;/strong> yang diterbitkan oleh Peter Shor pada tahun 1994, dapat memecahkan masalah ini dalam &lt;strong>&amp;ldquo;waktu polinomial&amp;rdquo;&lt;/strong> dengan menggunakan komputer kuantum.&lt;/p>
&lt;h3 id="kompleksitas-algoritma-shor">Kompleksitas Algoritma Shor
&lt;/h3>&lt;p>Jika kita mengasumsikan jumlah qubit sebagai $O(\log N)$, maka kompleksitas waktunya adalah:&lt;/p>
$$ O((\log N)^3) $$
&lt;p>Ini berarti tidak terjadi ledakan eksponensial sehubungan dengan jumlah bit. Ini adalah hasil yang menakjubkan di mana bilangan komposit sangat besar yang waktu komputasi &lt;strong>&amp;ldquo;komputasi klasik&amp;rdquo;&lt;/strong> -nya melebihi umur alam semesta, dapat dipecahkan dalam hitungan jam hingga hari menggunakan &lt;strong>&amp;ldquo;komputasi kuantum&amp;rdquo;&lt;/strong> .&lt;/p>
&lt;h3 id="gambaran-umum-algoritma-shor-reduksi-ke-masalah-pencarian-periode">Gambaran Umum Algoritma Shor: Reduksi ke Masalah Pencarian Periode
&lt;/h3>&lt;p>Algoritma Shor dengan cerdik mereduksi masalah faktorisasi prima menjadi &lt;strong>&amp;ldquo;masalah pencarian periode&amp;rdquo;&lt;/strong> .&lt;/p>
&lt;ol>
&lt;li>Pilih bilangan bulat acak $a$ yang relatif prima dengan $N$ ($1 &lt; a &lt; N$).&lt;/li>
&lt;li>Definisikan fungsi $f(x) = a^x \bmod N$.&lt;/li>
&lt;li>Temukan periode $r$ dari $f(x)$, yaitu bilangan bulat positif terkecil $r$ sedemikian rupa sehingga $a^r \equiv 1 \pmod N$.&lt;/li>
&lt;li>Jika $r$ bernilai genap, periksa apakah $a^{r/2} \not\equiv -1 \pmod N$, lalu hitung $\gcd(a^{r/2} \pm 1, N)$ untuk mendapatkan faktor prima.&lt;/li>
&lt;/ol>
&lt;p>Langkah ke-3, yaitu &lt;strong>&amp;ldquo;penemuan periode $r$&amp;rdquo;&lt;/strong> , adalah hambatan yang memerlukan waktu eksponensial pada komputer klasik. Namun, komputer kuantum memecahkan masalah ini dalam sekejap menggunakan &lt;strong>&amp;ldquo;Superposisi Kuantum&amp;rdquo;&lt;/strong> dan &lt;strong>&amp;ldquo;Transformasi Fourier Kuantum&amp;rdquo;&lt;/strong> (QFT).&lt;/p>
&lt;hr>
&lt;h2 id="4-transformasi-fourier-kuantum-qft-dan-ekstraksi-periode">4. Transformasi Fourier Kuantum (QFT) dan Ekstraksi Periode
&lt;/h2>&lt;p>Mari kita lihat lebih dekat operasi matematis keadaan kuantum yang menjadi inti dari Algoritma Shor.&lt;/p>
&lt;h3 id="41-generasi-superposisi-kuantum">4.1. Generasi Superposisi Kuantum
&lt;/h3>&lt;p>Pertama, siapkan 2 register kuantum. Register 1 menahan keadaan superposisi input $x$, dan Register 2 menahan hasil komputasi fungsi $f(x)$. Terapkan Transformasi Hadamard (Hadamard Transform) ke keadaan awal $|0\rangle |0\rangle$ untuk menciptakan superposisi semua kemungkinan $x$.&lt;/p>
$$ |\psi_1\rangle = \frac{1}{\sqrt{Q}} \sum_{x=0}^{Q-1} |x\rangle |0\rangle $$
&lt;p>
(Di mana $Q$ adalah pangkat 2 yang memenuhi $N^2 \le Q &lt; 2N^2$)&lt;/p>
&lt;p>Selanjutnya, gunakan orakel kuantum $U_f$ untuk menghitung $f(x) = a^x \bmod N$ dan menyimpannya di register 2.&lt;/p>
$$ |\psi_2\rangle = U_f |\psi_1\rangle = \frac{1}{\sqrt{Q}} \sum_{x=0}^{Q-1} |x\rangle |a^x \bmod N\rangle $$
&lt;p>Sekarang asumsikan register 2 diukur (secara teoritis, meskipun tidak diukur, struktur matematisnya tetap sama). Jika suatu nilai $y = a^{x_0} \bmod N$ diamati, keadaan register 1 akan runtuh (collapse) ke superposisi semua $x$ yang memenuhi $f(x) = y$. Misalkan periodenya adalah $r$, maka $x$ tersebut adalah $x_0, x_0 + r, x_0 + 2r, \dots$&lt;/p>
$$ |\psi_3\rangle = \frac{1}{\sqrt{M}} \sum_{k=0}^{M-1} |x_0 + kr\rangle $$
&lt;p>
(Di mana $M \approx Q/r$ adalah jumlah suku)&lt;/p>
&lt;p>Keadaan ini mengandung informasi periode $r$, namun pengukuran langsung hanya akan menghasilkan $x_0 + kr$ acak, dan periode $r$ tetap tidak diketahui. Di sinilah QFT berperan.&lt;/p>
&lt;h3 id="42-penerapan-transformasi-fourier-kuantum-qft">4.2. Penerapan Transformasi Fourier Kuantum (QFT)
&lt;/h3>&lt;p>QFT adalah operasi yang menerapkan transformasi Fourier diskrit ke amplitudo keadaan kuantum. Aksi QFT pada keadaan $|x\rangle$ didefinisikan sebagai berikut:&lt;/p>
$$ \text{QFT} |x\rangle = \frac{1}{\sqrt{Q}} \sum_{y=0}^{Q-1} e^{2\pi i \frac{xy}{Q}} |y\rangle $$
&lt;p>Bila ini diterapkan pada $|\psi_3\rangle$, interferensi fase (interferensi kuantum) akan terjadi.&lt;/p>
$$ |\psi_4\rangle = \text{QFT} |\psi_3\rangle = \frac{1}{\sqrt{MQ}} \sum_{y=0}^{Q-1} \sum_{k=0}^{M-1} e^{2\pi i \frac{(x_0 + kr)y}{Q}} |y\rangle $$
&lt;p>Jika kita memperluas penjumlahan dari rumus ini, bagian berikut muncul:&lt;/p>
$$ \sum_{k=0}^{M-1} e^{2\pi i \frac{kry}{Q}} $$
&lt;p>Penjumlahan deret geometri ini akan saling menguatkan (Constructive Interference) hanya ketika $ry/Q$ mendekati bilangan bulat, dan akan saling meniadakan (Destructive Interference) pada titik lainnya.&lt;/p>
&lt;p>Oleh karena itu, keadaan $|y\rangle$ yang diukur dengan probabilitas tinggi akan berupa bilangan bulat $y$ yang memenuhi:&lt;/p>
$$ \frac{y}{Q} \approx \frac{c}{r} $$
&lt;p>(Di mana $c$ adalah suatu bilangan bulat).&lt;/p>
&lt;h3 id="43-identifikasi-periode-melalui-ekspansi-pecahan-berlanjut">4.3. Identifikasi Periode melalui Ekspansi Pecahan Berlanjut
&lt;/h3>&lt;p>Setelah memperoleh $y$ melalui pengukuran, gunakan komputer klasik untuk melakukan &lt;strong>&amp;ldquo;Ekspansi Pecahan Berlanjut&amp;rdquo;&lt;/strong> (Continued Fraction Expansion) pada $y/Q$. Hal ini memungkinkan penghitungan pecahan hampiran $c/r$ dari $y/Q$ dan mengekstrak kandidat periode $r$ dari penyebut secara sangat efisien.&lt;/p>
&lt;hr>
&lt;h2 id="5-perbandingan-model-konseptual-dan-pergeseran-paradigma">5. Perbandingan Model Konseptual dan Pergeseran Paradigma
&lt;/h2>&lt;p>Untuk memahami secara intuitif perbedaan antara GNFS dan Algoritma Shor, diagram konseptual ditunjukkan menggunakan notasi Mermaid.&lt;/p>
&lt;h3 id="diagram-konseptual-algoritma-shor-dengan-sirkuit-kuantum">Diagram Konseptual Algoritma Shor dengan Sirkuit Kuantum
&lt;/h3>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">graph TD
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> A[Keadaan Awal: 0...0] --&amp;gt; B[Superposisi semua keadaan dengan Transformasi Hadamard]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> B --&amp;gt; C[Operasi Pangkat Modular a^x mod N]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> C --&amp;gt;|Keterikatan Kuantum| D[Runtuh ke keadaan dengan periodisitas]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> D --&amp;gt; E[Transformasi Fourier Kuantum QFT]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> E --&amp;gt;|Amplifikasi probabilitas via interferensi| F[Pengukuran: Mendapatkan y]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> F --&amp;gt; G[Pemrosesan Klasik: Ekspansi Pecahan Berlanjut]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> G --&amp;gt; H[Penemuan Periode r]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> H --&amp;gt; I[Menghitung Faktor Prima dari N]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> style A fill:#f9f,stroke:#333,stroke-width:2px
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> style E fill:#bbf,stroke:#333,stroke-width:2px
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> style I fill:#bfb,stroke:#333,stroke-width:2px
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="intisari-pergeseran-paradigma">Intisari Pergeseran Paradigma
&lt;/h3>&lt;p>GNFS menggunakan pendekatan &lt;strong>&amp;ldquo;mencari relasi di dalam ruang matematis (medan aljabar)&amp;rdquo;&lt;/strong> . Namun, karena ruang pencarian meluas secara eksponensial sehubungan dengan jumlah digit, dekripsi pada dasarnya menjadi mustahil untuk panjang kunci melebihi 2048 bit menggunakan kemampuan komputasi klasik (bahkan dengan paralelisasi).&lt;/p>
&lt;p>Di sisi lain, Algoritma Shor memanfaatkan &lt;strong>&amp;ldquo;sifat gelombang dari interferensi kuantum&amp;rdquo;&lt;/strong> . Algoritma ini mengevaluasi semua jalur komputasi dalam keadaan superposisi secara simultan, saling meniadakan (melemahkan) jawaban yang tidak perlu menggunakan QFT, dan hanya menguatkan amplitudo probabilitas dari periode yang benar. Dengan ini, pendekatan tersebut tidak lagi mencari di dalam ruang, melainkan mengadopsi dimensi yang sama sekali berbeda: &lt;strong>&amp;ldquo;membuat jawaban yang benar muncul ke permukaan&amp;rdquo;&lt;/strong> .&lt;/p>
&lt;h2 id="6-kesimpulan">6. Kesimpulan
&lt;/h2>&lt;p>Dalam artikel ini, kami telah membandingkan secara mendalam latar belakang matematis dan struktur algoritma antara &lt;strong>&amp;ldquo;GNFS&amp;rdquo;&lt;/strong> yang merupakan batas ekstrem komputasi klasik, dengan &lt;strong>&amp;ldquo;Algoritma Shor&amp;rdquo;&lt;/strong> yang memamerkan kekuatan komputasi kuantum.&lt;/p>
&lt;p>Sementara GNFS menggunakan keahlian matematis seperti pemilihan polinomial dan komputasi matriks besar untuk menekan kompleksitas ke waktu sub-eksponensial, Algoritma Shor berhasil mencapai terobosan langsung ke waktu polinomial dengan menggabungkan prinsip dasar mekanika kuantum, yakni superposisi dan interferensi, dengan alat matematis (QFT).&lt;/p>
&lt;p>Saat ini, belum ada Komputer Kuantum Toleran Kesalahan (FTQC) berskala praktis (ribuan qubit) yang mampu menjalankan Algoritma Shor. Namun, keberadaan pergeseran paradigma teoritis dan matematis inilah yang menjadi alasan utama mengapa transisi ke Kriptografi Pasca-Kuantum (PQC: Post-Quantum Cryptography) dipercepat secara global di seluruh dunia saat ini.&lt;/p></description></item><item><title>【PQC】Gambaran Lengkap "Kriptografi Pasca-Kuantum", Kriptografi Generasi Berikutnya di Era Komputer Kuantum</title><link>http://kenji.blog/id/p/post-quantum-cryptography/</link><pubDate>Sat, 05 Sep 2026 22:09:22 +0900</pubDate><guid>http://kenji.blog/id/p/post-quantum-cryptography/</guid><description>&lt;img src="http://kenji.blog/p/post-quantum-cryptography/post_quantum_cryptography_1788613735417.jpg" alt="Featured image of post 【PQC】Gambaran Lengkap "Kriptografi Pasca-Kuantum", Kriptografi Generasi Berikutnya di Era Komputer Kuantum" />&lt;h2 id="pengantar-ancaman-terhadap-teknologi-kriptografi-yang-dibawa-oleh-komputer-kuantum">Pengantar: &amp;ldquo;Ancaman&amp;rdquo; terhadap Teknologi Kriptografi yang Dibawa oleh Komputer Kuantum
&lt;/h2>&lt;p>Saat ini, komunikasi yang kita lakukan setiap hari di internet——pembayaran perbankan online, penjelajahan situs web (HTTPS), pertukaran pesan di aplikasi, hingga transaksi blockchain dan aset kripto——sebagian besar dilindungi oleh teknologi yang disebut &amp;ldquo;kriptografi kunci publik&amp;rdquo;. Secara khusus, algoritma seperti kriptografi RSA dan Kriptografi Kurva Eliptik (ECC) menjadi dasar yang mendukung keandalan masyarakat digital modern.&lt;/p>
&lt;p>Metode kriptografi ini didasarkan pada masalah matematika yang sulit, seperti &amp;ldquo;faktorisasi bilangan prima besar&amp;rdquo; atau &amp;ldquo;masalah logaritma diskrit&amp;rdquo;, yang membutuhkan waktu astronomis untuk dipecahkan oleh komputer klasik saat ini (termasuk superkomputer). Namun, seiring dengan kemajuan pesat &lt;strong>Komputer Kuantum&lt;/strong> dalam beberapa tahun terakhir, premis ini akan runtuh secara mendasar jika komputer tersebut dipraktikkan.&lt;/p>
&lt;p>Pada tahun 1994, Peter Shor menerbitkan &amp;ldquo;Algoritma Shor&amp;rdquo;, yang membuktikan secara matematis bahwa faktorisasi bilangan prima dan masalah logaritma diskrit dapat diselesaikan dalam waktu yang sangat singkat jika menggunakan komputer kuantum dengan kinerja yang memadai. Ini berarti ada risiko bahwa semua komunikasi terenkripsi yang melindungi internet saat ini akan dapat didekripsi di masa depan (masalah yang disebut Y2Q: Years to Quantum, atau Q-Day).&lt;/p>
&lt;p>Lebih parah lagi, ada metode serangan yang disebut &amp;ldquo;Harvest Now, Decrypt Later (Curi data sekarang dan simpan, dekripsi nanti saat kriptografi dapat dipecahkan)&amp;rdquo;. Data yang perlu dirahasiakan selama beberapa dekade, seperti informasi rahasia negara, kekayaan intelektual perusahaan, dan informasi biometrik individu, mungkin telah menjadi sasaran pencurian dengan premis bahwa mereka akan didekripsi di masa depan.&lt;/p>
&lt;p>Untuk mengatasi krisis yang belum pernah terjadi sebelumnya ini, kriptografer dan lembaga penelitian di seluruh dunia mengerahkan seluruh upaya untuk mengembangkan teknologi kriptografi generasi berikutnya yang dapat mempertahankan keamanan dari serangan komputer kuantum, yaitu &lt;strong>Kriptografi Pasca-Kuantum (PQC: Post-Quantum Cryptography)&lt;/strong> . Artikel ini akan menjelaskan secara rinci mulai dari dasar-dasar PQC, mekanisme algoritma utama, hingga tren standardisasi global terbaru yang didorong oleh Institut Nasional Standar dan Teknologi AS (NIST).&lt;/p>
&lt;hr>
&lt;h2 id="apa-itu-kriptografi-pasca-kuantum-pqc">Apa itu Kriptografi Pasca-Kuantum (PQC)?
&lt;/h2>&lt;p>Kriptografi Pasca-Kuantum (Post-Quantum Cryptography, PQC) adalah istilah umum untuk algoritma kriptografi yang dirancang agar dapat beroperasi di komputer klasik yang ada, namun tetap tahan terhadap serangan oleh komputer kuantum skala besar di masa depan (seperti Algoritma Shor).&lt;/p>
&lt;p>Teknologi yang sering dibingungkan adalah &amp;ldquo;Kriptografi Kuantum (Quantum Cryptography)&amp;rdquo; dan &amp;ldquo;Distribusi Kunci Kuantum (QKD)&amp;rdquo;, namun ini adalah pendekatan yang sama sekali berbeda. Kriptografi Kuantum (QKD) adalah teknologi berbasis perangkat keras yang menggunakan hukum fisika mekanika kuantum (seperti sifat di mana status berubah saat diamati) untuk membuat penyadapan di jalur komunikasi tidak mungkin secara fisik. Ini membutuhkan serat optik khusus atau peralatan khusus, dan memiliki tantangan seperti biaya implementasi serta batasan jarak.&lt;/p>
&lt;p>Di sisi lain, &lt;strong>PQC adalah teknologi kriptografi berbasis perangkat lunak yang murni berdasar pada &amp;ldquo;matematika&amp;rdquo;&lt;/strong> . Oleh karena itu, ia dapat diintegrasikan sebagai pembaruan perangkat software ke infrastruktur internet yang ada, server, ponsel pintar, peramban, dan lainnya, sehingga memiliki penerapan yang sangat tinggi dalam dunia nyata. Perusahaan TI dan lembaga pemerintah di seluruh dunia kini menganggap penting dan mendesak untuk menggantikan (migrasi) RSA dan ECC yang saat ini digunakan dengan PQC ini.&lt;/p>
&lt;hr>
&lt;h2 id="4-pendekatan-matematis-utama-yang-mendukung-pqc">4 Pendekatan Matematis Utama yang Mendukung PQC
&lt;/h2>&lt;p>Berbagai algoritma PQC telah diusulkan berdasarkan masalah matematika yang sulit dipecahkan secara efisien bahkan dengan menggunakan komputer kuantum (seperti masalah NP-hard). Di sini, kami memperkenalkan 4 kategori utama yang mendominasi saat ini.&lt;/p>
&lt;h3 id="pendekatan-utama-kriptografi-pasca-kuantum-pqc">Pendekatan Utama Kriptografi Pasca-Kuantum (PQC)
&lt;/h3>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-gdscript3" data-lang="gdscript3">&lt;span class="line">&lt;span class="cl">&lt;span class="n">graph&lt;/span> &lt;span class="n">LR&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">PQC&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">Kriptografi&lt;/span> &lt;span class="n">Pasca&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">Kuantum&lt;/span> &lt;span class="n">PQC&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="o">--&amp;gt;&lt;/span> &lt;span class="n">L&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">Kriptografi&lt;/span> &lt;span class="n">Berbasis&lt;/span> &lt;span class="n">Kisi&lt;/span> &lt;span class="n">Lattice&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">based&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">PQC&lt;/span> &lt;span class="o">--&amp;gt;&lt;/span> &lt;span class="n">H&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">Kriptografi&lt;/span> &lt;span class="n">Berbasis&lt;/span> &lt;span class="n">Hash&lt;/span> &lt;span class="n">Hash&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">based&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">PQC&lt;/span> &lt;span class="o">--&amp;gt;&lt;/span> &lt;span class="n">M&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">Kriptografi&lt;/span> &lt;span class="n">Polinomial&lt;/span> &lt;span class="n">Multivariabel&lt;/span> &lt;span class="n">Multivariate&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">PQC&lt;/span> &lt;span class="o">--&amp;gt;&lt;/span> &lt;span class="n">C&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">Kriptografi&lt;/span> &lt;span class="n">Berbasis&lt;/span> &lt;span class="n">Kode&lt;/span> &lt;span class="n">Code&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">based&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">L&lt;/span> &lt;span class="o">--&amp;gt;&lt;/span> &lt;span class="n">L1&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">FIPS&lt;/span> &lt;span class="mi">203&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">ML&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">KEM&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">L&lt;/span> &lt;span class="o">--&amp;gt;&lt;/span> &lt;span class="n">L2&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">FIPS&lt;/span> &lt;span class="mi">204&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">ML&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">DSA&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">H&lt;/span> &lt;span class="o">--&amp;gt;&lt;/span> &lt;span class="n">H1&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">FIPS&lt;/span> &lt;span class="mi">205&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">SLH&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">DSA&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">style&lt;/span> &lt;span class="n">PQC&lt;/span> &lt;span class="n">fill&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="c1">#f9f,stroke:#333,stroke-width:2px&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="1-kriptografi-berbasis-kisi-lattice-based-cryptography">1. Kriptografi Berbasis Kisi (Lattice-based Cryptography)
&lt;/h3>&lt;p>Saat ini, &amp;ldquo;kriptografi kisi&amp;rdquo; adalah yang paling menjanjikan dan menjadi arus utama di bidang PQC. Kriptografi kisi mendasarkan keamanannya pada masalah titik-titik yang tersusun teratur (titik kisi) dalam ruang multidimensi. Masalah yang terkenal termasuk &amp;ldquo;Masalah Vektor Terpendek (SVP: Shortest Vector Problem)&amp;rdquo; dan &amp;ldquo;Masalah Pembelajaran dengan Kesalahan (LWE: Learning With Errors)&amp;rdquo;.&lt;/p>
&lt;p>&lt;strong>Ringkasan Mekanisme:&lt;/strong>
Bayangkan titik-titik yang tak terhitung jumlahnya tersusun dalam pola kisi dalam ruang berdimensi sangat tinggi (ratusan hingga ribuan dimensi). Menemukan titik kisi tertentu itu mudah dalam 2 atau 3 dimensi, tetapi pada ratusan dimensi, baik komputer klasik maupun kuantum belum menemukan algoritma untuk menemukannya secara efisien. Secara khusus, masalah LWE memanfaatkan sifat di mana &amp;ldquo;menambahkan &amp;lsquo;kebisingan (kesalahan)&amp;rsquo; kecil secara sengaja ke dalam sistem persamaan linear membuat sangat sulit untuk menebak variabel aslinya&amp;rdquo;.&lt;/p>
&lt;p>&lt;strong>Kelebihan:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Berlaku untuk pembagian kunci (KEM) maupun tanda tangan digital.&lt;/li>
&lt;li>Kecepatan pemrosesan sangat tinggi (terkadang lebih cepat dari RSA atau ECC).&lt;/li>
&lt;li>Ukuran kunci dan ciphertext relatif kecil, sehingga seimbang.&lt;/li>
&lt;/ul>
&lt;p>Sebagian besar algoritma yang saat ini distandarisasi oleh NIST (seperti ML-KEM dan ML-DSA) mengadopsi kriptografi berbasis kisi ini.&lt;/p>
&lt;h3 id="2-kriptografi-berbasis-hash-hash-based-cryptography">2. Kriptografi Berbasis Hash (Hash-based Cryptography)
&lt;/h3>&lt;p>Kriptografi berbasis hash adalah algoritma PQC yang dikhususkan untuk tanda tangan digital. Keamanannya murni bergantung pada ketahanan terhadap benturan dan fungsi satu arah dari &amp;ldquo;fungsi hash kriptografis&amp;rdquo; yang aman, seperti SHA-2 atau SHA-3.&lt;/p>
&lt;p>&lt;strong>Ringkasan Mekanisme:&lt;/strong>
Ini dimulai dengan skema tanda tangan sekali pakai (one-time signature) yang disebut &amp;ldquo;Tanda Tangan Lamport (Lamport Signature)&amp;rdquo;, yang hanya dapat digunakan sekali. Dengan menggabungkannya ke dalam format data struktur pohon yang disebut &amp;ldquo;Merkle Tree&amp;rdquo;, ia memungkinkan beberapa tanda tangan dengan satu pasang kunci.&lt;/p>
&lt;p>&lt;strong>Kelebihan:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Dasar keamanannya sangat kokoh, dengan bukti kuat bahwa &amp;ldquo;selama fungsi hash aman, ini aman&amp;rdquo;.&lt;/li>
&lt;li>Karena kurangnya ketergantungan pada struktur matematika, risiko ditemukannya metode pemecahan yang tidak terduga sangat rendah.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Kekurangan:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Tidak dapat digunakan untuk pembagian kunci (KEM), hanya tanda tangan digital.&lt;/li>
&lt;li>Ukuran tanda tangan cenderung lebih besar.&lt;/li>
&lt;li>Ada versi &amp;ldquo;stateful&amp;rdquo; dan &amp;ldquo;stateless&amp;rdquo;. Versi stateful (seperti XMSS) memiliki tingkat kesulitan implementasi yang tinggi karena perlu mengelola jumlah penggunaan kunci dengan ketat.&lt;/li>
&lt;/ul>
&lt;p>NIST menstandarisasi &amp;ldquo;SLH-DSA (sebelumnya SPHINCS+)&amp;rdquo; sebagai tanda tangan berbasis hash yang stateless.&lt;/p>
&lt;h3 id="3-kriptografi-berbasis-polinomial-multivariabel-multivariate-cryptography">3. Kriptografi Berbasis Polinomial Multivariabel (Multivariate Cryptography)
&lt;/h3>&lt;p>Kriptografi polinomial multivariabel mendasarkan keamanannya pada kesulitan menyelesaikan sistem polinomial kuadratik yang memiliki banyak variabel (Masalah MQ: Multivariate Quadratic problem). Masalah ini diketahui merupakan NP-hard.&lt;/p>
&lt;p>&lt;strong>Ringkasan Mekanisme:&lt;/strong>
Pengirim membuat ciphertext (tanda tangan) dengan mensubstitusikan plaintext (atau nilai hash) ke dalam persamaan kompleks dengan banyak variabel yang diberikan sebagai kunci publik. Penerima yang sah memiliki &amp;ldquo;informasi tersembunyi (trapdoor) yang mengubah struktur persamaan menjadi bentuk yang mudah diselesaikan&amp;rdquo; sebagai kunci rahasia, yang digunakannya untuk mendekripsi (atau memverifikasi tanda tangan).&lt;/p>
&lt;p>&lt;strong>Kelebihan:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Ukuran tanda tangan sangat kecil.&lt;/li>
&lt;li>Kecepatan verifikasi tanda tangan sangat cepat. Sangat cocok untuk perangkat IoT dengan sumber daya terbatas.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Kekurangan:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Ukuran kunci publik sangat besar (bisa mencapai puluhan hingga ratusan kilobyte).&lt;/li>
&lt;li>Di masa lalu, beberapa algoritma yang menonjol (seperti Rainbow) telah dipecahkan oleh serangan klasik, sehingga sedikit lebih sulit untuk membangun kepercayaan terhadap keamanannya dibandingkan dengan metode lain.&lt;/li>
&lt;/ul>
&lt;h3 id="4-kriptografi-berbasis-kode-code-based-cryptography">4. Kriptografi Berbasis Kode (Code-based Cryptography)
&lt;/h3>&lt;p>Kriptografi berbasis kode adalah penerapan teori &amp;ldquo;kode koreksi kesalahan&amp;rdquo; yang digunakan untuk memperbaiki kesalahan di jalur komunikasi ke dalam kriptografi. &amp;ldquo;Kriptografi McEliece&amp;rdquo; yang diusulkan pada tahun 1978 adalah yang paling terkenal, dan merupakan salah satu yang tertua di PQC.&lt;/p>
&lt;p>&lt;strong>Ringkasan Mekanisme:&lt;/strong>
Pengirim menyandikan plaintext menggunakan kunci publik penerima (matriks generator kode koreksi kesalahan yang menyembunyikan struktur tertentu), dan menambahkan kesalahan yang disengaja (kebisingan) sebelum mengirim. Penerima menggunakan kunci rahasia untuk menghilangkan kesalahan dan mengambil plaintext. Penyerang kriptografi harus memperbaiki kesalahan dari kode acak yang tidak tahu strukturnya, yang disebut &amp;ldquo;masalah dekoding sindrom umum&amp;rdquo; dan terbukti NP-hard.&lt;/p>
&lt;p>&lt;strong>Kelebihan:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Telah dipelajari secara menyeluruh selama lebih dari 40 tahun tanpa ditemukan serangan yang efektif, sehingga keandalan keamanannya sangat tinggi.&lt;/li>
&lt;li>Proses enkripsi dan dekripsi yang cepat.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Kekurangan:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Ukuran kunci publik sangat besar (bisa mencapai beberapa megabyte). Akibatnya, sulit digunakan dalam lingkungan dengan keterbatasan bandwidth atau memori (seperti handshake TLS).&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="tren-standardisasi-pqc-terbaru-oleh-nist">Tren Standardisasi PQC Terbaru oleh NIST
&lt;/h2>&lt;p>Institut Nasional Standar dan Teknologi AS (NIST) meluncurkan panggilan global untuk algoritma kriptografi pasca-kuantum generasi berikutnya pada tahun 2016, dan telah melalui beberapa putaran evaluasi ketat selama bertahun-tahun.&lt;/p>
&lt;p>Pada tahun 2024, NIST akhirnya mengumumkan tiga algoritma berikut sebagai Standar Pemrosesan Informasi Federal (FIPS) resmi. Hal ini menyelesaikan fondasi yang kuat bagi organisasi di seluruh dunia untuk mulai mengimplementasikannya di lingkungan produksi.&lt;/p>
&lt;h3 id="standar-fips-yang-ditetapkan-2024">Standar FIPS yang Ditetapkan (2024)
&lt;/h3>&lt;ol>
&lt;li>
&lt;p>&lt;strong>FIPS 203: ML-KEM (sebelumnya: CRYSTALS-Kyber)&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Tujuan:&lt;/strong> Mekanisme Enkapsulasi Kunci (KEM) / Enkripsi dan Pembagian Kunci&lt;/li>
&lt;li>&lt;strong>Teknologi Dasar:&lt;/strong> Kriptografi Kisi (Module-LWE)&lt;/li>
&lt;li>&lt;strong>Karakteristik:&lt;/strong> Menawarkan keseimbangan yang sangat baik antara ukuran kunci dan kecepatan, dan berfungsi sebagai pembagian kunci PQC default untuk penggunaan internet umum seperti komunikasi Web (TLS) dan aplikasi pesan yang aman.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>FIPS 204: ML-DSA (sebelumnya: CRYSTALS-Dilithium)&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Tujuan:&lt;/strong> Tanda Tangan Digital&lt;/li>
&lt;li>&lt;strong>Teknologi Dasar:&lt;/strong> Kriptografi Kisi (Module-LWE)&lt;/li>
&lt;li>&lt;strong>Karakteristik:&lt;/strong> Standar utama untuk tanda tangan digital. Menawarkan pemrosesan yang efisien, dan akan menjadi standar baru untuk semua kasus penggunaan tanda tangan elektronik, seperti penandatanganan perangkat lunak dan otentikasi dokumen.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>FIPS 205: SLH-DSA (sebelumnya: SPHINCS+)&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Tujuan:&lt;/strong> Tanda Tangan Digital&lt;/li>
&lt;li>&lt;strong>Teknologi Dasar:&lt;/strong> Kriptografi Berbasis Hash (Stateless)&lt;/li>
&lt;li>&lt;strong>Karakteristik:&lt;/strong> Memainkan peran penting karena berfungsi sebagai cadangan (backup) jika kelemahan ditemukan dalam kriptografi kisi di masa depan. Meskipun ukuran tanda tangan lebih besar, ini cocok untuk penggunaan yang memerlukan keandalan jangka panjang.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ol>
&lt;h3 id="mengejar-keragaman-lebih-lanjut">Mengejar Keragaman Lebih Lanjut
&lt;/h3>&lt;p>Meskipun NIST telah menyelesaikan proses standardisasi awal, mereka terus mencari algoritma tambahan. Mengingat bahwa standarnya cenderung &amp;ldquo;kriptografi kisi&amp;rdquo;, memastikan &lt;strong>Keragaman Kripto (Crypto Diversity)&lt;/strong> dianggap sangat penting. Evaluasi kriptografi berbasis kode dan lainnya sedang berlangsung sebagai standar cadangan untuk pembagian kunci, dan fondasi PQC akan menjadi lebih kuat di masa depan.&lt;/p>
&lt;hr>
&lt;h2 id="skenario-dan-tantangan-migrasi-pqc-pentingnya-agility-kripto">Skenario dan Tantangan Migrasi PQC: Pentingnya &amp;ldquo;Agility Kripto&amp;rdquo;
&lt;/h2>&lt;p>Dengan dirilisnya standar resmi oleh NIST, lembaga pemerintah, lembaga keuangan, dan perusahaan teknologi di seluruh dunia akan mempercepat migrasi mereka dari RSA/ECC yang ada ke PQC. Pedoman dari Badan Keamanan Nasional AS (NSA) dan lainnya juga merekomendasikan penyelesaian migrasi sejak dini.&lt;/p>
&lt;h3 id="mengadopsi-pendekatan-hibrida">Mengadopsi Pendekatan Hibrida
&lt;/h3>&lt;p>Karena algoritma PQC masih baru, mereka belum melalui &amp;ldquo;ujian waktu&amp;rdquo; seperti kriptografi klasik. Mengingat risiko bug tersembunyi dalam implementasi atau metode serangan baru yang ditemukan, &lt;strong>&amp;ldquo;Pendekatan Hibrida&amp;rdquo;&lt;/strong> direkomendasikan selama masa transisi. Ini adalah metode pertukaran kunci yang menggabungkan kriptografi yang sudah ada dan terbukti (misalnya: ECDHE) dengan PQC baru (misalnya: ML-KEM). Saat ini, uji coba pendekatan ini berkembang pesat di peramban utama dan layanan cloud.&lt;/p>
&lt;h3 id="mencapai-agility-kripto-kelincahan-kriptografi">Mencapai Agility Kripto (Kelincahan Kriptografi)
&lt;/h3>&lt;p>Hal terpenting yang perlu disadari oleh perusahaan dan pengembang sistem ke depan adalah memastikan &lt;strong>&amp;ldquo;Agility Kripto (Crypto-Agility)&amp;rdquo;&lt;/strong> . Desain arsitektur yang fleksibel yang memungkinkan algoritma kriptografi untuk dipertukarkan atau diperbarui dengan cepat tanpa menghentikan sistem saat cacat ditemukan pada algoritma atau standar baru muncul sangatlah penting.&lt;/p>
&lt;p>Langkah pertama yang penting menuju migrasi PQC adalah membuat Inventaris Kriptografi (CBOM: Cryptography Bill of Materials) untuk memahami secara akurat &amp;ldquo;di mana&amp;rdquo;, &amp;ldquo;kriptografi apa&amp;rdquo;, dan &amp;ldquo;untuk tujuan apa&amp;rdquo; ia digunakan di dalam sistem internal.&lt;/p>
&lt;hr>
&lt;h2 id="kesimpulan-bersiap-untuk-q-day-yang-akan-datang">Kesimpulan: Bersiap untuk &amp;ldquo;Q-Day&amp;rdquo; yang Akan Datang
&lt;/h2>&lt;p>Sementara evolusi komputer kuantum akan membawa manfaat besar bagi umat manusia, itu juga merupakan ancaman terbesar bagi keamanan kriptografi yang merupakan fondasi masyarakat digital kita saat ini. Kriptografi Pasca-Kuantum (PQC) bukan lagi sekadar &amp;ldquo;topik penelitian masa depan yang jauh&amp;rdquo;. Menyusul tonggak penerbitan standar FIPS oleh NIST, PQC kini telah memasuki fase &amp;ldquo;implementasi dan migrasi&amp;rdquo; berskala penuh.&lt;/p>
&lt;p>Mengingat ancaman &amp;ldquo;Harvest Now, Decrypt Later&amp;rdquo;, migrasi ke PQC adalah prioritas utama yang harus dimulai &amp;ldquo;sekarang&amp;rdquo; untuk setiap organisasi yang menangani data sensitif. Mari kita atasi era komputer kuantum yang akan datang dengan aman dengan memahami secara mendalam teknologi kriptografi generasi berikutnya dan meningkatkan agility kripto sistem kita.&lt;/p></description></item><item><title>Struktur Matematis Sejati dari General Number Field Sieve (GNFS)</title><link>http://kenji.blog/id/p/%E4%B8%80%E8%88%AC%E6%95%B0%E4%BD%93%E7%AF%A9%E6%B3%95gnfs%E3%81%AE%E7%9C%9F%E3%81%AE%E6%95%B0%E5%AD%A6%E7%9A%84%E6%A7%8B%E9%80%A0/</link><pubDate>Sat, 05 Sep 2026 02:26:13 +0900</pubDate><guid>http://kenji.blog/id/p/%E4%B8%80%E8%88%AC%E6%95%B0%E4%BD%93%E7%AF%A9%E6%B3%95gnfs%E3%81%AE%E7%9C%9F%E3%81%AE%E6%95%B0%E5%AD%A6%E7%9A%84%E6%A7%8B%E9%80%A0/</guid><description>&lt;img src="http://kenji.blog/p/%E4%B8%80%E8%88%AC%E6%95%B0%E4%BD%93%E7%AF%A9%E6%B3%95gnfs%E3%81%AE%E7%9C%9F%E3%81%AE%E6%95%B0%E5%AD%A6%E7%9A%84%E6%A7%8B%E9%80%A0/rsa_encryption_break_1788542156523.jpg" alt="Featured image of post Struktur Matematis Sejati dari General Number Field Sieve (GNFS)" />&lt;h1 id="struktur-matematis-sejati-dari-general-number-field-sieve-gnfs">Struktur Matematis Sejati dari General Number Field Sieve (GNFS)
&lt;/h1>&lt;p>Tujuan akhir dari GNFS adalah menemukan $X, Y$ sedemikian rupa sehingga $X^2 \equiv Y^2 \pmod N$.
Untuk mencapai ini, para matematikawan membangun sebuah jembatan antara &lt;strong>&amp;ldquo;dunia bilangan bulat nyata&amp;rdquo;&lt;/strong> dan &lt;strong>&amp;ldquo;dunia medan aljabar&amp;rdquo;&lt;/strong>. Jembatan tersebut adalah &amp;ldquo;homomorfisme&amp;rdquo;.&lt;/p>
&lt;h2 id="tahap-1-homomorfisme-homomorphism-yang-menghubungkan-dunia">Tahap 1: &amp;ldquo;Homomorfisme&amp;rdquo; (Homomorphism) yang Menghubungkan Dunia
&lt;/h2>&lt;h3 id="1-pemilihan-polinomial-dan-definisi-akar">1. Pemilihan Polinomial dan Definisi Akar
&lt;/h3>&lt;p>Untuk sebuah bilangan komposit raksasa $N$, kita memilih sebuah bilangan bulat $m$ dan polinomial $f(x)$ sedemikian rupa sehingga $f(m) \equiv 0 \pmod N$.
(Contoh: Ekspansi $N$ dalam basis $m$, dan buat $f(x)$ dari koefisien-koefisiennya. Dalam hal ini, $f(x)$ diasumsikan tak tereduksi di atas medan bilangan rasional $\mathbb{Q}$).&lt;/p>
&lt;p>Selanjutnya, misalkan $\alpha$ adalah salah satu &amp;ldquo;akar bilangan kompleks&amp;rdquo; dari persamaan $f(x) = 0$.
Tentu saja, $f(\alpha) = 0$. $\alpha$ bukanlah bilangan bulat, melainkan bilangan kompleks (bilangan aljabar) yang dapat memuat akar atau bilangan imajiner.&lt;/p>
&lt;h3 id="2-konstruksi-cincin-ring-dan-homomorfisme">2. Konstruksi Cincin (Ring) dan Homomorfisme
&lt;/h3>&lt;p>Di sini, kita menyiapkan dua &amp;ldquo;cincin&amp;rdquo; matematis (dunia di mana penjumlahan dan perkalian didefinisikan):&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Dunia A: $\mathbb{Z}[\alpha]$&lt;/strong> (Cincin bilangan bulat aljabar yang mengandung $\alpha$)
Ini adalah dunia bilangan yang diekspresikan dalam bentuk $a + b\alpha + c\alpha^2 + \dots$.&lt;/li>
&lt;li>&lt;strong>Dunia B: $\mathbb{Z}/N\mathbb{Z}$&lt;/strong> (Cincin sisa pembagian dengan $N$)
Dunia kongruensi (modulo) yang hanya terdiri dari bilangan bulat dari $0$ hingga $N-1$.&lt;/li>
&lt;/ul>
&lt;p>Di sini, kita mendefinisikan sebuah pemetaan (mapping) $\phi$ dari Dunia A ke Dunia B sebagai berikut:
&lt;strong>$$\phi : \mathbb{Z}[\alpha] \to \mathbb{Z}/N\mathbb{Z}$$&lt;/strong>
&lt;strong>$$\phi(\alpha) = m \pmod N$$&lt;/strong>&lt;/p>
&lt;p>Pemetaan $\phi$ ini adalah operasi magis yang sepenuhnya menukar variabel $\alpha$ di Dunia A dengan bilangan bulat $m$ di Dunia B.
$\phi$ ini memiliki sifat yang sangat kuat yang disebut &lt;strong>&amp;ldquo;Homomorfisme Cincin&amp;rdquo; (Ring Homomorphism)&lt;/strong>.
Homomorfisme adalah sifat &lt;strong>&amp;ldquo;berpindah ke dunia lain tanpa merusak struktur penjumlahan dan perkalian&amp;rdquo;&lt;/strong>. Artinya, persamaan berikut berlaku:&lt;/p>
&lt;ul>
&lt;li>$\phi(X \times Y) = \phi(X) \times \phi(Y)$&lt;/li>
&lt;li>$\phi(X^2) = \phi(X)^2$&lt;/li>
&lt;/ul>
&lt;p>Apa arti semua ini? Jika kita dapat membuat &lt;strong>&amp;ldquo;bentuk kuadrat&amp;rdquo; ($\gamma^2$)&lt;/strong> dari elemen kompleks $\gamma$ di &amp;ldquo;Dunia A&amp;rdquo; (dunia $\alpha$), kita dapat melompat ke &amp;ldquo;Dunia B&amp;rdquo; (dunia sisa) dengan $\phi$, dan &lt;strong>bentuk kuadrat $\phi(\gamma)^2$ akan dipertahankan dengan sempurna&lt;/strong>.&lt;/p>
&lt;hr>
&lt;h2 id="tahap-2-runtuhnya-faktorisasi-prima-dan-lahirnya-ideal">Tahap 2: Runtuhnya Faktorisasi Prima dan Lahirnya &amp;ldquo;Ideal&amp;rdquo;
&lt;/h2>&lt;p>Kita ingin mengumpulkan banyak elemen $(a - b\alpha)$ yang sesuai dalam Dunia A ($\mathbb{Z}[\alpha]$) dan mengalikannya bersama untuk membuat &amp;ldquo;kuadrat sempurna&amp;rdquo; (elemen kuadrat).
Biasanya, kita dapat melakukan &amp;ldquo;faktorisasi prima&amp;rdquo; pada $(a - b\alpha)$ yang dikumpulkan, dan menggabungkannya sehingga semua pangkat bilangan prima menjadi genap (dipecahkan menggunakan matriks) untuk menghasilkan bentuk kuadrat.&lt;/p>
&lt;p>&lt;strong>Namun, di sinilah tembok keputusasaan aljabar menghalangi jalan.&lt;/strong>
Di dunia medan aljabar seperti $\mathbb{Z}[\alpha]$, &lt;strong>&amp;ldquo;keunikan faktorisasi prima (setiap bilangan dapat dinyatakan hanya dengan satu cara sebagai perkalian bilangan prima)&amp;rdquo;&lt;/strong> yang kita pelajari di sekolah menengah &lt;strong>runtuh sama sekali&lt;/strong>.&lt;/p>
&lt;p>(Contoh: Di beberapa dunia medan aljabar, $6 = 2 \times 3$, dan pada saat yang sama $6 = (1+\sqrt{-5}) \times (1-\sqrt{-5})$, sehingga mustahil untuk mengetahui mana yang merupakan bilangan prima sejati).&lt;/p>
&lt;p>Jika faktorisasi prima tidak unik, teka-teki &amp;ldquo;menghitung bilangan prima hingga jumlahnya genap&amp;rdquo; (metode saringan) pada prinsipnya tidak dapat dijalankan.&lt;/p>
&lt;h3 id="keselamatan-dari-kummer-dan-dedekind-ideal">Keselamatan dari Kummer dan Dedekind: &amp;ldquo;Ideal&amp;rdquo;
&lt;/h3>&lt;p>Keruntuhan ini diselamatkan oleh konsep &lt;strong>&amp;ldquo;Ideal&amp;rdquo; (Bilangan Ideal)&lt;/strong> yang diciptakan oleh matematikawan abad ke-19.
Alih-alih melihat elemen itu sendiri, dengan mempertimbangkan &amp;ldquo;himpunan kelipatan (ideal)&amp;rdquo; yang dihasilkan oleh elemen tersebut, faktorisasi prima menjadi mungkin kembali.&lt;/p>
&lt;p>Dalam cincin bilangan bulat dari medan aljabar $\mathcal{O}_K$ (cincin yang lebih sempurna yang mengandung $\mathbb{Z}[\alpha]$), bahkan jika elemen tidak dapat difaktorkan secara unik, terbukti bahwa &lt;strong>&amp;ldquo;Ideal selalu dapat difaktorkan secara unik sebagai hasil kali &amp;lsquo;Ideal Prima&amp;rsquo; ($\mathfrak{p}$)&amp;rdquo;&lt;/strong>.&lt;/p>
&lt;p>Oleh karena itu, di GNFS, alih-alih memfaktorkan elemen $(a - b\alpha)$ itu sendiri, kita melakukan &lt;strong>faktorisasi ideal prima pada ideal utama $\langle a - b\alpha \rangle$&lt;/strong> yang dihasilkannya.&lt;/p>
&lt;hr>
&lt;h2 id="tahap-3-norma-norm-dan-dua-saringan-sieve">Tahap 3: Norma (Norm) dan Dua Saringan (Sieve)
&lt;/h2>&lt;p>Lalu, bagaimana kita tahu ke ideal prima mana ideal $\langle a - b\alpha \rangle$ terurai?
Di sini kita menggunakan sebuah fungsi yang disebut &lt;strong>&amp;ldquo;Norma&amp;rdquo; (Norm)&lt;/strong>. Norma adalah fungsi yang mengubah elemen kompleks dari medan aljabar menjadi &amp;ldquo;bilangan bulat biasa $\mathbb{Z}$&amp;rdquo; di dunia nyata.&lt;/p>
&lt;p>Norma dari elemen $(a - b\alpha)$ dihitung dengan polinomial sederhana $b^d f(a/b)$ (di mana $d$ adalah derajat $f(x)$).&lt;/p>
&lt;p>Berdasarkan teorema aljabar, diketahui bahwa &lt;strong>&amp;ldquo;jika norma suatu ideal dapat difaktorkan sepenuhnya oleh bilangan prima kecil (halus), maka ideal aslinya juga dapat difaktorkan sepenuhnya oleh ideal prima kecil&amp;rdquo;&lt;/strong>.&lt;/p>
&lt;p>Oleh karena itu, GNFS secara bersamaan menghitung dua hal berikut untuk sejumlah besar pasangan bilangan bulat $(a, b)$, dan hanya mengumpulkan pasangan di mana keduanya adalah &amp;ldquo;bilangan halus&amp;rdquo;:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Saringan Rasional (Rational Sieve)&lt;/strong>: $a - bm$ (nilai di dunia nyata)&lt;/li>
&lt;li>&lt;strong>Saringan Aljabar (Algebraic Sieve)&lt;/strong>: $b^d f(a/b)$ (norma di dunia medan aljabar)&lt;/li>
&lt;/ol>
&lt;p>Kita mengumpulkan puluhan juta pasangan $(a, b)$ yang keduanya halus, memecahkan data faktorisasi prima ideal (berapa banyak ideal prima yang ada) sebagai matriks raksasa (aljabar linear atas GF(2)), dan menemukan himpunan $S$ dari pasangan sedemikian rupa sehingga &amp;ldquo;ketika dikalikan, pangkat semua ideal prima menjadi genap&amp;rdquo;.&lt;/p>
&lt;hr>
&lt;h2 id="tahap-4-dua-rintangan-dan-grup-kelas-ideal">Tahap 4: Dua &amp;ldquo;Rintangan&amp;rdquo; dan Grup Kelas Ideal
&lt;/h2>&lt;p>Melalui perhitungan matriks, kita menemukan bahwa mengalikan semua ideal $(a - b\alpha)$ dalam himpunan $S$ menghasilkan kuadrat dari suatu ideal $I$.
&lt;/p>
$$\prod_{S} \langle a - b\alpha \rangle = I^2$$
&lt;p>&lt;strong>Namun, ini belum berakhir. Tembok matematika terdalam dan tersulit di GNFS ada di sini.&lt;/strong>&lt;/p>
&lt;p>Apa yang pada akhirnya kita inginkan bukanlah &amp;ldquo;kuadrat dari ideal&amp;rdquo;, melainkan &lt;strong>&amp;ldquo;kuadrat dari elemen&amp;rdquo; ($\gamma^2$)&lt;/strong> untuk disubstitusikan ke dalam pemetaan $\phi$.
Hanya karena ideal dikuadratkan, tidak berarti elemen itu sendiri dikuadratkan. Ada &lt;strong>dua rintangan matematika yang sangat kuat (Obstructions)&lt;/strong> di sini.&lt;/p>
&lt;h3 id="rintangan-1-tembok-grup-kelas-ideal-ideal-class-group">Rintangan 1: Tembok Grup Kelas Ideal (Ideal Class Group)
&lt;/h3>&lt;p>Ideal $I$ tidak selalu &amp;ldquo;ideal yang dihasilkan oleh satu elemen (ideal utama)&amp;rdquo;.
Mustahil untuk mengekstrak elemen spesifik $\gamma$ dari ideal yang bukan merupakan ideal utama.&lt;/p>
&lt;p>Di sinilah konsep &lt;strong>&amp;ldquo;Grup Kelas Ideal (Class Group, $Cl_K$)&amp;rdquo;&lt;/strong> muncul. Grup Kelas Ideal adalah sebuah grup yang mengukur &amp;ldquo;berapa banyak ideal non-utama yang ada di dunia medan aljabar (seberapa banyak keunikan faktorisasi prima telah rusak)&amp;rdquo;.
Bahkan jika $\prod \langle a - b\alpha \rangle$ menjadi $I^2$, jika $I$ bukan elemen identitas (ideal utama) dalam grup kelas ideal, kita tidak dapat menariknya kembali menjadi kuadrat elemen.&lt;/p>
&lt;h3 id="rintangan-2-tembok-grup-unit-unit-group">Rintangan 2: Tembok Grup Unit (Unit Group)
&lt;/h3>&lt;p>Misalkan kita beruntung dan $I$ adalah ideal utama $\langle \gamma \rangle$.
Maka, $\prod \langle a - b\alpha \rangle = \langle \gamma^2 \rangle$.
Anda mungkin berpikir, &amp;ldquo;Bagus, elemennya juga kuadrat!&amp;rdquo;, tetapi Anda salah besar.&lt;/p>
&lt;p>Fakta bahwa ideal (himpunan kelipatan) sama tidak berarti bahwa elemen-elemennya sepenuhnya sama. Akan selalu ada pergeseran berupa &lt;strong>&amp;ldquo;Unit&amp;rdquo; (bilangan yang kebalikannya juga berupa bilangan bulat, seperti 1 atau -1)&lt;/strong>.
Dengan kata lain, persamaan elemen yang sebenarnya adalah sebagai berikut:
&lt;/p>
$$\prod_{S} (a - b\alpha) = u \cdot \gamma^2$$
&lt;p>
(di mana $u$ adalah elemen dari grup unit $U_K$)&lt;/p>
&lt;p>Kecuali unit $u$ ini sendiri adalah kuadrat dari sesuatu (elemen kuadrat), sisi kiri tidak akan pernah bisa menjadi &amp;ldquo;kuadrat elemen yang sempurna&amp;rdquo;.&lt;/p>
&lt;hr>
&lt;h2 id="tahap-5-sihir-adleman-karakter-kuadratik-quadratic-characters">Tahap 5: Sihir Adleman &amp;ldquo;Karakter Kuadratik&amp;rdquo; (Quadratic Characters)
&lt;/h2>&lt;p>Rintangan grup kelas ideal dan rintangan grup unit. Bagaimana kita mengatasi keduanya?
Di sinilah muncul metode jenius yang disebut &lt;strong>&amp;ldquo;Karakter Kuadratik&amp;rdquo; (Quadratic Characters)&lt;/strong>, yang diperkenalkan oleh kriptografer Leonard Adleman (huruf &amp;ldquo;A&amp;rdquo; di RSA) dan rekan-rekannya.&lt;/p>
&lt;p>Untuk menentukan apakah &amp;ldquo;suatu elemen benar-benar kuadrat sempurna di medan aljabar&amp;rdquo;, kita menggunakan versi medan aljabar dari simbol Legendre (residu kuadrat).
Pada matriks raksasa tadi (teka-teki untuk membuat jumlah ideal prima genap), kita secara diam-diam menambahkan beberapa lusin kondisi tambahan (kolom) yang menyatakan bahwa &lt;strong>&amp;ldquo;karakter kuadratik untuk beberapa ideal prima khusus $\mathfrak{q}$ juga semuanya menjadi $1$ (genap)&amp;rdquo;&lt;/strong>.&lt;/p>
&lt;p>Ketika kita menemukan himpunan $S$ yang memenuhi kondisi tambahan ini melalui perhitungan matriks, sebuah teorema mendalam dari teori bilangan aljabar menjamin bahwa &lt;strong>&amp;ldquo;baik rintangan grup kelas ideal maupun rintangan grup unit secara alami akan hilang dengan probabilitas yang sangat tinggi&amp;rdquo;&lt;/strong>.&lt;/p>
&lt;p>Dengan ini, kita akhirnya mendapatkan persamaan yang sebenarnya:
&lt;/p>
$$\prod_{S} (a - b\alpha) = \gamma^2$$
&lt;hr>
&lt;h2 id="tahap-akhir-penyatuan-dunia-dan-keruntuhan-kriptografi">Tahap Akhir: Penyatuan Dunia dan Keruntuhan Kriptografi
&lt;/h2>&lt;p>Akhirnya, semua potongan teka-teki sudah lengkap.&lt;/p>
&lt;p>&lt;strong>[Elemen di Dunia Medan Aljabar (Dunia A)]&lt;/strong>
$\gamma^2 = \prod (a - b\alpha)$
(Gunakan algoritma akar kuadrat untuk menemukan $\gamma$)&lt;/p>
&lt;p>&lt;strong>[Elemen di Dunia Nyata (Dunia Rasional)]&lt;/strong>
$V^2 = \prod (a - bm)$
(Ini hanyalah perkalian bilangan bulat biasa, jadi akar kuadrat $V$ dapat ditemukan dengan mudah)&lt;/p>
&lt;p>Sekarang, saatnya jembatan ajaib pertama yang kita buat, &lt;strong>homomorfisme $\phi$&lt;/strong>, beraksi.
Kita melompati elemen $\gamma$ dari Dunia A ke Dunia B (dunia sisa $N$) menggunakan $\phi$ (pemetaan yang menyubstitusikan $m$ ke dalam $\alpha$).
&lt;/p>
$$Y = \phi(\gamma) \pmod N$$
&lt;p>Di sisi lain, kita membawa $V$ yang dibuat di dunia nyata langsung ke dunia sisa dan menyebutnya $X$.
&lt;/p>
$$X = V \pmod N$$
&lt;p>Berkat sifat &amp;ldquo;mempertahankan struktur&amp;rdquo; dari homomorfisme, hubungan kuadrat yang berlaku di Dunia A dipertahankan dengan sempurna di Dunia B (dunia modulo $N$).
Lebih jauh lagi, karena pasangan asli $(a, b)$ dibentuk dengan cara yang berkorespondensi sebagai $a - b\alpha$ dan $a - bm$, $X$ dan $Y$ ini saling bertabrakan di dunia modulo $N$ dan menghasilkan persamaan absolut berikut:&lt;/p>
&lt;p>&lt;strong>$$X^2 \equiv Y^2 \pmod N$$&lt;/strong>&lt;/p>
&lt;p>Sekarang, tinggal berdoa agar $X$ dan $Y$ bukan merupakan solusi trivial ($X \equiv \pm Y$), lalu kita hitung:
&lt;strong>$\gcd(X - Y, N)$&lt;/strong>&lt;/p>
&lt;p>Jika itu adalah solusi non-trivial, algoritma Euclidean akan melesat dalam 0,001 detik, dan bilangan prima rahasia $p$ dan $q$, yang merupakan jantung kriptografi RSA, akan dicetak di layar keluaran.&lt;/p>
&lt;hr>
&lt;p>Inilah bentuk utuh dari &lt;strong>&amp;ldquo;General Number Field Sieve (GNFS)&amp;rdquo;&lt;/strong> yang mengumpulkan intisari matematika modern.&lt;/p></description></item><item><title>Konjektur Collatz</title><link>http://kenji.blog/id/p/collatz-conjecture/</link><pubDate>Tue, 15 Jul 2025 18:03:03 +0900</pubDate><guid>http://kenji.blog/id/p/collatz-conjecture/</guid><description>&lt;img src="http://kenji.blog/p/%E3%82%B3%E3%83%A9%E3%83%83%E3%83%84%E4%BA%88%E6%83%B3/img.png" alt="Featured image of post Konjektur Collatz" />&lt;h1 id="benarkah-semua-angka-akhirnya-akan-menjadi-1--bermain-dengan-konjektur-collatz">&amp;ldquo;Benarkah semua angka akhirnya akan menjadi 1?&amp;rdquo; ── Bermain dengan Konjektur Collatz
&lt;/h1>&lt;p>Halo! Saya Kenji.&lt;/p>
&lt;p>Tiba-tiba saja, ketika Anda mendengar &amp;ldquo;aturan yang membuat angka apa pun pada akhirnya akan menjadi 1&amp;rdquo;,
bukankah itu terasa sedikit aneh?&lt;/p>
&lt;blockquote>
&lt;p>Misalnya, 19, atau 87, atau bahkan 1000000.
Jika Anda mengikuti aturan tertentu dan memanipulasi angka, entah mengapa itu selalu berakhir di &amp;ldquo;1&amp;rdquo;.&lt;/p>
&lt;/blockquote>
&lt;p>Kisah seperti mimpi ini adalah &lt;strong>Konjektur Collatz (Collatz Conjecture)&lt;/strong>.&lt;/p>
&lt;hr>
&lt;h2 id="pertama-tama-apa-itu-konjektur-collatz">Pertama-tama, apa itu Konjektur Collatz?
&lt;/h2>&lt;p>Mari saya perkenalkan aturannya terlebih dahulu.&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Mulai: Pilih &lt;strong>bilangan bulat positif&lt;/strong> apa pun&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Operasi:&lt;/p>
&lt;ul>
&lt;li>Jika genap → bagi dua (n → n / 2)&lt;/li>
&lt;li>Jika ganjil → kalikan dengan 3 lalu tambah 1 (n → 3n + 1)&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;p>Jika Anda mengulangi ini terus-menerus, tebakannya adalah &lt;strong>angka apa pun pada akhirnya akan mencapai 1&lt;/strong>.&lt;/p>
&lt;p>Misalnya, jika kita mulai dengan &lt;code>6&lt;/code>:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">6 → 3 → 10 → 5 → 16 → 8 → 4 → 2 → 1
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Itu benar-benar menjadi &amp;ldquo;1&amp;rdquo;. Selamat datang kembali!&lt;/p>
&lt;hr>
&lt;h2 id="mari-kita-coba-dengan-kode-collatz-dengan-python">Mari kita coba dengan kode: Collatz dengan Python
&lt;/h2>&lt;p>Nah, dalam kasus seperti ini, lebih cepat untuk mencoba membuat kodenya!
Mari kita cetak &amp;ldquo;Barisan Collatz&amp;rdquo; menggunakan Python.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">collatz&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">steps&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">while&lt;/span> &lt;span class="n">n&lt;/span> &lt;span class="o">!=&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">n&lt;/span> &lt;span class="o">%&lt;/span> &lt;span class="mi">2&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">n&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">n&lt;/span> &lt;span class="o">//&lt;/span> &lt;span class="mi">2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">else&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">n&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">3&lt;/span> &lt;span class="o">*&lt;/span> &lt;span class="n">n&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="mi">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">steps&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">append&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">steps&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Contoh: mari kita mulai dari 19&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">collatz&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">19&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Saat dijalankan:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">[19, 58, 29, 88, 44, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Ini berhasil mencapai 1.
Mengambil jalan memutar yang cukup panjang, tetapi pada akhirnya tiba di garis finis!&lt;/p>
&lt;p>Omong-omong, meskipun kita mulai dari 29, itu akan mencapai 1 dengan cara yang sama.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">pythonprint(collatz(29))
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Saat dijalankan:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">[27, 82, 41, 124, 62, 31, 94, 47, 142, 71, 214, 107, 322, 161, 484, 242,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">121, 364, 182, 91, 274, 137, 412, 206, 103, 310, 155, 466, 233, 700, 350,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">175, 526, 263, 790, 395, 1186, 593, 1780, 890, 445, 1336, 668, 334, 167,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">502, 251, 754, 377, 1132, 566, 283, 850, 425, 1276, 638, 319, 958, 479,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">1438, 719, 2158, 1079, 3238, 1619, 4858, 2429, 7288, 3644, 1822, 911,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">2734, 1367, 4102, 2051, 6154, 3077, 9232, 4616, 2308, 1154, 577, 1732,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">866, 433, 1300, 650, 325, 976, 488, 244, 122, 61, 184, 92, 46, 23, 70, 35,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">106, 53, 160, 80, 40, 20, 10, 5, 16, 8, 4, 2, 1]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Itu memakan waktu hingga 111 langkah!&lt;/p>
&lt;p>Terlebih lagi, dalam perjalanannya terkadang membengkak hingga lebih dari 9000.
Ini adalah pola di mana ia mengambil jalan memutar yang sangat jauh sebelum mencapai finis.&lt;/p>
&lt;hr>
&lt;h2 id="jadi-apa-yang-membuatnya-begitu-menakjubkan">Jadi, apa yang membuatnya begitu menakjubkan?
&lt;/h2>&lt;p>Yang menakjubkan dari konjektur ini adalah,&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>Meskipun belum terbukti, tampaknya selalu berakhir pada 1 tidak peduli angka apa yang Anda gunakan&lt;/strong>&lt;/p>
&lt;/blockquote>
&lt;p>Di situlah letak kehebatannya.&lt;/p>
&lt;p>Hah? Lalu bagaimana dengan satu triliun, atau satu kuadriliun&amp;hellip;?&lt;/p>
&lt;p>Bagi Anda yang memikirkan hal itu, Anda sangat tajam.
Faktanya, menggunakan komputer, ini telah diverifikasi hingga sekitar &amp;ldquo;2 pangkat 68&amp;rdquo;,
dan &lt;strong>semuanya mencapai 1&lt;/strong>. Luar biasa&amp;hellip;&lt;/p>
&lt;p>Tapi, &lt;strong>belum terbukti secara teoritis bahwa &amp;ldquo;semuanya akan seperti itu&amp;rdquo;&lt;/strong>.
Inilah yang disebut &amp;ldquo;masalah yang belum terpecahkan&amp;rdquo; di dunia matematika.&lt;/p>
&lt;hr>
&lt;h2 id="siapa-bapak-collatz">Siapa Bapak Collatz?
&lt;/h2>&lt;p>Nah, setelah membaca sejauh ini, Anda mungkin bertanya-tanya, &amp;ldquo;Siapa itu Collatz?&amp;rdquo;
Saya akan memperkenalkannya dengan benar!&lt;/p>
&lt;ul>
&lt;li>Nama: &lt;strong>Lothar Collatz (Lothar Collatz)&lt;/strong>&lt;/li>
&lt;li>Kebangsaan: Jerman&lt;/li>
&lt;li>Tahun lahir: 1910 - 1990&lt;/li>
&lt;li>Profesi: Matematikawan (aktif di bidang analisis fungsional dan teori bilangan)&lt;/li>
&lt;/ul>
&lt;p>Dia mengusulkan konjektur ini pada tahun 1937,
dan sejak saat itu, selama lebih dari 80 tahun, &lt;strong>belum ada yang bisa membuktikan atau menyangkalnya&lt;/strong>.&lt;/p>
&lt;p>Omong-omong, masalah ini sangat sederhana tetapi sangat dalam,
sehingga bahkan Paul Erdős (matematikawan super terkenal) mengatakan sesuatu seperti ini.&lt;/p>
&lt;blockquote>
&lt;p>&amp;ldquo;Matematika belum cukup matang untuk menangani Collatz.&amp;rdquo;&lt;/p>
&lt;/blockquote>
&lt;p>Dengan kata lain, ada teori bahwa matematika umat manusia belum mengejar misteri ini&amp;hellip;&lt;/p>
&lt;hr>
&lt;h2 id="rumus-matematika-yang-rumit-tidak-diperlukan">&amp;ldquo;Rumus matematika yang rumit&amp;rdquo; tidak diperlukan
&lt;/h2>&lt;p>Hal yang baik tentang Konjektur Collatz adalah &lt;strong>siapa pun bisa memainkannya&lt;/strong>.&lt;/p>
&lt;p>Anda hanya butuh kertas dan pulpen.
Jika Anda menulis kode dengan Python, Anda dapat mengujinya secara otomatis.
Namun demikian, &lt;strong>matematikawan mutakhir dengan serius menantangnya&lt;/strong>.&lt;/p>
&lt;p>Tidakkah itu terasa mengasyikkan?&lt;/p>
&lt;hr>
&lt;h2 id="bonus-kode-untuk-menguji-sekaligus">Bonus: Kode untuk menguji sekaligus
&lt;/h2>&lt;p>Saya juga akan menyertakan kode untuk menguji banyak angka sekaligus.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="k">for&lt;/span> &lt;span class="n">n&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="nb">range&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">21&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">steps&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">collatz&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">steps&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2"> (jumlah langkah: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="nb">len&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">steps&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">)&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Ini akan mencetak barisan Collatz untuk &amp;ldquo;1 hingga 20&amp;rdquo; sekaligus.&lt;/p>
&lt;hr>
&lt;h2 id="kesimpulan-dunia-ini-memang-aneh">Kesimpulan: Dunia ini memang aneh
&lt;/h2>&lt;p>Jadi begitulah, Konjektur Collatz.&lt;/p>
&lt;ul>
&lt;li>Meskipun sangat sederhana&lt;/li>
&lt;li>Tidak ada yang bisa membuktikannya&lt;/li>
&lt;li>Ini adalah masalah besar di dunia matematika&lt;/li>
&lt;/ul>
&lt;p>Itu menjadi sesuatu yang terasa seperti kumpulan misteri.&lt;/p>
&lt;p>Bahkan pemula dalam pemrograman bisa mencobanya, jadi silakan memainkannya!&lt;/p>
&lt;hr>
&lt;h2 id="tautan-yang-disarankan-bagi-yang-tertarik">Tautan yang disarankan (bagi yang tertarik)
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://id.wikipedia.org/wiki/Konjektur_Collatz" target="_blank" rel="noopener"
>Wikipedia: Konjektur Collatz&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://arxiv.org/abs/1909.03562" target="_blank" rel="noopener"
>Makalah Terence Tao (Bahasa Inggris)&lt;/a>&lt;/li>
&lt;li>Mungkin juga menyenangkan untuk membuat versi visualisasi menggunakan Python! (Jika ada permintaan, saya akan membuatnya)&lt;/li>
&lt;/ul>
&lt;hr>
&lt;p>Jika Anda ingin mengetahui lebih banyak cerita tentang &amp;ldquo;matematika misterius × pemrograman&amp;rdquo;,
jangan ragu untuk meminta &amp;ldquo;ceritakan lebih banyak&amp;rdquo;.
Suatu hari nanti, saya akan memperkenalkan Hipotesis Riemann, bilangan prima, dan banyak lagi!&lt;/p>
&lt;hr>
&lt;p>📮 Selesai!&lt;/p>
&lt;hr></description></item><item><title>Prinsip Kerckhoffs</title><link>http://kenji.blog/id/p/prinsip-kerckhoffs/</link><pubDate>Wed, 16 Apr 2025 23:53:08 +0900</pubDate><guid>http://kenji.blog/id/p/prinsip-kerckhoffs/</guid><description>&lt;img src="http://kenji.blog/p/%E3%82%B1%E3%83%AB%E3%82%AF%E3%83%9B%E3%83%95%E3%82%B9%E3%81%AE%E5%8E%9F%E7%90%86/img_2.png" alt="Featured image of post Prinsip Kerckhoffs" />&lt;h1 id="prinsip-kerckhoffs">Prinsip Kerckhoffs
&lt;/h1>&lt;hr>
&lt;p>Halo!&lt;/p>
&lt;p>Hari ini saya ingin membicarakan tentang sesuatu yang cukup menarik dan sebenarnya sangat penting, yaitu &amp;ldquo;Prinsip Kerckhoffs&amp;rdquo;.&lt;/p>
&lt;p>Oh, tunggu sebentar.&lt;br>
Mungkin ada di antara Anda yang berpikir, &amp;ldquo;Saya belum pernah mendengar tentang &amp;lsquo;Prinsip Kerckhoffs&amp;rsquo; dan kedengarannya terlalu rumit&amp;hellip;&amp;rdquo; Tenang saja. Artikel ini justru ditujukan untuk Anda yang merasa demikian.&lt;/p>
&lt;hr>
&lt;h2 id="apa-maksud-dari-kriptografi-yang-aman">Apa maksud dari &amp;ldquo;Kriptografi yang Aman&amp;rdquo;?
&lt;/h2>&lt;p>Misalnya, seseorang mendatangi Anda dan berkata, &amp;ldquo;Brankas ini hanya bisa dibuka oleh orang yang mengetahui rahasianya.&amp;rdquo;&lt;/p>
&lt;p>Sekilas, itu terdengar sangat aman, bukan?&lt;br>
Namun, jika dipikir-pikir lagi, bukankah itu sedikit mengkhawatirkan?&lt;/p>
&lt;p>Seperti, &amp;ldquo;Jika rahasia itu terungkap, habislah sudah, kan?&amp;rdquo;&lt;/p>
&lt;p>Sebenarnya, inilah alasan mengapa Prinsip Kerckhoffs diperkenalkan.&lt;/p>
&lt;hr>
&lt;h2 id="apa-itu-sebenarnya-prinsip-kerckhoffs">Apa itu sebenarnya &amp;ldquo;Prinsip Kerckhoffs&amp;rdquo;?
&lt;/h2>&lt;p>Secara singkat, ini adalah:&lt;/p>
&lt;p>Pemikiran bahwa &lt;strong>&amp;ldquo;Kriptografi harus tetap aman meskipun mekanismenya terungkap&amp;rdquo;&lt;/strong> .&lt;/p>
&lt;p>Lebih tepatnya, &amp;ldquo;Keamanan hanya boleh bergantung pada &amp;lsquo;kunci rahasia&amp;rsquo;, dan tidak masalah jika metode enkripsi itu sendiri dipublikasikan!&amp;rdquo;&lt;/p>
&lt;p>Sebaliknya, &amp;ldquo;Sistem yang hanya mengandalkan kerahasiaan algoritma (mekanisme) enkripsinya dianggap memiliki keandalan yang rendah.&amp;rdquo;&lt;/p>
&lt;hr>
&lt;h2 id="aman-asalkan-mekanismenya-rahasia-mungkin-sedikit-berbahaya">&amp;ldquo;Aman asalkan mekanismenya rahasia&amp;rdquo; mungkin sedikit berbahaya
&lt;/h2>&lt;p>Cara berpikir seperti ini sangat umum:&lt;/p>
&lt;blockquote>
&lt;p>&amp;ldquo;Saya tidak menunjukkan isi aplikasi ini kepada siapa pun, jadi keamanannya terjamin.&amp;rdquo;&lt;/p>
&lt;/blockquote>
&lt;p>Saya mengerti perasaan itu.&lt;br>
Tetapi, itu sama saja dengan mengatakan, &amp;ldquo;Karena tidak ada yang melihatnya, tidak ada celah yang ditemukan, jadi pasti aman, kan?&amp;rdquo;&lt;/p>
&lt;p>Pada kenyataannya, fakta bahwa &amp;ldquo;tidak ada yang melihat&amp;rdquo; itu sendiri bisa menjadi sebuah risiko.&lt;/p>
&lt;hr>
&lt;h2 id="tetapi-mengapa-prinsip-seperti-itu-penting">Tetapi, mengapa prinsip seperti itu penting?
&lt;/h2>&lt;p>Alasannya adalah, jika seseorang mendapatkan mekanismenya dan dapat memecahkannya dengan mudah, maka kriptografi tersebut gagal.&lt;/p>
&lt;p>Sebagai analogi, bayangkan sebuah kunci pintu yang memiliki mekanisme yang sangat rumit, tetapi sebenarnya bisa dibuka dengan kunci duplikat yang dibuat di toko murah.&lt;/p>
&lt;p>Bukan &amp;ldquo;Aman karena kuncinya rahasia&amp;rdquo;, tetapi yang penting adalah &amp;ldquo;Bahkan jika seluruh mekanismenya diperlihatkan, tidak akan bisa dibuka tanpa kunci yang tepat.&amp;rdquo;&lt;/p>
&lt;hr>
&lt;h2 id="perasaan-tapi-bukankah-itu-menakutkan">Perasaan &amp;ldquo;Tapi, bukankah itu menakutkan?&amp;rdquo;
&lt;/h2>&lt;p>Hal yang dirasakan oleh banyak orang di sini adalah,&lt;/p>
&lt;blockquote>
&lt;p>&amp;ldquo;Mengekspos seluruh mekanisme, bukankah itu agak menakutkan?&amp;rdquo;&lt;/p>
&lt;/blockquote>
&lt;p>Saya mengerti kecemasan tersebut.&lt;/p>
&lt;p>Karena Anda pasti akan berpikir, &amp;ldquo;Jika saya menunjukkan semuanya, bukankah itu akan ditiru atau disalahgunakan?&amp;rdquo;&lt;/p>
&lt;p>Namun, justru di situlah letak inti dari Prinsip Kerckhoffs.&lt;br>
&amp;ldquo;Kekuatan yang tidak hancur meskipun isinya diperlihatkan&amp;rdquo; itulah keamanan yang sesungguhnya.&lt;/p>
&lt;hr>
&lt;h2 id="meskipun-begitu-butuh-sedikit-keberanian-pada-awalnya">Meskipun begitu, butuh sedikit keberanian pada awalnya
&lt;/h2>&lt;p>Jika mencoba menempatkan diri sebagai pengembang, &amp;ldquo;Mempublikasikan mekanisme = kelemahan juga terlihat&amp;rdquo;, tentu saja itu mendebarkan.&lt;/p>
&lt;p>Tapi coba pikirkan.&lt;/p>
&lt;p>Sesuatu yang secara terbuka menunjukkan mekanismenya dan mengatakan, &amp;ldquo;Siapa pun boleh memverifikasinya,&amp;rdquo; pada akhirnya akan lebih dipercaya.&lt;/p>
&lt;p>Itu mirip dengan hubungan antar manusia, bukan?&lt;/p>
&lt;p>&amp;ldquo;Seseorang yang menunjukkan jati dirinya dan tetap berteman dengan baik&amp;rdquo;, tentu saja adalah yang paling bisa membuat kita merasa tenang.&lt;/p>
&lt;hr>
&lt;h2 id="jadi-begitulah">Jadi begitulah
&lt;/h2>&lt;p>Prinsip Kerckhoffs mungkin terdengar sedikit teoritis, namun esensinya sangat sederhana.&lt;/p>
&lt;p>Hanya masalah &lt;strong>&amp;ldquo;Mari kita buat mekanisme yang tidak akan rusak tidak peduli siapa yang melihatnya&amp;rdquo;&lt;/strong> .&lt;/p>
&lt;p>Desain yang tepat lebih dari sekadar rahasia yang dangkal.&lt;br>
Kode yang tidak memalukan untuk ditunjukkan, lebih baik daripada kode yang tidak ingin Anda tunjukkan kepada siapa pun.&lt;/p>
&lt;p>&amp;ldquo;Kekuatan&amp;rdquo; seperti itu mungkin akan semakin dibutuhkan di era mendatang.&lt;/p>
&lt;hr>
&lt;p>Terima kasih sudah membaca!&lt;/p>
&lt;p>Topik keamanan mungkin sedikit sulit, tetapi ada bagian yang terhubung dengan &amp;ldquo;hubungan manusia&amp;rdquo; dan &amp;ldquo;rasa aman sehari-hari&amp;rdquo;.&lt;br>
Saya yakin jika Anda mempelajarinya sedikit demi sedikit tanpa merasa terbebani, akan ada hal baik yang terjadi.&lt;/p>
&lt;hr>
&lt;p>&lt;img src="http://kenji.blog/p/%E3%82%B1%E3%83%AB%E3%82%AF%E3%83%9B%E3%83%95%E3%82%B9%E3%81%AE%E5%8E%9F%E7%90%86/img.png"
width="189"
height="282"
srcset="http://kenji.blog/p/%E3%82%B1%E3%83%AB%E3%82%AF%E3%83%9B%E3%83%95%E3%82%B9%E3%81%AE%E5%8E%9F%E7%90%86/img_hu715032b7fe5224f655ebb7d29b676305_77325_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%82%B1%E3%83%AB%E3%82%AF%E3%83%9B%E3%83%95%E3%82%B9%E3%81%AE%E5%8E%9F%E7%90%86/img_hu715032b7fe5224f655ebb7d29b676305_77325_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="Auguste Kerckhoffs"
class="gallery-image"
data-flex-grow="67"
data-flex-basis="160px"
>&lt;/p></description></item><item><title>Kutipan Albert Einstein</title><link>http://kenji.blog/id/p/kutipan-albert-einstein/</link><pubDate>Sat, 24 Aug 2024 18:38:47 +0900</pubDate><guid>http://kenji.blog/id/p/kutipan-albert-einstein/</guid><description>&lt;img src="http://kenji.blog/p/%E3%82%A2%E3%82%A4%E3%83%B3%E3%82%B7%E3%83%A5%E3%82%BF%E3%82%A4%E3%83%B3%E3%81%AE%E5%90%8D%E8%A8%80/Solvay_conference_1927.jpg" alt="Featured image of post Kutipan Albert Einstein" />&lt;p>Halo semuanya!&lt;/p>
&lt;p>Hari ini, saya ingin berbicara tentang kutipan dari Albert Einstein.&lt;/p>
&lt;hr>
&lt;h2 id="dunia-tidak-menghargai-perbuatan-baik-anda">Dunia tidak menghargai perbuatan baik Anda?
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">Dunia tidak akan pernah menghargai sejuta kebaikan yang Anda lakukan.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Tetapi mereka akan mengkritik Anda untuk satu kesalahan yang Anda perbuat...
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Namun, jangan berkecil hati
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&amp;#34;Selalu bangkit di atas semua tawa dan kritik. Tetaplah kuat.&amp;#34;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">- Albert Einstein
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Kata-kata ini konon diucapkan oleh Einstein. Hal ini dengan tajam menunjukkan kerasnya masyarakat yang kita rasakan setiap hari dan bias dalam penilaian orang-orang.&lt;/p>
&lt;hr>
&lt;h2 id="meskipun-begitu-teruslah-bangkit">Meskipun begitu, teruslah bangkit
&lt;/h2>&lt;p>&amp;ldquo;Selalu bangkit di atas semua tawa dan kritik. Tetaplah kuat.&amp;rdquo;&lt;/p>
&lt;p>Kelanjutan dari kutipan ini dapat dianggap sebagai jawaban Einstein terhadap kenyataan pahit yang disebutkan di atas. Hal ini mengajarkan kita pentingnya untuk tidak menyerah pada kritik atau ejekan, dan terus bergerak maju dengan percaya pada diri sendiri.&lt;/p>
&lt;hr>
&lt;h2 id="menerapkan-ajaran-einstein-dalam-kehidupan-sehari-hari">Menerapkan ajaran Einstein dalam kehidupan sehari-hari
&lt;/h2>&lt;p>Kutipan ini sangat berkaitan erat dengan kehidupan sehari-hari kita. Misalnya, upaya Anda di tempat kerja mungkin tidak diakui, dan hanya kesalahan kecil yang menonjol. Atau mungkin pernyataan Anda di media sosial sebagian dipotong dan dikritik.&lt;/p>
&lt;p>Di saat-saat seperti itu, tolong ingat kata-kata Einstein ini. Sangat penting untuk mempertahankan keyakinan Anda sendiri daripada terpengaruh oleh penilaian orang lain.&lt;/p>
&lt;hr>
&lt;h2 id="kesimpulan">Kesimpulan
&lt;/h2>&lt;p>Kutipan dari Einstein ini mengajarkan kita pentingnya &amp;ldquo;hidup dengan percaya pada diri sendiri tanpa terpengaruh oleh penilaian orang lain&amp;rdquo;. Mari kita miliki keberanian untuk mengikuti jalan yang kita yakini tanpa menyerah pada kritik atau ejekan.&lt;/p>
&lt;p>Terakhir, kata-kata Einstein sekali lagi.&lt;/p>
&lt;blockquote>
&lt;p>** &amp;ldquo;Selalu bangkit di atas semua tawa dan kritik. Tetaplah kuat.&amp;rdquo; **&lt;/p>
&lt;/blockquote>
&lt;p>Saya berharap kata-kata ini bergema di hati Anda dan menginspirasi Anda untuk mengambil langkah positif ke depan.&lt;/p></description></item><item><title>Kode Bahasa C untuk Menghasilkan Bilangan Prima</title><link>http://kenji.blog/id/p/%E7%B4%A0%E6%95%B0%E3%82%92%E7%94%9F%E6%88%90%E3%81%99%E3%82%8Bc%E8%A8%80%E8%AA%9E%E3%82%B3%E3%83%BC%E3%83%89/</link><pubDate>Sat, 24 Aug 2024 09:38:10 +0900</pubDate><guid>http://kenji.blog/id/p/%E7%B4%A0%E6%95%B0%E3%82%92%E7%94%9F%E6%88%90%E3%81%99%E3%82%8Bc%E8%A8%80%E8%AA%9E%E3%82%B3%E3%83%BC%E3%83%89/</guid><description>&lt;img src="http://kenji.blog/p/%E7%B4%A0%E6%95%B0%E3%82%92%E7%94%9F%E6%88%90%E3%81%99%E3%82%8Bc%E8%A8%80%E8%AA%9E%E3%82%B3%E3%83%BC%E3%83%89/img.png" alt="Featured image of post Kode Bahasa C untuk Menghasilkan Bilangan Prima" />&lt;p>Berikut ini adalah kode sederhana dalam bahasa C untuk menghasilkan bilangan prima dalam rentang yang ditentukan. Dalam contoh ini, kita mencantumkan bilangan prima dari 1 hingga n.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-cpp" data-lang="cpp">&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#include&lt;/span> &lt;span class="cpf">&amp;lt;stdio.h&amp;gt;&lt;/span>&lt;span class="cp">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#include&lt;/span> &lt;span class="cpf">&amp;lt;stdbool.h&amp;gt;&lt;/span>&lt;span class="cp">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kt">bool&lt;/span> &lt;span class="nf">isPrime&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="kt">int&lt;/span> &lt;span class="n">num&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">num&lt;/span> &lt;span class="o">&amp;lt;=&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">return&lt;/span> &lt;span class="nb">false&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">num&lt;/span> &lt;span class="o">&amp;lt;=&lt;/span> &lt;span class="mi">3&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">return&lt;/span> &lt;span class="nb">true&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">num&lt;/span> &lt;span class="o">%&lt;/span> &lt;span class="mi">2&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="mi">0&lt;/span> &lt;span class="o">||&lt;/span> &lt;span class="n">num&lt;/span> &lt;span class="o">%&lt;/span> &lt;span class="mi">3&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">return&lt;/span> &lt;span class="nb">false&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="kt">int&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">5&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">*&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">&amp;lt;=&lt;/span> &lt;span class="n">num&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">+=&lt;/span> &lt;span class="mi">6&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">num&lt;/span> &lt;span class="o">%&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="mi">0&lt;/span> &lt;span class="o">||&lt;/span> &lt;span class="n">num&lt;/span> &lt;span class="o">%&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">i&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="mi">2&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">return&lt;/span> &lt;span class="nb">false&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="nb">true&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kt">void&lt;/span> &lt;span class="nf">printPrimes&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="kt">int&lt;/span> &lt;span class="n">n&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">printf&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;2 &amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="kt">int&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">3&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">&amp;lt;=&lt;/span> &lt;span class="n">n&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">+=&lt;/span> &lt;span class="mi">2&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">isPrime&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">i&lt;/span>&lt;span class="p">))&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">printf&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;%d &amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">i&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">printf&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s">&amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kt">int&lt;/span> &lt;span class="nf">main&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">int&lt;/span> &lt;span class="n">n&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">printf&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;Masukkan nilai maksimum rentang untuk menghasilkan bilangan prima: &amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">scanf&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;%d&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="o">&amp;amp;&lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">printf&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;Bilangan prima dari 1 hingga %d adalah sebagai berikut:&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s">&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">n&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">printPrimes&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Kode ini bekerja sebagai berikut:&lt;/p>
&lt;ol>
&lt;li>Fungsi isPrime: Menentukan apakah angka yang diberikan adalah bilangan prima. Demi efisiensi, pertama-tama diperiksa apakah habis dibagi 2 dan 3, dan kemudian dilanjutkan dengan memeriksa kelipatan 6.&lt;/li>
&lt;li>Fungsi printPrimes: Mencetak bilangan prima dalam rentang yang ditentukan. Angka 2 dicetak terlebih dahulu, dan kemudian hanya bilangan ganjil yang diperiksa.&lt;/li>
&lt;li>Fungsi main: Meminta pengguna untuk memasukkan nilai maksimum rentang, dan mencetak bilangan prima dalam rentang tersebut.&lt;/li>
&lt;/ol>
&lt;p>Saat kode ini dikompilasi dan dijalankan, bilangan prima dalam rentang yang ditentukan akan ditampilkan.&lt;/p></description></item><item><title>Masalah Monty Hall</title><link>http://kenji.blog/id/p/%E3%83%A2%E3%83%B3%E3%83%86%E3%82%A3%E3%83%9B%E3%83%BC%E3%83%AB%E5%95%8F%E9%A1%8C/</link><pubDate>Sun, 31 Mar 2024 23:41:51 +0900</pubDate><guid>http://kenji.blog/id/p/%E3%83%A2%E3%83%B3%E3%83%86%E3%82%A3%E3%83%9B%E3%83%BC%E3%83%AB%E5%95%8F%E9%A1%8C/</guid><description>&lt;img src="http://kenji.blog/p/%E3%83%A2%E3%83%B3%E3%83%86%E3%82%A3%E3%83%9B%E3%83%BC%E3%83%AB%E5%95%8F%E9%A1%8C/img_1.png" alt="Featured image of post Masalah Monty Hall" />&lt;h2 id="apa-itu-masalah-monty-hall">Apa itu Masalah Monty Hall
&lt;/h2>&lt;p>Masalah Monty Hall adalah sebuah masalah yang berasal dari permainan di acara televisi Amerika Serikat &amp;ldquo;Let&amp;rsquo;s Make a Deal&amp;rdquo;, dengan penjelasan sebagai berikut.&lt;/p>
&lt;p>Kondisi awal: Dari tiga pintu, satu di antaranya berisi hadiah, dan dua sisanya kosong.&lt;/p>
&lt;ol>
&lt;li>Peserta memilih satu dari tiga pintu.&lt;/li>
&lt;li>Pembawa acara membuka satu pintu yang kosong dari dua pintu yang tidak dipilih oleh peserta.&lt;/li>
&lt;li>Peserta ditanya apakah ia ingin mengubah pilihan pintunya.&lt;/li>
&lt;/ol>
&lt;p>Pada titik ini, masalahnya adalah mempertimbangkan apakah lebih baik bagi peserta untuk mengubah pilihannya atau tidak.&lt;/p>
&lt;h2 id="solusi">Solusi
&lt;/h2>&lt;p>Solusi dari masalah Monty Hall adalah sebagai berikut.&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Jika peserta tidak mengubah pintu yang dipilih pertama kali&lt;/p>
&lt;ul>
&lt;li>Peluang menang: 1/3&lt;/li>
&lt;li>Peluang kalah: 2/3&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>Setelah pembawa acara membuka pintu yang kosong&lt;/p>
&lt;ul>
&lt;li>Jika tidak mengubah pilihan, peluang menang: 1/3 (tidak berubah dari peluang menang di nomor 1)&lt;/li>
&lt;li>Jika mengubah pilihan, peluang menang: 2/3 (peluang selain menang di nomor 1)&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ol>
&lt;p>Oleh karena itu, peluang peserta untuk menang lebih tinggi jika ia mengubah pilihannya.&lt;/p>
&lt;h2 id="referensi">Referensi
&lt;/h2>&lt;ul>
&lt;li>Wikipedia &lt;a class="link" href="https://en.wikipedia.org/wiki/Monty_Hall_problem" target="_blank" rel="noopener"
>Monty Hall problem&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Sejarah Matematika</title><link>http://kenji.blog/id/p/sejarah-matematika/</link><pubDate>Sat, 22 Jul 2023 15:25:10 +0900</pubDate><guid>http://kenji.blog/id/p/sejarah-matematika/</guid><description>&lt;img src="http://kenji.blog/p/%E6%95%B0%E5%AD%A6%E3%81%AE%E6%AD%B4%E5%8F%B2/img.png" alt="Featured image of post Sejarah Matematika" />&lt;h3 id="tiga-masalah-konstruksi-yunani-kuno">Tiga masalah konstruksi Yunani Kuno
&lt;/h3>&lt;ol>
&lt;li>Diberikan sebuah lingkaran, buatlah persegi dengan luas yang sama dengan lingkaran tersebut (Menguadratkan lingkaran)&lt;/li>
&lt;li>Diberikan sudut sembarang, bagilah menjadi tiga bagian yang sama besar (Triseksi sudut)&lt;/li>
&lt;li>Diberikan sebuah kubus, buatlah kubus dengan volume dua kali lipat dari kubus tersebut (Menggandakan kubus)&lt;/li>
&lt;/ol>
&lt;h3 id="spiral-archimedes">Spiral Archimedes
&lt;/h3>&lt;p>Pada sebuah bidang, putar sinar OB di sekitar titik tetap O dengan kecepatan seragam. Jika posisi awal adalah OA,
dan titik P mulai bergerak dari O di sepanjang OB dengan kecepatan konstan pada saat yang sama ketika sinar mulai bergerak dari OA,
maka garis yang digambar oleh titik P adalah spiral Archimedes.&lt;/p>
&lt;h3 id="teorema-pappus">Teorema Pappus
&lt;/h3>&lt;ul>
&lt;li>Sikloid&lt;/li>
&lt;li>Konkoid Nicomedes&lt;/li>
&lt;li>Sisoid Diocles&lt;/li>
&lt;li>Metode garis singgung Fermat&lt;/li>
&lt;li>Metode garis normal Descartes&lt;/li>
&lt;/ul>
&lt;h3 id="kronologi">Kronologi
&lt;/h3>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Tahun&lt;/th>
&lt;th>Peristiwa&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Sekitar 3400 SM&lt;/td>
&lt;td>Bangsa Sumeria menggunakan koin tanah liat sebagai alat hitung&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Sekitar 3000 SM&lt;/td>
&lt;td>Matematika hieroglif muncul di Mesir&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Sekitar 2800 SM&lt;/td>
&lt;td>Peradaban Lembah Indus menggunakan sistem ukuran dan berat desimal&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Sekitar 2700 SM&lt;/td>
&lt;td>Bangsa Mesir menggunakan tali dan triple Pythagoras untuk memeriksa sudut&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Sekitar 2500 SM&lt;/td>
&lt;td>Sempoa (abacus), alat yang digunakan untuk menghitung, ditemukan&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Sekitar 2500 SM&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h3 id="referensi">Referensi
&lt;/h3>&lt;ul>
&lt;li>&lt;a class="link" href="https://id.wikipedia.org/wiki/Sejarah_matematika" target="_blank" rel="noopener"
>Sejarah matematika&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Cara Menemukan Bilangan Prima Hingga 1000 Menggunakan Saringan Eratosthenes</title><link>http://kenji.blog/id/p/cara-menemukan-bilangan-prima-hingga-1000-menggunakan-saringan-eratosthenes/</link><pubDate>Sun, 09 Apr 2023 12:54:24 +0900</pubDate><guid>http://kenji.blog/id/p/cara-menemukan-bilangan-prima-hingga-1000-menggunakan-saringan-eratosthenes/</guid><description>&lt;img src="http://kenji.blog/p/%E3%82%A8%E3%83%A9%E3%83%88%E3%82%B9%E3%83%86%E3%83%8D%E3%82%B9%E3%81%AE%E7%AF%A9%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A61000%E4%BB%A5%E4%B8%8B%E3%81%AE%E7%B4%A0%E6%95%B0%E3%82%92%E5%88%97%E6%8C%99%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img.png" alt="Featured image of post Cara Menemukan Bilangan Prima Hingga 1000 Menggunakan Saringan Eratosthenes" />&lt;h2 id="apa-itu-saringan-eratosthenes">Apa itu Saringan Eratosthenes
&lt;/h2>&lt;p>Saringan Eratosthenes adalah algoritma untuk menemukan semua bilangan prima hingga batas tertentu.
Algoritmanya sederhana dan dapat diimplementasikan dengan langkah-langkah berikut:&lt;/p>
&lt;ol>
&lt;li>Buat array boolean dengan N elemen dan inisialisasi semua elemen menjadi true.&lt;/li>
&lt;li>Atur elemen ke-0 dan ke-1 dari array menjadi false (karena 0 dan 1 bukan bilangan prima).&lt;/li>
&lt;li>Jika elemen ke-2 dari array adalah true, maka cetak 2 sebagai bilangan prima.&lt;/li>
&lt;li>Atur semua elemen kelipatan 2 mulai dari $2^2$ menjadi false ※&lt;/li>
&lt;li>Jika elemen ke-3 dari array adalah true, maka cetak 3 sebagai bilangan prima.&lt;/li>
&lt;li>Atur semua elemen kelipatan 3 mulai dari $3^2$ menjadi false.&lt;/li>
&lt;li>Ulangi proses yang sama untuk elemen ke-4, ke-5, &amp;hellip;, ke-N.&lt;/li>
&lt;/ol>
&lt;p>※ Alasan kami menargetkan elemen dari kuadrat ke atas untuk diatur menjadi false adalah karena elemen yang lebih kecil dari kuadrat tersebut sudah diproses (pencacahan telah selesai).&lt;/p>
&lt;p>&lt;img src="http://kenji.blog/p/%E3%82%A8%E3%83%A9%E3%83%88%E3%82%B9%E3%83%86%E3%83%8D%E3%82%B9%E3%81%AE%E7%AF%A9%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A61000%E4%BB%A5%E4%B8%8B%E3%81%AE%E7%B4%A0%E6%95%B0%E3%82%92%E5%88%97%E6%8C%99%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/Animation_Sieb_des_Eratosthenes.gif"
width="445"
height="369"
srcset="http://kenji.blog/p/%E3%82%A8%E3%83%A9%E3%83%88%E3%82%B9%E3%83%86%E3%83%8D%E3%82%B9%E3%81%AE%E7%AF%A9%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A61000%E4%BB%A5%E4%B8%8B%E3%81%AE%E7%B4%A0%E6%95%B0%E3%82%92%E5%88%97%E6%8C%99%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/Animation_Sieb_des_Eratosthenes_hua63c6218ac9f9cdba93ccb20db392e0e_206214_480x0_resize_box_1.gif 480w, http://kenji.blog/p/%E3%82%A8%E3%83%A9%E3%83%88%E3%82%B9%E3%83%86%E3%83%8D%E3%82%B9%E3%81%AE%E7%AF%A9%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A61000%E4%BB%A5%E4%B8%8B%E3%81%AE%E7%B4%A0%E6%95%B0%E3%82%92%E5%88%97%E6%8C%99%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/Animation_Sieb_des_Eratosthenes_hua63c6218ac9f9cdba93ccb20db392e0e_206214_1024x0_resize_box_1.gif 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="120"
data-flex-basis="289px"
>&lt;/p>
&lt;h2 id="implementasi-dalam-rust">Implementasi dalam Rust
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">fn main() {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> let n = 1000;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> let mut is_prime = vec![true; n+1];
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> is_prime[0] = false;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> is_prime[1] = false;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> for i in 2..=n {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> if is_prime[i] {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> println!(&amp;#34;{}&amp;#34;, i);
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> let mut j = i * i;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> while j &amp;lt;= n {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> is_prime[j] = false;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> j += i;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> }
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> }
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> }
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="versi-yang-sedikit-lebih-cepat">Versi yang Sedikit Lebih Cepat
&lt;/h2>&lt;p>Kami akan menerapkan versi yang sedikit lebih cepat dengan mempertimbangkan hal-hal berikut:&lt;/p>
&lt;ul>
&lt;li>Alih-alih menginisialisasi array dengan true, inisialisasi dengan false (ini lebih cepat).&lt;/li>
&lt;li>Karena kelipatan 2 bukan bilangan prima, kami mengabaikan proses mengubah kelipatan 2 menjadi false.&lt;/li>
&lt;li>Tidak perlu melakukan perulangan hingga n; jika Anda menemukan bilangan prima hingga akar kuadrat dari n, Anda dapat menemukan bilangan prima hingga n.&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">fn main() {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> let n = 1000;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> let mut is_prime = vec![false; n+1];
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> is_prime[2] = true;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> for i in (3..=n).step_by(2) {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> is_prime[i] = true;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> }
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> for i in 3..=((n as f64).sqrt() as usize) {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> if is_prime[i] {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> let mut j = i * i;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> while j &amp;lt;= n {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> is_prime[j] = false;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> j += i * 2;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> }
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> }
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> }
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> for i in (2..=n).filter(|&amp;amp;x| is_prime[x]) {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> println!(&amp;#34;{}&amp;#34;, i);
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> }
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="referensi">Referensi
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://ja.wikipedia.org/wiki/%E3%82%A8%E3%83%A9%E3%83%88%E3%82%B9%E3%83%86%E3%83%8D%E3%82%B9%E3%81%AE%E7%AF%A9" target="_blank" rel="noopener"
>Saringan Eratosthenes&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Cara Menggambar Grafik Menggunakan Python (matplotlib.pyplot)</title><link>http://kenji.blog/id/p/cara-menggambar-grafik-menggunakan-python-matplotlib-pyplot/</link><pubDate>Sun, 09 Apr 2023 01:02:19 +0900</pubDate><guid>http://kenji.blog/id/p/cara-menggambar-grafik-menggunakan-python-matplotlib-pyplot/</guid><description>&lt;img src="http://kenji.blog/p/pythonmatplotlib.pyplot%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%B0%E3%83%A9%E3%83%95%E3%82%92%E6%8F%8F%E7%94%BB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img.png" alt="Featured image of post Cara Menggambar Grafik Menggunakan Python (matplotlib.pyplot)" />&lt;p>&lt;img src="http://kenji.blog/p/pythonmatplotlib.pyplot%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%B0%E3%83%A9%E3%83%95%E3%82%92%E6%8F%8F%E7%94%BB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_1.png"
width="1200"
height="288"
srcset="http://kenji.blog/p/pythonmatplotlib.pyplot%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%B0%E3%83%A9%E3%83%95%E3%82%92%E6%8F%8F%E7%94%BB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_1_hue3f23818eeeec9c43d6452cc0f61fb52_43864_480x0_resize_box_3.png 480w, http://kenji.blog/p/pythonmatplotlib.pyplot%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%B0%E3%83%A9%E3%83%95%E3%82%92%E6%8F%8F%E7%94%BB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_1_hue3f23818eeeec9c43d6452cc0f61fb52_43864_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_1.png"
class="gallery-image"
data-flex-grow="416"
data-flex-basis="1000px"
>&lt;/p>
&lt;h1 id="prasyarat">Prasyarat
&lt;/h1>&lt;ul>
&lt;li>Akun Google&lt;/li>
&lt;/ul>
&lt;h1 id="langkah-langkah">Langkah-langkah
&lt;/h1>&lt;ol>
&lt;li>Akses &lt;a class="link" href="https://colab.research.google.com/" target="_blank" rel="noopener"
>https://colab.research.google.com/&lt;/a>&lt;/li>
&lt;li>Pilih &amp;ldquo;File&amp;rdquo; -&amp;gt; &amp;ldquo;Notebook baru&amp;rdquo;&lt;/li>
&lt;li>Tempel dan jalankan kode berikut&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">matplotlib.pyplot&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="nn">plt&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">numpy&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="nn">np&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">x&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">linspace&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">2&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">pi&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">500&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">plt&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">plot&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">x&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">sin&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">x&lt;/span>&lt;span class="p">),&lt;/span> &lt;span class="n">label&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;sin curve&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">plt&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">plot&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">x&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">cos&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">x&lt;/span>&lt;span class="p">),&lt;/span> &lt;span class="n">label&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;cos curve&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">plt&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">legend&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="c1"># tampilkan legenda&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">plt&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">show&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h1 id="hasil">Hasil
&lt;/h1>&lt;p>&lt;img src="http://kenji.blog/p/pythonmatplotlib.pyplot%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%B0%E3%83%A9%E3%83%95%E3%82%92%E6%8F%8F%E7%94%BB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img.png"
width="568"
height="413"
srcset="http://kenji.blog/p/pythonmatplotlib.pyplot%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%B0%E3%83%A9%E3%83%95%E3%82%92%E6%8F%8F%E7%94%BB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_hucdb24ab588d845f9f7a56ef99be2c709_27745_480x0_resize_box_3.png 480w, http://kenji.blog/p/pythonmatplotlib.pyplot%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%B0%E3%83%A9%E3%83%95%E3%82%92%E6%8F%8F%E7%94%BB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_hucdb24ab588d845f9f7a56ef99be2c709_27745_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img.png"
class="gallery-image"
data-flex-grow="137"
data-flex-basis="330px"
>&lt;/p>
&lt;h1 id="referensi">Referensi
&lt;/h1>&lt;ul>
&lt;li>&lt;a class="link" href="https://matplotlib.org/3.5.3/api/_as_gen/matplotlib.pyplot.html" target="_blank" rel="noopener"
>matplotlib.pyplot — Matplotlib 3.5.3 documentation&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Cara Mengaktifkan KaTeX (Tampilan Rumus Gaya LaTeX) di hugo</title><link>http://kenji.blog/id/p/hugo%E3%81%A7katexlatex%E9%A2%A8%E6%95%B0%E5%BC%8F%E8%A1%A8%E7%A4%BA%E3%82%92%E6%9C%89%E5%8A%B9%E3%81%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/</link><pubDate>Fri, 31 Mar 2023 23:11:26 +0900</pubDate><guid>http://kenji.blog/id/p/hugo%E3%81%A7katexlatex%E9%A2%A8%E6%95%B0%E5%BC%8F%E8%A1%A8%E7%A4%BA%E3%82%92%E6%9C%89%E5%8A%B9%E3%81%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/</guid><description>&lt;img src="http://kenji.blog/p/hugo%E3%81%A7katexlatex%E9%A2%A8%E6%95%B0%E5%BC%8F%E8%A1%A8%E7%A4%BA%E3%82%92%E6%9C%89%E5%8A%B9%E3%81%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img.png" alt="Featured image of post Cara Mengaktifkan KaTeX (Tampilan Rumus Gaya LaTeX) di hugo" />&lt;h1 id="apa-itu-katex">Apa itu KaTeX?
&lt;/h1>&lt;p>KaTeX adalah pustaka javascript untuk menampilkan rumus matematika bergaya LaTeX dalam HTML.&lt;/p>
&lt;p>Secara khusus, Anda dapat menampilkan rumus seperti berikut ini:&lt;/p>
$$f(x) = x^2 + x + 41$$
&lt;p>Tampaknya ada pustaka tampilan rumus bergaya LaTeX lainnya, tetapi KaTeX dikenal karena sederhana dan cepat.&lt;/p>
&lt;h1 id="cara-menambahkan-ke-hugo">Cara menambahkan ke hugo
&lt;/h1>&lt;ol>
&lt;li>Buat file baru &lt;code>layouts/partials/math.html&lt;/code> dalam hierarki folder hugo.&lt;/li>
&lt;/ol>
&lt;p>Isinya harus sebagai berikut:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">&amp;lt;link rel=&amp;#34;stylesheet&amp;#34; href=&amp;#34;https://cdn.jsdelivr.net/npm/katex@0.16.4/dist/katex.min.css&amp;#34; integrity=&amp;#34;sha384-vKruj+a13U8yHIkAyGgK1J3ArTLzrFGBbBc0tDp4ad/EyewESeXE/Iv67Aj8gKZ0&amp;#34; crossorigin=&amp;#34;anonymous&amp;#34;&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&amp;lt;script defer src=&amp;#34;https://cdn.jsdelivr.net/npm/katex@0.16.4/dist/katex.min.js&amp;#34; integrity=&amp;#34;sha384-PwRUT/YqbnEjkZO0zZxNqcxACrXe+j766U2amXcgMg5457rve2Y7I6ZJSm2A0mS4&amp;#34; crossorigin=&amp;#34;anonymous&amp;#34;&amp;gt;&amp;lt;/script&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&amp;lt;script defer src=&amp;#34;https://cdn.jsdelivr.net/npm/katex@0.16.4/dist/contrib/auto-render.min.js&amp;#34; integrity=&amp;#34;sha384-+VBxd3r6XgURycqtZ117nYw44OOcIax56Z4dCRWbxyPt0Koah1uHoK0o4+/RRE05&amp;#34; crossorigin=&amp;#34;anonymous&amp;#34;&amp;gt;&amp;lt;/script&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&amp;lt;script&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">document.addEventListener(&amp;#34;DOMContentLoaded&amp;#34;, function() {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> renderMathInElement(
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> document.body,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> delimiters: [
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {left: &amp;#34;$$&amp;#34;, right: &amp;#34;$$&amp;#34;, display: true},
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {left: &amp;#34;\\[&amp;#34;, right: &amp;#34;\\]&amp;#34;, display: true},
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {left: &amp;#34;$&amp;#34;, right: &amp;#34;$&amp;#34;, display: false},
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {left: &amp;#34;\\(&amp;#34;, right: &amp;#34;\\)&amp;#34;, display: false}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> });
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> });
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&amp;lt;/script&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ol start="2">
&lt;li>Selanjutnya, tambahkan kode berikut ke file yang sudah ada &lt;code>layouts/partials/extend_head.html&lt;/code>.&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">{{ if or .Params.math .Site.Params.math }}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">{{ partial &amp;#34;math.html&amp;#34; . }}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">{{ end }}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ol start="3">
&lt;li>Sekarang Anda siap menggunakan KaTeX.&lt;/li>
&lt;/ol>
&lt;p>Dengan menambahkan &lt;code>math: true&lt;/code> ke front matter halaman, Anda dapat mengaktifkan KaTeX.&lt;/p>
&lt;ol start="4">
&lt;li>Yang harus Anda lakukan adalah menulis rumus gaya LaTeX di badan artikel.&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">$$ e^{i \pi} = -1 $$
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Saat ditulis seperti di atas, ini akan ditampilkan sebagai berikut:&lt;/p>
$$ e^{i \pi} = -1 $$
&lt;h1 id="referensi">Referensi
&lt;/h1>&lt;ul>
&lt;li>&lt;a class="link" href="https://reorx.github.io/hugo-PaperModX/docs/math-typesetting/" target="_blank" rel="noopener"
>Math Typesetting | PaperModX&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://katex.org/docs/autorender.html" target="_blank" rel="noopener"
>KaTex Auto-render Extension&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://www.storange.jp/2017/02/katex.html" target="_blank" rel="noopener"
>Pengenalan KaTeX | The Strange Storage&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Tokoh-Tokoh Besar Matematika</title><link>http://kenji.blog/id/p/tokoh-tokoh-besar-matematika/</link><pubDate>Thu, 22 Sep 2022 23:06:37 +0900</pubDate><guid>http://kenji.blog/id/p/tokoh-tokoh-besar-matematika/</guid><description>&lt;img src="http://kenji.blog/p/%E6%95%B0%E5%AD%A6%E3%81%AE%E5%81%89%E4%BA%BA%E3%81%9F%E3%81%A1/img.png" alt="Featured image of post Tokoh-Tokoh Besar Matematika" />&lt;h3 id="fermat-p-de-fermat-1601-1665">Fermat (P. de Fermat, 1601-1665)
&lt;/h3>&lt;p>Matematikawan Prancis perwakilan abad ke-17. Ia meletakkan dasar-dasar geometri analitik, teori probabilitas, dan kalkulus. Ia juga merupakan pendiri teori bilangan.&lt;/p>
&lt;h3 id="diophantus-diophantus-sekitar-207-291">Diophantus (Diophantus, sekitar 207-291)
&lt;/h3>&lt;p>Matematikawan Yunani. Terkenal karena pengenalan simbolisme dan studi tentang solusi rasional. Karya utamanya adalah &amp;ldquo;Arithmetica&amp;rdquo;. Bidang yang mencari solusi rasional dari persamaan disebut analisis Diophantine.&lt;/p>
&lt;h3 id="euler-l-euler-1707-1783">Euler (L. Euler, 1707-1783)
&lt;/h3>&lt;p>Raja matematika kelahiran Swiss. Ia mencapai prestasi di hampir semua bidang matematika. Lebih dari 700 makalah dan 45 buku peninggalannya masih ada.&lt;/p>
&lt;h3 id="legendre-a-m-legendre-1752-1833">Legendre (A. M. Legendre, 1752-1833)
&lt;/h3>&lt;p>Matematikawan Prancis. Meninggalkan banyak prestasi dalam teori bilangan, integral eliptik, dan masalah gravitasi. Istilah &amp;ldquo;Teori Bilangan&amp;rdquo; berasal dari karya utamanya yang berjudul sama.&lt;/p>
&lt;h3 id="kummer-e-e-kummer-1810-1893">Kummer (E. E. Kummer, 1810-1893)
&lt;/h3>&lt;p>Matematikawan Jerman. Mencapai hasil yang luar biasa dengan menerapkan teori bilangan dari medan siklotomik pada Teorema Terakhir Fermat.&lt;/p>
&lt;h3 id="descartes-r-descartes-1596-1650">Descartes (R. Descartes, 1596-1650)
&lt;/h3>&lt;p>Filsuf inovatif Prancis. Karya perwakilannya meliputi &amp;ldquo;Diskursus tentang Metode&amp;rdquo;, &amp;ldquo;Geometri&amp;rdquo;, dan &amp;ldquo;Kosmologi&amp;rdquo;.&lt;/p>
&lt;h3 id="pascal-b-pascal-1623-1662">Pascal (B. Pascal, 1623-1662)
&lt;/h3>&lt;p>Filsuf Prancis yang dikenal karena penelitiannya dalam teori probabilitas dan fluida. Kemudian ia bergabung dengan aliran Jansenis dan terlibat dalam kegiatan keagamaan. &amp;ldquo;Pensées&amp;rdquo; adalah karyanya dari masa itu.&lt;/p>
&lt;h3 id="bachet-c-g-bachet-1581-1638">Bachet (C. G. Bachet, 1581-1638)
&lt;/h3>&lt;p>Bangsawan Prancis, mempelajari teka-teki angka sebagai hobi. Menerbitkan terjemahan Latin dari &amp;ldquo;Arithmetica&amp;rdquo; karya Diophantus, dan menambahkan penelitiannya sendiri sebagai anotasi.&lt;/p>
&lt;h3 id="wallis-j-wallis-1616-1703">Wallis (J. Wallis, 1616-1703)
&lt;/h3>&lt;p>Matematikawan Inggris. Memberikan bentuk matematis pada konsep limit dalam karya utamanya &amp;ldquo;Aritmetika Ketakterhinggaan&amp;rdquo; dan berkontribusi pada peletakan dasar kalkulus.&lt;/p>
&lt;h3 id="brouncker-w-brouncker-1620-1684">Brouncker (W. Brouncker, 1620-1684)
&lt;/h3>&lt;p>Bangsawan Irlandia. Presiden pertama Royal Society (Akademi Inggris). Seorang penggemar matematika, ia berinteraksi dengan Wallis dan yang lainnya.&lt;/p>
&lt;h3 id="lagrange-j-l-lagrange-1736-1813">Lagrange (J. L. Lagrange, 1736-1813)
&lt;/h3>&lt;p>Matematikawan Prancis kelahiran Italia. Menggantikan Euler sebagai Direktur Matematika di Akademi Berlin. Mencapai prestasi besar dalam teori bilangan, mekanika analitik, dll.&lt;/p>
&lt;h3 id="siegel-c-l-siegel-1896-1981">Siegel (C. L. Siegel, 1896-1981)
&lt;/h3>&lt;p>Pakar teori bilangan Jerman. Memberikan banyak kontribusi dalam teori bilangan analitik.&lt;/p>
&lt;h3 id="fibonacci-l-fibonacci-sekitar-1175-1250">Fibonacci (L. Fibonacci, sekitar 1175-1250)
&lt;/h3>&lt;p>Matematikawan Italia. Menggunakan angka Hindu-Arab dalam karya utamanya &amp;ldquo;Liber Abaci&amp;rdquo; dan berkontribusi pada penyebarannya. Ia juga membahas bilangan kongruen dalam &amp;ldquo;Liber Quadratorum&amp;rdquo;.&lt;/p>
&lt;h3 id="baker-a-baker-1939-">Baker (A. Baker, 1939-)
&lt;/h3>&lt;p>Pakar teori bilangan Inggris. Dianugerahi Fields Medal bersama Heisuke Hironaka atas kontribusinya dalam teori bilangan transenden.&lt;/p>
&lt;h3 id="poincaré-j-poincare-1854-1912">Poincaré (J. Poincare, 1854-1912)
&lt;/h3>&lt;p>Matematikawan Prancis yang disebut sebagai matematikawan serba bisa terakhir. Meninggalkan karya-karya luar biasa termasuk teori fungsi automorfik, geometri non-Euclidean, persamaan diferensial, mekanika benda langit, elektrodinamika, serta esai-esai ilmiah.&lt;/p>
&lt;h3 id="mordell-l-j-mordell-1888-1972">Mordell (L. J. Mordell, 1888-1972)
&lt;/h3>&lt;p>Matematikawan kelahiran Amerika. Orang tuanya adalah imigran dari Lituania. Memiliki banyak makalah tentang teori persamaan Diophantine, tetapi Teorema Mordell dalam teori kurva eliptik sangat terkenal. Weil memperluas ini ke kasus kurva aljabar umum, dan dari sana geometri aljabar aritmatika mengalami perkembangan yang eksplosif.&lt;/p>
&lt;h3 id="weil-a-weil-1906-">Weil (A. Weil, 1906-)
&lt;/h3>&lt;p>Matematikawan Prancis keturunan Yahudi. Di masa mudanya, ia tertarik pada masalah Fermat, secara mendasar meninjau geometri aljabar dengan tujuan mengaplikasikannya pada teori bilangan, dan meletakkan dasar yang ketat. Ia juga dikenal karena karya-karyanya tentang sejarah matematika.&lt;/p>
&lt;h3 id="mersenne-m-mersenne-1588-1648">Mersenne (M. Mersenne, 1588-1648)
&lt;/h3>&lt;p>Pendeta Prancis dari ordo Minim. Bertindak sebagai perantara korespondensi antar matematikawan di berbagai tempat. Bilangan yang dinamakan bilangan Mersenne sebenarnya juga ditemukan oleh Fermat.&lt;/p>
&lt;h3 id="roberval-g-p-de-roberval-1602-1675">Roberval (G. P. de Roberval, 1602-1675)
&lt;/h3>&lt;p>Matematikawan Prancis. Ia hampir menjadi satu-satunya orang pada saat itu yang mendapatkan posisi profesor sebagai matematikawan, dikenal karena penelitiannya tentang sikloida.&lt;/p>
&lt;h3 id="abel-n-h-abel-1802-1829">Abel (N. H. Abel, 1802-1829)
&lt;/h3>&lt;p>Matematikawan Norwegia. Mencapai prestasi luar biasa seperti ketakterpecahkan persamaan kuintik umum, teori fungsi eliptik, dan teori integral Abel, tetapi meninggal di usia muda.&lt;/p>
&lt;h3 id="jacobi-k-g-jacob-1804-1851">Jacobi (K. G. Jacob, 1804-1851)
&lt;/h3>&lt;p>Matematikawan Jerman keturunan Yahudi. Meninggalkan prestasi besar dalam teori fungsi eliptik, teori fungsi theta, persamaan diferensial, dan kalkulus variasi. Memperkenalkan prestasi Abel kepada dunia. Ia juga dikenal karena menolak pragmatisme dan menyatakan tujuan sains adalah demi &amp;ldquo;kehormatan jiwa manusia&amp;rdquo;.&lt;/p>
&lt;h3 id="gauss-c-f-gauss-1777-1855">Gauss (C. F. Gauss, 1777-1855)
&lt;/h3>&lt;p>Raja matematika kelahiran Jerman. Terkenal karena penelitiannya tentang teori bilangan, geometri non-Euclidean, geodesi, deret hipergeometrik, teori permukaan, dan magnetisme bumi. Sebagai perfeksionis, ia tidak mempublikasikan hasil kecuali kesempurnaannya tinggi dan tidak diragukan. Karya utama &amp;ldquo;Disquisitiones Arithmeticae&amp;rdquo;.&lt;/p>
&lt;h3 id="lamé-g-lame-1795-1870">Lamé (G. Lame, 1795-1870)
&lt;/h3>&lt;p>Matematikawan Prancis. Berkontribusi pada mekanika elastisitas, teori konduksi panas, dll.&lt;/p>
&lt;h3 id="liouville-j-liouville-1809-1882">Liouville (J. Liouville, 1809-1882)
&lt;/h3>&lt;p>Matematikawan Prancis. Berkontribusi pada persamaan diferensial, teori bilangan transenden, dan teori fungsi.&lt;/p>
&lt;h3 id="cauchy-a-l-cauchy-1789-1857">Cauchy (A. L. Cauchy, 1789-1857)
&lt;/h3>&lt;p>Matematikawan Prancis. Sangat produktif dan memiliki banyak prestasi dalam fisika teoretis dan matematika. Dikatakan bahwa di Prancis ia sama dihormatinya dengan Gauss.&lt;/p>
&lt;h3 id="galois-e-galois-1811-1832">Galois (E. Galois, 1811-1832)
&lt;/h3>&lt;p>Matematikawan Prancis. Dengan memperkenalkan konsep grup, ia menjelaskan teorema Abel bahwa persamaan derajat 5 atau lebih tinggi pada umumnya tidak dapat dipecahkan secara aljabar. Meninggal di usia muda dalam duel, tetapi sekarang diketahui bahwa pemicunya adalah masalah sepele tentang seorang wanita.&lt;/p>
&lt;h3 id="hensel-k-hensel-1861-1941">Hensel (K. Hensel, 1861-1941)
&lt;/h3>&lt;p>Matematikawan Jerman. Murid Kronecker. Mengaplikasikan metode teori fungsi untuk memperkenalkan teori p-adic (analisis p-adic) ke dalam teori bilangan.&lt;/p>
&lt;h3 id="hasse-h-hasse-1898-1979">Hasse (H. Hasse, 1898-1979)
&lt;/h3>&lt;p>Matematikawan Jerman. Murid Hensel, berkontribusi pada landasan analisis p-adic dan aplikasinya. Bekerja pada teori medan kelas, studi fungsi-L dari kurva eliptik, dll.&lt;/p>
&lt;h3 id="kronecker-l-kronecker-1823-1891">Kronecker (L. Kronecker, 1823-1891)
&lt;/h3>&lt;p>Matematikawan Jerman keturunan Yahudi. Berkontribusi pada teori fungsi eliptik, teori bilangan, dll. Dikenal karena menganjurkan dasar aritmatika untuk matematika, tetapi kepribadiannya yang sangat subjektif, kritik yang tidak masuk akal terhadap rekannya di Universitas Berlin, Weierstrass, dan hambatannya terhadap pekerjaan Cantor, memberikan citra negatif pada hidupnya.&lt;/p>
&lt;h3 id="hilbert-d-hilbert-1862-1943">Hilbert (D. Hilbert, 1862-1943)
&lt;/h3>&lt;p>Matematikawan Jerman. Meninggalkan jejak besar di semua bidang matematika, termasuk teori invarian, teori bilangan aljabar, dan dasar-dasar matematika. 23 masalah yang diusulkannya pada Kongres Ahli Matematika Internasional di Paris (1900) memiliki dampak besar pada perkembangan matematika.&lt;/p>
&lt;h3 id="riemann-b-riemann-1826-1866">Riemann (B. Riemann, 1826-1866)
&lt;/h3>&lt;p>Matematikawan Jerman. Mencapai prestasi besar yang berkaitan dengan dasar-dasar matematika, seperti konsep permukaan Riemann dalam teori fungsi kompleks, dan geometri Riemann.&lt;/p>
&lt;h3 id="faltings-g-faltings-1954-">Faltings (G. Faltings, 1954-)
&lt;/h3>&lt;p>Matematikawan Jerman. Memecahkan dugaan Mordell pada tahun 1983.&lt;/p>
&lt;h3 id="wiles-a-wiles-1953-">Wiles (A. Wiles, 1953-)
&lt;/h3>&lt;p>Matematikawan kelahiran Inggris. Otoritas terkemuka di bidangnya, yang memberikan kontribusi besar pada penelitian seperti dugaan utama Iwasawa dan dugaan Birch dan Swinnerton-Dyer.&lt;/p>
&lt;h3 id="referensi">Referensi
&lt;/h3>&lt;p>Teorema Terakhir Fermat Terpecahkan! Dari Euler hingga Bukti Wiles (Kodansha)&lt;/p></description></item></channel></rss>