108
หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก การขโมยข้อมูลรหัสผ่านและนำรหัสผ่านมาเข้าสู่ระบบ ชื่อนักศึกษา สันติ เลิศสำราญ รหัสนักศึกษา 5317810012 หลักสูตร วิทยาศาสตรมหาบัณฑิต สาขาความมั่นคงทางระบบสารสนเทศ ปีการศึกษา 2557 อาจารย์ที่ปรึกษา ผศ.ดร.วรพล ลีลาเกียรติสกุล บทคัดย่อ สารนิพนธ์นี้ได้นำเสนอเพื่อพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจากการขโมย ข้อมูลรหัสผ่านและนำรหัสผ่านนั้นย้อนกลับมาเข้าสู่ระบบโดยใช้ชื่อผู้ใช้งานและรหัสผ่าน ของผู้ใช้งานจริงในระบบ โดยเมื่อผู้ประสงค์ร้ายได้ข้อมูลรหัสผ่านไปไม่ว่าด้วยวิธีใด และ นำ honeywords (รหัสผ่านปลอม) เข้าสู่ระบบ ระบบจะแจ้งเตือนให้ผู้ดูแลระบบให้รู้ว่า รหัสผ่านได้ถูกขโมยออกไปจากระบบแล้ว ผลการดำเนินงานในครั้งนี้ส่งผลให้ลดความเสี่ยงของการถูกขโมยข้อมูลรหัส ผ่านเพื่อนำรหัสผ่านมาเข้าสู่ระบบ และแจ้งเตือนผู้ดูแลระบบให้ทำการแก้ไขได้ทันเวลา I

บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

หวขอ การศกษาและพฒนาระบบตรวจจบผประสงครายจาก การขโมยขอมลรหสผานและนำรหสผานมาเขาสระบบ ชอนกศกษา สนต เลศสำราญ รหสนกศกษา 5317810012 หลกสตร วทยาศาสตรมหาบณฑต สาขาความมนคงทางระบบสารสนเทศปการศกษา 2557 อาจารยทปรกษา ผศ.ดร.วรพล ลลาเกยรตสกล

บทคดยอ

สารนพนธนไดนำเสนอเพอพฒนาระบบตรวจจบผประสงครายจากการขโมย

ขอมลรหสผานและนำรหสผานนนยอนกลบมาเขาสระบบโดยใชชอผใชงานและรหสผาน

ของผใชงานจรงในระบบ โดยเมอผประสงครายไดขอมลรหสผานไปไมวาดวยวธใด และ

นำ honeywords (รหสผานปลอม) เขาสระบบ ระบบจะแจงเตอนใหผดแลระบบใหรวา

รหสผานไดถกขโมยออกไปจากระบบแลว

ผลการดำเนนงานในครงนสงผลใหลดความเสยงของการถกขโมยขอมลรหส

ผานเพอนำรหสผานมาเขาสระบบ และแจงเตอนผดแลระบบใหทำการแกไขไดทนเวลา

I

Page 2: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

กตตกรรมประกาศ

สารนพนธนไดพฒนาจนสำเรจดวยด เพราะความกรณา ความชวยเหลอ และกำลงใจจากหลายคน ขาพเจาขอขอบพระคณมา ณ ทน

ขอขอบพระคณ ผศ.ดร.วรพล ลลาเกยรตสกล อาจารยทปรกษาโครงงานทกรณาเสยสละเวลาใหคำแนะนำและคอยตรวจสอบโครงงานอยสมำเสมอ และยงคอยหาตวอยางทด ๆ มาใหอกมากมาย

ขอขอบพระคณอาจารยทกๆ ทานทชวยประสทธประสาทวชาแกขาพเจาตงแตขาพเจาเขามาศกษาในทแหงน ขอบคณกำลงใจจากอาจารยทกทานททำใหขาพเจาพฒนาโครงงานนใหสำเรจไปไดดวยด

ขอขอบพระคณพๆ เพอนๆ และทกคนทชวยสอนเวลาทโปรแกรมมปญหาและเปนกำลงใจในยามทเราทอ

สนต เลศสำราญ

II

Page 3: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

สารบญ

หนา

บทคดยอ…………………………………………………….............…………………...........…...I

กตตกรรมประกาศ……………....…………………........................…………………...........…..II

สารบญ……………………………………………………………………....……...........….…….III

สารบญรป………………...…………………….....……….…………………………..................V

บทท 1 บทนำ……………………………………..…………………….………..........…..….…..1

1.1 ปญหาและแรงจงใจ……………………………………….……...........………….....1

1.2 แนวทางการแกไขปญหา……………………………………………...…….............1

1.3 วตถประสงคของการศกษา……………....……….............……….……................1

1.4 ภาพรวมของระบบทจดทำ…………...…………………..…..........………….........1

1.5 ขอบเขตการศกษา…………...………………...........…..…..........…………..........2

1.6 โครงสรางของสารนพนธ…………...…………………..….............………….........2

บทท 2 พนฐานและทฤษฎทเกยวของ………………………………………..………………......4

2.1 เกรนนำ…………………………………………………………….....…..........……4

2.2 รปแบบการโจมต…………………………………………...………………….....….4

2.3 Honeychecker……………………………………………………………………….5

2.4 การทำงานของ Honeywords..............................................................................6

2.5 ขนตอนการเขาสระบบ........................................................................................8

2.6 ขนตอนการเปลยนรหสผาน...............................................................................11

2.7 นยามของความมนคงปลอดภย………………………………............……...........12

2.8 ทฤษฎความนาจะเปน……………………......……………....................…...........15

บทท 3 วธการดำเนนงาน……………………………......................................................…...16

III

Page 4: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

สารบญ (ตอ)

หนา

3.1 Honeywords Generation…………………………………………..……………..18

3.2 นโยบายการกำหนดรหสผาน………………………………….....…..…..............22

3.3 การสรางตวอยางงาน………………….....…………………………………….….23

บทท 4 ผลการดำเนนงาน…………………………………………………….......….................26

4.1 ผลการศกษาวธการดำเนนงานในสวนการสราง honeywords (Gen)……..........26

4.2 ผลการทดสอบระบบตวอยางงาน…………………………….……………….......28

4.3 ผลการทดสอบความนาจะเปนในการเดารหสผาน……….….……………….......33

บทท 5 สรปผลการดำเนนงาน……………………………………........………...........………..43

เอกสารอางอง……………………....……………………………….........................................44

ภาคผนวก ก………………………………………………………………………................….ก-1

ภาคผนวก ข………………………………………………………………………….................ข-1

ภาคผนวก ค…………………………………………....……………….………....…...............ค-1

ภาคผนวก ง…………………………………...…………………...................………..............ง-1

ภาคผนวก จ………………………………...………………………................……................จ-1

IV

Page 5: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

สารบญรป

หนา

รปท 1.1 แสดงภาพรวมของระบบทจดทำ……………………………………….........………....2

รปท 2.1 แสดงขนตอนการเขาสระบบ………………………………………….........………......9

รปท 2.2 แสดงขนตอนการเขาสระบบ (ตอ)…………………...……………….........………....10

รปท 2.3 แสดงขนตอนการเปลยนรหสผาน…………………………………….........………....11

รปท 2.4 ขนตอนการทำงานของฟงกชน Gen(k;pi)……..…………………….........………....13

รปท 2.5 ผประสงครายไดรายการของรหสผานไป………….………………….........………....14

รปท 3.1 ภาพรวมของระบบ………………….........…………………………….........………...16

รปท 3.2 ขนตอนการทำงานของฟงกชน Gen…….…………………………….........………...18

รปท 3.3 ขนตอนการทำงานของฟงกชน Gen (ตอ)……………………………………..……...19

รปท 4.1 สวนแสดงผลสำหรบสมครสมาชก…………………………………………….............28

รปท 4.2 ฐานขอมลเมอมการสมครสมาชกสำเรจ………………………………….…...............29

รปท 4.3 แสดงประสทธภาพของระบบทใช honeyword ของการสมครสมาชก………….........29

รปท 4.4 แสดงประสทธภาพของระบบทไมใช honeyword ของการสมครสมาชก…....…........30

รปท 4.5 สวนแสดงผลสำหรบการตงรหสผานใหม.…...………………………….................…30

รปท 4.6 แสดงประสทธภาพของระบบทใช honeyword ของการตงรหสผานใหม....…............31

รปท 4.7 แสดงประสทธภาพของระบบทไมใช honeyword ของการตงรหสผานใหม…....…....31

รปท 4.8 สวนแสดงผลสำหรบเขาสระบบ……………...………………………….................…31

รปท 4.9 แสดงประสทธภาพของระบบทใช honeyword ของการเขาสระบบ…………….........32

รปท 4.10 แสดงประสทธภาพของระบบทไมใช honeyword ของการเขาสระบบ..............…...32

รปท 4.11 แสดงผลลพธของการนำแฮชมาสมหาคาจรง…...……....…...................................33

รปท 4.12 แสดงตารางฐานขอมลเมอผประสงครายใช honeyword เขาสระบบ...……….........33

V

Page 6: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

สารบญรป (ตอ)

หนา

รปท 4.13 เกบสถตการเดาวาคาแฮชใดคอรหสผานทถกตอง………......................................34

รปท 4.14 เกบสถตการเดาวารหสผานใดคอรหสผานทถกตอง chaffing-by-tail-tweaking......37

รปท 4.15 เกบสถตการเดาวารหสผานใดคอรหสผานทถกตอง chaffing-by-tweaking-digits...38

รปท 4.16 เกบสถตเดารหสผานใดคอรหสผานทถกตอง chaffing-with-a-password-model....39

VI

Page 7: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

VII

Page 8: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

บทท 1

บทนำ

1.1 ปญหา และแรงจงใจ

ในปจจบนเราไดเหนขาวและเหตการณทเกยวกบการขโมยขอมลในฐานขอมลของผใหบรการ ซงทำใหผประสงครายลวงรขอมลสวนตวของผใชงาน เชน ชอผใชงาน, คาแฮชของรหสผาน, รหสบตรเครดต เปนตน และสงผลใหผประสงครายทำการสมคารหสผานใหตรงกบคาแฮชทไดมา ทำใหสามารถเขาระบบดวยตวตนของผใชงานคนนนๆได จากเหตการณดงกลาวนนเราจงควรเหนถงความสำคญและวธการแกปญหาเพอเปนการแจงเตอนวามการขโมยขอมลในฐานขอมลของผใหบรการและใชเขาสระบบ เพอใหผบรการสามารถทจะปองกนและแกปญหาไดทนเวลา

1.2 แนวทางการแกปญหา

มผคดคนวธการแกปญหาดงกลาวดวยวธทเรยกวา “Honeywords” สารนพนธนจงเปนการศกษากระบวนการทำงานการตรวจสอบวา มผประสงครายไดขโมยขอมลไปแลว และมความพยายามเขาสระบบดวยขอมลทไดไป แตจะไมสามารถเขาสระบบได เนองดวยรหสผานดงกลาวไมใชรหสผานของผใชงานจรง เปนเพยงแครหสผานทถกสรางขนมาสำหรบตรวจสอบวามผลวงรโดยวธการไมเหมาะสมและพยายามเขาสระบบ

1.3 วตถประสงคของการศกษา

1.3.1 ศกษากระบวนการสรางรหสผานปลอม (Honeywords) 1.3.2 ศกษากระบวนการนำรหสผานปลอม (Honeywords) มาใชตรวจสอบวามผประสงครายพยายามเขามาในระบบได 1.3.3 ประยกตและสรางระบบ Honeywords บนเวบแอปพลเคชน

1.4 ภาพรวมของระบบทจดทำ

โดยในสารนพนธฉบบนจะเปนการพฒนา Honeywords โดยนำไปรวมกบระบบ CIBB basic forum with Codeigniter and Twitter Bootstrap ตามเอกสารอางอง [7] โดยสวนของ Computer System คอ CIBB ดงรปท 1.1

1

Page 9: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

รปท 1.1 ภาพรวมของระบบทจดทำ

1.5 ขอบเขตการศกษา

1.5.1 ศกษากระบวนการสรางรหสผานปลอม (Honeywords) 1.5.2 ศกษากระบวนการนำรหสผานปลอม (Honeywords) มาใชตรวจสอบวามผประสงครายพยายามเขามาในระบบ 1.5.3 ประยกตแนวทางการศกษาดงกลาวกบเวบแอปพลเคชน โดยสราง library สำหรบ Codeigniter สำหรบกระบวนการสรางรหสผานปลอม (Honeywords) 1.5.4 ประยกตกบการเขาสระบบของ CIBB ซงเปนเวบแอปพลเคชนทพฒนาดวย Codeigniter 1.5.5. ทดสอบผลดวยการสมมตวารหสผานทผด (Honeywords) ดงกลาวไดถกขโมยไปและนำมาใชเพอเขาสระบบ โดยตองตรวจสอบไดจรงและมการแจงเตอนใหผดแลระบบทราบผานทางอเมล และรหสผานปลอม (Honeywords) ดงกลาวจะไมตรงกบรหสผานจรงและไมสามารถเขาสระบบได

1.6 โครงสรางของสารนพนธ บทท 2 จะมงเนนเพอศกษาวธการโจมตเพอขโมยขอมลรหสผาน วธการทำงานของ Honeywords ในขนตอนการเขาสระบบ การเปลยนรหสผาน ขนตอนการสรางรหสผาน เพอนำมาประยกตใชกบระบบอนๆ บทท 3 ในสารนพนธนจะนำมาประยกตกบ CIBB ซงเปนเวบแอปพลเคชน เพอใหไดระบบทมความมนคงปลอดภยมากขนและสามารถตรวจจบผประสงครายจากการขโมยขอมลรหสผานไดจรง และทำการวดประสทธภาพของการใชงานของระบบระหวางการใชระบบปกตและระบบทใช honeyword นนมความแตกตางกนมากนอยเพยงใด บทท 4 ทำการทดสอบระบบวาสามารถตรวจจบผประสงครายจากการขโมยขอมลรหสผานเพอนำรหสผานมาเขาสระบบ และประสทธภาพของระบบเมอมการปรบมาใชงาน

2

Page 10: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

Honeywords เมอเทยบกบระบบปกต และทดสอบความนาจะเปนในการเดารหสผานทถกตองโดยการสรางแบบทดสอบเพอเกบสถตผลการเดารหสผาน บทท 5 สรปผลการทดลองทงหมด กลาวถงขอดและขอเสยของ Honeywords และการพฒนาตอยอด

3

Page 11: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

บทท 2

พนฐานและทฤษฎทเกยวของ

2.1 เกรนนำ

กำหนดใหระบบคอมพวเตอรมชอผใชงานจำนวน n คน โดยมชอผใชงาน u1,u2,…,un

ดงนน ui จะแทนชอผใชงานสำหรบลำดบท ith โดยระบบคอมพวเตอรนจะอนญาตใหผใชงานเขาสระบบดวยชอผใชงานและรหสผาน ทงนมความหมายถง เวบไซต, สมารท โฟน, และโปรแกรมตางๆ ดวย กำหนดให pi แทนรหสผานของผใชงาน ui โดยผใชงาน ui จะใชรหสผาน pi เพอเขาสระบบ โดยวธการในปจจบน ระบบจะใชฟงกชนแฮชกบรหสผาน และเกบคาแฮชทไดในระบบแทนรหสผานจรง ซงเกบไวในไฟล F ประกอบดวยขอมลรายการชอผใชงานและรหสผานทผานฟงกชนแฮชดวยรปแบบดงสมการท 2.1

(ui,H(pi)) (2.1)

สำหรบ i = 1,2,…,n

สำหรบระบบปฏบตการลนกซ ไฟล F คอ /etc/passwd หรอ /etc/shadow และสำหรบเวบแอปพลเคชนจะหมายถงฐานขอมลทเกบรหสผาน หากผประสงครายทสามารถเขาถงไฟล F บนระบบไดนน อาจจะสามารถคำนวณหารหสผาน pi จากคาแฮช H(pi) ได โดยทวไปเมอผใชงานจะเขาสระบบ จะใชชอผใชงานและรหสผานทผานฟงกชนแฮชเพอไปตรวจสอบกบไฟล F เมอตรงกนระบบจะอนญาตใหผใชงานเขาสระบบได

2.2 รปแบบของการโจมตเพอขโมยขอมลรหสผาน

รปแบบการโจมตทมงเนนเกยวกบรหสผานนนมหลากหลาย โดยไดยกตวอยางทมการพบไดบอยดงน 2.2.1 ขโมย ลวงร หรอเขาถงไฟล F ทเกบคาแฮชรหสผานทผานฟงกชนแฮช 2.2.2 รหสผานทใชงานถกคาดเดาไดงาย เนองจากผใชงานมการตงรหสผานทออนแอเกนไป ยกตวอยางเชน 123456 2.2.3 ผใชงานเขยนรหสผานตดไวบนจอคอมพวเตอร และผประสงครายสามารถทจะมองเหนและนำไปใชได 2.2.4 มการใชงานรหสผานเดยวกนในหลายระบบ หากระบบใดถกเขาถงไดดวยผประสงคราย บนระบบอนจะมความเสยงดวย

4

Page 12: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

2.2.5 ผประสงครายขโมยรหสผานจากผใชงาน โดยอาจเปดดโทรศพทมอถอ, เครองคอมพวเตอรพกพา, มลแวร หรอดวยวธการ Phishing 2.2.6 ระบบขอเปลยนรหสผานมขอบกพรอง ดวยเหตใดกแลวแตททำใหผประสงครายลวงรหรอสามารถเปลยนรหสผานตามทตองการได

ในสารนพนธนเราจะเนนทการโจมตในหวขอ 2.2.1 เทานน โดยเมอผประสงครายไดขอมลในไฟล F ซงอาจมทงชอผใชงาน, คาแฮชรหสผานทผานฟงกชนแฮช หรอขอมลอนๆ และทำการ brute force เพอหารหสผานทตรงกบคาแฮชในไฟล F และนำรหสผานทไดมาอางสทธเพอเขาสระบบอยางถกตองภายใตชอผใชงานนน สมมตใหผประสงครายสามารถลวงรรหสผานในไฟล F ไดจำนวนมาก หากผประสงครายนำรหสผานนนเขาสระบบแตเปนรหสผานทเปน honeywords ผประสงครายจะถกตรวจจบไดในครงแรกทเขาสระบบ แตหากผประสงครายมความสามารถทจะปรบแตงกระบวนการเขาสระบบ หรอกระบวนการเปลยนรหสผาน ระบบนจะตกอยในอนตรายทนท อยางไรกตามเราไดเสนอแนวคดสำหรบหวขอ 2.2.1 เทานน แตเนอหาบางสวนอาจมประโยชนเพอใชในการปองกนการโจมตอนๆ เชน วธการ take-a-tail ซงจะกลาวในบทท 3

2.3 Honeychecker

เราใหระบบคอมพวเตอรซงทำหนาทเปนสวนเสรมและชวยเหลอ honeywords ใหมความปลอดภยมากขน เรยกวา honeychecker เนองจากเราสมมตใหระบบคอมพวเตอรทมชองโหวถกขโมยไฟล F ซงใชเกบขอมลเกยวกบผใชงาน, รหสผานทผานฟงกชนแฮช และขอมลอนๆไปแลว ดงนนระบบคอมพวเตอรนจงไมมสวนใดปลอดภย Honeychecker จงถกแยกไปอยในระบบคอมพวเตอรทถกทำใหมนคงปลอดภยมากขน (harden) โดยระบบจะถกเชอมผานเครอขายดวยเสนทางเฉพาะ มการเขารหสลบและมการยนยนตวตน นอกจากน honeychecker จะมหนาทในการตรวจสอบในกรณมการพยายามเขาสระบบทผดปกตดวย Honeychecker มความสามารถในการแจงเตอนเมอมความผดปกตเกดขนและจะสงขอความเตอนไปยงผดแลระบบอยางเงยบๆ อาจจะแจงกลบไปทระบบคอมพวเตอรทมการเขาสระบบหรอไมกไดแลวแตนโยบาย บางทเราอาจเรยก honeychecker วา “login monitor” Honeychecker จะเกบขอมลในฐานขอมล โดยจะเกบคาตำแหนงของรหสผาน c(i) ของทกๆผใชงาน ui โดยมชนดเปนตวเลขอยระหวาง 1 ถง k เมอ k คอจำนวนของรหสผานทงหมดทสรางขน เชน k เทากบ 20 คอมจำนวนรหสผานตอผใชงาน 20 ตว

5

Page 13: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

Honeychecker มคำสง 2 แบบ คอ 1) Set(i,j) สำหรบตงคารหสผาน c(i) โดยมคาเปนตำแหนงคอ j 2) Check(i,j) ใชตรวจสอบตำแหนงของรหสผาน c(i) เทากบคาตำแหนง j หรอไม และสงขอมลกลบไปใหระบบคอมพวเตอรทตองการเขาสระบบวารหสผานถกตองเพอใหสามารถเขาสระบบได หรอแจงเตอนผดแลระบบเมอตำแหนงของรหสผาน c(i) ไมเทากบคาตำแหนง j

หลกการออกแบบของ honeychecker นน ระบบคอมพวเตอรและ honeychecker เมอนำมารวมกนจะใชพนฐานของการรกษาความปลอดภยแบบกระจาย โดยมจดมงหมายเพอใชลดความเสยง แมวาผประสงครายจะทำอนตรายในบางระบบหรอบางโปรแกรม และยงชวยกระจายการใชทรพยากรของระบบดวย ตวอยางเชน เราอาจแยกผดแลระบบระหวางระบบคอมพวเตอรกบ honeychecker หรอใชระบบปฏบตการทตางกน เพอสรางความสบสนและยากทจะทำอนตรายระบบโดยรวม เราออกแบบเพอไมใหผประสงครายสวมรอยเปนผใชงานระบบ โดยใชเพยงการเกบคาตำแหนงของรหสผาน c(i) สำหรบทกๆผใชงาน ui ความจรงแลวอาจมกรณทแยสด เนองจากถาผประสงครายไดไฟล F และไมหลงกลหากวธการออกแบบการสราง honeywords นนทำไดไมด จะทำใหผประสงครายสามารถทจะลวงรรหสผานทแทจรงไดโดยงาย นอกจากน ยงตองคำนงถงการปกปองรหสผานในระบบทกระจายตว จะตองมการเขารหสลบระหวางระบบคอมพวเตอรกบ honeychecker และตองสามารถรวมกบระบบทเกบรหสผานได, ใช overhead นอยทงการคำนวณและการสอสารระหวางกน สงสำคญคอ honeychecker จะตองอยในระบบทนาเชอถอ (Trusted System) หรอมการทำใหมความมนคงปลอดภยมากขน (harden) และควรทจะใชนโยบายทไมตองมการโตตอบกบระบบคอมพวเตอรทมการเขาสระบบ ถามการตงคาใหแจงเตอนใหกบผดแลระบบหรอกระตนโปรแกรมปองกนอน

2.4 การทำงานของ Honeywords

ในหวขอนจะเปนการอธบายพนฐานการทำงานของ honeywords วามการเกบรหสผานและตำแหนงของรหสผานอยางไร สำหรบผใชงาน ui จะมแถวขอมล Wi โดยมคำทตางกน (อาจจะเรยกมนวา “potential password” หรอ “sweetwords”) ดงสมการท 2.2

Wi = (wi,1,wi,2,…,wi,k) (2.2)

เมอ k คอ จำนวนรหสผาน เพอความงายในการอธบาย เราแนะนำคา k = 20

6

Page 14: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

อยางไรกตามเราสามารถกำหนดคา k ไดจากลกษณะของผใชงาน เชน k = 200 สำหรบผดแลระบบ คา k ทตำและสงอาจมความเหมาะสมตางกนตามพฤตกรรมและความสำคญของผใชงาน แนนอนวาหนงใน sweetwords (wi,j) จะเทากบรหสผานจรง pi ของผใชงาน ui เราให c(i) แทนคาตำแหนงรหสผานของผใชงาน ui ทถกตองในแถวขอมลของรหสผาน Wi ดงสมการท 2.3

Wi,c(i) = pi (2.3)

เราจะเรยกรหสผานทแทจรงวา “sugarword” เราจะเรยกรหสผานอนๆ (k-1) วา “honeywords” หรอ “incorrect password”

ดงนนแถวขอมลของรหสผาน Wi ของ sweetwords จะประกอบดวยหนง sugarword (รหสผานทแทจรง) และ (k-1) honeywords (รหสผานทไมจรง) เราสามารถเพมเตม “touch nut” คอ รหสผานทมความแขงแรงมากเปนพเศษ และเปนคาแฮชไมสามารถทจะถกผประสงคราย brute force เพอลวงรคำทแทจรงได ใชสญลกษณแทนวา ⁇ โดย honeywords หรอรหสผานทแทจรงอาจจะเปน toucht nut กได ไฟล F คอไฟลทใชเกบรหสผานจะถกเปลยน โดยมการเพมขนของการเกบรหสผาน ดงสมการท 2.4

(ui,Hi) (2.4)

โดยทจะทำการแฮชจากทก jth sweetwords ตอผใชงาน ดงสมการท 2.5

vi,j = H(wi,j) (2.5)

และคาแฮชทไดจะถกเกบเปนแถวของขอมล ดงสมการท 2.6

Hi = (vi,1,vi,2,…,vi,k) (2.6)

ขนาดของไฟล F จะใหญขนตามตวแปร k โดยประมาณ แตกไมไดมปญหาแตอยางใดเพราะระบบโดยทวไปกมการเกบรหสผานเกาประมาณ 10 รหสผาน ทถกใชไปแลว เพอไมใหนำกลบมาใชใหม ซงแลวแตนโยบายในการเกบรหสผานของแตละบรษท โดยหากตองการลดความเสยงของการตงรหสผานทเหมอนเดมกอาจทำการเพมจำนวนรหสผานเกาลงไปในระบบ ผใชงานจะไมสามารถตงรหสผานใหมใหเหมอนกบรายการของรหสผานเกานน

7

Page 15: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

จากทมการเปลยนขนตอนการเกบรหสผานนน ผใชงานไมจำเปนตองรขอมลเพมเตม จำเพยงแตรหสผานของตวเองเหมอนเดม ไมจำเปนตองร honeywords เพราะผใชงานจะไมรวามระบบ honeywords เนองจากระบบดงกลาวทำงานอยเบองหลง ฟงกชน Gen(k) แสดงถงขนตอนในการสรางแถวขอมลของรหสผาน Wi โดยมความยาว k สำหรบผใชงาน ui และคาตำแหนง c(i) แทนรหสผานทถกตอง pi ทอยในแถวขอมลของรหสผาน Wi ดงสมการท 2.7

(Wi,c(i)) = Gen(k) (2.7)

ฟงกชน Gen คอฟงกชนสำหรบการสราง honeywords โดยตองรวมกบปฏกรยาของผใชงาน ไมเชนนนผใชงานจะไมสามารถสรางหรอรรหสผานได โดยเราจะเพมบางตวแปร เชน pi ลงไปในฟงกชน Gen ดงนนจะไดฟงกชน Gen(k;pi) โดย pi คอรหสผานทผใชงานตงขนทในกลมคำ Wi ดงสมการท 2.8

pi = Wi,c(i) (2.8)

ใหตวแปร c คอตารางทจะใหเกบตำแหนงของรหสผานทถกตอง ซงถกเกบรกษาอยางปลอดภยใน honeychecker นอกจากนเราสามารถใชคา salt กบรหสผานทผใชงานตงขนได โดยอาจนำไปรวมอยกบการคำนวณแฮช อยางไรกตามมนสามารถทำใหรหสผานมความแขงแรงมากขนและลดความเสยงการเดารหสผานจากผประสงครายไดด

2.5 ขนตอนการเขาสระบบ

กระบวนการเขาสระบบนน ตองใชการตดสนใจวารหสผานทรบเขามา g เทากบรหสผานของผใชงานทอยในระบบหรอไม ถาหากรหสผาน g ไมเทากบรหสผานของผใชงานทอยในระบบแลว กระบวนการเขาสระบบตองตรวจสอบวารหสผาน g เปน honeywords หรอไม ถาผใชงานเขาสระบบดวยรหสผานของผใชทถกตอง กระบวนการเขาสระบบจะเปนไปตามขนตอนปกตหรอหากเปนผประสงครายนำรหสผานทเปน honeywords เพอใชเขาสระบบโดยกระบวนการจะเปนตามนโยบาย ซงการตงนโยบายจะขนอยกบบรษทหรอองคกรนนตงขน ดงรปท 2.1

8

Page 16: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

รปท 2.1 ขนตอนการเขาสระบบ

ถาผประสงครายเขาสระบบดวย honeywords ของผใชงาน เชน อาจมการ brute forcing คาแฮชของรหสผานจากไฟล F สำเรจ ตองมการดำเนนการทเหมาะสมโดยแลวแตนโยบายดงน 1) แจงเตอนผดแลระบบ 2) ใหเขาสระบบตอไปแบบปกต 3) ใหเขาสระบบแตอยใน honeypot 4) ทำการตดตามตนทางทมการเขาสระบบ 5) เปด log เพอตดตามการกระทำของผใชงาน 6) ปดระบบผใชงานนนจนกวาจะมการขอรหสผานใหม โดยอาจตองทำเรองขอรหสผานใหมจากผดแลระบบ 7) ปดระบบคอมพวเตอรและใหผใชงานสรางรหสผานใหมทงหมด อยางไรกตามกระบวนการเขาสระบบเพอตดสนใจวารหสผานทใชเขาสระบบ g เทากบรหสผานทถกตอง pi นน ถาคาแฮช H(g) ของรหสผาน g ไมอยในไฟล F ทจดเกบคาแฮชของผใชงาน ui แลวรหสผาน g จะไมใชทงรหสผานทถกตองและ honeywords ของผใชงานนน ดงนนระบบจะไมยอมใหมการเขาสระบบ กระบวนการตดสนใจวารหสผาน g เปนรหสผานของผใชงานหรอเปนเพยงหนงใน honeywords ของผใชงานนน กระบวนการเขาสระบบสามารถจะรตำแหนงของรหสผาน คอ j จากสมการท 2.9

9

Page 17: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

H(g) = vi,j (2.9)

แตกระบวนการเขาสระบบไมรวารหสผานทอยในตำแหนง j จะเทากบตำแหนงของรหสผานทถกตอง c(i) หรอไม ตองไปตรวจสอบกบตาราง c ทเกบอยใน honeychecker ในหวขอ 2.3

ระบบคอมพวเตอรจะสงขอมลหา honeychecker เพอสงรหสผานตำแหนง j ไปตรวจสอบกบตาราง c ดวย สมการท 2.10

Check(i,j) (2.10)

หมายความวา “บางคนทตองการเขาสระบบดวยผใชงาน ui และระบ sweetwords (wi,j) โดยคา j คอตำแหนงของรหสผานทผใชงานสงเขามาในระบบ โดยถารหสผานในตำแหนง j เทากบตำแหนงของรหสผานทถกตอง c(i) กจะทำตามนโยบายตอไป ถาหากไมใชจะทำการเตอนผดแลระบบ นอกจากนเรายงสามารถใชฟงกชน Check สงขอมลให honeychecker แมวารหสผาน g จะไมอยใน sweetwords (Wi) โดยเราสามารถสงขอมลโดยระบตำแหนงของรหสผาน j เทากบ 0 เพอแจงใหระบบทราบวามการโจมตดวยการเดารหสผานเกดขน และเรายงสามารถเพมเตมขอมลทจะใหฟงกชน Check สงไปให honeycheck เพอสำหรบเกบขอมล IP address ของผใชงานทมการพยายามเขาสระบบ เพอใชสำหรบตดตามผใชงานทประสงครายไดดงรปท 2.2

รปท 2.2 ขนตอนการเขาสระบบ (ตอ)

10

Page 18: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

ในหลายระบบจะมการระงบผใชงานนน หากพยายามทจะเขาสระบบแลวเกดการผดพลาดมากเกนไป วธการนกเปนวธทดแตมขอเสยตรงทอาจถกโจมตดวยการสมรหสผานทผดเขาสระบบเรอยๆ จนทำใหผใชงานนนไมสามารถเขาสระบบได แตหากใชวธการ honeywords เราไมจำเปนตองระงบผใชงานเมอมการเดารหสผานทไมถกตองเขาสระบบ ตอใหผประสงครายไดรายการของรหสผาน Wi ไปทงหมด จากทฤษฎความนาจะเปนรหสผานทถกตองทจะปรากฎใน 5 ตวแรก ดวยการสมการเรยงลำดบในแถวขอมลของรหสผาน Wi และมจำนวนของรหสผาน 20 ตวนน มความนาจะเปนเพยง 75% ทจะเกดขน ยงถารหสผานมการสมไปอยในตำแหนงแรกสดของรายการรหสผาน โอกาสทจะเกดขนมเพยง 5% เทานนซงนอยมาก การทผประสงครายจะเดารหสผานหรอมการนำรหสผานทลวงรจากรายการของรหสผาน Wi มาเขาสระบบ จะมโอกาสสงทรหสผานทสงเขามานนจะเปน honeywords ซงระบบจะตรวจจบได

2.6 ขนตอนการเปลยนรหสผาน

รปท 2.3 ขนตอนการเปลยนรหสผาน

จากรปท 2.3 เมอผใชงาน ui ตองการเปลยนรหสผาน หรอตงรหสผานเมอเขาใชงานครงแรกระบบจะมกระบวนการดงน 1) ใชกระบวนการของฟงกชน Gen(k;pi) เพอสรางรหสผานและเกบลงในแถวขอมล Wi เปนจำนวน k ตว 2) คา c(i) เปนตำแหนงของรหสผใชงานทถกตอง คอ รหสผาน pi ในแถวขอมลรหสผาน Wi 4) Hi เปนคาแฮชของแถวขอมลรหสผาน Wi

11

Page 19: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

3) สงขอมลให honeychecker ใหรจกคาตำแหนง c(i) ใหม ดวยฟงกชน Set(i,j) โดย j เทากบ c(i) 4) ปรบขอมลผใชงานในไฟล F เปน (ui,Hi)

Honeychecker จะไมรรหสผาน หรอ honeywords ทตงใหมน โดยจะรแคตำแหนงของรหสผานทถกตอง c(i) ของคาแฮช vi,c(i) ของผใชงาน ui ซงเปนรหสผานใหมทอยในรายการคาแฮช Hi ในไฟล F ระบบคอมพวเตอรจะสงขอมลตำแหนงของรหสผานใหมให honeychecker ดวยฟงกชนตามสมการท 2.11

Set(i,j) (2.11)

หมายความวา “ผใชงาน ui ไดทำการเปลยนรหสผานหรอตงรหสผานใหมครงแรกโดยสงคา c(i) คอ j ไปให honeychecker เขยนลงในตาราง c เพอจะไดสามารถตรวจสอบตำแหนงของรหสผานทถกตองเมอมผใชงานเขาสระบบ จากฟงกชน Check(i,j)”

2.7 นยามของความมนคงปลอดภยของการสราง honeywords

นยามของความมนคงปลอดภยของวธการสราง honeywords หรอฟงกชน Gen(k;pi) ไดใชทฤษฎ adversarial game ซงใชในการทดสอบความสามารถของผประสงคราย เพอความงายในการอธบาย ใหพจารณาจากฟงกชน Gen(k;pi) เมอผใชงานสงรหสผาน pi เขาสระบบ โดยจะดำเนนการดงตอไปน

12

Page 20: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

รปท 2.4 ขนตอนการทำงานของฟงกชน Gen(k;pi)

จากรปท 2.4 ฟงกชน Gen(k;pi) จะเรมโดยใชขอมลรหสผาน pi ทผใชงานสงเขามาในระบบ โดยองคประกอบของรหสผานจะขนกบนโยบายและผใชงาน ผลลพธของ Gen(k;pi) คอ แถวขอมลของรหสผาน Wi และตำแหนงของรหสผาน c(i) ซงไดจากการหาตำแหนงของรหสผาน pi ในแถวขอมลของรหสผาน Wi

13

Page 21: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

รปท 2.5 ผประสงครายไดรายการของรหสผานไป

จากรปท 2.5 ผประสงครายทไดแถวขอมลของรหสผาน Wi ไป และอาจมบางคาสมทเปน คาแฮชทยากตอการ brute force (touch nut,⁇) ซงเปน hard honeywords และผประสงครายตองเลอกวาจะผาน หรอทำการ brute force รหสผานทไดมาและเดาวารหสผานทถกตองคอรหสผานใดจากรหสผานจำนวน k ตว จากตวอยาง คา k คอ 6 ยงจำนวนรหสผานในแถวขอมลของรหสผาน Wi ตอผใชงานหนงคน มจำนวนมากเทาใดโอกาสในการเดารหสผานไดถกตองตงแตครงแรกยงมนอยลง

ผลลพธทไดเปนได 3 แบบ คอ 1) ผประสงครายชนะ สามารถทจะ brute force รหสผาน และเดารหสผานไดถกตองในครงแรก 2) ผประสงครายถกจบ ถาเขาเดารหสผานแตรหสผานนนคอ honeywords 3) ผประสงครายยอมแพ คอ เขาไมดำเนนการตอ อาจเกดจากสมนำ touch nut เพอนำไป brute force แลวไมสามารถหาคาได หรอไมสามารถ brute force คาใดๆไดเลย

14

Page 22: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

2.8 ทฤษฎความนาจะเปน

สามารถคำนวณคาความนาจะเปนได ดงสมการท 2.12

P(E) = n(E) / n(S) (2.12)

ให E เปนเหตการใดๆ ทเปนสวนหนงของแซมเปลสเปส S P(E) คอ ความนาจะเปนของเหตการณ

สมมตใหมรหสผาน k เทากบ 20 ตว และผประสงครายไดรรายการของรหสผาน Wi และสามารถ brute force sweetwords ทงหมด 20 ตว โดยมโอกาสเลอกไดรหสผานทถกตอง 1 ตว จากทงหมด 20 ตว ดวยการเรยงแบบสม คอ 1 ใน 20 จะคดเปนรอยละ 5 ทจะสามารถเลอกรหสผานไดถกตองในครงแรก หรอสมมตจำนวนของรหสผาน k นอยลง เชน กำหนดจำนวนของรหสผาน k เทา 4 กยงมโอกาสเพยงรอยละ 25 ทจะเดารหสผานไดถกตองในครงแรก หรอมโอกาสรอยละ 75 ทจะถกจบได ซงเพยงพอทจะยอมรบได แตถงแมวาจะเปนวธทสามารถตรวจสอบผประสงครายได แตกมความเสยงทผประสงครายจะทำการลบไฟลรหสผานของระบบทงได

15

Page 23: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

บทท 3

วธการดำเนนงาน

จากการศกษาขางตน ไดออกแบบภาพรวมระบบโดยแบงเปน 2 สวนหลกคอ Computer System ในโครงงานนจะใช CIBB ซงเปนเวบแอปพลเคชนกระดานสนทนานำมาประยกตใชกบ Honeywords โดยแกสวนโครงสรางของการเขาสระบบ และในสวน Honeychecker จะใชสำหรบเชครหสผานและเกบตำแหนงของรหสผานในระบบ โดยระบบทงสองมการเขารหสลบเชอมตอกนดงรปท 3.1

รปท 3.1 ภาพรวมของระบบ

- ฟงกชน Set(i,j) จะอยใน Computer System (S1) เปนคำสงทใชเมอมการตงรหสผานครงแรกหรอเปลยนรหสผานใหม โดยจะสงขอมลไปยง Honeychecker (S2) เพอให honneychecker ไดรวารหสผานทถกตองอยทตำแหนง j และเปนรหสผานของผใชงาน ui

- ฟงกชน Check(i,j) อยใน Computer System (S1) เปนคำสงทใชเมอมการเขาสระบบ โดยจะสงขอมลไปยง Honeychecker (S2) เพอตรวจสอบวาตำแหนงของรหสผานทไดจากแถวขอมลของรหสผาน Wi ซงแทนดวยตำแหนงของรหสผาน c(i) มคาเทากบ j ทอยในฐานขอมลของ honeychecker (Table c) หรอไม ถา ตำแหนงของรหสผาน c(i) เทากบ การหาคาตำแหนงของรหสผานทผใชสงเขามา j จะหมายความวารหสผานถกตอง ผใชงานจะเขาสระบบได แตถาไมเทากนจะแจงเตอนไปยงผดแลระบบวามผประสงครายไดทำการใช honeywords ทอยในแถวขอมลของรหสผาน Wi พยายามเขาสระบบดวยชอผใชงาน ui แตถารหสผานทผใชงานสงมา ไมตรงกบรหสผานในแถวขอมลรหสผาน Wi เลย จะสงขอมล j = 0 หมายความวาอาจมการโจมตดวยการเดารหสผานเขามาในระบบ

16

Page 24: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

- Gen(k;pi) อยใน Computer System (S1) เปนฟงกชนทใชทำหนาทสรางแถวขอมลรหสผาน Wi โดย pi คอรหสผานทผใชงาน ui สงเขามาในระบบ

- Honeychecker อยใน S2 มหนาทในการเกบตำแหนงของรหสผาน j จากฟงกชน Set(i,j) ซงเปนตำแหนงรหสผานทถกตองในแถวขอมลรหสผาน Wi และมหนาทตรวจสอบขอมลทสงมาจากฟงกชน Check(i,j)

นอกจากนฟงกชนเบองหลงสวนตดตอผใชงานในขนตอนการเขาสระบบตองมการปรบแตงใหม โดยในสารนพนธนจะปรบเปลยน CIBB basic forum with Codeigniter and Twitter Bootstrap ซงเปนกระดานสนทนาทถกสรางดวย Codeigniter ใหรองรบกบการทำงานของระบบ Honeywords

ขนตอนการดำเนนงานมดงน

1. ศกษาคนควาเกยวกบทฤษฎและการทำงานของ honeywords แลวแบงสวนการศกษาและการนำมาประยกตใชงานจรง

2. ศกษาสวน Honeywords Generation และเรมเขยนฟงกชนการทำงานของ Honeywords Generation

3. ศกษาสวน นโยบายการตงรหสผาน และนำมาประยกตใชสำหรบการทำ Input validation ในการรบรหสผานจากผใชงานและปรบแตงกระบวนการเขาสระบบ

4. ศกษาสวนของฟงกชน Honeychecker ซงใชสำหรบเกบขอมลตำแหนงของรหสผานทถกตองเพอใชในการตรวจสอบ และเรมเขยนฟงกชนการทำงานของ Honeychecker

5. ศกษาสวนของฟงกชน Set(i,j) ซงใชสำหรบรบขอมลรหสผานทผใชสงเขามาในระบบเพอนำไปสราง honeywords และเรมเขยนฟงกชนการทำงานของ Set

6. ศกษาสวนของฟงกชน Check(i,j) ซงใชสำหรบตรวจสอบรหสผานทผใชงานสงเขามาในระบบวาเปน honeyword หรอ รหสผานจง และเรมเขยนฟงกชนการทำงานของ Check

7. ทำการเชอมระบบตางๆ และเรมทดสอบการทำงานของระบบโดยรวม 8. เขยนรายการปญหาทพบและยกตวอยางการปญหาการทำงานหรอสมมตเหตการณการ

โจมต 9. สรปผลการทำงานของระบบวาสามารถใชตรวจจบผประสงครายในการเขาสระบบโดยใช

honeyword ได และวดประสทธภาพการทำงานของระบบวามความแตกตางกบระบบปกตอยางไร

17

Page 25: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

3.1 Honeywords Generation ( Gen )

รปท 3.2 ขนตอนการทำงานของฟงกชน Gen

จากรปท 3.2 ฟงกชน Gen(k:pi) เปนฟงกชนทสำคญมาก เนองจาก honeywords ตองมความแตกตางกบรหสผานทถกตอง แตควรมความคลายกนอยดวย เพอไมใหผประสงครายแยกแยะออกไดวารหสผานไหนเปนรหสผานทถกตอง

ขนตอนการสรางฟงกชน Gen(k;pi) เพอใหไดแถวขอมลของรหสผาน Wi แบงออกไดเปน 2 แบบ ดงน

- Legacy-UI เมอมการตงรหสผานครงแรกหรอเปลยนรหสผานใหม สวนตดตอผใชไมไดถกเปลยนแปลง โดยไดเสนอ 2 วธการ คอ chaffing-by-tweaking กบ chaffing-with-a-password-model

- Modified-UI เมอมการตงรหสผานครงแรกหรอเปลยนรหสผานใหม สวนตดตอผใชมการเปลยนแปลง วธการนอาจเรยกวา “take-a-tail” โดยสวนตดตอผใชจะเปลยนทกครงเมอมการสรางรหสผานใหม โดยสมตวเลข 3 หลก เพมเขาไปในสวนทายของรหสผานทผใชงานสงเขามา

จากนนทำการทดสอบการเดาสม เพอหาวามความเปนไปไดทจะเดารหสผานไดถกในครงแรกหรอไม ดวยการใชฟงกชน random ในภาษาไพทอน และจดทำแบบทดสอบเพอทดสอบกบกลมบคคลจรง

18

Page 26: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

3.1.1 Legacy-UI password changes

กระบวนการเปลยนรหสผานโดยทวไป คอ ผใชงานจะใสชอผใช, รหสผาน และบางทอาจมการใหใสรหสผานเพอยนยนอกครง สวนตดตอผใชจะไมแสดงใหผใชรเลยวามการใชงาน honeywords หรอมการตอบโตกบผใช เพอไมใหสงอทธพลตอการเลอกใชรหสผานของผใชงาน ซงเปนขอดของวธน

รปท 3.3 ขนตอนการทำงานของฟงกชน Gen (ตอ)

จากรปท 3.3 เปนขนตอนการทำงาน เมอผใชงานสงรหสผานเขามาใหรหสผานนนแทนดวย pi และระบบจะสรางเซตของ k - 1 honeywords โดยมรปแบบทคลายกบรหสผานทผใชสงเขามาในระบบ ซงผประสงครายจะมความยากในการแยกแยะรหสผานทแทจรงออกจาก sweetwords ของผใชงาน ui คำวา Chaffing ในทน คอ เมอรหสผาน pi ทผใชงานสงเขามาในระบบจะเขาสกระบวนการสราง honeywords ดวยฟงกชน Gen โดยจะทำการสรางเซตของ k - 1 honeywords และลกษณะของ honeywords นน จะขนกบรหสผาน pi ทผใชงานสงเขามาในระบบ จากนนนำรายการของรหสผานทไดจากฟงกชน Gen ไปเกบไวในแถวขอมลของรหสผาน Wi และเรยงลำดบแบบสม และหาคาตำแหนงของรหสผานทถกตอง c(i) ซงจะเทากบตำแหนงของรหสผาน pi ในแถวขอมลรหสผาน Wi ความสำเรจของ Chaffing จะขนอยกบคณภาพของกระบวนการสราง วธการนจะใชไมไดผลหากผประสงคราย แยกความแตกตางของรหสผานทถกตองกบ honeywords ออกจากกนไดงาย สำหรบ Legacy-UI เราม 2 วธทจะสราง honeywords ใหมความใกลเคยงกบรหสผานทถกตองดงน

19

Page 27: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

3.1.1.1 Chaffing by tweaking คอ การแทนทตวอกษรในรหสผาน

1) Chaffing-by-tail-tweaking ขนแรกจะเลอกตำแหนงของรหสผานทไดรบมา ให t แทนตำแหนง เชน (t = 2, t = 3) วธการน เมอเลอกคา t แลวจะทำการแทนทตวอกษรของรหสผานตงแตตวอกษรสดทายนบมา t ตวอกษร โดยการแทนทนนจะแทนตามชนดของตวอกษร เชน ตวเลข,พยญชนะ,ตวอกษรพเศษ เปนตน เมอเราใหรหสผาน คอ “BG+7y45” แลว Wi ทจะไดจากการกำหนด t = 3 และ k = 4 จะเปนไดดงน คอ BG+7q03, BG+7m55, BG+7y45, BG+7o92 2) Chaffing-by-tweaking-digits วธการนตองพงนโยบายของการตงรหสผานดวย เพราะมขอจำกดวาตองมตวเลขอยในรหสผานทถกตอง pi และหากมตวเลขทนอยกวา t คา t จะตองเปลยนได เมอเรากำหนด t = 2 จะไดผลลพธดงน คอ 42*flavors, 57*flavors, 18*flavors

3.1.1.2 Chaffing-with-a-password-model

เปนวธการสมเลอก honeywords จากกลมคำตางๆจาก 1,000 หรอ 1,000,000 รปแบบ โดยเมอใชฟงกชน Gen จะได honeywords ดงน

kebrton1 a71ger 1erapc aiwkme523 9,50PEeJRV.0?RIOtc&L-:IJ”b+Wol<*[!NWT/pb xyqi3tbato #NDYRODD_!! pizzhemix01 sveniresly mobopy a3915 venlorhan dfdhusZ2 ‘Sb123 WORFmgthness

การสรางแบบจำลองไวยากรณของ chaffing-with-a-password-model แบบอน ยงมอกวธทนาสนใจ คอ การนำแบบแผนของรหสผานทถกตอง นำมาแยกกลมคำออก

20

Page 28: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

จากกนตามชนด เชน คำ, ตวเลข หรอกลมของตวอกษรพเศษดงเชน mice3blind โดยเราสามารถจำแนกคำออกไดเปน W4|D1|W5 หมายถงม 4 ตวอกษร, 1 ตวเลข และ 5 ตวอกษร จากนนทำการแทนทโดยการสมคำใหตรงกบรปแบบดงกลาว เชน W4 = gold, D1 = 5, W5 = rings จะไดผลลพธคอ gold5rings โดยคำทนำมาแทนนนมาจากพจนานกรม

3.1.1.3  Chaffing with “tough nuts”

ความตองการอกอยางของ honeywords คอ การยากทจะหาคำทแทจรงจากคาแฮช โดย tough nuts อาจไมไดมาจากการนำกลมคำทมความยาวมากๆและไมมความหมายมาผานฟงกชนแฮชเทานน แตอาจเปนการสมคาใหมความยาวเทากบคาแฮช เชน 128 bits, 256 bits เปนตน ในทนเราแทนดวย ⁇ โดยนำคาทไดไปรวมอยในแถวขอมลของรหสผาน Wi ไดดงน gt79, tom@yahoo, ⁇, g*7rn45, rabid/30frogs!, ⁇

3.1.2 Modified-UI password changes

จากวธการ “take-a-tail’ ทเปน Legacy-UI เราสามารถปรบเปลยนสวนตดตอผใชเลกนอย โดยใหระบบสมเพมสวนทายของรหสผานทผใชตองการ จากเดม

Enter a new password :

เปลยนเปน

Propose a password : ******** Append ‘413’ to make your new password. Enter your new password : ***********

ดงนนหากผใชงานตงรหสผานเปน “RedEye2” รหสผานใหมจะเปน “RedEye2413” โดยขน ตอนของการสมเพมสวนทายจะเกดขนในสวนของกระบวนการเปลยนรหสผาน ณ ขณะนน

3.1.3 Hybrid generation methods

เปนการรวมกนของ chaffing-with-a-password-model กบ chaffing-with-tweaking-model โดยมวธดงน

21

Page 29: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

1) ใช chaffing-with-a-password-model กบรหสผานทรบมาจากผใชงานและสรางเซตทมขนาดมากกวาหรอเทากบ 2 โดยอาจมการใช tough nuts ดวย ใหผลลพธทไดแทนดวย WW 2) ใช chaffing-by-tweaking-digits โดยกระจายใหในแตละคำใน WW โดยตวเลขทใชมขนาดมากกวาหรอเทากบ 2 จะไดเซต WW ทมขนาด k = a x b 3) สมสลบคาใน WW และกำหนด c(i) ซงเปนตำแหนงของรหสผานทถกตอง

3.1.4 Storage optimization

ในบางวธเชน Chaffing-by-tweaking-digits และ Hybrid generation methods นน สามารถทจะลดการเกบจำนวนคาแฮชลงได เนองจากวธการ honeywords นจะทำใหการเกบคาแฮชเพมขน เชน หากม honeywords 19 คำ ตองเกบคาแฮชในไฟลทเกบรหสผานเพมอก 19 คา ดงนนเปนการดทจะลดจำนวนการเกบรหสผานลงเพอไมใหไฟลรหสผานมขนาดใหญมากเกนไปดวยวธการดงตอไปน ยกตวอยางกรณมตวเลข 2 ตวตดกนอยในสวนทาย เราจะไดจำนวนคาทเปนไปได 100 คา ดงนน คา k = 100, Wi = T(pi) = {wi,1,…,wi,k} โดยเรยงลำดบแบบ lexicographic [6] จากนนสมคา wi,r จาก T(pi) และเกบคา H(wi,r) ในระบบ

3.2 นโยบายการกำหนดรหสผาน 1) การกำหนดรปแบบของการตงรหสผาน (Password Syntax) เปนการตงกฎในการกำหนดรหสผาน โดยผใชงานจะตองตงรหสผานทมความยาวมากกวาหรอเทากบ 8 ตวอกษรและตองประกอบดวยตวเลข ตวอกษรและอกขระพเศษ 2) การกำหนดรหสผานจาก Dictionary words แตรหสผานอาจไมจำเปนตองเปนคำในพจนานกรมเทานน 3) การกำหนดรหสผานทเคยมการใชงานมาแลวในชอผใชงานนน โดยไมควรนำรหสผานทเคยใชแลวมาใชอกในผใชงานคนเดยวกนอยางนอยระบบควรเกบรหสผานทเคยตงไวแลว 10 รหสผานเพอใชอางอง 4) Most common passwords เพมรายการของรหสผานทงายตอการเดาอยางนอย 500 รหสทใชแพรหลาย เพอใหผใชงานหลกเลยงการตงรหสผานแบบน 5) Popular passwords เปรยบเทยบผใชคนอนวามการใชรหสผานทเหมอนกนหรอไม โดยนำมาเขยนเปนรายการ หากเปนรหสผานทมหลายผใชงานใชซำกน ควรทจะหลกเลยงไมใหมการตงรหสผานแบบเดยวกน

22

Page 30: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

3.3 การสรางตวอยางงาน 3.3.1 ตดตงระบบ CIBB basic forum with Codeigniter and Twitter Bootstrap สามารถดาวนโหลดและตดตงไดตามเอกสารอางองท 7 ใชสำหรบสรางตวอยางงานในสวนของระบบ

3.3.2 ตดตง Codeigniter Rest Server.

สามารถดาวนโหลดและตดตงไดตามเอกสารอางองท 8 ใชสำหรบสรางตวอยางงานในสวนของ honeychecker โดยระบบจะสงขอมลโดยใชงานเซอรวส RESTful หรอเวบเซอรวส HTTP เพอตรวจสอบวาตำแหนงของรหสผานถกตองตรงกน

3.3.3 สราง library ของ Codeigniter สำหรบระบบตวอยางเพอใชกบ CIBB

ดตวอยางของโปรแกรมไดท ภาคผนวก ง โดย library นจะประกอบดวย

1) ฟงกชน Gen ใชสำหรบสรางรหสผานทคลายคลงกบรหสผานของผใชเพอสราง กลมของรหสผาน (Wi,j) สำหรบเกบลงในฐานขอมล 2) ฟงกชน Check ใชสำหรบสงขอมลตำแหนงไปยง honeychecker เพอตรวจสอบวารหสผานทใชเขาสระบบมความถกตองหรอไม 3) ฟงกชน Set ใชสำหรบสงขอมลตำแหนงเมอมการสรางหรอเปลยนรหสผาน 4) ฟงกชนทจำเปนอนๆ เชน ฟงกชนในการหาตำแหนงของตวเลขทอยในรหสผาน , การแฮชกลมของรหสผาน Wi,j โดยในตวอยางนจะใช sha256

3.3.4 สราง Table c สำหรบเกบขอมลตำแหนงรหสผาน และ honeychecker

สำหรบ Table c นนตวอยางงานนจะใช Maria DB โดยมโครงสรางตามทฤษฎ คอ ID ของผใช และ ตำแหนงของรหสผาน สวน honeychecker สามารถดตวอยางของโปรแกรมไดท ภาคผนวก จ โดยจะเปนสวนของโปรแกรมสำหรบสรางเวบเซอรวสดวย Codeigniter Rest Server. [8]

3.3.5 สรางระบบตวอยาง

1) ปรบแตงขนตอนการสมครผใชใหมบน CIBB โดยขนตอนการสมครสมาชกนน เมอระบบรบขอมลของชอผใชและรหสผานจากผใชแลวจะทำการตรวจสอบวารหสผานมตวเลขอยหรอไม และนำรหสผานมาผานฟงกชน Gen เพอใหได Wi,j จากนนหาตำแหนงของ

23

Page 31: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

รหสผานทถกตอง กอนนำมาทำการแฮชและเกบลงฐานขอมล และสงตำแหนงทถกตองพรอมทง ID ของผใชงานไปยงฐานขอมลใน honeychecker ดวยฟงกชน Set(i,j) (ดตวอยางโปรแกรมไดท ภาคผนวก ฉ) 2) ปรบแตงขนตอนการเขาสระบบบน CIBB ซงเปนเวบแอปพลเคชนกระดานสนทนา โดยขนตอนการเขาสระบบนน เมอไดรบขอมลของชอผใชและรหสผานจากผใชแลว จะนำรหสผานมาทำการแฮชแบบ sha256 แลวนำไปเชคกบ Wi,j ทเกบแฮชของรหสผานไว โดยหาตำแหนงของ Array แลวสงไปตรวจสอบทเวบเซอรวส HTTP ของ honeychecker หากตำแหนงถกตองจะตอบกลบเปน True แปลวารหสผานถกตอง แตหากเปน False แปลวาตำแหนงทสงมาไมถกตองหรอคอ มผประสงครายไดรหสผานทเปน honeyword ไปแลวนำมาเขาสระบบ (ดตวอยางโปรแกรมไดท ภาคผนวก ฉ)

3.3.7 สรางแบบทดสอบสำหรบเกบสถตการเดารหสผานโดยมหวขอดงตอไปน

1) แบบทดสอบเพอเกบสถตการเดาวาคาแฮชใดคอรหสผานทถกตอง โดยจะสรางรายการของคาแฮชและกำหนดวาคาแฮชใดคอรหสผานทถกตองและสมใหกลมคนเลอกคาแฮชในรายการนน และทำการเกบผลดงกลาวสรปเปนสถต 2) แบบทดสอบเพอเกบสถตของการเดารหสผานจากกลมคำโดยสรางรายการของกลมคำโดยใชวธ Chaffing-by-tail-tweaking และใหกลมคนเลอกคำใดคำหนงจากรายการ และทำการเกบผลดงกลาวสรปเปนสถต 3) แบบทดสอบเพอเกบสถตของการเดารหสผานจากกลมคำโดยสรางรายการของกลมคำโดยใชวธ Chaffing-by-tweaking-digits และใหกลมคนเลอกคำใดคำหนงจากรายการ และทำการเกบผลดงกลาวสรปเปนสถต 4) แบบทดสอบเพอเกบสถตของการเดารหสผานจากกลมคำโดยสรางรายการของกลมคำโดยใชวธ Chaffing-with-a-password-model และใหกลมคนเลอกคำใดคำหนงจากรายการ และทำการเกบผลดงกลาวสรปเปนสถต

3.3.6 ทดสอบระบบ

1) ทดสอบการสมครผใชใหม ระบบจะตองสามารถสราง honeywords จากรหสผานทผใชงานสงเขามาไดโดยรหสผานนนจะตองแตกตางจากรหสผานจรง และม touch nut รวมอยดวย 2) ทดสอบการเขาสระบบ เมอมผใชงานเขาสระบบและเมอมผประสงครายทลวงร honeyword และนำกลบมาเขาสระบบ 3) ทดสอบประสทธภาพของระบบและเปรยบเทยบกบระบบปกตในการสมครสมาชก และการเขาสระบบ

24

Page 32: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

4) ทดสอบโดยการสมมตใหผประสงครายไดรหสผานไปแลวนำรหสผานเขาสระบบ 5) ทดสอบความนาจะเปนในการเดารหสผานไดถกตองในครงแรก โดยการสรางแบบสอบถามเพอเกบสถตในการเดารหสผานและใหกลมบคคลทวไปทำแบบสอบถาม

25

Page 33: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

บทท 4

ผลการดำเนนงาน

4.1 ผลการศกษาวธการดำเนนงานในสวนการสราง honeywords (Gen)

4.1.1 Legacy-UI password changes

เปนวธการทสวนการตดตอผใชงานไมตองมการตอบโตกบผใชงาน มลกษณะของสวนตดตอผใชทเหมอนเดม ทำใหผใชงานหรอผประสงครายนนไมทราบวาม honeywords อยเบองหลงในการเขาใชระบบหรอในการตงรหสผาน จงทำให honeywords ไมมอทธพลตอการตดสนใจในการตงรหสผานของผใชงาน เนองจากหากมการแกไขสวนตดตอผใช เชน มการใหระบบตงรหสผานใหตอทายกบรหสผานของผใชงานทสงเขามาในระบบ จะทำใหผใชงานนนตงรหสผานทงายกวาปกต หรอลงทายดวยตวเลขเพอใหสอดคลองกบรหสทระบบสรางขนมาใหผใชงานเหน

4.1.1.1 Chaffing-by-tweaking

เปนวธการใชการแทนทตวอกษรโดยจะทำใหรหสผานทระบบไดสรางขนมความคลายคลงกบรหสผานทผใชงานกำหนดซงจะทำใหผประสงครายแยกแยะรหสผานทถกตองไดยากขน แบงออกเปน 2 วธดงตอไปน 1) Chaffing-by-tail-tweaking เปนการแทนทตวอกษรดานทายของรหสผาน โดยหากกำหนดใหรหสผาน คอ 57*flavors เมอผานฟงกชน Gen จะได 57*flavrbn, 57*flavctz ซงวธนดเหมอนเปนวธทดแตจะเหนวา honeywords เปนคำทแปลกจากรหสผานและผประสงครายสามารถแยกแยะไดงายมาก 2) Chaffing-by-tweaking-digits เปนการแทนทตวอกษรทเปนตวเลขดวยตวเลขทระบบสมขน นำไปแทนทลงในรหสผานทผใชงานกำหนด โดยวธนมขอเสยทจำเปนจะตองใหการกำหนดนโยบายของรหสผานและแกไขสวนของการตงรหสผานของผใชใหรองรบวาตองมตวเลขอยในรหสผานดวย

4.1.1.2 Chaffing-with-a-password-model

จากการศกษาพบวาวธนเปนวธทสามารถสรางรหสผานไดกวางขวาง มความแตกตางกน และมความแขงแรง แตหากกลมคำตางๆ จาก 1,000 หรอ 1,000,000 รป

26

Page 34: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

แบบนน สามารถหาไดงายหรอผประสงครายกมรายการกลมคำแบบเดยวกนกจะสามารถทำใหลวงรถงขอมลรหสผาน (Wi) กอนผานฟงกชนแฮชไดโดยงาย วธแกปญหาของ chaffing-with-a-password-model ไดม Ari Juels and Ronald L. Rivest, Honeywords [1] เขยนฟงกชนไวแลว (ดรายละเอยดไดทภาคผนวก ก) โดยฟงกชนดงกลาวจะมการคำนวนตำแหนงตวอกษรของคำในกลมคำอนนำมาแทนทโดยสามารถตงคาเปอรเซนของการแทนทได

4.1.1.3 Chaffing with “touch nuts” วธนมไวสำหรบใชรวมกบวธอน โดยมจดมงหมายเพอทำใหผประสงครายหยดการหาคาทแทจรงจากคาแฮช เพราะ touch nuts เปนคาทมความยาวมากกวา 40 ตวอกษรหรอบางทอาจสมคาแฮชขนมาเลย จงเปนคำทไมมความหมายมไวสำหรบสรางความสบสนใหผประสงคราย สำหรบผลการทดสอบโดยการทดสอบใชแบบทดสอบเพอเกบสถตการเดาวารหสผานทถกตองของกลมบคคล

4.1.2 Modified-UI password changes

วธนมไวเพอแกปญหาทเกดใน chaffing-by-tail-tweaking ในขอ 4.1.1 โดยวธนระบบจะสมตวเลขเพมเขาไปดานทายของรหสผานใหอตโนมตจาก 57*flavors, 57*flavrbn, 57*flavotz เปน 57*flavors413, 57*flavors761, 57*flavors812 ซงรหสผานทไดมองดแลวแยกแยะรหสผานทถกตองออกไดยากกวา และยงชวยลดปญหาการใชรหสผานซำเดมเมอมนโยบายใหเปลยนรหสผานตามเวลาทกำหนด แตขอเสยของวธนคอ ผใชงานตองจำรหสผานทระบบตงใหเพม และจากการปรบเปลยนสวนตดตอผใช อาจสงผลใหผใชงานสบสน หรอพยายามทจะเปลยนรหสผานใหไดเหมอนเดม โดยสงเปลยนรหสผานใหระบบสมคาชดหลงจนกวาจะไดเหมอนเดม

4.1.3 Hybrid generation

เปนการรวมกนของ chaffing-with-a-password-model กบ chaffing-by-tweaking-digits ซงไดฟงกชนการทำงานทด แตจากการศกษาพบวารปแบบวธนนไมยดหยนเทาทควร จากหวขอ 3.1.3 นนพบวาการกระจาย chaffing-by-tweaking-digits ลงไปในคำทไดจาก chaffing-with-a-password-model นนทำใหรปแบบของรหสผานถกกำหนดวาตวเลขจะอยดานหลงสดของรหสผานเสมอ ถงแมวาจะเปนวธทด แตถาหากดจากรปแบบแลว การนำไปใชงานเมอผใชงานตองการตงรหสผานใหมหรอเปลยนรหสผานนน ตองทำตามรปแบบดงนกอาจทำใหเปนทสงสยได ดงนนจงคดกระบวนการทมความยดหยนทผใชงานสามารถตงรหสผานทยดหยนขน เพยงแตมขอแมวาตองมตวเลขทตดกนอยางนอยสองตว แตจะอยตรงไหนของคำ

27

Page 35: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

กได โดยวธการสราง honeywords ยงคงทำไดเชนเดมโดยกำหนดรหสผานทผใชงานตองการ คอ T576ngUi_65 โดยวธนจะทำการหาคาตวเลขทมากทสด และอยหลงสดของคำ โดยจากรหสผานทกำหนดนคอ 576 จากนนเราใชวธการ chaffing-with-a-password-model ตามปกต และตอดวยการกระจายคำจาก chaffing-by-tweaking-digits และตอดวย chaffing-with-a-password-model อกครงนงแตมจำนวนตวอกษรเทากบ ngUi_65 คอ 7 ตว จะไดรปแบบผลลพท คอ YGH965uisnku8, YGH542uisnku8, … และ UI692kkjuig_6, UI086kkjuig_6, … (ดตวอยางของโปรแกรมไดท ภาคผนวก ค)

4.2 ผลการทดสอบระบบ

4.2.1 ผลการทดสอบระบบการแสดงหนาตางการสมครผใชใหม นำ CIBB ซงเปนระบบกระดานสนทนา มาปรบแตงสวนการสมครผใชใหม แตหนาตางการสมครผใชใหมจะยงคงเหมอนเดม ซงผใชงานจะไมทราบวามระบบ honeyword อยเบองหลง ดงรปท 4.1

รปท 4.1 สวนแสดงผลสำหรบสมครสมาชก

เมอสมครสมาชกแลวระบบจะประมวลผลจากรหสผานทผใชงานสงเขามาในระบบและทำการสราง honeywords โดยจะเกบเปนคาแฮชของรหสผานแตงละรหสผานรวมกบรหสผานจรงทผใชงานสงเขามาในระบบดงรปท 4.2

28

Page 36: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

รปท 4.2 ฐานขอมลเมอมการสมครสมาชกสำเรจ

ทำการวดประสทธภาพการทำงานระหวางระบบปกตกบระบบทใชงาน honeywords ดงรปท 4.3 และ 4.4 จะเหนวาเวลาในการประมวลผลขอมลสวน Base Classes นนมคาใกลเคยงกนเนองจากไมไดมการปรบแตงแกนกลางของ Codeigniter เลย แตเมอดเวลาของการประมวลผลในสวน Controller (User / Join) จะเหนวาระบบปกตนนมการทำงานทเรวกวาระบบทใชงาน honeyword เนองดวยระบบทใชงาน honeyword ตองมการประมวลผลในสวนของการสรางรหสผานเพมเตม สำหรบในสวนของการใชงานหนวยความจำ (Memory usage) นนแนนอนวาหากมการประมวลผลมากกวากตองยอมใชหนวยความจำมากกวา

รปท 4.3 ประสทธภาพของระบบทใช honeywords ของการสมครสมาชก

29

Page 37: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

รปท 4.4 ประสทธภาพของระบบทไมใช honeywords ของการสมครสมาชก

4.2.2 ผลการทดสอบระบบการแสดงหนาตางการตงรหสผานใหม นำ CIBB ซงเปนระบบกระดานสนทนา มาปรบแตงสวนการตงรหสผานผใชใหม แตหนาตางการตงรหสผานผใชใหมจะยงคงเหมอนเดม ซงผใชงานจะไมทราบวามระบบ honeyword อยเบองหลง ดงรปท 4.5

รปท 4.5 สวนแสดงผลสำหรบเขาสระบบ

ทำการวดประสทธภาพการทำงานระหวางระบบปกตกบระบบทใชงาน honeywords ดงรปท 4.6 และ 4.7 จะเหนวาเวลาในการประมวลผลขอมลสวน Base Classes นนมคาใกลเคยงกนเนองจากไมไดมการปรบแตงแกนกลางของ Codeigniter เลย แตเมอดเวลาของการประมวลผลในสวน Controller (User / Join) จะเหนวาระบบปกตนนมการทำงานทเรวกวาระบบทใชงาน honeyword เนองดวยระบบทใชงาน honeyword ตองมการประมวลผลในสวนของการสรางรหสผานเพมเตม สำหรบในสวนของการใชงานหนวยความจำ (Memory usage) นนแนนอนวาหากมการประมวลผลมากกวากตองยอมใชหนวยความจำมากกวา

30

Page 38: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

รปท 4.6 ประสทธภาพของระบบทใช honeywords ของการตงรหสผานใหม

รปท 4.7 ประสทธภาพของระบบทไมใช honeywords ของการตงรหสผานใหม

4.2.3 ผลการทดสอบการเขาสระบบ

นำ CIBB มาปรบแตงสวนการเขาสระบบ แตหนาตางการเขาสระบบจะยงคงเหมอนเดม และผใชงานจะไมทราบวามระบบ honeyword ทำงานอยเบองหลง ซงจะไมสงผลตอผใชงานและผประสงครายกจะไมทราบวามระบบ honeyword อยเลย ดงรปท 4.5

รปท 4.8 สวนแสดงผลสำหรบเขาสระบบ

31

Page 39: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

ทำการวดประสทธภาพการทำงานระหวางระบบปกตกบระบบทใชงาน honeywords ดงรปท 4.6 และ 4.7 จะเหนวาเวลาในการประมวลผลขอมลสวน Base Classes นนมคาใกลเคยงกนเนองจากไมไดมการปรบแตงแกนกลางของ Codeigniter เลย แตเมอดเวลาของการประมวลผลในสวน Controller (User / Join) จะเหนวาระบบปกตนนมการทำงานทเรวกวาระบบทใชงาน honeyword เนองดวยระบบทใชงาน honeyword ตองมการประมวลผลในสวนของการสรางรหสผานเพมเตม สำหรบในสวนของการใชงานหนวยความจำ (Memory usage) นนแนนอนวาหากมการประมวลผลมากกวากตองยอมใชหนวยความจำมากกวา

รปท 4.9 แสดงประสทธภาพของระบบทใช honeyword ของการเขาสระบบ

รปท 4.10 แสดงประสทธภาพของระบบทไมใช honeywords ของการเขาสระบบ

4.2.4 ผลการทดสอบใหผประสงครายไดรหสผานไปแลวนำรหสผานเขาสระบบ การทดสอบไดลองนำคาแฮชทเปน honeywords คอ sha256 4fb365e2901e492fb9552523c98bfd2bfcc9d1b0b20af6c24acd38c641c33d15 มาทำการหาคารหสผานดวยเครองมอ https://crackstation.net/ ซงเปนเวบแอปพลเคชนทไดรวบรวมกลมคำวามคาแฮชคอคาใด หากเราใสคาแฮชลงในระบบและในฐานขอมลของเวบแอปพลเคชนดงกลาวมขอมลจะแสดงผลดงรปท 4.8

32

Page 40: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

รปท 4.11 แสดงผลลพธของการนำแฮชมาสมหาคาจรง

เมอลองทำการเขาสระบบดวยรหสผานทเปน honeywords สวนผประสงครายทใช honeywords เขาสระบบนน โปรแกรมตวอยางนจะไมอนญาตใหผประสงครายเขาสระบบ โดยจะแสดงขอความขอมลชอผใชหรอรหสผานไมถกตอง และโปรแกรมตวอยางจะทำการเกบไอพของผประสงคราย ทำใหผดแลระบบทราบแลววาระบบทดแลอยนนมชองโหวทสามารถทำใหผประสงครายรถงรหสผานไดดงรปท 4.9

รปท 4.12 แสดงตารางฐานขอมลเมอผประสงครายใช honeywords เขาสระบบ

4.3 ผลการทดสอบความนาจะเปนในการเดารหสผาน

ทดสอบโดยการสรางแบบสอบถามเพอเกบสถตในการเดารหสผาน เพอเปนขอมลวาการเดารหสผานใหถกตองตงครงแรกนนมความเปนไปไดมากนอยเพยงใดโดยแบงการทดสอบออกดงน

4.3.1 ทดสอบสถตการเดาวาคาแฮชใดคอรหสผานทถกตอง โดยการสรางรายการของคาแฮชขนมา 20 คา และสมกลมคนเพอมาทำแบบทดสอบโดยการเลอกคาแฮช 1 คา จาก 20 คา ดงรปท 4.10 จากนนจะทำการเกบขอมลดงกลาวและนำมาสรปผลเปนรอยะของความนาจะเปนทกลมคนมโอกาสทจะเดารหสผานจากคาแฮชไดถกตองตงแตครงแรก โดยกลมคนทจะทำแบบทดสอบจะเปนกลมบคคลทมความรและไมมความรในระบบคอมพวเตอร เพอแสดงใหเหนวาเปนการเดาสมจรงๆ

33

Page 41: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

รปท 4.13 แบบทดสอบเกบสถตการเดาวาคาแฮชใดคอรหสผานทถกตอง

34

Page 42: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

ผลการสำรวจแบบทดสอบเกบสถตการเดาวาคาแฮชใดคอรหสผานทถกตอง

24/2/2557, 21:32:02 [email protected] หญง 21 - 30 ป ไดเลอก 2733ab3bc0e4efc7fe290c1db4c5b15577dbab475aaeec7d331308e1d9cad5ed

24/2/2557, 21:35:54 [email protected] ชาย 21 - 30 ป ไดเลอก 8d975042ced104d6cd6c32c4ea2498d04a930927afd89367a5ed01717ff78c8c

24/2/2557, 21:36:33 [email protected] ชาย 21 - 30 ป ไดเลอก 8d975042ced104d6cd6c32c4ea2498d04a930927afd89367a5ed01717ff78c8c

24/2/2557, 21:37:28 [email protected] ชาย 21 - 30 ป ไดเลอก 4841306bc1cd4d625b1e2f34a038fc9c2fc5f85bd53ab4c6ef69b62094a90a8e

24/2/2557, 21:37:42 [email protected] หญง 21 - 30 ป ไดเลอก 4841306bc1cd4d625b1e2f34a038fc9c2fc5f85bd53ab4c6ef69b62094a90a8e

24/2/2557, 21:50:25 [email protected] หญง 11 - 20 ป ไดเลอก 5014bb72ef8ecd3a41113c596a2bc4aa8875b34f04cbb87fcc4e5c66d03596bc

24/2/2557, 21:52:30 [email protected] ชาย 21 - 30 ป ไดเลอก 634ca9597fd6299792f13cb1346e1bd4c1c38aee9378d27139e549291ecbb189

24/2/2557, 21:58:04 [email protected] หญง 21 - 30 ป ไดเลอก 0847750a46670ce201b981d2c7eb8e302ed79e4d58c3d679f28cd411dea30bae

24/2/2557, 22:06:02 [email protected] หญง 31 ปขนไป ไดเลอก 57b01d0dca935b217e44cfdae32f999ccb0bbe2a127132885e6c8ddc584a4988

24/2/2557, 22:12:47 [email protected] ชาย 31 ปขนไป ไดเลอก dd6436575c1e460025417a12b49fc8a7d6e5ac4660d578f06c6699be61158cdb

24/2/2557, 23:38:30 [email protected] ชาย 21 - 30 ป ไดเลอก 0847750a46670ce201b981d2c7eb8e302ed79e4d58c3d679f28cd411dea30bae

35

Page 43: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

25/2/2557, 0:12:44 [email protected] ชาย 21 - 30 ป ไดเลอก 8a89c95fbec583d8ccab219a3086f846a1507c57e1dd3fdbaf014c2be3d70bf6

25/2/2557, 0:39:40 [email protected] ชาย 21 - 30 ป ไดเลอก f01c94e5d43e2512d205e39760e0eebfb505431a002761a47f16b78e81c11fde

25/2/2557, 6:32:30 [email protected] ชาย 21 - 30 ป ไดเลอก fb2ed61b53645133dfc1238852d3402af9a6eb1b6aba4b9d3e1e1d5545292dc5

25/2/2557, 7:52:47 [email protected] ชาย 21 - 30 ป ไดเลอก b6cf39efe0a491758ba75a8082a07cf62b5430b26591f739ef9d374fd3930dff

25/2/2557, 9:52:00 [email protected] หญง 21 - 30 ป ไดเลอก 57b01d0dca935b217e44cfdae32f999ccb0bbe2a127132885e6c8ddc584a4988

25/2/2557, 12:49:14 [email protected] ชาย 21 - 30 ป ไดเลอก dd6436575c1e460025417a12b49fc8a7d6e5ac4660d578f06c6699be61158cdb

25/2/2557, 20:49:27 [email protected] ชาย 21 - 30 ป ไดเลอก 0847750a46670ce201b981d2c7eb8e302ed79e4d58c3d679f28cd411dea30bae

25/2/2557, 21:08:52 [email protected] หญง 11 - 20 ป ไดเลอก 1893f26ec25fb3444a5895644d805b1984f7e51a3ba6bd2dbd7b47a0c3553dc0

26/2/2557, 22:20:25 [email protected] ชาย 11 - 20 ป ไดเลอก 0a8a59e3f7b64d9e4fc182b5cfb5ee0e86a7470dd3a67bb707d5a05c96fdb5f5

จากแบบทดสอบไดผทำโครงงานไดกำหนดคาแฮช sha256 ดงตอไปน 0847750a46670ce201b981d2c7eb8e302ed79e4d58c3d679f28cd411dea30bae คอรหสผานทถกตองโดยมาจากคำวา “formac” นำมาผานฟงกชนแฮช sha256 จากผลการสำรวจจากกลมบคคลพบวามการเดาถก 3 คน จาก 20 คน ซงคดเปนรอยละ 15 เมอวดวามการเดารหสผานถกไดครงแรกทมการสมเลอกของบคคล ซงเปนผลทยอมรบไดในจำนวนคาแฮช 20 คา โดยยงมรายการของคาแฮชมากขนจะสงผลใหรอยละของการเดาวาคาแฮชใดคอคาทถกในครงแรกมคาลดลง

36

Page 44: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

4.3.2 ทดสอบสถตการเดาวารหสผานใดคอรหสผานทถกตอง โดยการสรางรายการของคำขนมาจากวธ chaffing-by-tail-tweaking ขนมา 20 คำ และสมกลมคนเพอมาทำแบบทดสอบโดยการเลอกคำ 1 คำ จาก 20 คำ ดงรปท 4.11 จากนนจะทำการเกบขอมลดงกลาวและนำมาสรปผลเปนรอยะของความนาจะเปนทกลมคนมโอกาสทจะเดารหสผานจากกลมคำไดถกตองตงแตครงแรก โดยกลมคนทจะทำแบบทดสอบจะเปนกลมบคคลทมความรและไมมความรในระบบคอมพวเตอร เพอแสดงใหเหนวาเปนการเดาสมจรงๆ

รปท 4.14 แบบทดสอบเกบสถตการเดาวารหสผานใดคอรหสผานทถกตอง ดวยการสรางจากวธ Chaffing-by-tail-tweaking

37

Page 45: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

4.3.3 ทดสอบสถตการเดาวารหสผานใดคอรหสผานทถกตอง โดยการสรางรายการของคำขนมาจากวธ chaffing-by-tweaking-digits ขนมา 20 คำ และสมกลมคนเพอมาทำแบบทดสอบโดยการเลอกคำ 1 คำ จาก 20 คำ ดงรปท 4.12 จากนนจะทำการเกบขอมลดงกลาวและนำมาสรปผลเปนรอยะของความนาจะเปนทกลมคนมโอกาสทจะเดารหสผานจากกลมคำไดถกตองตงแตครงแรก โดยกลมคนทจะทำแบบทดสอบจะเปนกลมบคคลทมความรและไมมความรในระบบคอมพวเตอร เพอแสดงใหเหนวาเปนการเดาสมจรงๆ

รปท 4.15 แบบทดสอบเกบสถตการเดาวารหสผานใดคอรหสผานทถกตอง ดวยการสรางจากวธ Chaffing-by-tweaking-digits

38

Page 46: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

4.3.4 ทดสอบสถตการเดาวารหสผานใดคอรหสผานทถกตอง โดยการสรางรายการของคำขนมาจากวธ chaffing-with-a-password-model ขนมา 20 คำ และสมกลมคนเพอมาทำแบบทดสอบโดยการเลอกคำ 1 คำ จาก 20 คำ ดงรปท 4.12 จากนนจะทำการเกบขอมลดงกลาวและนำมาสรปผลเปนรอยะของความนาจะเปนทกลมคนมโอกาสทจะเดารหสผานจากกลมคำไดถกตองตงแตครงแรก โดยกลมคนทจะทำแบบทดสอบจะเปนกลมบคคลทมความรและไมมความรในระบบคอมพวเตอร เพอแสดงใหเหนวาเปนการเดาสมจรงๆ

รปท 4.16 แบบทดสอบเกบสถตการเดาวารหสผานใดคอรหสผานทถกตอง ดวยการสรางจากวธ Chaffing-with-a-password-model

39

Page 47: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

ผลการสำรวจ

26/2/2557, 10:26:50 [email protected] เลอกคำตอบตงน 1) เลอกรหสผานจาก Chaffing-by-tail-tweaking คอ BG+7r05 2) เลอกรหสผานจาก Chaffing-by-tweaking-digits คอ 89*flavors 3) เลอกรหสผานจาก Chaffing-with-a-password-model คอ #NDYRODD_!! 4) เลอกคำตอบ พยายามหาทางใหได

26/2/2557, 22:22:00 [email protected] เลอกคำตอบดงน 1) เลอกรหสผานจาก Chaffing-by-tail-tweaking คอ BG+7i65 2) เลอกรหสผานจาก Chaffing-by-tweaking-digits คอ 58*flavors 3) เลอกรหสผานจาก Chaffing-with-a-password-model คอ mice3blind 4) เลอกคำตอบ ขามไปทำตวอนกอน

27/2/2557, 1:55:03 [email protected] เลอกคำตอบดงน 1) เลอกรหสผานจาก Chaffing-by-tail-tweaking คอ BG+7b44 2) เลอกรหสผานจาก Chaffing-by-tweaking-digits คอ 85*flavors 3) เลอกรหสผานจาก Chaffing-with-a-password-model คอ aiwkme523 4) เลอกคำตอบ ขามไปทำตวอนกอน

27/2/2557, 9:26:15 [email protected] เลอกคำตอบดงน 1) เลอกรหสผานจาก Chaffing-by-tail-tweaking คอ BG+7c01 2) เลอกรหสผานจาก Chaffing-by-tweaking-digits คอ 89*flavors 3) เลอกรหสผานจาก Chaffing-with-a-password-model คอ a71ger 4) เลอกคำตอบ พยายามหาทางใหได

27/2/2557, 11:20:33 [email protected] เลอกคำตอบดงน 1) เลอกรหสผานจาก Chaffing-by-tail-tweaking คอ BG+7r05 2) เลอกรหสผานจาก Chaffing-by-tweaking-digits คอ 12*flavors 3) เลอกรหสผานจาก Chaffing-with-a-password-model คอ aiwkme523 4) เลอกคำตอบ พยายามหาทางใหได

28/2/2557, 17:06:17 [email protected] เลอกคำตอบดงน 1) เลอกรหสผานจาก Chaffing-by-tail-tweaking คอ BG+7x08 2) เลอกรหสผานจาก Chaffing-by-tweaking-digits คอ 57*flavors 3) เลอกรหสผานจาก Chaffing-with-a-password-model คอ pizzhemix01

40

Page 48: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

4) เลอกคำตอบ พยายามหาทางใหได

28/2/2557, 17:26:00 [email protected] เลอกคำตอบดงน 1) เลอกรหสผานจาก Chaffing-by-tail-tweaking คอ BG+7t92 2) เลอกรหสผานจาก Chaffing-by-tweaking-digits คอ 12*flavors 3) เลอกรหสผานจาก Chaffing-with-a-password-model คอ aj1aob12 4) เลอกคำตอบ ลมเลก

28/2/2557, 17:26:56 [email protected] เลอกคำตอบดงน 1) เลอกรหสผานจาก Chaffing-by-tail-tweaking คอ BG+7b44 2) เลอกรหสผานจาก Chaffing-by-tweaking-digits คอ 34*flavors Sb123 4) เลอกคำตอบ ลมเลก

28/2/2557, 23:20:03 [email protected] เลอกคำตอบดงน 1) เลอกรหสผานจาก Chaffing-by-tail-tweaking คอ BG+7m55 2) เลอกรหสผานจาก Chaffing-by-tweaking-digits คอ 57*flavors 3) เลอกรหสผานจาก Chaffing-with-a-password-model คอ 1reapc 4) เลอกคำตอบ พยายามหาทางใหได

1/3/2557, 0:23:03 [email protected] เลอกคำตอบดงน 1) เลอกรหสผานจาก Chaffing-by-tail-tweaking คอ BG+7f88 2) เลอกรหสผานจาก Chaffing-by-tweaking-digits คอ 02*flavors 3) เลอกรหสผานจาก Chaffing-with-a-password-model คอ 6feefec70f1e2c06dbe5439251ddacf17ea72a50fddcc8236e66ce02ab446445 (Hash value unbreakable) 4) เลอกคำตอบ ลมเลก

จาการทดสอบไดกำหนดรหสผานทถกตองไวคอ BG+7k29, 37*flavors, aj1abo12 ตามลำดบ ดงนน

- วธ chaffing-by-tail-tweaking ไมมผเดาถกเลย คดเปนรอยละ 0 ในการเดารหสผานใหถกในครงแรก

- วธ chaffing-by-tweaking-digits ไมมผเดาถกเลย คดเปนรอยละ 0 ในการเดารหสผานใหถกในครงแรก

41

Page 49: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

- วธ chaffing-with-a-password-model มผเดาถก 1 คน คดเปนรอยละ 10 ในการเดารหสผานใหถกในครงแรก

ซงเปนรอยละทนาพอใจสำหรบรหสผาน 20 คำในแตละชด

42

Page 50: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

บทท 5

สรปผลการดำเนนงาน

การศกษาวธการสราง honeywords ดวยวธตางๆ สรปไดวา รอยละของการเดาสมรหสผานทถกตองในครงแรกนนมคานอยมาก ดงนนวธการ honeywords จงเปนวธทชวยตรวจสอบการทผประสงครายขโมยขอมลรหสผานไปและนำรหสผานนนมาเขาสระบบได และวธทดทสดของการสรางแถวขอมลของรหสผานคอ hybrid generation เนองดวยเปนการนำประโยชนของทง chaffing-with-a-password-model กบ chaffing-by-tweaking-digits ทำใหมความแตกตางของรหสผานมากยงขน แตทงนกตองพงนโยบายการตงรหสผานดวย เนองจากวธนตองมตวเลขประกอบอยในรหสผาน โดยตามวธทไดทำการศกษาสามารถนำไปพฒนาไดอยางเชน การทผใชงานใสตวเลขมาตรงกลางคำของรหสผาน หรอผใชงานใสตวเลขหลายตวตดกนในรหสผาน ระบบจะสามารถตดสนไดวาจะใชคำทมตวเลขตอกนยาวทสดไมเกน 3 ตว และเปนชดตวเลขทมคามากทสดมาใชวธ chaffing-by-tweaking-digits สวนคำกอนหนาหรอหลงกใช chaffing-with-a-password-model ตามปกต ซงวธนจะยงสรางความแตกตางและสบสนใหกบรหสผานไดมากยงขน (ดตวอยางของโปรแกรมไดท ภาคผนวก ค) สำหรบตวอยางโปรแกรมทสรางขนนนพบวาเวลาในการประมวลผลทำงานชาลงกวาปกตมากถง 8 เทา แตสวนทชาลงเปนสวนทใชในการสมครสมาชกหรอการเขาสระบบซงผใชงานไมไดใชบอยนก เพราะเมอผใชงานเขาสระบบหรอสมครสมาชกผใชงานกจะเขาไปในระบบสวนอนๆตอไป การศกษานมจดทนาสนใจสามารถนำไปพฒนาตอได เชน วธการททำใหไมตองเกบรหสผานทถกตองจรงๆลงในระบบเลย โดยการใช chaffing-by-tweaking-digits สมคาตวเลขเปนตวเลขอนแทน กอนทำการแฮชและเกบลงในฐานขอมล แตจะมปญหาตรงทประสทธภาพจะชาลงเปนอยางมากในกระบวนการเขาสระบบและสมครสมาชก เนองจากตองทำการหาคาตวเลขทอยในรหสผานจรงใหตรง ซงตองอาศยการ brute force เทานน เพราะการทำแฮชเปน one way function ไมสามารถทำยอนกลบได

43

Page 51: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

เอกสารอางอง

[1] Ari Juels and Ronald L. Rivest, Honeywords: Making Password-Cracking Detectable, [Online]. Available : http://people.csail.mit.edu/rivest/honeywords/paper.pdf

[2] Microsoft TechNet Library, Password must meet complexity requirements, [Online]. Available : http://technet.microsoft.com/en-us/library/hh994562(v=ws.10).aspx

[3] H. Bojinov and E. Bursztein, Kamouflage: loss-resistant password management In ESORICS, pages 286-302, 2010, [Online]. Available : http://crypto.stanford.edu/~dabo/pubs/papers/passwordmgr.pdf

[4] Y. Zhang,F. Monrose and M. K. Reiter, The security of modern password expiration: and algorithmic framework and empirical analysis. In ACM CCS, pages 176-186, 2010, [Online]. Available : http://cs.unc.edu/~fabian/papers/PasswordExpire.pdf

[5] โรงเรยนสวนกหลาบวทยาลย รงสต, เอกสารประกอบการเรยน เรอง ความนาจะเปน, [Online]. Available : http://www.skr.ac.th/link/web_education/web_teacher/matt/chinawat/najapen/najapen.pdf

[6] Weisstein, Eric W., Lexicographic Order, [Online]. Available : http://mathworld.wolfram.com/LexicographicOrder.html

[7] CIBB basic forum with Codeigniter and Twitter Bootstrap, [Online]. Available : http://www.phpcmsframework.com/2014/05/cibb-basic-forum-with-codeigniter-and.html

[8] CodeIgniter Rest Server, [Online]. Available : https://github.com/chriskacerguis/codeigniter-restserver

44

Page 52: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

ภาคผนวก ก

ตวอยางฟงกชน Gen

ก- 1

Page 53: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

ฟงกชน Gen สำหรบวธ chaffing-with-a-password-model แบบแกไขปญหากรณผประสงครายมรายการของกลมคำเชนเดยวกน

#! /usr/local/bin/python # gen.py # password generation program (intended for generating ``honeywords'') # Ronald L. Rivest and Ari Juels # 3/18/13 # # Usage: python gen.py n f1 f2 ... fk # where n = number of passwords desired [optional; default = 19] # fi = file containing lists of passwords to be used as models, i = 1, 2, ..., k # (if no files given, short internal list used) # passwords separated by whitespace (could be one, or many, per line) # The program outputs n passwords, one per line # # Example: assuming all password files are in subdirectory "passwords" # python gen.py 20 passwords/* # # Should run OK with python 2.7 (including pypy) and python 3.3 # # This version of the program does not implement any password-composition restrictions, # such as a minimum-length on passwords; this could be easily added.

# Software licence is ``MIT License'': """ Copyright (C) 2013 Ronald L. Rivest and Ari Juels.

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

ก- 2

Page 54: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. """

############################################################################## #### PARAMETERS CONTROLLING PASSWORD GENERATION (aside from password files)

tn = 0.08 # probability that a generated password is a ``tough nut'' # (password of length 40 of random chars) # otherwise following parameters apply

# probabilities p1, p2, p3 add up to 1 (heuristically chosen) p1 = 0.10 # chance of a "random" char at this position (see code) p2 = 0.40 # chance of a markov-order-1 char at this position (see code) p3 = 0.50 # choice of continuing copying from same word

q = 0.03 # add 3% noise words to list of passwords

# syntax parameters for a password nL = 0 # password must have at least nL letters nD = 0 # password must have at least nD digit nS = 0 # password must have at least nS special (non-letter non-digit)

ก- 3

Page 55: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

#### END OF PARAMETERS CONTROLLING PASSWORD GENERATION ##############################################################################

import random import sys import string

# A short list of high-probability passwords that is used to initialize the # password list in case no password files are provided. high_probability_passwords = """ 123456 1234567 12345678 123asdf Admin admin administrator asdf123 backup backupexec changeme clustadm cluster compaq default dell dmz domino exchadm exchange ftp gateway guest lotus money

ก- 4

Page 56: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

notes office oracle pass password password! password1 print qwerty replicate seagate secret sql sqlexec temp temp! temp123 test test! test123 tivoli veritas virus web www KKKKKKK """

def read_password_files(filenames): """ Return a list of passwords in all the password file(s), plus a proportional (according to parameter q) number of "noise" passwords. """ pw_list = [ ] if len(filenames)>0: for filename in filenames:

ก- 5

Page 57: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

if sys.version_info[0] == 3: lines = open(filename,"r",errors='ignore').readlines() else: lines = open(filename,"r").readlines() for line in lines: pw_list.extend( line.split() ) else: lines = high_probability_passwords.split() for line in lines: pw_list.extend( line.split() ) # add noise passwords pw_list.extend( noise_list(int(q*len(pw_list))) ) return pw_list

def noise_list(n): """ Return a list of n ``noise'' passwords, to get better coverage of lengths and character """ chars = string.ascii_letters + string.digits + string.punctuation nchars = len(chars) L = [ ] for i in range(n): w = [ ] k = random.randrange(1,18) for j in range(k): w.append(chars[random.randrange(nchars)]) w = ''.join(w) L.append(w) return L

def tough_nut(): """ Return a ``tough nut'' password """ chars = string.ascii_letters + string.digits + string.punctuation nchars = len(chars)

ก- 6

Page 58: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

w = [ ] k = 40 for j in range(k): w.append(chars[random.randrange(nchars)]) w = ''.join(w) return w

def syntax(p): """ Return True if password p contains at least nL letters, nD digits, and nS specials (others) """ global nL, nD, nS L = 0 D = 0 S = 0 for c in p: if c in string.ascii_letters: L += 1 elif c in string.digits: D += 1 else: S += 1 if L >= nL and D >= nD and S >= nS: return True return False

def make_password(pw_list): """ make a random password like those in given password list """ if random.random() < tn: return tough_nut() # start by choosing a random password from the list # save its length as k; we'll generate a new password of length k k = len(random.choice(pw_list))

ก- 7

Page 59: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

# create list of all passwords of length k; we'll only use those in model L = [ pw for pw in pw_list if len(pw) == k ] nL = len(L) # start answer with the first char of that random password # row = index of random password being used row = random.randrange(nL) ans = L[row][:1] # copy first char of L[row] j = 1 # j = len(ans) invariant while j < k: # build up ans char by char p = random.random() # randomly decide what to do next, based on p # here p1 = prob of action 1 # p2 = prob of action 2 # p3 = prob of action 3 # p1 + p2 + p3 = 1.00 if p<p1: action = "action_1" elif p<p1+p2: action = "action_2" else: action = "action_3" if action == "action_1": # add same char that some random word of length k has in this position row = random.randrange(nL) ans = ans + L[row][j] j = j + 1 elif action == "action_2": # take char in this position of random word with same previous char LL = [ i for i in range(nL) if L[i][j-1]==ans[-1] ] row = random.choice(LL) ans = ans + L[row][j] j = j + 1 elif action == "action_3": # stick with same row, and copy another character ans = ans + L[row][j] j = j + 1 if (nL > 0 or nD > 0 or nS > 0) and not syntax(ans):

ก- 8

Page 60: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

return make_password(pw_list) return ans def generate_passwords( n, pw_list ): """ print n passwords and return list of them """ ans = [ ] for t in range( n ): pw = make_password(pw_list) ans.append( pw ) return and

def main(): # get number of passwords desired if len(sys.argv) > 1: n = int(sys.argv[1]) else: n = 19 # read password files filenames = sys.argv[2:] # skip "gen.py" and n pw_list = read_password_files(filenames) # generate passwords new_passwords = generate_passwords(n,pw_list) # shuffle their order random.shuffle(new_passwords) # print if desired printing_wanted = True if printing_wanted: for pw in new_passwords: print (pw) # import cProfile # cProfile.run("main()") main()

ก- 9

Page 61: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

ภาคผนวก ข ตวอยางฟงกชน Gen (Hybrid)

ข- 1

Page 62: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

ฟงกชน Gen สำหรบวธ Hybrid generation แบบประยกตใหรปแบบรหสผานมความหยดหยนตอผใชงาน

#! /usr/local/bin/python

# gen.py

# password generation program (intended for generating ``honeywords'')

# Santi Lertsumran

# 2/27/14

# Feature : Recieve input from user

# Add function check minimum-length >= 8

# Add function input validation minimum nDD. Example: Pkkkt11

# Add function tweaking-digits

# Change to support Hybrid method. Example: a x b ; a number of chaffing-with-a-password-model, b number of chaffing-by-tweaking-digits

#

# Usage: python gen.py password a b f1 f2 ... fk

# where password = input from user.

# a = number of passwords desired (chaffing-with-a-password-model) [optional; default = 10]

# b = number of passwords desired (chaffing-by-tweaking-digits) [optional; default = 10]

# fi = file containing lists of passwords to be used as models, i = 1, 2, ..., k

# (if no files given, short internal list used)

# passwords separated by whitespace (could be one, or many, per line)

# The program outputs a x b passwords, one per line

ข- 2

Page 63: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

#

# Example: assuming all password files are in subdirectory "passwords"

# python gen.py password 20 20 passwords/*

###############################################################################################

# gen.py

# password generation program (intended for generating ``honeywords'')

# Ronald L. Rivest and Ari Juels

# 3/18/13

#

# Usage: python gen.py n f1 f2 ... fk

# where n = number of passwords desired [optional; default = 19]

# fi = file containing lists of passwords to be used as models, i = 1, 2, ..., k

# (if no files given, short internal list used)

# passwords separated by whitespace (could be one, or many, per line)

# The program outputs n passwords, one per line

#

# Example: assuming all password files are in subdirectory "passwords"

# python gen.py 20 passwords/*

#

# Should run OK with python 2.7 (including pypy) and python 3.3

#

# This version of the program does not implement any password-composition restrictions,

# such as a minimum-length on passwords; this could be easily added.

ข- 3

Page 64: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

# Software licence is ``MIT License'':

"""

Copyright (C) 2013 Ronald L. Rivest and Ari Juels.

Permission is hereby granted, free of charge, to any person obtaining

a copy of this software and associated documentation files (the

"Software"), to deal in the Software without restriction, including

without limitation the rights to use, copy, modify, merge, publish,

distribute, sublicense, and/or sell copies of the Software, and to

permit persons to whom the Software is furnished to do so, subject to

the following conditions:

The above copyright notice and this permission notice shall be

included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,

EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF

MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND

NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE

LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION

OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION

ข- 4

Page 65: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

"""

##############################################################################

#### PARAMETERS CONTROLLING PASSWORD GENERATION (aside from password files)

tn = 0.08 # probability that a generated password is a ``tough nut''

# (password of length 40 of random chars)

# otherwise following parameters apply

# probabilities p1, p2, p3 add up to 1 (heuristically chosen)

p1 = 0.10 # chance of a "random" char at this position (see code)

p2 = 0.40 # chance of a markov-order-1 char at this position (see code)

p3 = 0.50 # choice of continuing copying from same word

q = 0.03 # add 3% noise words to list of passwords

# syntax parameters for a password

nL = 0 # password must have at least nL letters

nD = 0 # password must have at least nD digit

nS = 0 # password must have at least nS special (non-letter non-digit)

#### END OF PARAMETERS CONTROLLING PASSWORD GENERATION

ข- 5

Page 66: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

##############################################################################

import random

import sys

import string

import re

# A short list of high-probability passwords that is used to initialize the

# password list in case no password files are provided.

high_probability_passwords = """

123456

1234567

12345678

123asdf

Admin

admin

administrator

asdf123

backup

backupexec

changeme

clustadm

cluster

ข- 6

Page 67: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

compaq

default

dell

dmz

domino

exchadm

exchange

ftp

gateway

guest

lotus

money

notes

office

oracle

pass

password

password!

password1

print

qwerty

replicate

seagate

secret

ข- 7

Page 68: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

sql

sqlexec

temp

temp!

temp123

test

test!

test123

tivoli

veritas

virus

web

www

KKKKKKK

"""

def read_password_files(filenames):

"""

Return a list of passwords in all the password file(s), plus

a proportional (according to parameter q) number of "noise" passwords.

"""

pw_list = [ ]

if len(filenames)>0:

for filename in filenames:

ข- 8

Page 69: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

if sys.version_info[0] == 3:

lines = open(filename,"r",errors='ignore').readlines()

else:

lines = open(filename,"r").readlines()

for line in lines:

pw_list.extend( line.split() )

else:

lines = high_probability_passwords.split()

for line in lines:

pw_list.extend( line.split() )

# add noise passwords

pw_list.extend( noise_list(int(q*len(pw_list))) )

return pw_list

def noise_list(n):

"""

Return a list of n ``noise'' passwords, to get better coverage of lengths and character

"""

chars = string.ascii_letters + string.digits + string.punctuation

nchars = len(chars)

L = [ ]

for i in range(n):

w = [ ]

k = random.randrange(1,18)

ข- 9

Page 70: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

for j in range(k):

w.append(chars[random.randrange(nchars)])

w = ''.join(w)

L.append(w)

return L

def tough_nut():

"""

Return a ``tough nut'' password

"""

chars = string.ascii_letters + string.digits + string.punctuation

nchars = len(chars)

w = [ ]

k = 40

for j in range(k):

w.append(chars[random.randrange(nchars)])

w = ''.join(w)

return w

def syntax(p):

"""

Return True if password p contains at least nL letters, nD digits, and nS specials (others)

"""

ข- 10

Page 71: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

global nL, nD, nS

L = 0

D = 0

S = 0

for c in p:

if c in string.ascii_letters:

L += 1

elif c in string.digits:

D += 1

else:

S += 1

if L >= nL and D >= nD and S >= nS:

return True

return False

def minimum_tail(n):

"""

Return addtional mini tail password

"""

chars = string.ascii_letters + string.digits + string.punctuation

nchars = len(chars)

w = [ ]

k = n

for j in range(k):

ข- 11

Page 72: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

w.append(chars[random.randrange(nchars)])

w = ''.join(w)

return w

def random_tail_pw(n,pw_list):

"""

make a random tail password if n != 0

"""

if n == 0:

return ''

elif n < 4:

return minimum_tail(n)

k = n

# create list of all passwords of length k; we'll only use those in model

L = [ pw for pw in pw_list if len(pw) == k ]

nL = len(L)

# start answer with the first char of that random password

# row = index of random password being used

row = random.randrange(nL)

ans = L[row][:1] # copy first char of L[row]

j = 1 # j = len(ans) invariant

while j < k: # build up ans char by char

p = random.random() # randomly decide what to do next, based on p

ข- 12

Page 73: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

# here p1 = prob of action 1

# p2 = prob of action 2

# p3 = prob of action 3

# p1 + p2 + p3 = 1.00

if p<p1:

action = "action_1"

elif p<p1+p2:

action = "action_2"

else:

action = "action_3"

if action == "action_1":

# add same char that some random word of length k has in this position

row = random.randrange(nL)

ans = ans + L[row][j]

j = j + 1

elif action == "action_2":

# take char in this position of random word with same previous char

LL = [ i for i in range(nL) if L[i][j-1]==ans[-1] ]

row = random.choice(LL)

ans = ans + L[row][j]

j = j + 1

elif action == "action_3":

# stick with same row, and copy another character

ans = ans + L[row][j]

ข- 13

Page 74: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

j = j + 1

return ans

def random_digits(n,b):

"""

Return a random n digits

"""

w = [ ]

if n == 3:

w = random.sample(range(999), b)

elif n == 2:

w = random.sample(range(99), b)

#chars = string.digits

#nchars = len(chars)

#w = [ ]

#k = n

#for j in range(k):

# w.append(chars[random.randrange(nchars)])

#w = ''.join(w)

print w

return w

def make_password(pw_list):

"""

ข- 14

Page 75: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

make a random password like those in given password list

"""

if random.random() < tn:

return tough_nut()

# start by choosing a random password from the list

# save its length as k; we'll generate a new password of length k

k = len(random.choice(pw_list))

# create list of all passwords of length k; we'll only use those in model

L = [ pw for pw in pw_list if len(pw) == k ]

nL = len(L)

# start answer with the first char of that random password

# row = index of random password being used

row = random.randrange(nL)

ans = L[row][:1] # copy first char of L[row]

j = 1 # j = len(ans) invariant

while j < k: # build up ans char by char

p = random.random() # randomly decide what to do next, based on p

# here p1 = prob of action 1

# p2 = prob of action 2

# p3 = prob of action 3

# p1 + p2 + p3 = 1.00

if p<p1:

action = "action_1"

elif p<p1+p2:

ข- 15

Page 76: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

action = "action_2"

else:

action = "action_3"

if action == "action_1":

# add same char that some random word of length k has in this position

row = random.randrange(nL)

ans = ans + L[row][j]

j = j + 1

elif action == "action_2":

# take char in this position of random word with same previous char

LL = [ i for i in range(nL) if L[i][j-1]==ans[-1] ]

row = random.choice(LL)

ans = ans + L[row][j]

j = j + 1

elif action == "action_3":

# stick with same row, and copy another character

ans = ans + L[row][j]

j = j + 1

if (nL > 0 or nD > 0 or nS > 0) and not syntax(ans):

return make_password(pw_list)

return ans

def generate_passwords( a, b, pw_list, fix_index ):

""" print n passwords and return list of them """

ข- 16

Page 77: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

rd = random_digits(fix_index[0],b)

ans = [ ]

for t in range( a ):

pw = make_password(pw_list)

tail_pw = random_tail_pw(fix_index[1],pw_list)

if len(pw) < 40:

for i in rd:

if fix_index[0] == 3:

if i > 9 and i < 100:

rd_s = '0' + str(i)

elif i < 10:

rd_s = '00' + str(i)

else:

rd_s = str(i)

pw2 = pw + rd_s + tail_pw

ans.append( pw2 )

elif fix_index[0] == 2:

if i < 10:

rd_s = '0' + str(i)

else:

rd_s = str(i)

pw2 = pw + rd_s + tail_pw

ans.append( pw2 )

else:

ข- 17

Page 78: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

ans.append( pw )

return ans

def find_digits(pw):

result_ori = re.findall('[0-9]+', pw)

if result_ori == []:

return 0

result = result_ori[::-1] #reverse list in array.

result = max(result, key=len) #find string is max length in array.

print result

if len(result) > 3:

diff = len(result) - 3

elif len(result) < 2:

print "Error: Number is less."

sys.exit(1)

else:

diff = 0

digits_index = pw.rfind(result)

digits_index = digits_index + diff

#digits_index = [ ]

#for i in result_ori:

ข- 18

Page 79: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

#digits_index.append(pw.rfind(result))

print "Digits found:", result

print "Last index:", digits_index

if ((digits_index-diff)+len(result) < len(pw)): #array pw 0 to (len(pw)-1)

len_last_word = len(pw)-((digits_index-diff)+len(result))

else:

len_last_word = 0

ans = [ ]

#ans.append(max(digits_index))

ans.append(len(result)-diff)

ans.append(len_last_word)

print ans

return ans

#print "Number of digits =", numDigits

def main():

if len(sys.argv[1]) < 8:

print "Error: Password less than 8 char."

sys.exit(1)

# get a number of passwords desired

if len(sys.argv) > 2:

a = int(sys.argv[2])

ข- 19

Page 80: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

else:

a = 10

# get b number of passwords desired

if len(sys.argv) > 3:

b = int(sys.argv[3])

else:

b = 10

fix_index = find_digits(sys.argv[1])

if fix_index == 0:

print "Error: Number not found."

sys.exit(1)

# read password files

filenames = sys.argv[4:] # skip "gen.py", "password", a and b

pw_list = read_password_files(filenames)

# generate passwords

new_passwords = generate_passwords(a,b,pw_list,fix_index)

# shuffle their order

#random.shuffle(new_passwords)

# print if desired

printing_wanted = True

if printing_wanted:

for pw in new_passwords:

print (pw)

ข- 20

Page 81: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

# import cProfile

# cProfile.run("main()")

main()

ข- 21

Page 82: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

ภาคผนวก ค

library สำหรบ Codeigniter ในสวนของระบบ

ค- 1

Page 83: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

/*

* Example.

* $params = array('type' => 'large', 'color' => 'red');

* $this->load->library('honeyword', $params);

*

*/

class Honeyword {

/*

* PARAMETERS CONTROLLING PASSWORD GENERATION (aside from password files)

*/

// probability that a generated password is a ``tough nut''

// (password of length 40 of random chars)

// otherwise following parameters apply

private $tn = 0.08;

// probabilities p1, p2, p3 add up to 1 (heuristically chosen)

private $p1 = 0.10; //# chance of a "random" char at this position (see code)

private $p2 = 0.40; //# chance of a markov-order-1 char at this position (see code)

ค- 2

Page 84: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

private $p3 = 0.50; //# choice of continuing copying from same word

private $q = 0.03; //# add 3% noise words to list of passwords

// syntax parameters for a password

private $nL = 0; //# password must have at least nL letters

private $nD = 0; //# password must have at least nD digit

private $nS = 0; //# password must have at least nS special (non-letter non-digit)

/*

* END OF PARAMETERS CONTROLLING PASSWORD GENERATION

*/

public function __construct()

{

$CI =& get_instance();

// Loads a config file named blog_settings.php and assigns it to an index named "honeyword_config"

$CI->config->load('honeyword_config', TRUE);

$this->tough_nut_length = $CI->config->item('tough_nut_length', 'honeyword_config');

//$CI->load->helper('file');

//$CI->config->item('base_url');

ค- 3

Page 85: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

}

private function read_password_file($filename = 'default_password.list')

{

/*

* Return a list of passwords in all the password file(s), plus

* a proportional (according to parameter q) number of "noise" passwords.

*/

if ( $pw_list = file(APPPATH . 'libraries/' . $filename, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES) ) {

// add noise passwords

$noise_list = $this->noise_list(round($this->q * count($pw_list)));

$pw_list = array_merge($pw_list, $noise_list);

return $pw_list;

} else {

show_error("Error: Do not have file.");

}

}

private function noise_list($n)

{

/*

* Return a list of n ``noise'' passwords, to get better coverage of lengths and character

*/

ค- 4

Page 86: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

$randomString = array();

for ($i = 0; $i < $n; $i++) {

$randomLength = mt_rand(8,18);

$randomString[$i] = $this->random_word($randomLength);

}

shuffle($randomString);

return $randomString;

}

public function find_digit($password)

{

//if (false !== preg_match('#(\\d+)\\D*$#', $password, $gregs, PREG_OFFSET_CAPTURE)) {

// return $gregs;

//}

//if(preg_match_all('/\d+/', $password, $numbers , PREG_OFFSET_CAPTURE)) {

if(preg_match_all('/\d+/', $password, $numbers)) {

$digits = (string)max($numbers[0]);

if (strlen($digits) > 3) {

$digits_2 = substr($digits, -3);

return array($digits_2, strpos($password, $digits) + (strlen($digits) - strlen($digits_2)));

} else {

ค- 5

Page 87: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

return array(max($numbers[0]), strpos($password, (string)max($numbers[0])));

}

} else {

return false;

}

}

private function random_digits($number)

{

$randomNum = '';

for ( $i = 0; $i < strlen($number); $i++ )

{

$randomNum .= mt_rand ( 0, 9 );

}

if ($randomNum == $number) {

return $this->random_digits($number);

} else {

return $randomNum;

}

}

private function tough_nut()

{

ค- 6

Page 88: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

return mcrypt_create_iv($this->tough_nut_length, MCRYPT_DEV_RANDOM);

}

private function syntax($password)

{

/*

* Return True if password p contains at least nL letters, nD digits, and nS specials (others)

*/

$L = 0;

$D = 0;

$S = 0;

for ($i = 0; $i < strlen($password); $i++) {

if (ctype_alpha($password[$i])) {

$L += 1;

} elseif (ctype_digit($password[$i])) {

$D += 1;

} else {

$S += 1;

}

}

if ($L >= $this->nL && $D >= $this->nD && $S >= $this->nS) {

return true;

ค- 7

Page 89: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

}

return false;

}

private function make_password($pw_list)

{

$L = array();

$LL = array();

$ans = '';

if (mt_rand(0, 100)/100 < $this->tn) {

return $this->tough_nut();

}

// start by choosing a random password from the list

// save its length as k; we'll generate a new password of length k

$rand_keys = array_rand($pw_list);

$k = strlen($pw_list[$rand_keys]);

// create list of all passwords of length k; we'll only use those in model

foreach ($pw_list as $pw) {

if (strlen($pw) == $k) {

$L[] = $pw;

}

}

$nL = count($L);

ค- 8

Page 90: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

// start answer with the first char of that random password

// row = index of random password being used

$current_row = mt_rand(0, $nL-1);

$ans .= $L[$current_row][0]; // copy first char of L[row]

$j = 1; // j = len(ans) invariant

while ($j < $k) {

$p = mt_rand(0, 100)/100; // randomly decide what to do next, based on p

// here p1 = prob of action 1

// p2 = prob of action 2

// p3 = prob of action 3

// p1 + p2 + p3 = 1.00

if ($p < $this->p1) {

$action = "action_1";

} elseif ($p < ($this->p1 + $this->p2)) {

$action = "action_2";

} else {

$action = "action_3";

}

if ($action == "action_1") {

// add same char that some random word of length k has in this position

$row = mt_rand(0, $nL-1);

$ans .= $L[$row][$j];

$j = $j + 1;

ค- 9

Page 91: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

} elseif (($action == "action_2") && (strlen($ans) > 0)) {

// take char in this position of random word with same previous char

for ($i = 0; $i < $nL-1; $i++) {

if ($L[$i][$j-1] == substr($ans, -1)) {

$LL[] = $i;

}

}

if ($LL) {

$row = array_rand($LL);

$ans .= $L[$LL[$row]][$j];

$j = $j + 1;

}

} elseif ($action == "action_3") {

// stick with same row, and copy another character

$ans .= $L[$current_row][$j];

$j = $j + 1;

}

}

if (($nL > 0) && !$this->syntax($ans)) {

return $this->make_password($pw_list);

}

return $ans;

}

ค- 10

Page 92: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

private function random_word($n) {

$randomWord = '';

$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ._!=';

$charactersLength = strlen($characters);

for ($i = 0; $i < $n; $i++) {

$randomWord .= $characters[mt_rand(0, $charactersLength - 1)];

}

return $randomWord;

}

private function random_tail_pw($digit, $password, $pw_list)

{

if ((strlen($digit[0]) + $digit[1]) == strlen($password)) {

return '';

} elseif ((strlen($password) - ($digit[1] + strlen($digit[0]))) < 3) {

return $this->random_word((strlen($password) - ($digit[1] + strlen($digit[0]))));

} else {

return $this->make_password($pw_list);

}

}

public function gen($password, $a = 9)

ค- 11

Page 93: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

{

$word_list = array();

$pw_list = $this->read_password_file();

$find_digit = $this->find_digit($password);

for ($i = 0; $i < $a; $i++) {

$pw = $this->make_password($pw_list);

if (strlen($pw) < $this->tough_nut_length) {

$tail_pw = $this->random_tail_pw($find_digit, $password, $pw_list);

$ds = $this->random_digits($find_digit[0]);

$word_list[$i] = $pw.$ds.$tail_pw;

} else {

$word_list[$i] = $pw;

}

}

return $word_list;

}

ค- 12

Page 94: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

public function array_hash($word_lists)

{

if (is_array($word_lists) && (count($word_lists) > 0)) {

for ($i = 0; $i < count($word_lists); $i++) {

$word_lists[$i] = hash('sha256', $word_lists[$i]);

}

}

return $word_lists;

}

public function set($i, $j)

{

$CI = &get_instance();

// Load the rest client spark

$CI->load->spark('restclient/2.1.0');

// Load the library

$CI->load->library('rest');

// Set config options (only 'server' is required to work)

$config = array('server' => 'http://honeychecker.local/index.php/',

//'api_key' => 'Setec_Astronomy'

ค- 13

Page 95: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

//'api_name' => 'X-API-KEY'

'http_user' => 'admin',

'http_pass' => '1234',

'http_auth' => 'digest'

//'ssl_verify_peer' => TRUE,

//'ssl_cainfo' => '/certs/cert.pem'

);

// Run some setup

$CI->rest->initialize($config);

// Pull in an array of tweets

$result = $CI->rest->post('honeychecker/user', array('id' => $i, 'position' => $j));

return $result->status;

}

public function check($i, $j)

{

$CI = &get_instance();

// Load the rest client spark

$CI->load->spark('restclient/2.1.0');

// Load the library

$CI->load->library('rest');

ค- 14

Page 96: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

// Set config options (only 'server' is required to work)

$config = array('server' => 'http://honeychecker.local/index.php/',

//'api_key' => 'Setec_Astronomy'

//'api_name' => 'X-API-KEY'

'http_user' => 'admin',

'http_pass' => '1234',

'http_auth' => 'digest'

//'ssl_verify_peer' => TRUE,

//'ssl_cainfo' => '/certs/cert.pem'

);

// Run some setup

$CI->rest->initialize($config);

// Pull in an array of tweets

$result = $CI->rest->get('honeychecker/user/id/'.$i.'/position/'.$j.'/format/json');

return $result;

}

}

/* End of file honeyword.php */

ค- 15

Page 97: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

ภาคผนวก ง

Controller สำหรบ Codeigniter ในสวนของ honeychecker อนประกอบดวย GET, POST, PUT, DELETE

ง- 1

Page 98: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

<?php

defined('BASEPATH') OR exit('No direct script access allowed');

// This can be removed if you use __autoload() in config.php OR use Modular Extensions

require APPPATH.'/libraries/REST_Controller.php';

class Honeychecker extends REST_Controller {

function __construct()

{

// Call the Model constructor

parent::__construct();

$this->load->model('User_model');

}

function user_get()

{

if(!$this->get('id'))

{

$this->response(NULL, 400);

}

$user = $this->User_model->get_info( $this->get('id') );

ง- 2

Page 99: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

if($user)

{

if ($user->position === $this->get('position')) {

$this->response(true, 200);

} else {

$this->response(false, 200);

}

//$this->response($this->get('id'), 200); // 200 being the HTTP response code

}

else

{

$this->response(NULL, 404);

}

}

function user_post()

{

$result = $this->User_model->insert_info(array(

'user_id' => $this->post('id'),

'position' => $this->post('position')

));

ง- 3

Page 100: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

if($result === FALSE)

{

$this->response(array('status' => 'failed'));

}

else

{

$this->response(array('status' => 'success'));

}

}

function user_put()

{

$result = $this->User_model->update_info($this->put('id'), $this->put('position'));

if($result === FALSE)

{

$this->response(array('status' => 'failed'));

}

else

{

$this->response(array('status' => 'success'));

}

ง- 4

Page 101: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

}

function user_delete()

{

$result = $this->User_model->delete_info($this->get('id'));

if($result === FALSE)

{

$this->response(array('status' => 'failed'));

}

else

{

$this->response(array('status' => 'success'));

}

}

}

ง- 5

Page 102: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

ภาคผนวก จ

Model Codeigniter ในสวนของการสมครสมาชกและการเขาสระบบ

จ- 1

Page 103: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

<?php

class User_model extends CI_Model {

public $error = array();

public $error_count = 0;

public function __construct()

{

parent::__construct();

}

public function check_role()

{

$user_id = $this->session->userdata('cibb_user_id');

// get roles

if ($user_id) {

$row = $this->db->get_where(TBL_USERS, array('id' => $user_id))->row();

$roles = $this->db->get_where(TBL_ROLES, array('id' => $row->role_id))->row_array();

foreach ($roles as $key => $value) {

$this->session->set_userdata($key, $value);

}

}

}

จ- 2

Page 104: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

public function check_login()

{

$row = $this->input->post('row');

//$key = $this->config->item('encryption_key');

// ++ set variable

$result_check_position = false;

// ++

$data = array('username' => $row['username']);

$query = $this->db->get_where(TBL_USERS, $data);

$plain_password = '';

if ( ($query->num_rows() == 1) ) {

$user = $query->row();

//$plain_password = $this->encrypt->decode($user->password, $key);

// ++ json decode array hash password

$word_lists = json_decode($user->password);

$this->load->library('honeyword');

$position_of_array = array_search(hash('sha256', $row['password']), $word_lists);

$result_check_position = $this->honeyword->check($user->id, $position_of_array);

จ- 3

Page 105: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

// ++

}

// if user found

//if ( ($query->num_rows() == 1) && ($plain_password == $row['password'])) {

if (($query->num_rows() == 1) && ($result_check_position)) {

// ++

$row = $query->row();

$this->session->set_userdata('cibb_logged_in', 1);

$this->session->set_userdata('cibb_user_id' , $row->id);

$this->session->set_userdata('cibb_username' , $row->username);

$this->session->set_userdata('cibb_user_roleid' , $row->role_id);

// get roles

$roles = $this->db->get_where(TBL_ROLES, array('id' => $row->role_id))->row_array();

foreach ($roles as $key => $value) {

$this->session->set_userdata($key, $value);

}

} else {

$this->error['login'] = 'User not found';

$this->error_count = 1;

}

}

จ- 4

Page 106: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

public function register()

{

$row = $this->input->post('row');

// check username

$is_exist_username = $this->db->get_where(TBL_USERS,

array('username' => $row['username']))->num_rows();

if ($is_exist_username > 0) {

$this->error['username'] = 'Username already in use';

}

if (strlen($row['username']) < 5) {

$this->error['username'] = 'Username minimum 5 character';

}

// ++ load honeyword

$this->load->library('honeyword');

$digit_info = $this->honeyword->find_digit($row['password']);

// ++

// check password

if ($row['password'] != $this->input->post('password2')) {

$this->error['password'] = 'Password not match';

} else if (strlen($row['password']) < 5) {

จ- 5

Page 107: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

$this->error['password'] = 'Password minimum 5 character';

} else if ($digit_info == false) { // ++ condition for check digit in password

$this->error['password'] = 'Password minimum 1 digit';

}

// ++ gen word lists

$word_lists = $this->honeyword->gen($row['password']);

array_push($word_lists, $row['password']);

shuffle($word_lists);

$position_of_array = array_search($row['password'], $word_lists); // search position of array.

while ($position_of_array == 0) { // do not position 0

shuffle($word_lists);

$position_of_array = array_search($row['password'], $word_lists); // search position of array.

}

// ++

if (count($this->error) == 0) {

//$key = $this->config->item('encryption_key');

//$row['password'] = $this->encrypt->encode($row['password'], $key);

// ++ set password with json.

$row['password'] = json_encode($this->honeyword->array_hash($word_lists));

$this->db->trans_start();

// ++

จ- 6

Page 108: บทคัดย่อ · หัวข้อ การศึกษาและพัฒนาระบบตรวจจับผู้ประสงค์ร้ายจาก

$this->db->insert(TBL_USERS, $row);

// ++ set position.

$insert_id = $this->db->insert_id();

$this->db->trans_complete();

if ("success" !== $this->honeyword->set($insert_id,$position_of_array)) {

$this->db->delete(TBL_USERS, array('id' => $insert_id));

$this->error['password'] = 'Error in system.';

$this->error_count = count($this->error);

}

// ++

} else {

$this->error_count = count($this->error);

}

}

}

จ- 7