วันนี้เราอยู่บน Product Hunt! แสดงความคิดเห็น

Authenticator 1.16.0 มาแล้ว ดูสิ่งที่เปลี่ยนแปลง

หลักการทำงาน

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

สถาปัตยกรรม

ส่วนขยายนี้เป็นส่วนขยาย Chrome แบบ Manifest V3 ที่สร้างรหัส TOTP ในเครื่องด้วย OTPAuth การสร้างรหัส การจัดเก็บบัญชี และการเข้ารหัสบัญชีไม่ต้องพึ่งแบ็กเอนด์ใด ๆ และไม่มีบัญชีผู้ใช้ เรามีเซิร์ฟเวอร์เพียงตัวเดียวคือ api.authenticator.sh สำหรับแพ็กเกจฟรีและ Pro (อธิบายไว้ด้านล่าง) และเซิร์ฟเวอร์นี้ไม่เคยได้รับกุญแจลับ ชื่อบัญชี ชื่อบริการ หรือรหัสใด ๆ

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

การเข้ารหัส

การป้องกันด้วยรหัสผ่านเป็นตัวเลือกเสริมและปิดไว้ตั้งแต่ต้น เมื่อเปิดใช้งาน:

อัลกอริทึม
AES-256-GCM พร้อม IV สุ่มขนาด 96 บิตสำหรับทุกระเบียนและทุกครั้งที่เขียนทับ
การสร้างกุญแจ
PBKDF2-HMAC-SHA256 จำนวน 600,000 รอบ พร้อมซอลต์สุ่มขนาด 128 บิต (ตามคำแนะนำของ OWASP)
กุญแจหลัก
ขนาด 256 บิต จาก crypto.getRandomValues สร้างเพียงครั้งเดียว รหัสผ่านทำหน้าที่แค่ห่อหุ้มมันไว้
ลายนิ้วมือข้อมูล
HMAC-SHA256 ภายใต้กุญแจย่อยที่สร้างด้วย HKDF ใช้สำหรับรวมระเบียนข้ามอุปกรณ์
ที่เก็บกุญแจที่ปลดล็อกแล้ว
chrome.storage.session — อยู่ในหน่วยความจำเท่านั้น ไม่เคยเขียนลงดิสก์ ถูกล้างเมื่อปิดเบราว์เซอร์ และ content script เข้าถึงไม่ได้
ล็อกอัตโนมัติ
ทุกครั้งที่เปิด / หลังไม่ใช้งาน 5, 15 หรือ 60 นาที / จนกว่าจะปิดเบราว์เซอร์
การนำไปใช้
ใช้ WebCrypto เท่านั้น ไม่มีการเขียนพรีมิทิฟเข้ารหัสเองและไม่มีการรวมไลบรารีเข้ารหัสใด ๆ ไว้ในแพ็กเกจ

ทำไมต้องมีกุญแจสองชั้น

ข้อมูลไม่เคยถูกเข้ารหัสด้วยกุญแจที่ได้จากรหัสผ่านโดยตรง ระเบียนต่าง ๆ ถูกเข้ารหัสด้วยกุญแจหลักแบบสุ่ม ส่วนผลลัพธ์จาก PBKDF2 ทำหน้าที่ห่อหุ้มกุญแจหลักนั้นเท่านั้น ผลที่ตามมามีสองข้อ และสำคัญทั้งคู่:

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

อะไรถูกเข้ารหัส และอะไรไม่ถูกเข้ารหัส

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

ขอพูดตรง ๆ เพราะมีผลต่อการประเมินของคุณ:

  • เมื่อปิดการป้องกันด้วยรหัสผ่าน บัญชีจะถูกจัดเก็บโดยไม่เข้ารหัส และหากเปิด Chrome Sync ไว้ ข้อมูลจะถูกทำซ้ำผ่านบัญชี Google ของผู้ใช้เอง ข้อมูลเหล่านั้นไม่เคยมาถึงเรา แต่ Google เป็นผู้เก็บไว้ การซิงค์สามารถปิดได้ และการปิดจะลบสิ่งที่อยู่บนนั้นแล้วออกไปด้วย
  • ประวัติการใช้งานรายเว็บไซต์ — ว่าบัญชีไหนถูกใช้กับโดเมนใด — ถูกเก็บไว้ในเครื่องและไม่อยู่ในความคุ้มครองของตู้นิรภัยระหว่างที่กำลังเก็บรวบรวม การเปิดการป้องกันด้วยรหัสผ่านจะลบประวัตินี้ทิ้ง และยังปิดแยกต่างหากได้ด้วย

แบบจำลองภัยคุกคาม

ป้องกันได้

  • ไดเรกทอรีโปรไฟล์ของเบราว์เซอร์ถูกขโมยหรือถูกคัดลอก
  • มัลแวร์ประเภท infostealer ที่ดูดข้อมูลเบราว์เซอร์ออกไปทั้งก้อน
  • ผู้ที่เข้าถึงเครื่องที่ถูกทิ้งไว้โดยไม่มีคนดูแลได้โดยตรง
  • ระเบียนบัญชีเดินทางไปถึง Google ผ่าน Chrome Sync
  • ไฟล์สำรองข้อมูลสูญหายหรือถูกขโมย (ไฟล์ส่งออกที่ป้องกันด้วยรหัสผ่าน)

ป้องกันไม่ได้

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

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

สิทธิ์

ไฟล์ manifest ประกาศสิทธิ์ห้ารายการ และไม่มีสิทธิ์เข้าถึงโฮสต์ใดเลย:

storage
บัญชีและการตั้งค่าอยู่ในที่เก็บในเครื่อง กุญแจที่ปลดล็อกแล้วอยู่ในที่เก็บระดับเซสชัน และสำเนาสำหรับซิงค์ซึ่งเป็นตัวเลือกเสริม
activeTab
อ่านชื่อโฮสต์ของแท็บที่เปิดอยู่เพื่อไฮไลต์บัญชีที่ตรงกัน และจับภาพแท็บเมื่อผู้ใช้สแกนคิวอาร์โค้ดจากหน้าจอ
contextMenus
เพิ่มรายการ “ใส่รหัส 2FA” ในเมนูคลิกขวา และเฉพาะบนช่องที่แก้ไขได้ของหน้า http(s) เท่านั้น
scripting
แทรกฟังก์ชันเดียวที่ใส่รหัสลงในช่อง — สำหรับแท็บเดียวและการเรียกครั้งเดียว และต่อเมื่อเลือกรายการเมนูนั้นแล้วเท่านั้น
sidePanel
เปิดแอปในแผงด้านข้างของ Chrome เมื่อเลือกโหมดนั้น และไม่ให้สิทธิ์เข้าถึงหน้าเว็บใด ๆ

ไม่มี ไม่มี content script ใด ๆ ไม่มีสิทธิ์ tabs cookies หรือ webRequest และไม่มี web-accessible resources ไม่มีอะไรของเราอยู่ในหน้าเว็บจนกว่าคุณจะขอรหัสที่นั่น สิ่งที่ทำงานตอนนั้นถูกแทรกเข้าไปเพื่อแท็บนั้นและการเรียกครั้งนั้นเท่านั้น ภายใต้สิทธิ์ที่คลิกของคุณเองมอบให้ และไม่ทิ้งอะไรไว้เลย

กล้อง

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

แพ็กเกจฟรี, Pro และการติดต่อเซิร์ฟเวอร์รายวัน

ตั้งแต่เวอร์ชัน 1.14.0 ส่วนขยายจะติดต่อ api.authenticator.sh วันละครั้ง — ตอนเบราว์เซอร์เริ่มทำงาน หรือหลังจากป็อปอัปแสดงผลเสร็จแล้ว และไม่เคยเป็นขั้นตอนที่ต้องผ่านก่อนรหัสจะแสดง คำขอประกอบด้วยชุดฟิลด์ที่กำหนดไว้ตายตัว สร้างขึ้นในฟังก์ชันเดียวใน src/billing/sync.ts และมีการทดสอบคอยยึดไว้ให้ตรงกับรายการนั้น:

iid
ID แบบสุ่มที่การติดตั้งนี้สร้างขึ้น ไม่ผูกกับบัญชี Google ที่อยู่อีเมล หรือเบราว์เซอร์ เว้นแต่ผู้ใช้จะซื้อ Pro: บันทึกการซื้อจะผูกการติดตั้งที่ใช้ซื้อ และทุกการติดตั้งที่คีย์ใบอนุญาตเปิดใช้งานอยู่ เข้ากับอีเมลที่ใช้ชำระเงิน
ver, ui_lang, browser_lang
เวอร์ชันของส่วนขยาย ภาษาของอินเทอร์เฟซ ภาษาของเบราว์เซอร์
installed_at, legacy, legacy_src
การติดตั้งเกิดขึ้นเมื่อใด และมีมาก่อนระบบเรียกเก็บเงินหรือไม่
accounts, groups
จำนวนบัญชีที่มีอยู่และจำนวนกลุ่มที่บัญชีเหล่านั้นอยู่ — เป็นตัวเลขเท่านั้น ไม่เคยระบุว่าเป็นบัญชีใดหรือชื่อกลุ่ม
vault, sync, open_mode, view_mode, style, dark, os
เปิดการป้องกันด้วยรหัสผ่านและการซิงค์ไว้หรือไม่ และส่วนขยายเปิดในรูปแบบใด และแสดงรายการบัญชีแบบใด (ปกติ แบบกะทัดรัด หรือซ่อนรหัส) และใช้สไตล์ใด แบบสว่างหรือมืด และระบบปฏิบัติการ (Windows, macOS, Linux, ChromeOS)
pid, lid, has_key, key_hint
นโยบายและใบอนุญาตที่ลงลายเซ็นแล้วซึ่งการติดตั้งนี้ใช้อยู่ในขณะนี้ มีคีย์ใบอนุญาตแล้วหรือไม่ และอักขระสี่ตัวสุดท้ายของคีย์นั้น
opens
จำนวนครั้งที่เปิดส่วนขยายในแต่ละวันนับจากการติดต่อครั้งก่อน (ย้อนหลังไม่เกิน 14 วัน) — เป็นเพียงตัวเลขรายวัน ไม่มีข้อมูลว่าดูอะไรไปบ้าง
events
เหตุการณ์ด้านการเรียกเก็บเงินที่รอส่ง จากรายการที่กำหนดไว้ตายตัว ได้แก่ ถึงขีดจำกัดแล้ว หน้าจอ Pro (paywall) ถูกแสดงหรือถูกปิด มีการเลือกแพ็กเกจ มีการลองชำระเงินหรือลองใส่คีย์

สิ่งที่ไม่เคยถูกส่ง: กุญแจลับ ชื่อบัญชี ชื่อบริการ รหัส หรือเว็บไซต์ที่ใช้รหัสเหล่านั้น เซิร์ฟเวอร์อ่านประเทศจากคำขอที่ขอบเครือข่าย (edge) และไม่เก็บที่อยู่ IP หน้าถอนการติดตั้งได้รับ ID การติดตั้งเดียวกันนี้ผ่าน ?i= หน้านี้แจ้งเซิร์ฟเวอร์ว่าการติดตั้งนั้นถูกถอนออกแล้ว และเชื่อมโยงคำตอบแบบสำรวจซึ่งจะตอบหรือไม่ก็ได้เข้ากับการติดตั้งนั้น

สิ่งที่เก็บไว้ใน chrome.storage.local เพื่อการนี้ ได้แก่ ID การติดตั้ง นโยบายและใบอนุญาตที่ลงลายเซ็นชุดล่าสุด คีย์ใบอนุญาตที่การติดตั้งนี้มีอยู่ (ที่พิมพ์ใส่เอง หรือได้รับหลังซื้อจากการติดตั้งนี้) จำนวนครั้งที่เปิดในแต่ละวันจนกว่าเซิร์ฟเวอร์จะได้รับ และเหตุการณ์ที่รอส่ง — ไม่มีข้อมูลบัญชี ขณะที่เปิดการซิงค์ สถานะว่าการติดตั้งมีมาก่อนระบบเรียกเก็บเงินหรือไม่ และคีย์ใบอนุญาตนั้น จะถูกเก็บใน Chrome Sync ด้วย เพื่อให้โปรไฟล์ Chrome อื่น ๆ ของผู้ใช้ได้รับไปและเปิด Pro ได้เอง การปิดการซิงค์จะลบทั้งสองอย่างออกจาก Chrome Sync และเมื่อเปิดอีกครั้งก็จะใส่กลับเข้าไป

สิ่งที่ส่งกลับมา และส่วนขยายจัดการกับสิ่งนั้นอย่างไร:

โทเค็น
นโยบาย (ขีดจำกัดจำนวนบัญชีของแพ็กเกจฟรี) และใบอนุญาต (Pro) เป็น JWS ที่ลงลายเซ็นด้วย ES256 (ECDSA P-256)
การตรวจสอบ
ใช้ WebCrypto ตรวจกับกุญแจสาธารณะที่คอมไพล์รวมไว้ในบิลด์ (src/billing/keys.ts) บิลด์สำหรับ Chrome Web Store เชื่อถือเฉพาะกุญแจของระบบจริง (production) เท่านั้น และขั้นตอนตรวจสอบบิลด์จะปฏิเสธบิลด์ที่มีกุญแจอื่นติดมาด้วย
ออฟไลน์
ขีดจำกัดและใบอนุญาตถูกตรวจในเครื่อง จากโทเค็นที่ลงลายเซ็นชุดล่าสุด ตราบใดที่ยังไม่ได้รับนโยบายที่ลงลายเซ็นแล้ว จะไม่มีการจำกัดใด ๆ — เซิร์ฟเวอร์ที่ติดต่อไม่ได้จึงไม่มีทางล็อกใครออกได้
ขีดจำกัดทำอะไรได้
หยุดไม่ให้เพิ่มบัญชี และไม่มีอะไรอื่นอีก ขีดจำกัดซ่อน ล็อก ลบ หรือแก้ไขบัญชีไม่ได้ และบล็อกรหัส การส่งออก การสำรองข้อมูล การกู้คืน หรือการซิงค์ไม่ได้
การซื้อ
Stripe Checkout ในแท็บใหม่ โดยมี Link เป็นผู้ขาย (merchant of record) อีเมลของผู้ซื้อมาถึงเราจาก Stripe เพื่อใช้ออกและกู้คืนคีย์ใบอนุญาต คีย์ถูกเก็บเป็นค่าแฮช พร้อมสำเนาที่เข้ารหัสไว้ เพื่อให้ส่งคีย์ที่หายไปให้อีกครั้งได้
คีย์ใบอนุญาต
คำตอบของการติดต่อรายวันจะมีตัวคีย์เฉพาะสำหรับการติดตั้งที่ใช้ซื้อ Pro และเฉพาะจนกว่าอักขระสี่ตัวที่การติดตั้งนั้นแจ้งใน key_hint จะตรงกับคีย์นั้น คีย์ที่ซื้อทีหลังจึงมาแทนคีย์เก่าได้ การติดตั้งที่พิมพ์คีย์ใส่เองจะไม่ได้รับคีย์เลย

ขีดจำกัดนี้ไม่ใช่ DRM: โค้ดเป็นโอเพนซอร์ส และ fork ใดก็เอาขีดจำกัดออกได้ สิ่งที่ต้องเป็นไปไม่ได้เด็ดขาดคือการที่ใครคนหนึ่งได้มาหรือใช้ใบอนุญาตของคนอื่น หรือทำให้การติดตั้งของคนอื่นถูกจำกัด — นั่นคือช่องโหว่ และอยู่ในขอบเขตของนโยบายความปลอดภัยของเรา

การเชื่อมต่อออกภายนอก

คำขอที่ส่วนขยายส่งเองโดยลำพังมีสองอย่าง คือการตรวจนาฬิกา และการติดต่อเซิร์ฟเวอร์รายวันของระบบชำระเงิน ส่วนที่เหลือด้านล่างเกิดขึ้นเพราะผู้ใช้กดเองทั้งสิ้น Manifest V3 ห้ามโค้ดจากระยะไกล และไม่มีรายการใดที่นี่พาบัญชี กุญแจลับ หรือรหัสที่สร้างขึ้นออกไปด้วย รายการทั้งหมดมีดังนี้:

โฮสต์เมื่อใดมีข้อมูลผู้ใช้ไปด้วยหรือไม่
time.akamai.com
timeapi.io
cloudflare.com
ตรวจความคลาดเคลื่อนของนาฬิกา มีแคช และหากติดต่อแหล่งใดไม่ได้เลย การตั้งค่าจะแจ้งไว้ นาฬิกาที่เพี้ยนทำให้ TOTP ใช้ไม่ได้ไม่มี
authenticator.shหน้าต้อนรับตอนติดตั้ง หน้าให้ความเห็นตอนถอนการติดตั้ง (โดยมี ID การติดตั้งอยู่ในที่อยู่ของหน้า) และหน้าช่วยเหลือกับหน้าสนับสนุนเมื่อเปิดจากหน้าต่างส่วนขยายID การติดตั้ง เฉพาะในหน้าถอนการติดตั้งเท่านั้น นอกนั้นไม่มี (มีเพียงบันทึกเว็บเซิร์ฟเวอร์ตามปกติ)
api.authenticator.shติดต่อเซิร์ฟเวอร์ของระบบชำระเงินวันละครั้ง และเรียกใช้บริการชำระเงิน ใบอนุญาต และพอร์ทัล เมื่อผู้ใช้ซื้อ Pro ใส่คีย์ กู้คืนการซื้อ หรือจัดการการสมัครสมาชิกฟิลด์ที่ระบุไว้ข้างต้น — ไม่มีข้อมูลบัญชีเลย คีย์ใบอนุญาตหรือที่อยู่อีเมลจะส่งไปก็ต่อเมื่อผู้ใช้พิมพ์ใส่เองเท่านั้น
checkout.stripe.com
billing.stripe.com
Stripe Checkout และพอร์ทัลลูกค้า เปิดในแท็บเมื่อผู้ใช้ซื้อ Pro หรือจัดการการสมัครสมาชิกสิ่งที่ผู้ซื้อกรอกที่นั่น ภายใต้เงื่อนไขของ Stripe และ Link เอง
chromewebstore.google.comหน้าร้านค้า เปิดในแท็บใหม่เมื่อกดเท่านั้น จากคำชวนให้คะแนนจะไปที่ช่องรีวิวไม่มี (Google เห็นเป็นการเข้าชมหน้าร้านค้าเหมือนครั้งอื่น ๆ)

ไม่มีฟอนต์ สคริปต์ สไตล์ หรือรูปภาพใดถูกโหลดจากโฮสต์ภายนอก ทุกอย่างที่ใช้แสดงผลอินเทอร์เฟซมาพร้อมในแพ็กเกจแล้ว

การตรวจสอบสิ่งที่เราเผยแพร่

คุณไม่จำเป็นต้องเชื่อสิ่งที่กล่าวมาข้างต้นเลยสักข้อ ส่วนขยายนี้เป็นโอเพนซอร์ส และทุกรุ่นสร้างซ้ำได้:

  1. ดาวน์โหลดไฟล์ .crx ที่เผยแพร่จาก Chrome Web Store แล้วแตกไฟล์
  2. เช็กเอาต์ไปยังแท็ก git ที่ตรงกัน
  3. รัน npm ci && npm run build บน Node 20 LTS
  4. เทียบโฟลเดอร์ dist/ ที่ได้กับแพ็กเกจที่แตกไฟล์ไว้

ทุกรุ่นที่ปล่อยบน GitHub จะมาพร้อมค่า SHA-256 ของทุกไฟล์ใน dist/ ที่บิลด์ได้ ในชื่อ SHA256SUMS-v<version>.txt และอยู่ในรูปแบบ sha256sum ขั้นตอนที่ 4 จึงเหลือเพียงการรัน sha256sum -c ครั้งเดียว ความแตกต่างควรจำกัดอยู่ที่ลำดับไฟล์ภายในไฟล์บีบอัด และช่องว่างในผลลัพธ์ที่ถูกย่อขนาดระหว่าง Node คนละรุ่นย่อย

แพ็กเกจที่ต้องใช้ตอนรันมีน้อยโดยตั้งใจ ได้แก่ OTPAuth, React, jsQR, Zustand, Framer Motion และ Lucide ทั้งหมดถูกตรึงเวอร์ชันด้วย lockfile ที่คอมมิตไว้ในรีโป และเรามี SBOM รูปแบบ CycloneDX ให้เมื่อร้องขอ

ดูซอร์สโค้ด

สิ่งที่เราไม่มี

เราเป็นผู้พัฒนารายเล็กและเป็นอิสระ หากข้อใดข้อหนึ่งต่อไปนี้เป็นข้อกำหนดที่ยืดหยุ่นไม่ได้ในกระบวนการของคุณ รู้ตอนนี้ย่อมดีกว่ารู้ตอนที่ประเมินไปแล้วสามสัปดาห์:

  • ไม่มีใบรับรอง SOC 2, ISO 27001 หรือเทียบเท่า
  • จนถึงวันนี้ยังไม่เคยว่าจ้างให้ทำ penetration test จากภายนอก
  • ไม่มีโครงการ bug bounty แบบมีเงินรางวัล

สิ่งที่เรามีให้แทนคือความโปร่งใสของซอร์สโค้ดทั้งหมด บิลด์ที่ตรวจสอบได้ สิทธิ์ที่ขอน้อยที่สุด และเซิร์ฟเวอร์ที่ไม่เคยได้รับกุญแจลับ ชื่อบัญชี หรือรหัสของคุณตั้งแต่แรก

ติดต่อเรา

รายงานช่องโหว่และคำถามด้านความปลอดภัย: security@authenticator.sh นโยบายการเปิดเผย ขอบเขต เวลาตอบกลับ และเงื่อนไข safe harbour อยู่ในหน้านโยบายความปลอดภัย ส่วนข้อมูลใดถูกเก็บและข้อมูลใดออกจากเครื่องนั้นระบุไว้ในนโยบายความเป็นส่วนตัว

เรายินดีตอบแบบสอบถามประเมินผู้ให้บริการเป็นลายลักษณ์อักษร หรือพาทีมความปลอดภัยไล่อ่านโค้ดไปด้วยกัน

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