การใช้ AI โดยไม่ทำความลับรั่วไหล
คุณเจอข้อผิดพลาด คุณคัดลอก stack trace แล้วขอให้ AI ช่วยแก้ไข แต่คุณลืมไปว่าในข้อความนั้นมี DATABASE_URL และรหัสผ่านของคุณอยู่ AI ตอบกลับมาภายในสี่วินาที และตอนนี้ความลับของคุณได้ไปอยู่ในบันทึกคำขอ (request log) หรือชุดข้อมูลสำหรับฝึกฝน (training set) เรียบร้อยแล้ว และคุณไม่สามารถลบมันออกได้
การวางความลับลงใน AI ก็เหมือนกับการวางลงในเว็บไซต์สาธารณะ คุณไม่สามารถเรียกคืนมันกลับมาได้
ผมใช้ AI ทุกวันในการส่งมอบโค้ด ผมไม่ได้หลีกเลี่ยงมัน แต่ผมใช้มันโดยคำนึงถึงโมเดลภัยคุกคาม (threat model)
คนส่วนใหญ่คิดว่าการเขียน prompt คือการแชทส่วนตัว แต่มันไม่ใช่ มันคือการส่งคำขอออกไปภายนอก (outbound request)
- เวอร์ชันฟรีมักจะใช้ข้อมูลของคุณเพื่อฝึกฝนโมเดล
- เวอร์ชันเสียเงินมักจะสัญญาว่าจะไม่นำข้อมูลของคุณไปฝึกฝน
- แม้แต่เวอร์ชันเสียเงินก็ยังมีการเก็บ log เพื่อตรวจจับการใช้งานในทางที่ผิดและการตรวจสอบโดยมนุษย์
ข้อมูลรั่วไหลได้ใน 3 รูปแบบ:
- สิ่งที่คุณวาง: ชิ้นส่วนโค้ด (code snippets), การตั้งค่า (configs) หรือ traces
- สิ่งที่เครื่องมือแนบมาให้โดยอัตโนมัติ: ไฟล์ที่เปิดอยู่, บริบทของ repository หรือผลลัพธ์จาก terminal
- สิ่งที่โมเดลตอบกลับมา: ความลับที่ถูกสะท้อนกลับมาในคำอธิบาย PR หรือใน log
ผู้ให้บริการ AI คือบุคคลที่สามที่คุณต้องไว้วางใจ คุณไม่สามารถตรวจสอบกระบวนการภายใน (internal pipelines) ของพวกเขาได้ ดังนั้นจงปฏิบัติกับช่องใส่ prompt เหมือนกับการเรียกใช้งานเครือข่ายที่ไม่น่าเชื่อถือ (untrusted network call)
หยุดส่งสิ่งเหล่านี้:
- API keys หรือ tokens ที่ใช้งานจริง
- เนื้อหาในไฟล์ .env
- Private keys หรือใบรับรอง (certificates)
- ชื่อลูกค้า, อีเมล หรือข้อมูลการชำระเงินจริง
- ตรรกะที่เป็นกรรมสิทธิ์ (proprietary logic) ซึ่งคุณจะไม่เปิดเผยเป็น open-source
ให้ใช้ตัวแทน (placeholders) แทน เช่น ใช้ [API_KEY] หรือ [DB_PASSWORD] AI ยังคงทำงานได้ดีเหมือนเดิมแม้จะมีการปกปิดข้อมูลไว้
สร้างนิสัย 3 อย่างนี้:
- ใช้ไฟล์ ignore สำหรับ AI เพื่อกันไฟล์ .env และโฟลเดอร์ความลับไม่ให้เข้าไปอยู่ในบริบทของเครื่องมือ
- สแกนก่อนส่ง รันเครื่องมือตรวจจับความลับ (secret detector) กับข้อความของคุณก่อนที่จะวาง
- เก็บความลับในรูปแบบที่เข้ารหัสไว้ หากความลับมีอยู่แค่ในหน่วยความจำ (memory) ขณะรันโปรแกรม คุณก็จะไม่สามารถคัดลอกมันมาวางได้
สรุปทางเลือกของคุณ:
- แบบฟรี/ผู้บริโภคทั่วไป: ใช้สำหรับเอกสารสาธารณะหรือชิ้นส่วนโค้ดที่ใช้แล้วทิ้ง
- แบบเสียเงิน Pro/Team: ใช้สำหรับงานวิศวกรรมส่วนใหญ่ เนื่องจากมีการคุ้มครองตามสัญญา
- แบบ Local/Self-hosted: ใช้สำหรับข้อมูลที่มีกฎระเบียบควบคุมซึ่งต้องเก็บไว้ในเครื่องของคุณเท่านั้น
การรับประกันว่าจะไม่นำข้อมูลไปฝึกฝนคือ "สัญญา" ไม่ใช่ "เกราะป้องกันทางเทคนิค" มันช่วยลดความเสี่ยงแต่ไม่ได้ทำให้ความเสี่ยงหมดไป
ทำตามขั้นตอนเหล่านี้ก่อนที่ AI จะเข้าถึงโค้ดของคุณ:
- เพิ่มไฟล์ ignore สำหรับเครื่องมือ AI ของคุณ
- สแกนทุกอย่างที่คุณวาง
- ปกปิดข้อมูลประจำตัวทั้งหมดด้วยตัวแทน (placeholders)
- ใช้เวอร์ชันเสียเงินสำหรับงานที่เป็นความลับขององค์กร
- ใช้ KMS เพื่อไม่ให้ความลับอยู่ในรูปแบบข้อความธรรมดา (plaintext)
- ตรวจสอบผลลัพธ์จาก AI ก่อนที่จะถูกบันทึกลงใน log หรือทำการ commit
คำตอบภายในสี่วินาทียังคงรวดเร็วอยู่ เพียงแต่คราวนี้มันจะไม่ต้องแลกด้วยความปลอดภัยของคุณ
Optional learning community: https://t.me/GyaanSetuAi
