Cryptography

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

จุดกำเนิดพร้อมกับระบบ public-key

Merkle Tree (ชื่อเดิม hash tree หรือ authentication tree) เป็นผลงานของ Ralph C. Merkle หนึ่งในผู้บุกเบิกวงการการเข้ารหัสแบบกุญแจสาธารณะ และผู้สร้างกระบวนการแฮชแบบปลอดภัย โดยเขายื่นขอสิทธิบัตร authentication tree ในปี 1979 เพื่อเป็นการยืนยันว่ามีการส่งข้อความจากต้นทางถึงปลายทางแล้ว และข้อความที่ส่งนั้นไม่สามารถเปลี่ยนแปลงได้อีก โดยให้ผู้ใช้ส่งข้อมูลเข้าฐานข้อมูล และทั้งสองฝ่ายได้รับคำยืนยัน (ที่ตรวจสอบได้จากกระบวนการทาง cryptography) ว่าข้อมูลถูกรวมไว้ในฐานข้อมูลแล้ว

โดยหลักการแล้ว เราสามารถเก็บข้อมูลโดยยืนยันว่าฐานข้อมูลรวมทุกขุดข้อมูลเข้าไว้แล้วได้ไม่ยากนัก รูปแบบที่เข้าใจง่ายที่สุดคือการทำเป็น list เช่น ภาพของ Cloudflare แสดงการเก็บข้อมูล 8 ชุด ทุกครั้งที่ใส่ข้อมูล (วงกลมสีฟ้า) เข้าไปแล้ว ฐานข้อมูลจะนำไปแฮชคู่กับปลาย list เดิม เพื่อประกาศเป็น root hash แต่กระบวนการนี้ไม่มีประสิทธิภาพในการใช้งานจริง

ในกรณีที่เราต้องการยืนยันว่าข้อมูลของเราถูกรวมอยู่ในฐานข้อมูลหรือไม่ เราสามารถใช้ค่าแฮชก่อนหน้า ร่วมกับข้อมูลชุดที่เราต้องการตรวจสอบ และข้อมูลที่เข้ามายังฐานข้อมูลทั้งหมดหลังจากเรา เช่น หากต้องการตรวจข้อมูล d8 เราสามารถใช้แฮช g คำนวณ SHA256(g + d8) ได้เลย เมื่อคำนวณแล้วก็ทำมาเทียบค่ากับ root hash ที่ฐานข้อมูลประกาศไว้ หากตรงกันก็แสดงว่าข้อมูลยังอยู่ในรายการ แต่การทำเป็น list เช่นนี้หากต้องการตรวจสอบข้อมูลเก่าๆ เช่น d1 จะกลายเป็นว่าเราต้องใช้ข้อมูลทั้งฐานข้อมูลเพื่อคำนวณยืนยัน กลายเป็นสมการ SHA256(SHA256(SHA256(SHA256(SHA256(SHA256(SHA256(SHA256(d1) + d2) + d3) + d4) + d5) + d6) + d7) + d8) ซึ่งกินเวลานานมาก เฉพาะข้อมูล certification transparency ของ Google ปีล่าสุดก็มีข้อมูลมากกว่าสองพันล้านรายการแล้ว

Merkle Tree นั้นเป็นการเก็บข้อมูลแบบ tree โดยเก็บข้อมูลที่ leaf node (ปลายสุดของกราฟ) เท่านั้น โหนดภายใน (internal node) ทั้งหมดจะเก็บการเก็บค่าแฮชของข้อมูลชั้นก่อนหน้าไม่เกินสองตัวซ้าย/ขวา เท่านั้น ทำให้ตอนนี้แม้จะมีข้อมูลกว่าสองพันล้านรายการ ขนาด tree ก็มีเพียง 29-30 ชั้นเท่านั้น

ตัวอย่างการยืนยันว่า d8 ถูกรวมไว้ในฐานข้อมูล จะใช้ข้อมูล g, k, m และ d8 เองเท่านั้น เพื่อคำนวณหา root hash ซึ่งประกาศเอาไว้ สังเกตว่าข้อมูลที่จำเป็นสำหรับการ ตรวจสอบนั้นน้อยมากเมื่อเทียบกับจำนวนข้อมูลโดยรวม โดยปริมาณข้อมูลที่ใช้สำหรับการตรวจสอบข้อมูลแต่ละ record นั้นมี Big-O ที่ระดับ log(n) เนื่องจากเป็น tree

Certification Transparency หัวใจแห่งความปลอดภัยอินเทอร์เน็ต

ในช่วงเวลาสิบกว่าปีที่ผ่านมา อัตราการเข้ารหัสเว็บสูงขึ้นอย่างรวดเร็วจากความพยายามผลักดันของหลายฝ่าย โดยรากฐานของความปลอดภัยในการเข้ารหัสเหล่านี้คือหน่วยงานออกใบรับรองการเข้ารหัส (certification authority - CA) แม้ว่าหน่วยงานเหล่านี้โดยรวมจะมีมาตรฐานความปลอดภัยที่ค่อนข้างสูง แต่หากหน่วยงานเหล่านี้พลาดพลั้งไป คนร้ายก็จะสามารถปลอมตัวเป็นเว็บใดก็ได้ในอินเทอร์เน็ต

เมื่อปี 2011 CA ที่ชื่อว่า DigiNotar ถูกแฮก และคนร้ายสามารถออกใบรับรอง *.google.com สำเร็จ ส่งผลให้คนร้ายสามารถดักฟังการเชื่อมต่อของเหยื่อได้ทั้งหมด หากสามารถคั่นกลางการเชื่อมต่อได้

ความเสี่ยงเช่นนี้ทำให้ผู้ผลิตเบราว์เซอร์พบว่าไม่สามารถไว้ใจ CA ให้ทำงานโดยไม่มีการตรวจสอบได้อีกต่อไป กูเกิลซึ่งเป็นเหยื่อโดยตรงของการที่ CA ออกใบรับรองผิดพลาด ออกมาผลักดันให้ CA ต้องส่งรายงานการออกใบรับรองเสมอ เปิดให้มีการตรวจสอบตลอดเวลาในชื่อมาตรฐาน Certification Transparency Log (CT Log) หรือ RFC6962 ต่อมาอัพเดตเป็น RFC9162

CT Log บังคับให้ CA ต้องเปิดเผยรายการออกใบรับรองทั้งหมดต่อหน่วยงานเก็บ log อีกทีหนึ่ง โดยต้องส่ง log ไปยังหน่วยงานอย่างน้อยสองหน่วยงาน และมีหนึ่งหน่วยงานที่แยกความเป็นเจ้าของออกไป เช่น ใบรับรองของ Blognone.com ล่าสุดออกใบรับรองโดย Google และส่งข้อมูลไปยัง Google และ Sectigo ปัจจุบันบริษัทออกใบรับรองมักตั้งเซิร์ฟเวอร์ CT Log ไปพร้อมกัน แม้แต่ Let's Encrypt ที่ให้บริการฟรีก็มี CT Log ของตัวเอง

Audit Path ของใบรับรอง Blognone.com หมายเลข enty 2328098657 บน CT log Xenon2024 ของกูเกิล

หลังจากส่ง log ไปยัง CT Log แล้ว บริษัทต่างๆ สามารถตั้งระบบตรวจสอบมามอนิเตอร์การออกใบรับรองของ CA ทั่วโลกได้ บริการตรวจสอบใบรับรองสามารถช่วยแจ้งเตือนหากมีการออกใบรับรองผิดพลาด

การบังคับให้ CA ส่งข้อมูลไปยัง CT Log นั้นอาศัยกระบวนการที่ CT Log จะต้องออก "ใบเสร็จ" ว่าใบรับรองนี้ได้ถูกส่งเข้า CT Log แล้ว เรียกว่าข้อมูล Signed Certificate Timestamp (SCT) เบราว์เซอร์จะตรวจสอบว่าใบรับรองที่ส่งมายังเบราว์เซอร์นั้นแนบ SCT มาด้วยหรือไม่ หากไม่แนบมาเบราว์เซอร์ก็จะไม่ยอมรับเสมอ

ตัว CT Log เองถูกมอนิเตอร์การทำงานด้วยแนวทางการใช้ Merkle Tree โดยผู้ตรวจสอบการทำงานของ CT Log จะสามารถตรวจสอบได้เสมอว่ามีการรวมใบรับรองเข้าไว้ทั้งหมดหรือไม่ หรือมีการแก้ไขส่วนใดส่วนหนึ่งของฐานข้อมูลหรือไม่ โดยมี API /ct/v2/get-sth-consistency สำหรับการคืนค่าที่จำเป็นสำหรับการตรวจสอบ root node ในอดีตและปัจจุบันว่าสืบย้อนกลับได้ว่าไม่มีการแก้ไขระหว่างทาง และผู้ตรวจสอบการทำงานสามารถเข้าไปขอข้อมูลมารันกระบวนการตรวจสอบตามมาตรฐาน RFC9162 ได้เอง

กูเกิลเปิดซอฟต์แวร์ CT Log เป็นโอเพนซอร์สในชื่อ Trillian โดยฐานข้อมูลด้านล่างใช้ MySQL/MariaDB ซึ่งทาง Let's Encrypt ก็นำไปรันเป็นบริการ CT Log ของตัวเอง

CT Log น่าจะเป็น Merkel Tree ที่ใหญ่ที่สุดตัวหนึ่ง เมื่อปี 2022 เฉพาะ Let's Encrypt รายเดียวรับข้อมูลสูงกว่าเตือนละ 400GB โดย log เหล่านี้ต้องบันทึกการออกใบรับรองทุกใบในโลก

ฐานข้อมูลที่ลบไม่ได้ ไม่มีประโยชน์ถ้าไม่มีคนตรวจ

เวลาที่เราพูดว่าเรามี "ฐานข้อมูลที่ลบไม่ได้" นั้นแท้จริงแล้ว ไม่เคยมีข้อมูลใดที่ลบไม่ได้จริงๆ เจ้าของเซิร์ฟเวอร์สามารถลบข้อมูลออกจากดิสก์ของตัวเองได้เสมอ แม้จะใช้ Merkle Tree เจ้าของฐานข้อมูลก็สามารถลบข้อมูลออกบางส่วนแล้วสร้างขึ้นใหม่ได้ แต่กระบวนการ Merkle Tree นั้นเปิดให้มีการตรวจสอบการลบได้ตลอดเวลา การลบข้อมูลออกจะทำให้บริษัทจำนวนมากที่ตั้งระบบมอนิเตอร์จะมองเห็นได้ทันทีว่ามีการแก้ไขข้อมูล

ข้อจำกัดว่าทุกคนสามารถแก้ไขข้อมูลในระบบขของตัวเองได้นี้ แม้แต่ Blockchain รายสำคัญอย่าง Ethereum ก็เคยตัดสินใจลบข้อมูลการแฮก The DAO ออกจากระบบ ฐานข้อมูลเดิมนั้นแยกสายออกเป็น Ethereum Classic ทุกวันนี้ ขณะที่ชุมชน Ethereum เดิมนั้นเดินหน้ายอมรับการแก้ไข (ที่มองเห็นและรู้ตัว) พร้อมๆ กัน

กระบวนการสร้างฐานข้อมูลที่ป้องกันการแก้ไขเช่นนี้ จึงมีคำถามสำคัญว่าระบบจะเปิดให้ใครเข้าถึงและตรวจสอบข้อมูลบ้าง ในกรณีของ Blockchain ทั้งหลายและ CT Log ระบบเหล่านี้เปิดให้สาธารณะเข้าตรวจสอบ เช่น CT Log มี REST API และสามารถยิงขอข้อมูลได้โดยมักไม่ต้องยืนยันตัวตน ขณะที่ Blockchain ต่างๆ มักดาวน์โหลดฐานข้อมูลทั้งก้อนมาดูได้

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

ภาพจาก Cloudflare Blog

Hiring! บริษัทที่น่าสนใจ

Carmen Software company cover
Carmen Software
Hotel Financial Solutions
Next Innovation (Thailand) Co., Ltd. company cover
Next Innovation (Thailand) Co., Ltd.
We are web design with consulting & engineering services driven the future stronger and flexibility.
KKP Dime company cover
KKP Dime
KKP Dime บริษัทในเครือเกียรตินาคินภัทร
Kiatnakin Phatra Financial Group company cover
Kiatnakin Phatra Financial Group
Financial Service
Fastwork Technologies company cover
Fastwork Technologies
Fastwork.co เว็บไซต์ที่รวบรวม ฟรีแลนซ์ มืออาชีพจากหลากหลายสายงานไว้ในที่เดียวกัน
Thoughtworks Thailand company cover
Thoughtworks Thailand
Thoughtworks เป็นบริษัทที่ปรึกษาด้านเทคโนโยลีระดับโลกที่คว้า Great Place to Work 3 ปีซ้อน
Iron Software company cover
Iron Software
Iron Software is an American company providing a suite of .NET libraries by engineer for engineers.
CLEVERSE company cover
CLEVERSE
Cleverse is a Venture Builder. Our team builds several tech companies.
Nipa Cloud company cover
Nipa Cloud
#1 OpenStack cloud provider in Thailand with our own data center and software platform.
Bangmod Enterprise company cover
Bangmod Enterprise
The leader in Cloud Server and Hosting in Thailand.
CIMB THAI Bank company cover
CIMB THAI Bank
MOVING FORWARD WITH YOU - CIMB is the leading ASEAN Bank
Bangkok Bank company cover
Bangkok Bank
Bangkok Bank is one of Southeast Asia's largest regional banks, a market leader in business banking
MuvMi (Urban Mobility Tech Co.,Ltd.) company cover
MuvMi (Urban Mobility Tech Co.,Ltd.)
Shape the future of urban mobility towards affordable, clean, and safe solutions
T.N. Digital Solution Co., Ltd. company cover
T.N. Digital Solution Co., Ltd.
TNDS has been involving in every first move of banking’s major digital transformation.
KBTG - KASIKORN Business-Technology Group company cover
KBTG - KASIKORN Business-Technology Group
KBTG - "The Technology Company for Digital Business Innovation"
Siam Commercial Bank Public Company Limited company cover
Siam Commercial Bank Public Company Limited
"Let's start a brighter career future together"
Icon Framework co.,Ltd. company cover
Icon Framework co.,Ltd.
Global Standard Platform for Real Estate แพลตฟอร์มสำหรับธุรกิจอสังหาริมทรัพย์ครบวงจร มาตรฐานระดับโลก
REFINITIV company cover
REFINITIV
The Financial and Risk business of Thomson Reuters is now Refinitiv
H LAB company cover
H LAB
Re-engineering healthcare systems through intelligent platforms and system design.
The Gang Technology Co., Ltd. company cover
The Gang Technology Co., Ltd.
We're a Digital Agency that helps our customers transform their business into digital with ease.
LTMH company cover
LTMH
LTMH มุ่งเน้นการพัฒนาผลิตภัณฑ์ที่สามารถช่วยพันธมิตรของเราให้บรรลุเป้าหมาย
Seven Peaks company cover
Seven Peaks
We Drive Digital Transformation
Wisesight (Thailand) Co., Ltd. company cover
Wisesight (Thailand) Co., Ltd.
The Best Choice For Handling Social Media · High Expertise in Social Data · Most Advanced and Secure
MOLOG Tech company cover
MOLOG Tech
We are Modern Logistic Platform, Specialize in WMS, OMS and TMS.
Data Wow Co.,Ltd company cover
Data Wow Co.,Ltd
We enable our clients to realize increased productivity by solving their most complex issues by Data
LINE Company Thailand company cover
LINE Company Thailand
LINE, the world's hottest mobile messaging platform, offers free text and voice messaging + Call
LINE MAN Wongnai company cover
LINE MAN Wongnai
Join our journey to becoming No.1 food platform in Thailand

McKay Mon, 26/08/2024 - 00:38

Merkel Tree -> Merkle Tree ครับ

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

ขอบคุณครับ

โดยหลักการแล้ว เราสามารถเก็บข้อมูลโดยยืนยันว่าฐานข้อมูลรวมทุกขุดข้อมูลเข้าไว้แล้วได้ไม่ยากนัก

ทุกขุด -> ทุกชุด

ขอบคุณสำหรับบทความดีๆครับ ผมยังจำความรู้สึกตอนเรียนเรื่อง public key/private key ได้เลย คือตอนนั้นตัวเองยังอ่อนด๋อยมาก เรียนก็ไม่ค่อยเข้าใจหรอก แต่ก็อดทึ่งไม่ได้ว่า มันมีวิธีการที่ทำแบบนี้ได้ด้วยเหรอเนี่ย

อ้อ แล้วก็

ในกรใช้งานจริง -> ในการใช้งานจริง

lhpleo Mon, 26/08/2024 - 11:48

This is why the Bitcoin public blockchain never undergoes a hard fork, unlike Ethereum, which claims to also be a public blockchain but has confiscated its own data repeatedly. Additionally, blockchain is just a slow database; its essence doesn’t come from merely having immutable data. If the block creation process is controlled centrally, the true essence lies in decentralized block creation, where anyone can participate—not just 3-4 nodes.