ความปลอดภัยของธุรกรรมมีความสำคัญมากยิ่งขึ้นกว่าที่เคยในอุตสาหกรรมแนวนิชที่เติบโตอย่างรวดเร็วของ crypto เนื่องจากการใช้งานบล็อกเชนเพิ่มขึ้น จำนวนวิธีที่แฮกเกอร์สามารถหาช่องโหว่เพื่อโจมตีจึงเพิ่มขึ้นด้วย การโจมตีแบบ replay เป็นหนึ่งในภัยคุกคามที่รุนแรงและยังไม่ได้รับความเข้าใจอย่างเพียงพอ
การโจมตีแบบรีเพลย์คืออะไร?
การโจมตีแบบรีเพลย์เกิดขึ้นเมื่อผู้โจมตีส่งต่อธุรกรรมที่ถูกต้องเพื่อหลอกระบบ ผู้โจมตีไม่ได้แก้ไขลายเซ็น แต่ใช้มันในที่อื่น ซึ่งอาจทำให้เกิดการทำธุรกรรมเดิมซ้ำ สร้างภัยคุกคามต่อผู้ใช้
เนื่องจากลายเซ็นยังคงเหมือนเดิม จึงเป็นไปได้ว่าบล็อกเชนจะยอมรับข้อความที่ซ้ำซ้อน ในกรณีที่ บล็อกเชน หรือแอปไม่ได้รับการยืนยัน ผู้โจมตีจะใช้ประโยชน์จากการเล่นซ้ำ ซึ่งอาจไม่ปลอดภัยเป็นพิเศษใน Fork หรือระหว่างสายโซ่บล็อกเชนดังกล่าว
การโจมตีแบบรีเพลย์เกิดขึ้นเมื่อใด?
การโจมตีแบบซ้ำซ้อนมักเกิดขึ้นเมื่อบล็อกเชนแยกออกหรือเมื่อมีสองโซ่ที่มีรูปแบบเดียวกัน รายการธุรกรรมที่ลงนามแล้วสามารถใช้งานได้บนทั้งสองโซ่โดยไม่มีการป้องกันที่เพียงพอ ซึ่งหมายความว่าเงินสามารถถูกส่งบนโซ่หนึ่งและในเวลาเดียวกันบนอีกโซ่หนึ่ง
การขาดขอบเขตที่ชัดเจนระหว่างบล็อกเชนในระบบให้โอกาสแก่แฮกเกอร์ พวกเขายังมุ่งเป้าไปที่แอปพลิเคชันที่มีการตรวจสอบข้อความอ่อนแอ ในทั้งสองกรณี ผู้โจมตีมุ่งหวังที่จะทำเงินโดยการทำกิจกรรมซ้ำๆ ที่ดูเหมือนถูกต้อง
ตัวอย่างหนึ่งคือกรณีของ Ethereum และ Ethereum classic ในปี 2016 ผู้โจมตีได้ทำซ้ำธุรกรรมบนทั้งสองเครือข่ายเนื่องจากไม่มีการป้องกันในเบื้องต้น ทำให้ผู้ใช้สูญเสียเงินโดยไม่ตั้งใจในการทำธุรกรรมซ้ำสองครั้ง
วิธีที่วอลเล็ตป้องกันการโจมตีแบบรีเพลย์
วอลเล็ตคริปโตมีเครื่องมือด้านความปลอดภัยที่แข็งแกร่งซึ่งถูกนำมาใช้ก่อนการโจมตีแบบรีเพลย์หนึ่งในนั้นคือ chain ID ที่เชื่อมโยงกับข้อความที่ลงนามแล้ว ซึ่งรับประกันว่าลายเซ็นจะสามารถผ่านได้เฉพาะบนบล็อกเชนเดียวเท่านั้น และล้มเหลวบนบล็อกเชนอื่นๆ
เครื่องมือสำคัญอีกอย่างหนึ่งคือ nonce ซึ่งเป็นตัวเลขที่จะถูกเพิ่มขึ้นในทุกธุรกรรม วอลเล็ตจะปฏิเสธธุรกรรมหาก nonce ถูกใช้ซ้ำ ซึ่งจะช่วยให้มั่นใจว่าแฮกเกอร์จะไม่สามารถส่งข้อความหรือการชำระเงินเดิมซ้ำได้
เวลาจำกัดยังถูกใช้ในวอลเล็ตบางแห่งเพื่อรับการชำระเงิน ตัวอย่างเช่น ข้อความสามารถใช้งานได้นานถึงห้านาที ลายเซ็นจะสูญเสียความถูกต้อง และไม่สามารถส่งซ้ำได้
การป้องกันระดับสัญญาอัจฉริยะและแอป
แม้ว่าวอลเล็ตจะทำงานได้ แต่สัญญาอัจฉริยะและแอปพลิเคชันควรรักษาความปลอดภัยของตนเองด้วย สัญญาส่วนใหญ่มี nonce/ผู้ใช้ ซึ่งเป็นตัวนับ nonce เพื่อป้องกันการซ้ำซ้อนของการกระทำ ซึ่งช่วยให้สัญญาสามารถปฏิเสธลายเซ็นใดๆ ที่มันได้รับเห็น
แอปพลิเคชันที่ช่วยในการลงนามนอกโซ่ มักจะใช้มาตรฐาน EIP-712 รูปแบบนี้รวมถึง chain ID ชื่อแอปและคอนแทรกต์ โดยใช้มาตรฐานนี้ แอปจะผูกข้อความแต่ละข้อความกับวัตถุประสงค์ที่ตั้งใจไว้ และป้องกันการส่งซ้ำ
ตามที่ QuillAudits บริษัทด้านความปลอดภัยของบล็อกเชนระบุ แอปไม่ควรละเว้นการแยกโดเมนในการอนุมัติแบบออฟไลน์ การขาดบริบทที่เหมาะสมจะทำให้ผู้โจมตีสามารถใช้ประโยชน์จากความสามารถในการทำงานร่วมกันได้ ซึ่งแสดงให้เห็นว่าทำไมการตรวจสอบความปลอดภัยจึงมีความสำคัญในการรักษาความปลอดภัยของระบบ Web3
องค์ประกอบหลัก
การป้องกันการเล่นซ้ำอาศัยเครื่องมือที่ชัดเจนและเฉพาะเจาะจงเพื่อให้แน่ใจว่ามีบริบทที่ถูกต้อง เครื่องมือเหล่านี้คือ chain IDs, account nonces และเวลาหมดอายุ การรวมกันของเครื่องมือเหล่านี้ทำให้ผู้โจมตีพบความยากลำบากในการพยายามเล่นซ้ำ
องค์ประกอบที่สำคัญที่สุดคือ:
- Chain ID – รายการธุรกรรมนี้ถูกต้องบนบล็อกเชนเดียวและถูกปฏิเสธโดยบล็อกเชนอื่นๆ
- Nonce – นี่คือตัวเลขที่ใช้เพื่อให้แน่ใจว่าข้อความที่ลงนามไม่ถูกใช้ซ้ำหลายครั้ง
- เวลาหรือข้อจำกัดด้านเวลา – จะเพิ่มช่วงเวลาที่ข้อความที่เล่นซ้ำจะถูกปฏิเสธหลังจากผ่านเวลา
- Domain Separator – แยกข้อความของ Tether ออกจากช่องทางภายนอกเครือข่ายไปยังแอป คอนแทรกต์ และเครือข่ายเฉพาะผ่านมาตรฐาน EIP-712
- การติดตาม Nonce ของสัญญาอัจฉริยะ – ช่วยให้แอปและสัญญาสามารถบล็อกข้อความที่ใช้แล้วหรือซ้ำกันในระดับสัญญา
การรวมกันของเครื่องมือเหล่านี้ช่วยป้องกันภัยคุกคามจากการเล่นซ้ำส่วนใหญ่ เทคนิคทั้งหมดนี้ถูกใช้งานโดยวอลเล็ต แอปพลิเคชัน และโปรโตคอล เพื่อป้องกันการซ้ำซ้อนของข้อความ ผลลัพธ์คือประสบการณ์ที่ปลอดภัยยิ่งขึ้นสำหรับนักพัฒนาและผู้ใช้งาน
เหตุใดการป้องกันการเล่นซ้ำจึงมีความสำคัญต่อผู้ใช้
การป้องกันการเล่นซ้ำคือสิ่งที่ทำให้ผู้ใช้มั่นใจเมื่อใช้งานวอลเล็ต สะพาน และแพลตฟอร์มแลกเปลี่ยน ในกรณีที่ไม่มีการป้องกันนี้ ผู้ใช้จะไม่รู้ตัวว่าสูญเสียเงินไปแล้ว ระบบจะมีความปลอดภัยและเชื่อถือได้มากขึ้นด้วยการปฏิเสธการทำธุรกรรมซ้ำหรือใช้ประโยชน์เกินควร
กระเป๋าเงินที่เชื่อมโยงกับชื่อ-รหัส-คำขอของเครือข่ายช่วยให้ผู้ใช้หลีกเลี่ยงข้อผิดพลาด เมื่อผู้ใช้เข้าใจอย่างชัดเจนว่าธุรกรรมของตนจะถูกส่งไปที่ใด พวกเขาจะสามารถควบคุมได้ดีขึ้น ซึ่งยังช่วยลดความสับสนระหว่างการเปลี่ยนแปลงระหว่างเครือข่ายหรือแอปพลิเคชัน
การป้องกันการเล่นซ้ำยังใช้เพื่อทำให้การถอนและฝากโดยแพลตฟอร์มแลกเปลี่ยนและผู้ดูแลรักษาปลอดภัย พวกเขามักพัฒนาเครื่องมือเฉพาะตัวที่อนุญาตให้มีการทำธุรกรรมบนเครือข่ายที่เหมาะสมเท่านั้น สิ่งนี้ช่วยรับประกันความปลอดภัยของลูกค้าและความมั่นคงของการดำเนินงานในกรณีที่เกิด Fork หรือการอัปเกรด
สรุป
การโจมตีแบบ Replay เป็นภัยคุกคามต่อความปลอดภัยของบล็อกเชนโดยการใช้ประโยชน์จากลายเซ็นที่ถูกใช้ซ้ำในหนึ่งหรือหลายเครือข่ายหรือระบบ อย่างไรก็ตาม การใช้ Chain ID, nonces และข้อจำกัดด้านเวลา วอลเล็ตมีส่วนสำคัญในการป้องกันการโจมตีเหล่านี้ แอปและสัญญาอัจฉริยะควรร่วมมือในการป้องกันนี้ด้วย โดยตรวจสอบการใช้งานและลายเซ็นของตน
ระบบควรร่วมมือและรับรู้ถึงกันและกัน เพราะนี่คือวิธีเดียวที่จะทำให้เป็นการป้องกันที่ดีที่สุด ผู้ใช้ลดความเสี่ยงจากการเล่นซ้ำโดยใช้วอลเล็ตที่เชื่อถือได้ DApp ที่ได้รับการยืนยัน และสัญญาอัจฉริยะที่ผ่านการตรวจสอบ พื้นที่บล็อกเชนกำลังขยายตัว และความพยายามในการรับรองความปลอดภัยของมันต้องเพิ่มขึ้น

