การใช้ 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

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

Source: https://dev.to/faizahmedfarooqui/using-ai-without-leaking-your-secrets-a-threat-model-for-ai-assisted-development-2l57

Optional learning community: https://t.me/GyaanSetuAi