Security in actions
😒 ก็รู้นะว่าสำคัญ แต่เขียนโค้ดเรื่องนี้ไม่เป็น
Last updated
Was this helpful?
😒 ก็รู้นะว่าสำคัญ แต่เขียนโค้ดเรื่องนี้ไม่เป็น
Last updated
Was this helpful?
ในบทความนี้เราจะมาดูการเขียนโค้ดด้าน Security ขั้นพื้นฐานกัน ว่ามีอะไรบ้างที่เราควรจะต้องรู้จัก และ จะเรียกใช้งานมันให้ถูกหลักได้ยังไงกันบ้าง ซึ่งบนความก่อนหน้า ดช.แมวน้ำ ได้สอนแนวคิดเรื่อง ในแง่ทฤษฎีไปละ รอบนี้เราจะมาดูกันว่าแล้วเราจะเขียนโค้ดออกมาจริงๆยังไงนั่นเอง
ได้มีการทำสถิติของข้อมูลที่รั่วไหลตั้งแต่ปี 2013 ไว้แล้วพบว่า ข้อมูลที่รั่วออกไปมีแค่ 4% เท่านั้นที่ถูกทำเรื่อง security ไว้ นั่นหมายความว่าซอฟต์แวร์โปรเจคต่างๆไม่ค่อยได้ทำเรื่อง security นั่นเอง ซึ่งทำให้ ข้อมูลส่วนตัว
รหัสบัตรเครดิต
รหัสประชาชน
เบอร์โทร
ของหลายๆคนหลุดเข้าไปในตลาดมืดแล้วนั่นเองครัช
จากข้อมูลด้านบนจริงๆก็จะเหมารวมว่าเขาไม่ได้ทำเรื่อง Security ทั้งหมดก็ไม่ได้ แต่อาจเกิดจาก ทำไม่ถูกวิธี ก็เป็นได้ เช่น ถ้าเราไปหาเซิร์จตาม google เราก็จะพบคำแนะนำให้เราใช้ MD5 อยู่เต็มไปหมด (MD5 ปัจจุบันเราถือว่ามันไม่ปลอดภัยแล้ว) ดังนั้นเรามาลองดูกันว่าถ้าเราจะเขียนโค้ดในด้าน Security เขาเขียนยังไงกันบ้างกัลลล์
ซึ่งแค่สุ่มเลข 15 หลักก็ไม่คณามันสมองของเหล่าโปรแกรมเมอร์หรอก เขียนโค้ดแพร๊บ แกร๊กๆๆ
ยินดีด้วยคุณสอบ Security ตกเรียบร้อยแล้ว 🤣 ... ไม่ได้ล้อเล่นนะ โค้ดด้านบนไม่ได้มีอะไรผิดเบย แต่สิ่งที่ผิดคือ การเลือกใช้ Random ผิด เพราะการสุ่มในโลกของคอมพิวเตอร์นั้นสามารถคำนวณได้นั่นเอง ซึ่งมันหมายความว่าถ้ามีคนหลอกวิธีการคำนวณได้ การสุ่มก็จะไม่ใช่การสุ่มอีกต่อไปเพราะเขาสามารถเลือกได้ว่าอยากให้มันสุ่มออกมาเป็นเลขอะไรนั่นเอง
การสุ่มของคอมพิวเตอร์นั้นไม่มีอยู่จริง เพราะคอมมันคิดเองไม่ได้ มันเลยต้องไปอ่านค่าอะไรมาซักอย่าง เช่น ข้อมูลใน Memory, CPU, Network บลาๆ แล้วเอาของพวกนั้นมาประกอบกันเป็นเลขสุ่มให้เรานั่นเอง นั่นหมายความว่า ถ้าเรารู้ วิธีการสร้างเลข random เราก็สามารถกำหนดผลลัพท์ของมันได้นั่นเอง
ข้อเสียของการ Random ที่สามารถคำนวณได้คือ มันไม่ปลอดภัย เพราะว่าถ้าเกิดเครื่องเรามีไวรัสฝังอยู่แล้วตอนที่เราไปสร้างกุญแจลับปุ๊ป พวกไวรัสก็เพียงแค่ไปกำหนดค่าตามวิธีการคำนวณของการ random ก็เป็นอันจบเลย เพราะคนร้ายสามารถเลือกได้ว่าจะสร้างกุญแจอะไรให้เรา
เนื่องจากช่วงนี้ ดช.แมวน้ำ ติดภาระกิจจนเกือบไม่มีเวลานอนมาตั้งแต่ต้นปี 2021 ละ แต่ด้วยหลายๆอย่างเลยอยากแชร์ความรู้ให้เพื่อนๆ ดังนั้นกระป๋มจะขอซอยเป็นบทย่อยๆเอาละกันนะกั๊ฟ
HMAC Functions
Salt & Pepper
Key Derivation
Symmetric Encryption
Asymmetric Encryption
Digital Signature
Security in Practice
พื้นฐานของการทำเรื่อง Security คือการ สร้างความลับที่มีแต่เราเท่านั้นที่รู้ขึ้นมา ซึ่งโดยปรกติเราก็จะทำการเขียนโค้ดสุ่มเลขมั่วๆขึ้นมาซักอย่างเพื่อใช้มันเป็น นั่นเอง
เนื่องจากการสุ่มโดยทั่วไปที่เราใช้เขียนโค้ดนั้นถูกคำนวณได้ ดังนั้นก็มีคนคิดวิธีทำให้มันสุ่มในสุ่มซ้อนกันไปทำให้เกิดการคาดเดาไม่ได้ว่าจริงๆแล้วการสุ่มรอบนี้จะไปอ่านค่าอะไร ตำแหน่งไหน สูตรในรอบนี้จะใช้อะไร บลาๆ ซึ่งข้อดีคือมันสามารถป้องกันการถูกกำหนดผลลัพท์ได้ แต่ก็ต้องแลกมากับความช้าในการสร้างนั่นเอง ซึ่งการสุ่มแบบนี้ในแต่ละภาษาจะมี library เฉพาะทางของมันเอง เช่นใน .NET ก็จะเป็น นั่นเอง ดังนั้นการสุ่มที่ปลอดภัยในสาย .NET นั้นต้องใช้คลาส เข้ามาช่วย ซึ่งก็จะได้ผลลัพท์ออกมาเช่นนี้ครัช
คอร์สนี้กำลังค่อยๆเขียนอยู่ ใครที่ไม่อยากพลาดอัพเดทก็เข้าไปกดติดตามที่ลิงค์นี้ ได้เลย
เกลียด ชอบ ถูกใจ อยากติดตาม อยากติชมแนะนำด่าทอ หรืออะไรก็แล้วแต่ (ห้ามมายืมเงิน) จิ้มลงมาที่เพจนี้ได้เลย และจะเป็นประคุณอันล้นพ้นถ้ากด Like + Follow + Share ให้ด้วยขอรับ น้ำตาจิไหล 🥺