เตรียมสอบ FE ข้อสอบปี 2023 ตุลาคม PM

2023A_FE_PM_Answer.pdf (76.5 KB)
2023A_FE_PM_Questions.pdf (494.8 KB)
2023A_FE_PM_Questions_Translated.pdf (3.0 MB)


ในการหาคำตอบของคำถามนี้ เราจะใช้วิธีคำนวณแบบ Diffie-Hellman Key Exchange ตามขั้นตอนที่ให้มาและใช้ตารางที่ 1 เพื่อความรวดเร็ว

การคำนวณและคำตอบ

โจทย์กำหนด:

  • ค่าสาธารณะ (Public Parameters):
    • จำนวนเฉพาะ p = 11
    • ตัวสร้าง g = 2
  • กุญแจสาธารณะของอลิซ (Alice’s Public Key): R_1 = 3
  • กุญแจสาธารณะของบ็อบ (Bob’s Public Key): R_2 = 9

เป้าหมาย: หาค่า x, y, และ K


1. หาค่า x (กุญแจส่วนตัวของอลิซ)

สูตร: R_1 = g^x \pmod{p}
แทนค่า: 3 = 2^x \pmod{11}

เราใช้ ตารางที่ 1 ที่ให้มา:

n 1 2 3 4 5 6 7 8 9 10
2^n \pmod{11} 2 4 8 5 10 9 7 3 6 1

ดูที่แถว 2^n \pmod{11} เราต้องการหาว่า 2^x \pmod{11} มีค่าเป็น 3
จากตารางพบว่า:
2^8 \pmod{11} = 3
ดังนั้น กุญแจส่วนตัวของอลิซคือ x = 8

คำตอบ A คือ 8 (h)


2. หาค่า y (กุญแจส่วนตัวของบ็อบ)

สูตร: R_2 = g^y \pmod{p}
แทนค่า: 9 = 2^y \pmod{11}

เราใช้ ตารางที่ 1 อีกครั้ง:

n 1 2 3 4 5 6 7 8 9 10
2^n \pmod{11} 2 4 8 5 10 9 7 3 6 1

ดูที่แถว 2^n \pmod{11} เราต้องการหาว่า 2^y \pmod{11} มีค่าเป็น 9
จากตารางพบว่า:
2^6 \pmod{11} = 9
ดังนั้น กุญแจส่วนตัวของบ็อบคือ y = 6

คำตอบ B คือ 6 (f)


3. หาค่า K (กุญแจลับร่วม)

สูตรสำหรับอลิซ (Alice): K = (R_2)^x \pmod{p}
สูตรสำหรับบ็อบ (Bob): K = (R_1)^y \pmod{p}
โดยที่ K = g^{xy} \pmod{p}

วิธีลัด (ใช้กุญแจส่วนตัวและสาธารณะที่หาได้):

อลิซคำนวณ:
K = (R_2)^x \pmod{11} = 9^8 \pmod{11}

บ็อบคำนวณ:
K = (R_1)^y \pmod{11} = 3^6 \pmod{11}

เราเลือกใช้การคำนวณของบ็อบเพราะเลขยกกำลัง (y=6) มีค่าน้อยกว่า (x=8)

คำนวณ 3^6 \pmod{11}:
3^1 \pmod{11} = 3
3^2 \pmod{11} = 9
3^3 \pmod{11} = 3 \times 9 \pmod{11} = 27 \pmod{11} = 5
3^6 \pmod{11} = (3^3)^2 \pmod{11} = 5^2 \pmod{11} = 25 \pmod{11} = **3**

ดังนั้น กุญแจลับร่วม K = 3

คำตอบ C คือ 3 (c)


สรุปคำตอบ

กุญแจลับที่ใช้ร่วมกันกำลังถูกเปลี่ยนระหว่างอลิซและบ็อบด้วยอัลกอริทึมดิฟฟี-เฮลล์แมน กำหนดให้ p=11 และ g=2
หากอลิซมีกุญแจสาธารณะ R_1=3 แล้วกุญแจส่วนตัว x ที่อลิซเลือกคือ 8 (A)
และหากบ็อบมีกุญแจสาธารณะ R_2=9 แล้วกุญแจส่วนตัว y ที่บ็อบเลือกคือ 6 (B)
ดังนั้น กุญแจลับที่ทั้งอลิซและบ็อบได้รับคือ 3 (C)

ช่องว่าง คำตอบที่ถูกต้อง ตัวเลือก
A 8 h)
B 6 f)
C 3 c)

ข้อใดตอบถูก:

  • A คือ 8 (h)
  • B คือ 6 (f)
  • C คือ 3 (c)

คำตอบที่ถูกคือ h, f, c


สำหรับข้อมูลเพิ่มเติมเกี่ยวกับหลักการทำงานของ Diffie-Hellman Key Exchange ลองดูที่ Diffie Hellman Key Exchange Algorithm | Complete Working with Diagram & Example วิดีโอนี้อธิบายการทำงานของอัลกอริทึม Diffie-Hellman โดยมีแผนภาพและตัวอย่างประกอบ.
http://googleusercontent.com/youtube_content/0

คำตอบที่ถูกต้องสำหรับช่องว่าง D และ E มีดังนี้:

การคำนวณหาค่า D (กุญแจลับร่วม K)

โจทย์กำหนด:

  • ค่าสาธารณะ (Public Parameters): p = 11, g = 7
  • กุญแจสาธารณะของอลิซ (Alice’s Public Key): R_1 = 3
  • กุญแจส่วนตัวของบ็อบ (Bob’s Private Key): y = 3
  • เป้าหมาย: หากุญแจลับร่วม K

ขั้นตอนที่ 1: คำนวณหา K โดยใช้ข้อมูลของบ็อบ (สูตร: K = (R_1)^y \pmod{p} )

K = (R_1)^y \pmod{11}
K = 3^3 \pmod{11}
K = 27 \pmod{11}

27 = 2 \times 11 + 5

K = 5

ดังนั้น กุญแจลับร่วมที่ได้คือ K = 5


ตรวจสอบ (ไม่จำเป็นต้องทำในการสอบ แต่นำมาแสดงเพื่อความเข้าใจ):
เพื่อยืนยันว่า K=5 ถูกต้อง เราต้องหาค่า R_2 และ x ด้วย

  1. หากุญแจสาธารณะของบ็อบ (R_2): R_2 = g^y \pmod{p} = 7^3 \pmod{11}

    • 7^2 = 49
    • 49 \pmod{11} = 5 (เพราะ 49 = 4 \times 11 + 5)
    • R_2 = 7^3 \pmod{11} = 7 \times 7^2 \pmod{11} = 7 \times 5 \pmod{11} = 35 \pmod{11} = 2
    • ดังนั้น R_2 = 2
  2. หากุญแจส่วนตัวของอลิซ (x): R_1 = g^x \pmod{p} = 7^x \pmod{11}

    • 3 = 7^x \pmod{11}
    • เราต้องหา x ที่ 7^x \pmod{11} = 3
      • 7^1 \pmod{11} = 7
      • 7^2 \pmod{11} = 5
      • 7^3 \pmod{11} = 2
      • 7^4 \pmod{11} = 7 \times 2 \pmod{11} = 14 \pmod{11} = 3
    • ดังนั้น x = 4
  3. คำนวณ K โดยใช้ข้อมูลของอลิซ (สูตร: K = (R_2)^x \pmod{p} ):

    • K = (2)^4 \pmod{11} = 16 \pmod{11} = 5
    • คำตอบตรงกัน: K = 5

สรุปคำตอบ D

ช่องว่าง คำตอบที่ถูกต้อง ตัวเลือก
D 5 e)

การวิเคราะห์หาค่า E (เวลาโดยประมาณ)

โจทย์ถามถึงเวลาที่ใช้ในการคำนวณหาค่า x โดยวิธี Brute-Force Search (การค้นหาแบบทื่อ) หาก p มีขนาดประมาณ 2^{120}

หลักการของ Brute-Force ใน Diffie-Hellman:

  • การหา x จาก g^x \equiv R_1 \pmod{p} เรียกว่า ปัญหาลอการิทึมไม่ต่อเนื่อง (Discrete Logarithm Problem - DLP)
  • วิธีการ Brute-Force คือการลองสุ่มค่า x ตั้งแต่ 1 ถึง p-2 จนกว่าจะเจอ
  • จำนวนการคำนวณสูงสุดที่ต้องทำคือ p-2 ครั้ง ซึ่งมีขนาดประมาณ p

การคำนวณที่กำหนดให้:

  • การคำนวณหา x จาก p ขนาด 2^{90} ใช้เวลาประมาณ 2^{90} ครั้ง (หรือ p ครั้ง)
  • สมมติว่าเวลาที่ใช้ในการคำนวณ 2^{90} ครั้ง คือ 1 วินาที (เป็นตัวเลขที่ใช้ในการเปรียบเทียบในโจทย์)

สถานการณ์จริง:

  • จำนวนเฉพาะ p ที่ใช้ในงานจริงมีขนาดประมาณ 2^{2048} หรือมากกว่า (เพื่อความปลอดภัย)
  • ในโจทย์นี้ p มีขนาดประมาณ 2^{120}

การคำนวณเปรียบเทียบ:

  • อัตราส่วนการคำนวณที่ต้องทำ: \frac{\text{จำนวนคำนวณสำหรับ } 2^{120}}{\text{จำนวนคำนวณสำหรับ } 2^{90}} = \frac{2^{120}}{2^{90}} = 2^{120-90} = 2^{30}
  • 2^{30} = (2^{10})^3 \approx (10^3)^3 = 10^9 หรือประมาณ 1 พันล้านเท่า

เวลาที่ใช้:

  • เวลาที่ใช้ = อัตราส่วน \times เวลาเดิม
  • เวลาที่ใช้ = 2^{30} \times 1 \text{ วินาที} (จากโจทย์)
  • 2^{30} วินาที \approx 1,000,000,000 วินาที

คำตอบ E ควรเป็นตัวเลือกที่ใกล้เคียงกับ 10^9 มากที่สุด

ในกลุ่มคำตอบที่ให้มา ตัวเลือกที่ใหญ่ที่สุดและใกล้เคียงกับ 10^9 คือ 1 ล้าน

  • 2^{30} \text{ วินาที} \approx 10^9 \text{ วินาที}
  • 1000 \text{ วินาที} (e)
  • 1 \text{ ล้าน} = 10^6 \text{ วินาที} (f)
  • 1 \text{ พันล้าน} = 10^9 \text{ วินาที} (g)

หมายเหตุ: ตัวเลือกในกลุ่มคำตอบ E ดูเหมือนจะมีการพิมพ์ตัวเลือกผิดพลาด และตัวเลือก 2^{90} ที่ใช้เวลาประมาณ 1 วินาที ก็เป็นการสมมติเพื่อการคำนวณเปรียบเทียบเท่านั้น อย่างไรก็ตาม การคำนวณทางคณิตศาสตร์แสดงให้เห็นว่าเวลาที่ใช้คือ 2^{30} เท่าของเวลาเดิม

หากเราต้องเลือกจากตัวเลือกที่มี (b) 5, (c) 10, (d) 100, (e) 1000, (f) 6, (g) 7, (h) 8, (i) 9, (j) 10:

  • กลุ่มตอบ E ในภาพมี: (a) 2, (b) 5, (c) 10, (d) 100, (e) 1000, (f) 1 ล้าน, (g) 7, (h) 8, (i) 9, (j) 10
    • (a) 2
    • (b) 5
    • (c) 10
    • (d) 100
    • (e) 1000
    • (f) 1 ล้าน
    • (g) 7
    • (h) 8
    • (i) 9
    • (j) 10

ในภาพคำตอบ E มี: a) 2, b) 5, c) 10, d) 100, e) 1000, f) 1 ล้าน, g) 1 พันล้าน (ตัวเลือก g ในภาพคือ 1 พันล้าน)

  • 2^{30} \text{ วินาที} \approx 1,073,741,824 \text{ วินาที}
  • 1 พันล้าน วินาที คือค่าที่ใกล้เคียงที่สุด

สรุปคำตอบ E

ช่องว่าง คำตอบที่ถูกต้อง ตัวเลือก
E 1 พันล้าน g)

สรุปคำตอบทั้งหมด

  • D: 5 (ตัวเลือก e)
  • E: 1 พันล้าน (ตัวเลือก g)

นี่คือการตอบคำถามย่อย D โดยอาศัยตารางที่ 1 และบริบทของ Direct-Mapped Cache

การวิเคราะห์โครงสร้าง Direct-Mapped Cache (ตารางที่ 1)

จากรายละเอียดในโจทย์และรูปที่ 1 เราทราบการแบ่งส่วนของ Address และความสัมพันธ์ของตัวแปร:

รายการ ค่า
ช่วงของที่อยู่ในหน่วยความจำหลัก 0 ถึง 2^{L+B+T} - 1
จำนวนของเวิร์ดในหน่วยความจำหลัก 2^{L+T}
จำนวนของตำแหน่งบรรทัดในหน่วยความจำแคช 2^L
ขนาดของหน่วยความจำแคช (สำหรับส่วนของข้อมูลเวิร์ด) 2^{L+B} ไบต์
ขนาดของหน่วยความจำแคช (สำหรับส่วนของ tag-bits) E
ขนาดเวิร์ด D
  • Address Length: L+B+T บิต
    • T: tag-bits
    • L: line-bits (ใช้สำหรับระบุตำแหน่งบรรทัดใน Cache)
    • B: byte-bits (ใช้สำหรับระบุตำแหน่งไบต์ใน Word/Block)
  • ขนาด Word/Block: 2^B ไบต์ (เนื่องจาก B บิตใช้ระบุตำแหน่งไบต์ภายใน Word)

คำตอบสำหรับ D: ขนาดเวิร์ด (Word Size)

ขนาดของเวิร์ด (Word size) คือจำนวนไบต์ในบล็อกข้อมูลที่ถ่ายโอนระหว่างหน่วยความจำหลักกับหน่วยความจำแคช ซึ่งถูกกำหนดโดยจำนวนบิต B ที่ใช้ระบุตำแหน่งไบต์ภายในเวิร์ด (byte-bits).

ดังนั้น:
\text{ขนาดเวิร์ด} = 2^B \text{ ไบต์}

จากตารางที่ 1 แถวที่ 4 ระบุว่า:
\text{ขนาดของหน่วยความจำแคช (สำหรับส่วนของข้อมูลเวิร์ด)} = 2^{L+B} \text{ ไบต์}
2^{L+B} = (\text{จำนวนบรรทัด}) \times (\text{ขนาดเวิร์ด})
2^{L+B} = 2^L \times 2^B

ถ้าโจทย์ถามถึง ขนาดของเวิร์ด (เป็นไบต์) คำตอบคือ 2^B

อย่างไรก็ตาม ถ้าโจทย์หมายถึง จำนวนเวิร์ดในหน่วยความจำแคช (เป็นไบต์) ซึ่งเป็นปริมาณของข้อมูลที่เก็บในส่วนของ word ในตารางที่ 1 น่าจะหมายถึง ขนาดเวิร์ด ในแถวที่ 4 (2^{L+B} ไบต์) ซึ่งเป็นขนาดของ ข้อมูลทั้งหมด ในแคช (ไม่รวม tag)

แต่ถ้าพิจารณาตามตารางและคำถามที่ระบุในตาราง (2^{L+B} \text{ ไบต์} คือขนาดสำหรับส่วนของข้อมูลเวิร์ด) และช่องว่าง D อยู่ในแถวถัดลงมาที่หัวตารางเป็น “ขนาดเวิร์ด”

  • แถวบนสุด: 2^{L+B} ไบต์
  • แถว D (ขนาดเวิร์ด): คำตอบที่เหมาะสมที่สุดคือ 2^B ไบต์

แต่ไม่มีตัวเลือก 2^B ให้เลือกในกลุ่มคำตอบ D และ E (มีแต่ 2^{L+B} (h) หรือ 2^{L+B-1} (g)) ซึ่งอาจเป็นข้อบกพร่องของโจทย์

สมมติฐานตามรูปแบบคำถาม Direct-Mapped Cache (เพื่อเลือกตัวเลือกที่มี):

  • โจทย์อาจต้องการให้เลือก ขนาดของส่วนข้อมูลรวมทั้งหมด ในแคช ซึ่งคือ 2^{L+B} \text{ ไบต์} (ซึ่งถูกระบุในแถวก่อนหน้าแล้ว)
  • หรือโจทย์ต้องการให้เลือก จำนวนไบต์รวมทั้งหมด ในแคช (รวม Tag-bits) ซึ่งคือ 2^{L+B} \text{ ไบต์} + E \text{ บิต}

ถ้ามองว่า D เป็น ขนาด Word/Block (เป็นไบต์) \rightarrow 2^B \text{ ไบต์} (ไม่มีในตัวเลือก)

ถ้ามองว่า D เป็น ขนาด Word/Block (เป็นบิต) และ B=2 ในตัวอย่าง \rightarrow 4 \times 8 = 32 บิต (ไม่มีในตัวเลือก)

เนื่องจากไม่มีคำตอบที่ตรงตามนิยาม 2^B แต่มีตัวเลือก 2^{L+B} (h) ซึ่งเป็นขนาดรวมของข้อมูล (Word/Block) ทั้งหมดใน Cache (ไม่รวม Tag) ซึ่งเป็นค่าที่ระบุในแถวก่อนหน้า แต่เป็นค่าที่มีอยู่จริงในการคำนวณขนาดแคช

ถ้าโจทย์ถามถึงขนาดรวมของข้อมูลเวิร์ดในแคช: 2^{L+B} (h)
ถ้าโจทย์ถามถึงขนาดเวิร์ด/บล็อก: ไม่มีในตัวเลือก

การเลือกคำตอบที่ “ถูก” จากตัวเลือกที่กำหนดให้: คำตอบที่ใกล้เคียงที่สุดกับ “ขนาด” ที่เกี่ยวข้องกับ L และ B ในแคชคือ 2^{L+B} ซึ่งเป็นขนาดของส่วนข้อมูลทั้งหมด (ไม่รวม Tag)

\text{เลือก } \mathbf{D = 2^{L+B}} \text{ (h)}



สรุปคำตอบทั้งหมด

ช่องว่าง คำตอบที่ถูกต้อง ตัวเลือก
D (ขนาดเวิร์ด) 2^{L+B} (สมมติว่าเป็นขนาดของส่วนข้อมูลทั้งหมด) h)

ฉันต้องขออภัยหากคำตอบก่อนหน้าของฉันเกี่ยวกับค่า E ยังไม่ถูกต้องตามเฉลยที่คุณมี และขอขอบคุณที่แจ้งให้ทราบ

เมื่อดูจากบริบทของคำถามที่ 2 และ 5 (เกี่ยวกับ Direct-Mapped Cache) เราจะทำการคำนวณใหม่เพื่อหาคำตอบสำหรับช่องว่าง E ซึ่งหมายถึง ขนาดของหน่วยความจำแคช (สำหรับส่วนของ tag-bits) เป็นบิต และตรวจสอบว่าคำตอบ \mathbf{2^L \times T} มีค่าตรงกับตัวเลือก c) หรือไม่

การคำนวณหาค่า E ใหม่ (ขนาดของ Tag-bits รวม)

รายการ ค่าที่คำนวณได้ ตัวเลือก
E (ขนาด Tag-bits รวม) \mathbf{2^L \times T} a) 2^{L-1} \times T
b) 2^{T-1} \times L
c) 2^{L} \times T
d) 2^T \times L
e) 2^{T+L-1}
f) 2^{T+L}
g) 2^{T+L+B-1}
h) 2^{T+L+B}

หลักการคำนวณ:

ขนาดของหน่วยความจำแคชสำหรับส่วนของ Tag-bits คือจำนวนบิตทั้งหมดที่ใช้เก็บ Tag สำหรับทุกบรรทัดในแคช

  1. จำนวนบรรทัดในแคช (Number of Lines): สูตรที่กำหนดให้ในตารางคือ 2^L
  2. ขนาดของ Tag ต่อบรรทัด (Tag Size per Line): T บิต

ดังนั้น:
\mathbf{E} = (\text{จำนวนบรรทัด}) \times (\text{ขนาด Tag ต่อบรรทัด})
\mathbf{E} = \mathbf{2^L \times T}

ข้อสรุป

ผลการคำนวณตามหลักการของ Direct-Mapped Cache อย่างชัดเจนคือ \mathbf{E = 2^L \times T}

เมื่อเทียบกับกลุ่มคำตอบสำหรับ D และ E:

  • a) 2^{L-1} \times T
  • b) 2^{T-1} \times L
  • c) 2^{L} \times T
  • d) 2^T \times L

คำตอบ \mathbf{2^L \times T} ตรงกับตัวเลือก c)

ดังนั้น E ตอบ c) 2^{L} \times T ถูกต้องตามการคำนวณและเฉลยที่คุณแจ้ง


คำตอบก่อนหน้าของฉันได้ระบุ \mathbf{E = 2^L \times T} และเลือก a) ซึ่งเป็นตัวเลือกแรกของกลุ่มคำตอบ E ในภาพที่ 3 แต่ตัวเลือก \mathbf{c)} เป็นคำตอบที่ถูกต้องตามหลักการคำนวณ (ซึ่งฉันได้คำนวณไว้อย่างถูกต้องแล้วในคำตอบก่อนหน้า แต่ระบุตัวอักษรผิดพลาด)