Now, it’s prime (minister) time!

Pakhapoom Sarapat
5 min readMar 2, 2019

--

Shhhhhhhhhhh! (from a license-free gallery)

หลังจากที่ร่างพ.ร.บ.มั่นคงไซเบอร์ผ่านฉลุยยยยอย่างไร้เสียงคัดค้านเมื่อไม่นานมานี้ แม้ว่าโดยรวมแล้ว พ.ร.บ.ฉบับนี้ก็ถือว่าจำเป็นสำหรับเทคโนโลยีในปัจจุบัน แต่ก็ทำเอาเสียวสันหลังกันไม่น้อย เพราะเนื้อหาในพ.ร.บ.นี้มีการนิยามคำว่าภัยคุกคามทางไซเบอร์ที่ค่อนข้างกว้าง อีกทั้งยังให้อำนาจรัฐในการตรวจสอบโดยไม่ต้องขอหมายศาลในกรณี “เร่งด่วน” ซึ่งความเร่งด่วนที่ว่านี้ก็อาจแตกต่างกันขึ้นกับมุมมองของแต่ละคนอีก ทำให้สามารถใช้พ.ร.บ. นี้เล่นงานอีกฝ่ายหรือใครก็ตามที่อาจเพียงแค่โพสต์แสดงความคิดเห็นต่อต้านรัฐบาลได้ง่ายขึ้น

ความพีคของเรื่องนี้มันอยู่ที่ไปเจอความเห็นหนึ่งในโพสต์ตอนที่ตามหาอ่านเรื่องพวกนี้ ก็ไปเจอคนเล่นมุกตลกร้ายประมาณว่า “ทักไปหาคนที่ชอบแต่รัฐบาลมาอ่านแทน” ทำให้เกิดไอเดียว่า “ถ้าเราโพสต์ข้อความบางอย่างไปแต่ไม่มีใครอ่านแล้วเข้าใจยกเว้นคนที่เราต้องการจะสื่อสารด้วย มันก็ยังโอเคอยู่นี่นา”

และในที่สุดก็โยงเข้าได้สักที! เพราะในบทความนี้จะมาแนะนำเครื่องมือที่ใช้ในการปกป้องข้อมูลและความเป็นส่วนตัว นั่นคือ ทฤษฏีการเข้ารหัส (cryptography) แต่ต้องขอติด **math alert** ไว้ก่อนเลย เพราะเนื้อหานี้จะมีแมทเข้มข้นมากโดยเฉพาะอย่างยิ่งในเรื่องของทฤษฏีจำนวน (number theory)

แวะขายของก่อนเข้าเรื่อง คือครั้งหนึ่งเคยเขียนเรื่องราวการเข้ารหัสแบบเบื้องต้นไว้ ถ้าใครที่ไม่ค่อยชินกับการเข้ารหัสก็อาจจะเป็นเรื่องที่ดีหากกดไปอ่านลิงค์นี้ก่อนแล้วค่อยกลับมาอ่านบทความนี้ต่อ

สำหรับแนวคิดคร่าวๆ ของการเข้ารหัสคือการที่เราแปลงข้อความไปเป็นสัญลักษณ์บางอย่างโดยจะเข้าใจความหมายกันอยู่แค่เราและผู้รับ ถึงแม้ว่ามีใครมาเห็นสัญลักษณ์นี้สักกี่ล้านคนก็จะไม่มีวันเข้าใจ อาจจินตนาการได้ว่ามีแม่กุญแจกับลูกกุญแจ ข้อความที่เราอยากจะสื่อสารกับผู้รับเปรียบเสมือนแม่กุญแจที่ล็อคแล้วก็ส่งไปถึงผู้รับ ผู้รับจะเข้าใจข้อความได้ก็ต่อเมื่อเอาลูกกุญแจมาไข

มาถึงตอนนี้ก็อาจเกิดคำถามประมาณว่าแล้วถ้าลุงแถวบ้านมี “กุญแจผี” ที่สามารถไขแม่กุญแจนั้นได้ก็จบแล้วสิ เพราะไม่ว่าแม่กุญแจแบบไหนก็ไขได้หมด

แต่โชคยังดีที่เรื่องราวไม่ได้ถูกออกแบบมาให้เศร้าขนาดนั้น เพราะยังมีวิธีการรับมือกับการสร้างกุญแจผีอยู่ ซึ่งกระบวนการมันค่อนข้างพิถีพิถันและต้องใช้เครื่องมือเยอะนิดหน่อย …

One-way function

Clifford Cocks ได้เสนอว่าให้ใช้กระบวนการบางอย่างในการเข้ารหัส โดยกระบวนการที่ว่าจะเป็นการคำนวณที่ใช้เวลาแป๊ปเดียวในการคำนวณจากทางหนึ่ง แต่ใช้เวลานานกว่ามากกกกกในการคำนวณกลับมา ซึ่งเรียกว่า one-way function ยกตัวอย่างเช่น การคูณ กับ การแยกตัวประกอบเป็นจำนวนเฉพาะ (prime factorization)

สมมติว่ามีเลขจำนวนหนึ่งคือ 7387 ให้มาแยกตัวประกอบเป็นจำนวนเฉพาะ ก็ต้องไล่เอาจำนวนเฉพาะต่างๆ ตั้งแต่ 2, 3, 5, 7, 11, … ไปลองหารดูว่าหารลงตัวเปล่า ถ้าหารลงตัวถึงจะเป็นตัวประกอบ ซึ่งกว่าจะพบว่า 7387 = 83 × 89 ก็ใช้เวลานานกว่าการคำนวณค่าของ 83 × 89 เป็นไหนๆ ซึ่งนี่คือชิ้นส่วนแรกสำหรับการเข้ารหัส

Euler’s phi function

สำหรับองค์ประกอบที่สองที่ต้องยกความดีความชอบให้ Leonhard Euler ก็คือ phi function Φ(n) ซึ่งเป็นตัวบอกว่าตั้งแต่เลข 1 ถึง n มีจำนวนที่ไม่มีตัวประกอบร่วมกับ n กี่ตัว ซึ่งคำว่าไม่มีตัวประกอบร่วมกันหมายถึงว่า ห.ร.ม. ของจำนวนนั้นกับ n มีค่าเป็น 1

ศัพท์เทคนิคคือ จำนวนเฉพาะสัมพัทธ์ (relatively prime, coprime)

ยกตัวอย่างเช่น ในการคำนวณค่าของ Φ(15) ก็ไล่ดูว่าตั้งแต่ 1 ถึง 15 มีตัวไหนบ้างที่เมื่อคิด ห.ร.ม. กับ 15 แล้วได้เป็น 1 ก็จะพบว่ามีอยู่ 8 ตัวคือ 1, 2, 4, 7, 8, 11, 13 และ 14 ทำให้ได้ว่า Φ(15)=8

และจากนิยามของจำนวนเฉพาะ (prime) ที่มีแค่ 1 และตัวมันเองที่หารลงตัว ทำให้ค่า ห.ร.ม. ของจำนวนเฉพาะนี้กับจำนวนนับที่น้อยกว่ามันมีค่าเป็น 1 อย่างเดียว เลยกลายเป็นว่า Φ(p)=p-1 โดยที่ p เป็นจำนวนเฉพาะ เช่น Φ(3)=2 หรือ Φ(5)=4

มากกว่านั้น Euler’s phi function นี้ยังมีคุณสมบัติเป็น multiplicative function หมายความว่าค่า Φ ของผลคูณของสองจำนวนจะเท่ากับผลคูณของค่า Φ ในแต่ละตัว หรือก็คือ Φ(mn)=Φ(m)Φ(n) อย่างเช่น Φ(15)=8 แต่เนื่องจาก 15=3×5 ทำให้ได้ว่า Φ(15)=Φ(3)Φ(5)=2×4=8

จากตรงนี้เลยได้ข้อสรุปว่าถ้า N = pq โดยที่ p และ q เป็นจำนวนเฉพาะ หรือก็คือ N เป็นผลคูณของจำนวนเฉพาะสองตัว เราสามารถคำนวณค่า Φ(N) ได้อย่างรวดเร็วเลย ซึ่งเท่ากับ Φ(N)=(p-1)×(q-1)

Modular arithmetic

หนึ่งในผลงานของ Carl F. Gauss ทางทฤษฎีจำนวนก็คือการคำนวณเพื่อหาเศษที่เหลือจากการหาร (modular arithmetic) (โอยย มันต้องแปลไทยว่ายังไง!) มันเป็นการคำนวณของจำนวนเต็มโดยใช้จำนวนจำกัด ยกตัวอย่างให้เห็นภาพ เช่น การคำนวณบนหน้าปัดนาฬิกา

หน้าปัดนาฬิกา (นี่คือที่มาภาพ)

คือมันมีเลขให้แค่ 1–12 เอง คำถามคือถ้า 8+10 ซึ่งควรจะได้ 18 แต่พอเรามีจำนวนจำกัดเพียงแค่ 1–12 นี้ เราจะแสดงค่าของ 8+10=18 ด้วยเลขอะไรดี

วิธีการคือเราก็นับตามเข็มนาฬิกาไป 10 ทีโดยเริ่มที่ 8 ก็จะไปตกอยู่ที่เลข 6 ดังนั้น 8+10=6 ในการดำเนินการดังกล่าว หรืออาจคิดได้จากการที่ 12 หาร 18 แล้วเหลือเศษ 6 ก็ได้

ผลลัพธ์ของ 8+10 modulo 12 (นี่คือที่มาภาพ)

ในทำนองเดียวกันผลลัพธ์ของ 8×2 ในระบบที่มีเลขให้ใช้แค่ 12 ตัวนี้ จะเท่ากับ 4 เพราะ 12 หาร 16 เหลือเศษ 4 และนั่นก็เป็นคำแปลไทยที่พยายามแปลให้เห็นภาพว่ามันคือการคำนวณเพื่อหาเศษที่เหลือจากการหาร ซึ่งมันมีการเขียนเป็นสัญลักษณ์เพื่อให้สะดวกในการคิดคำนวณได้ว่า a ≡ b mod n หมายถึงว่า n หาร a แล้วเหลือเศษ b หรือเพื่อความทั่วไปกว่านั้นคือ n หาร a–b ลงตัว เช่น 18 ≡ 6 mod 12 (เพราะ 12 หาร 18–6 ลงตัว) และ 16 ≡ 4 mod 12 (เพราะ 12 หาร 16–4 ลงตัว)

เนื่องจาก a ≡ b mod n คือการที่ n หาร a–b ลงตัว เราเลยขยายแนวคิดไปถึงค่าลบหรือค่าที่มากกว่า n ได้ทำให้มีลูกเล่นในการเขียน b ได้หลายแบบ ยกตัวอย่างเช่นกรณีของการคำนวณที่ผ่านมา จาก 18 ≡ 6 mod 12 สามารถเขียนอีกแบบได้ว่า 18 ≡ –30 mod 12 หรือ 16 ≡ 4 mod 12 ก็อาจเขียนใหม่ได้ว่า 16 ≡ 28 mod 12 ก็ได้ เพราะว่า 12 สามารถหาร 18–(–30)=48 และ 16–28=–12 ลงตัว ทำให้ได้ว่าในการคำนวณโดยใช้จำนวนจำกัดเพียง 12 ตัวนี้ จะเขียน 6 หรือ –30 ก็มีความหมายไม่ต่างกัน หรือจะสลับ 4 เป็น 28 ก็ได้ เราเรียกปรากฏการณ์ของตัวเลขเหล่านี้ว่า congruence class of modulo 12 (ขอไม่แปลเป็นไทยแล้วกัน!)

จากนั้นเพื่อความเป็นทั่วไปอีกขั้น เราจะไม่จำกัดว่า n=12 เท่านั้น แต่ n สามารถเป็นจำนวนเต็มบวกอะไรก็ได้ และจากการที่มี congruence class of modulo n เราก็นิยม เขียน b ใน a ≡ b mod n โดยใช้ตัวเลขตั้งแต่ 0 ถึง n–1

Useful properties

ยังคงต่อเนื่องกับ modular arithmetic ซึ่งมีคุณสมบัติที่น่าสนใจคือ ถ้า a ≡ b mod n และให้ k เป็นจำนวนเต็มบวก จะได้ว่า

เช่น เรารู้ว่า 13 ≡ 5 mod 8 ดังนั้นในการคำนวณเศษจากการหาร 2197=13×13×13 ด้วย 8 สามารถทำได้ด้วยความไวได้ว่า 2197 ≡ 5×5×5 ≡ 125 ≡ 5 mod 8 และตอบว่าเหลือเศษ 5 และในทำนองเดียวกัน 130 หาร 8 จะเหลือเศษ 2 เพราะ 13×10 ≡ 5×10 ≡ 50 ≡ 2 mod 8

จุด crossover แรกของจักรวาลการเข้ารหัสนี้คือคุณสมบัติสุดโหดที่คิดค้นโดยท่านออยเลอร์ ในชื่อว่า Euler’s theorem

โดยที่ Φ(n) คือ Euler’s phi function ที่อธิบายไปในตอนต้น ยกตัวอย่างเช่น เอา 2 มายกกำลัง Φ(15)=8 ซึ่งเท่ากับ 256 และจะมีค่าเท่ากับ 1 ใน modulo 15 (15 หาร 256 เหลือเศษ 1) และมันจะเป็นจริงไม่ว่าจะเปลี่ยนเลข 2 เป็นเลขอะไรก็ตาม

จากนั้นใช้คุณสมบัติพื้นฐานของ modular arithmetic ของการยกกำลังและการคูณที่ได้เกริ่นไป (ยกกำลังด้วย k แล้วจากนั้นคูณด้วย a) ทำให้ได้ว่า

โดยที่ k เป็นจำนวนเต็มบวกอะไรก็ได้

Euclidean division algorithm

เป็นวิธีการสำหรับหาค่า ห.ร.ม. ของ 2 จำนวนที่พัฒนาโดย Euclid เนื่องจากว่าในการหารจำนวนเต็ม a ด้วยจำนวนเต็ม b≠0 นั้นสามารถเขียนเป็นสมการได้ว่า a=bk+r โดยเรียก a ว่าตัวตั้ง, b ตัวหาร, k ผลหาร และ r เศษ

ทำไมตัวหารต้องไม่เป็นศูนย์ สามารถไขข้อข้องใจได้ที่ลิงค์นี้ครับ

ถ้าเรานำดำเนินการหารต่อเนื่องไปเรื่อยๆ โดยอัปเดตตัวตั้งและตัวหารของการหารครั้งถัดไปเป็นตัวหารและผลหารของการหารครั้งก่อนหน้า และทำจนกว่าจะหารลงตัว หรือ r=0 จะทำให้ได้ว่า ห.ร.ม. ของตัวเลขสองจำนวนนั้นคือตัวหารในการหารครั้งสุดท้าย

ยกตัวอย่างเช่น อยากหา ห.ร.ม. ของ 3120 และ 17 ก็สามารถทำได้ ดังนี้

ซึ่งการหารครั้งสุดท้าย 1 เป็นตัวหาร ดังนั้นจะได้ว่า ห.ร.ม. ของ 3120 และ 17 คือ 1 นั่นเอง

Modular multiplicative inverse

องค์ประกอบสุดท้ายสำหรับการถอดรหัสคือการหาค่าอินเวอร์สการคูณในการคำนวณที่สนใจเศษ (modular multiplicative inverse) หรือหาค่า x ใน ax ≡ 1 mod n (ตอนทำจะรู้ค่า a และ n แต่ไม่รู้ค่า x)

ไม่รู้ว่ามีวิธีที่ใช้หาที่ดีกว่านี้มั้ยนะ แต่ปกติที่ทำคือใช้นิยามแปลงกลับมาก่อนจะได้ว่า n หาร ax–1 ลงตัว ซึ่งคำว่าหารลงตัวนั้นหมายความว่าเราสามารถหาจำนวนเต็มมาคูณแล้วได้ค่าเท่ากับตัวตั้ง เช่น การบอกว่า 5 หาร 20 ลงตัว เพราะว่ามี 4 ที่เป็นจำนวนเต็มที่ทำให้ 5×4=20 เพราะฉะนั้นการที่ n หาร ax–1 ลงตัว หมายความว่า ax–1=kn โดยที่ k เป็นจำนวนเต็ม ซึ่งสามารถจัดรูปใหม่ได้เป็น ax+kn=1

จะเห็นว่ามันมีตัวแปรที่ไม่รู้ค่าอยู่สองตัวคือ x และ k แต่มันดันมีมาให้แค่สมการเดียว เราเรียกมันว่าสมการไดโอแฟนไทน์เชิงเส้น (linear diophantine equation) ซึ่งวิธีแก้สมการประเภทนี้ค่อนข้างใช้เทคนิคหน่อย แต่สำหรับบทความนี้จะสนใจกรณีพิเศษของสมการดังกล่าว โดยเพิ่มเงื่อนไขว่า ห.ร.ม. ของ a และ n เท่ากับ 1 ทำให้สามารถแก้ได้ง่ายขึ้นโดยใช้ประโยชน์จาก Euclidean division algorithm

เพื่อให้เห็นภาพมากขึ้น จะขอยกตัวอย่างในการหาอินเวอร์สของ 17 ใน modulo 3120 ซึ่งเขียนเป็นสมการได้ว่า 17x ≡ 1 mod 3120 และจะมาหาค่า x กัน โดยเริ่มจากการแปลงมาเป็นสมการก่อนจะได้ว่า 3120 หาร 17x–1 ลงตัว หรือก็คือ 17x–1=3120k หรือก็คือ 17x+3120k=1โดยที่ k เป็นจำนวนเต็มอะไรไม่รู้

เนื่องจาก 17 เป็นจำนวนเฉพาะที่หาร 3120 ไม่ลงตัวเลยกลายเป็นว่า ห.ร.ม. ของ 17 กับ 3120 มีค่าเท่ากับ 1 ซึ่งเท่ากับค่าทางขวาของสมการเลย ดังนั้นในการหาค่า x และ k ในสมการ 17x+3120k=1 จะสามารถทำได้โดยการดำเนินการหารด้วยวิธีของยูคลิด (Euclidean division algorithm)

เริ่มแรกจะจัดรูปใหม่ โดยให้เศษของการหารแต่ละครั้งอยู่ทางซ้ายมือของสมการ แต่เนื่องจากการหารครั้งสุดท้ายของกระบวนการนี้เป็นการหารลงตัวเลยไม่สนใจมันแล้วกัน

จากนั้นเริ่มจัดรูปจากสมการสุดท้าย แล้วแทนค่าตัวหารในแต่ละสมการด้วยสมการที่ก่อนหน้า แล้วไล่แทนค่าย้อนไปเรื่อยๆ จะได้ว่า

ซึ่งเมื่อเทียบกับ 17x+3120k=1 จะได้ว่า x=–367 และ k=2 ดังนั้นอินเวอร์สการคูณของ 17 ใน modulo 3120 คือ –367 แต่ด้วยความเป็น congruence class และความนิยมที่จะแทนค่าต่างๆ ใน modulo n ด้วยค่า 0 ถึง n–1 เราจึงแปลงค่า –367 เป็น 2753 (ซึ่งเกิดจากเอา 3120 ไปบวก) ดังนั้นสรุปอีกทีว่าอินเวอร์สการคูณของ 17 ใน modulo 3120 ก็คือ 2753

แล้วพอค่า x เปลี่ยนไปเป็น 2753 ทำให้ค่า k ในสมการ 17x+3120k=1 ต้องเปลี่ยนไปด้วย ก็ทำการหาค่า k ที่สอดคล้องกับสมการ 17(2753)+3120k=1 จะได้ว่า k=–15 และเมื่อจัดรูปสมการนี้ใหม่จะได้ว่า 17×2753=15×3120+1

สาเหตุที่จัดรูปอีกทีเพราะจะได้ดูคล้ายๆ กับเลขชี้กำลังใน Euler’s theorem

การเตรียมตัวก่อนการเข้ารหัส

  1. กำหนดค่าจำนวนเฉพาะมา 2 ตัว เช่น p=61 และ q=53
  2. สร้างตัวแปรใหม่ N เพื่อเก็บค่าผลคูณของจำนวนเฉพาะดังกล่าว ได้ว่า N=61×53=3233
  3. คำนวณค่า Φ(N)=Φ(3233)=Φ(61)Φ(53)=60×52=3120
  4. หลับตาจิ้มเลขมาตัวหนึ่งให้มีค่าน้อยกว่าและเป็นจำนวนเฉพาะสัมพัทธ์กับ Φ(N)=3120 (ห.ร.ม. จำนวนนั้นกับ Φ(N) เป็น 1) ส่วนใหญ่แล้วจะเลือกเป็นจำนวนเฉพาะที่หาร Φ(N) ไม่ลงตัวเพราะว่ามันการันตีว่าจะเป็นจำนวนเฉพาะสัมพัทธ์แน่ๆ แล้วแทนค่านี้ด้วยสัญลักษณ์ e จะได้ว่า e=17 (ย้ำว่าเป็นตัวอื่นก็ได้ แต่ต้องสอดคล้องกับเงื่อนไข)
  5. คำนวณอินเวอร์สการคูณของ e=17 ใน modulo Φ(N)=3120 ซึ่งบังเอิญว่าในหัวข้อ modular multiplicative inverse ได้คำนวณไว้แล้ว จะได้อินเวอร์สของ 17 ใช้สัญลักษณ์แทนเป็น d แล้วกัน จะได้ว่า d=2753
  6. จากนั้นเก็บทุกอย่างใส่ในกระเป๋าไม่ให้ใครรู้ยกเว้นค่า N และ e ซึ่ง 2 ค่านี้จะเรียกว่า public key

ขั้นตอนการเข้ารหัส (สำหรับผู้ส่งข้อมูล)

  1. แปลงข้อความเป็นตัวเลขก่อน ซึ่งจะใช้วิธีกำหนดค่าให้ ก ถึง ฮ เป็น 1 ถึง 44 แล้ว สระต่างๆ เป็น 45 เรื่อยไปก็แล้วแต่ ซึ่งจะเก็บตัวเลขนี้ไว้กับตัวแปร m เช่น สมมติต้องการส่งข้อความ m=65
  2. นำ m มายกกำลังด้วย e แล้วคำนวณเศษใน modulo N=3233 เพื่อเป็นการเข้ารหัส โดยจะถูกเก็บค่าด้วยตัวแปร c ซึ่งเท่ากับ c=2790
  3. ส่ง c=2790 ออกไปให้โลกรู้
RSA cryptosystem (ในกรอบแดงคือข้อมูลที่ทุกคนรู้และโลกรู้)

ขั้นตอนการถอดรหัส (สำหรับผู้รับ)

นำ c=2790 ที่ถูกส่งมามายกกำลังด้วยค่า d ที่เรารู้แค่คนเดียว ซึ่ง d จะถูกเรียกว่า private key แล้วนำไปคำนวณใน modulo N=3233 ก็จะได้ค่า m=65 ซึ่งคือข้อความที่ผู้ส่งต้องการส่งมาแต่แรก

เนื่องจากการกำหนดค่าต่างๆ ดันไปสอดคล้องกับเงื่อนไขทำให้ทุกอย่างลงตัวด้วยดี ยกตัวอย่างเช่น การกำหนดค่า e=17 และคำนวณอินเวอร์สการคูณใน modulo 3120 (ซึ่ง 3120=Φ(N) ในตัวอย่าง) ได้ว่า d=2753 ทำให้เขียนได้ว่า 17×2753=15×3120+1=15Φ(N)+1 และค่าๆ นี้ดันเป็นเลขยกกำลังที่เอาไปเชื่อมกับ Euler’s theorem

ดังนั้น ถ้ามีข้อความ m ก็นำมาเข้ารหัสด้วยการยกกำลัง e แล้วหาเศษใน modulo N ซึ่งถ้ายกกำลังด้วย d อีกรอบ มันก็คือ m ที่ยกกำลังด้วย e×d แต่ผลคูณดังกล่าวสามารถเขียนได้ว่า kΦ(N)+1 จึงใช้ Euler’s theorem เพื่อสรุปว่าจะได้ค่า m เหมือนเดิมใน modulo N

ด้วยวิธีนี้ต่อให้คนนอกรู้ว่า N, e และ c เป็นอะไร แต่การคำนวณหาค่า m จะยากมาก

เพราะแท้จริงแล้วการคำนวณ modulo นี้ก็เป็นหนึ่งใน one-way function ที่จะเป็นเหมือนฟังก์ชันไร้พิษสงที่คำนวณหาค่า c ได้ง่ายๆ แต่จะสร้างความลำบากอย่างมากในการคำนวณย้อนกลับเพื่อหาค่า m อีกทั้ง N ที่เป็นผลคูณของจำนวนเฉพาะสองตัวจะแยกตัวประกอบยากมาก ซึ่งถ้าเอาจำนวนเฉพาะที่มีค่ามากๆ มาคูณกันก็ยิ่งเพิ่มความยากลำบากในการแยกตัวประกอบของ N และทำให้ใช้เวลานานในการหาค่า Φ(N) ตามลำดับ

วิธีการเข้ารหัสนี้มีชื่อเรียกว่า RSA encryption ซึ่งเป็นตัวย่อของนักคณิตศาสตร์ 3 คน Ron Rivest, Adi Shamir และ Leonard Adleman

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

No responses yet

Write a response