Documents
Resources
Learning Center
Upload
Plans & pricing Sign in
Sign Out

RSA_

VIEWS: 72 PAGES: 9

									                                                                   ุ
                              Public Key Cryptography .. เทคโนโลยีกญแจสาธารณะ
Issue Date :: 2000-02-02

ค้างไว้มานานเลยกับ cryptography ภาคสอง วันนี้จะมาแนะในส่วนของ public key
cryprography        ล่ะครับ     เทคโนโลยีของ       public     key    cryptography
            ่                     ั ั           ั
กาลังเป็ นทีสนใจเอามาใช้งานกันในปจจุบนเพื่อแก้ปญหาความปลอดภัยหลายๆ           อย่าง
                    ั                ั         ั ั        ั
เอาล่ะครับ มาลองดูกนก่อนว่ามันมาได้ยงไง แล้วปจจุบนเราใช้มนทาอะไรบ้าง
Public Key Cryptography ต่างจาก cryptography แบบเดิ มๆ อย่างไร ?
                    ่                    ่                 ่
การเข้ารหัสในอดีตทีผ่านมาจะอาศัยข้อมูลทีเก็บเป็ นความลับทีเรียกว่า "กุญแจ" หรือ "Key"
                      ั้   ่
...กุญแจตัวนึงจะใช้ทงเวลาทีเข้ารหัสและถอดรหัสเราเรียกการเข้ารหัสแบบนี้ว่า "secret key
cryptography"            หรือ          "symmetric             key          cryptography"
                         ้
เพราะว่าตัวกุญแจใช้งานทังเข้าและถอดรหัส                           และต้องเก็บเป็นความลับ
  ้ ั                            ้ั
รูกนเฉพาะคนเข้ารหัสข้อมูลและผูรบข้อมูล                                                  ่
                                                                    หลักการนี้เข้าใจได้งาย
                             ั ้
ใช้กุญแจไหนเป็ นตัวล๊อคก็ใช้ตวนันไขเอาล๊อกออก
            ั                                         ่
นอกจากนี้ยงใช้งานง่ายด้วยบนคอมพิวเตอร์เพราะโดยทัวไป ตัวเลขสุ่ม (random number)
ก็เอามาใช้เป็นกุญแจได้                   การใช้เลขสุ่มยังทาให้กุญแจมีความปลอดภัยอีกด้วย

ส่วน public key cryptography จะมีกุญแจสองดอก คือ private key
  ่                                         ้ ่
ซึงจะเก็บเป็นความลับมีเจ้าของคนเดียวเท่านันทีรู้     และอีกอันคือ        public     key
    ่                                  ้
ซึงไม่จาเป็ นต้องเก็บเป็นความลับ ทังสองตัวจะใช้งานต่างกันคือ ถ้าใช้กุญแจอันนึงเข้ารหัส
                          ่       ั
จะต้องใช้กุญแจอีกตัวนึงทีเข้าคู่กนในการถอดรหัส เอาให้เห็นภาพอีกหน่อย..สมมติว่ามี public
                                                ่  ั
key A กับ private key B เป็นกุญแจทีเข้าคู่กน ถ้าเอา A เข้ารหัส จะมีแต่ B
      ้ ่           ้
เท่านันทีถอดรหัสนันออก และในทางกลับกันถ้าใช้ B เป็นตัวเข้ารหัสก็จะมีแต่ A
       ้ ่                    ่ ี
เท่านันทีจะถอดรหัสได้ การทีมกุญแจสองแบบทาให้ public key cryptography ได้เปรียบ
secret            key            cryptography             ่ ู้ ั  ้
                                                     ตรงทีผรบกับผูส่งใช้กุญแจคนละตัวกัน
                ้
ไม่จาเป็นต้องรูความลับของกันและกันก็สามารถส่งข้อมูลหากันได้อย่างปลอดภัย
กาเนิ ด Public Key Cryptography
                                                            ั ั
Public key cryptography เกิดจากหลักคณิตศาสตร์ทเี่ รียกว่า ฟงก์ชนทางเดียว (one-way
                     ั ั                          ่
function) กลุ่มของฟงก์ชนทางเดียวส่วนหนึ่งมีความเกียวข้องกับเลขจานวนเฉพาะ (prime
              ่                                     ิ ่      ั ั               ั
number) เลขทีหารได้เฉพาะ 1 และตัวมันเอง คุณสมบัตน้ีเกียวกับฟงก์ชนทางเดียวได้ยงไง ?
..ลองดูนะครับ ถ้าเอาเลขจานวนเฉพาะสองตัวมาคูณกัน สมมติเป็น 5 กับ 7 ได้ 35 ..
    ี                        ิ                                    ้ ่
ทีน้ลองหาตัวประกอบของ 35 ดูสครับ เราจะได้ว่ามีเพียง 5 และ 7 เท่านันทีเป็ นตัวประกอบ
         ั
(ไม่นบ 1x35 นะครับ) ทีน้ีลองหาอีกซักจานวนนึง 11,927 x 20,903 คาตอบคือ 249,310,081
                                    ่
..การคูณ 11,927 กับ 20,903 นี้งายกว่าหาตัวประกอบของ 249,310,081 ใช่มยครับ ?      ั้
   ่                                  ิ่
ยิงเลขจานวณเฉพาะมีค่ามากเท่าไหร่ยงจะแยกตัวประกอบยากขึนเท่านัน  ้  ้
     ี                   ่                                   ี
ทีน้นึกออกยังครับว่ามันเกียวอะไรกับ public key ? ..ใบ้อกหน่อยสมมติว่า 249,310,081
            ่      ั           ้
เป็นข้อมูลทีเราได้รบและถ้าเรารูจานวนเฉพาะตัวนึง           เราจะหาอีกตัวนึงได้อย่างง่ายดาย
       ้      ู้             ็                           ิ ี
แต่ถาเราไม่รล่ะก็กว่าจะหาได้กนานทีเดียว..ใช่แล้ว คุณสมบัตน้สามารถเอามาใช้เก็บความลับได้
!!
          ่                                         ่ ิ ่      ื      ิ
แนวคิดเรือง public key ไม่ได้เป็นของใหม่ครับ คนแรกทีคดเรืองนี่คอ วิธฟีลด์ ดิฟฟี่ (Whitfield
                  ิ                           ่        ี
Diffie) และ มาร์ตน เฮลแมน (Martin Hellman) ซึงเสนอวิธการแบบ public key นี้ใน National
                                           ิ
Computer Conference ปี 1976 และตีพมพ์ใน IEEE Transaction on Information Theory
            ้  ่ี                     ่ ั้      ้
หลังจากนันไม่กเดือนต่อมา algorithm ทีทงสองคิดขึนมา อธิบายได้เป็ นฉากๆ ตามนี้ครับ
   1. ก่อนอื่นให้ A และ B กาหนดค่า n และ g โดยที่ 1 < g < n
              ้
      ..เลขทังสองไม่จาเป็ นต้องเป็นความลับ
   2. A สุ่มเลขทีมค่ามากๆ มาตัวนึง กาหนดให้เป็นค่า x และหาค่า X = gx mod n เก็บค่า x
                 ่ ี
      เป็นความลับ
   3. B ทาเหมือนกัน สุ่มเลขทีมค่ามากๆ มาตัวนึง กาหนดให้เป็นค่า y และหาค่า Y = gy
                             ่ ี
      mod n เก็บค่า y เป็นความลับ
   4. ทีน้ี A กับ B แลกค่า X และ Y กัน
   5. A คานวณหาค่า k = Yx mod n
   6. B คานวณหาค่า k' = Xy mod n
   7. ค่า k และ k' จะมีค่าเท่ากัน และเท่ากับ gxy mod n
               ่
ค่า k และ k' ทีว่านี้นอกจาก A และ B
                 ี                 ่            ้                              ่
แล้วคนอื่นไม่มทางหาได้เพราะค่าทีคนอื่นมีโอกาสรูมเี พียง n, g, X และ Y โอกาสทีจะหาค่า x
                               ้                        ่
จาก X (หรือ y จาก Y) ทาได้ดวยการหา inverse ของ X ซึงเรียกว่า discrete logarithm
และเจ้า discrete logarithm นี่ไม่ได้คานวณกันง่ายๆ ครับ...ไม่เชื่อลอง..3x mod 17 = 15
ลองหา x ดูสครับ...ถ้าหาได้ลองอีกตัวนึง 3x mod 13 = 7 .. หาได้มยเอ่ย ? อ้อ..ผมลืมบอกไป
             ิ                                                    ั้
                                 ี
discrete logarithm บางทีจะไม่มคาตอบนะครับ เหอะๆๆๆ
                                              ี
OK.. ว่ากันต่อ..หลังจาก Diffie-Hellman เสนอวิธการของ public key ได้ไม่นานนักก็เกิด RSA
                 ่ ิ
cryptosystem ซึงตีพมพ์โดย รอน ริเวสต์ (Ron Rivest), อาดิ ชาร์เมียร์ (Adi Shamir), และ
เลียวนาร์ด เอเดิลแมน (Leonard Adleman) ในปี 1978 ความปลอดภัยของ algorithm
    ้ึ                                           ่ ี
นี้ขนกับความยากในการแยกตัวประกอบของเลขจานวนเฉพาะทีมค่ามากๆ
RSA Cryptosystem                                                 ้                ี
                                                             ทังสามคิดว่าวิธการนี้ปลอดภัยมากและเชื่
Public Key:                                                 อว่าต้องใช้เวลานับล้านปีกว่าจะแยกตัวปร
      n คานวณจากเลขจานวนเฉพาะสองตัว p
                                                            ะกอบของเลขจานวน                                 129
              และ q คูณกัน - ทัง p และ q หลักออกไม่ว่าจะใช้คอมพิวเตอร์ททรงพลั
                                          ้                                                           ่ี
              ต้องเก็บเป็นความลับ                                                          งขนาดไหนก็ตาม
                                                              ั
                                    ้
              ปกติจะทาลายทิงหลังจากหา                key ปญหาการแยกตัวประกอบ                                129
              ได้เพราะไม่ได้ใช้ในการเข้า/ถอดรหัส                           ่ ู้ ั
                                                             ตัวนี้เป็นทีรจกกันดีในวงการนักคณิตศาส
                                                            ตร์และคอมพิวเตอร์ว่า "RSA 129"
                               ่ ี ั
      e เป็ นจานวนทีไม่มตวประกอบร่วมกับ (p- เลขทีว่านี้คอ "114 381 625 757 888
                                                                   ่     ื
              1)(q-1)                                       867 669 235 779 967 146 612 010
Private Key: d = e-1(mod(p-1)(q-1))                         218 296 721 242 362 562 561 842
Encrypting: c = me(mod n)                                   935 706 935 245 733 897 830 597
Decrypting: m = cd(mod n)                                   123 563 958 705 058 989 075 147
                                                            599 290 026 879 543 541"
           ี ิ
เลขนี้ตพมพ์เป็นปริศนาในคอลัมน์ Mathematical Games ใน Scientific American โดย มาร์ตน                           ิ
การ์ดเนอร์                   ในปี           1977           (ก่อน                  RSA                     ิ
                                                                                                  จะตีพมพ์)
       ี               ้
..ไม่มใครในยุคนันสามารถหาคาตอบได้เลยจนกระทังในปี         ่                                               1993
จึงมีคนพยายามแก้ปริศนานี้อกครัง พอล เลย์แลนด์ (Paul Leyland), ไมเคิล กราฟฟ์ (Michael
                                      ี ้
Graff)                   และ            ดิเรค          แอตกินส์                   (Derek              Atkins)
         ้ ่ี                   ั              ั
เป็ นผูทพยายามจะแก้ปญหานี้โดยได้รบการสนับสนุ นจากอาสาสมัครมากกว่า 600 คนทัวโลกให้                   ่
run                               ่
                   โปรแกรมทีเขียนโดย             เค.            เลนสตรา               (K.          Lenstra)
                                                                       ่
ในเวลากลางคืนเพื่อช่วยกันหาคาตอบผ่านทางอินเทอร์เน็ตในทีสุดในเดือนเมษายนปี                                1994
ปริศนาก็ถูกแก้ออกเป็นเลขจานวนเฉพาะขนาด 64 และ 65 หลักคือ "3 490 529 510 847 650
949 147 849 619 903 898 133 417 764 638 493 387 843 990 820 577" กับ "32 769 132
993 266 709 549 961 988 190 834 461 413 177 642 967 992 942 539 798 288 533"
และยังถอดรหัสออกมาเป็ นข้อความได้ว่า "The magic words are Squeamish and Ossifrage"
   ่
เรืองนี้สอนให้รว่า  ู้                  129                หลักยังไม่ปลอดภัยพอ                              และ
ไม่ควรคุยโอ้อวดเรืองความปลอดภัยของการเข้ารหัส
                          ่                                          ั ั
                                                                   ปจจุบนคาดกันว่าเลขขนาด                   200
                                             ่
หลักจะต้องใช้เวลาซัก 52 ล้านปีเมือคานวณประสิทธิภาพของคอมพิวเตอร์ทเี่ พิมขึนทุกๆ ปี            ่ ้
แต่ใครจะกล้ายืนยันล่ะครับว่ามันปลอดภัยจริง                 ??         อย่างไรก็ตามปจจุบน  ั ั            RSA
ใช้กุญแจเป็นตัวเลขขนาด 1024 bits (ประมาณ 309 หลัก) เป็นอย่างน้อย จึงยอมรับกันว่า RSA
cryptosystem                                                                                 ปลอดภัยสูงพอ
                             ี               ่               ี ่ี ี ั ้ ั ั
อย่างน้อยก็จนกว่าจะมีคนคิดวิธแยกตัวประกอบได้งายและเร็วกว่าวิธทมทงหมดในปจจุบน
        ็
หรือไม่กจนกว่า cryptanalyst จะหาจุดอ่อนของ RSA ได้
             ั่
ทาอะไรได้มงล่ะ
เจ้า Public Key
Cryptography
เนี่ ย ?
Public         key
cryptography
นามาประยุกต์ใช้
ค่อนข้างกว้างทีเ
ดียว
จนอาจจะแก้ปญ Public Key Encryption
                ั
หาของระบบควา
                    ้                                 ่      ็
มปลอดภัยได้ครบทัง 4 อย่างเลยด้วยซ้า (4 อย่างทีว่านี้กม ี Authentication, Integrity,
Confidentialty, และ Non-repudiation) อย่างเช่น ใน secret key cryprography
                                        ู้ ั
จะต้องมีการแลก secret key กันเพื่อให้ผรบสามารถถอดรหัสได้ หลายๆ โปรแกรมก็ใช้ Diffie-
Hellman ในการแลก secret key เพราะจาก algorithm ของ Diffie-Hellman ค่า k และ k'
                                                           ้                        ็
มีค่าเท่ากันและ secret key cryptography ใช้เลขสุ่มได้ ดังนันค่า k/k' จะเป็นเท่าไหร่กใช้เป็น
                                             ี
key ได้เสมอ ส่วนการทา Encryption โดยวิธของ public key ก็จะทางานตามนี้ครับ สมมติให้ A
      ้                 ้ั
เป็นผูส่งและ B เป็นผูรบ .. A จะเอา public key ของ B มาเข้ารหัสแล้วจึงส่งไปให้ B
          ่           ็           ้ ่           ้                           ่     ั
..ข้อมูลทีส่งไปจะมีกเพียง B เท่านันทีจะถอดรหัสนันออกเพราะมี private key ทีเข้าคู่กบ public
        ่
key ทีเป็นตัวเข้ารหัสส่งมา
                                                                           public          key
                                                                                cryptography
                                                                            สามารถนามาปร
                                                                                  ะยุกต์ใช้เป็น
                                                                           digital signature
                                                                                ้
                                                                           ได้ดวย             ..
                                                                                         ิ
                                                                           ลายเซ็นดิจตอลนี้
                                                                             เอาไว้ใช้ในกรณี
Digital Signature                                                             ่
                                                                           ทีเราต้องการตรว
                                                                            จสอบตัวตนทีแท้  ่
จริง (Identity verification) สมมติ A กับ B อีกรอบ.. A จะเข้ารหัสด้วย private key ของตัวเอง
  ้                                            ่
ขันตอนนี้เรียกกันว่า digital signing ข้อมูลทีผ่าน digital signing แล้วก็จะส่งไปให้ B .. B
สามารถตรวจสอบว่าข้อมูลมาจาก A ตัวจริงได้โดยการใช้ public key ของ A เป็ นตัวถอดรหัส
                    ็ ั่               ้
ถ้าสามารถถอดได้กมนใจได้ว่าข้อมูลนันมาจาก A จริงๆ เพราะมีแต่ public key ของ A
      ้ ่
เท่านันทีถอดรหัสข้อมูลที่ sign โดย private key ของ A .. ทุกวันนี้ digital signature
             ั   ้                                            ่
นิยมใช้กนมากขึนใน Internet (กระทรวงวิทย์ บ้านเราก็เริมเอามาใช้จริงๆ จังๆ แล้ว)
           ื          ่                                                    ่
เพื่อให้ยนยันตัวตนทีแท้จริงได้ อย่างเช่น ใน SSL ก็จะมีการส่ง certificate ซึง sign โดย digital
                                             ่
signature เพื่อยืนยันว่าเป็ นตัวจริงก่อนจะเริมต้นทา transaction processing ใน Java ก็ม ี
               ่                                                ั่
*.JAR ซึงมีการ sign ด้วย digital signature เหมือนกันเพื่อให้มนใจได้ว่า java code ใน JAR
เป็นของแท้ วิธเี หล่านี้แต่เดิมก็สามารถทาได้โดยใช้ secret key cryptography
                                                          ่
แต่ไม่สะดวกนักเนื่องจากต้องมีการแลก key กันก่อน ซึงเป็นจุดอ่อนในการทางาน การใช้
public key cryptography                  จะสะดวกกว่ามาก                             ู่
                                                              และให้ความปลอดภัยทีสงกว่า..
         ี                  ี้                                       ็
อะไรก็ดไปหมดนะเนี่ย ไม่มขอเสียเลยเหรอ ???..แน่นอนล่ะครับ มีได้กมเี สีย ข้อเสียของ public
                                                    ่
key cryptography คือความเร็วในการทางานต่า อยูในช่วง 100 - 1000 เท่าของ secret key
                                                  ็
crptography เลยทีเดียว..โฮ้..ทาไมช้านักล่ะ..เหตุกเพราะว่า
                                                                       ่ ี
    1. Prime number generator ล่ะอย่างแรก .. การหาเลขจานวนเฉพาะทีมค่ามากๆ
               ิี    ่ ุ่
       ต้องใช้วธการทียงยาก                                       และเสียเวลามาก
                           ่
       มากจนหลายแอพพลิเคชันไม่หาจานวนเฉพาะโดยตรงแต่ใช้การสุ่มตัวเลขแล้วทดสอบว่
       าเป็นเลขจานวนเฉพาะหรือไม่แทน
    2. สมการ         exponential                                           ่
                                     ในการเข้าและถอดรหัสก็เป็นเหตุผลนึงทีทาให้ทางานช้า
                                 ่ ี
       เพราะตัวยกกาลังเป็นเลขทีมค่าเยอะ                   ั
                                                  ลองดูตวอย่างกระจอกๆ              นะครับ
                ่
       ให้ใช้เครืองคิดเลขเลยเอ้า สมมติเป็ น RSA ให้ p=47 q=71 คานวณค่า n=3337 และ
       (p-1)(q-1)=3220 ค่า d = 1019 สุ่มค่า e = 79 .. โอ..สาหัสล่ะครับ เวลาเข้ารหัสใช้ m79
       mod 3337 ..ถอดด้วย c1019 mod 3337 สมมติให้ m เป็นตัวอักษรรหัส ASCII เอาซัก 5
              ็
       คานี่กคานวณกันมือหงิกแล้วครับ
                                                    ่ ั
    3. Secret key cryptography จะใช้ operation ทีซบซ้อนน้อยกว่าเยอะ อย่างพวก xor,
       shift จึงทางานได้เร็วกว่า นอกจากนี้กุญแจก็สามารถใช้ random number ได้ หรือบาง
       algorithm           อาจจะต้องใช้        secure          random        number
            ็ ั ้                       ่
       แต่กยงไม่ตองคานวณเยอะและมีเงือนไขมากเหมือน public key cryptography
                    ่      ั้
หลายๆ แอพพลิเคชันจึงใช้ทง public key และ secret key
                        ึ                    ั้
เวลาทางานเพื่อจะได้ดงจุดเด่นของเทคโนโลยีทงสองออกมาใช้กลบจุดด้อยของอีกอันนึง
  ั ั                 ่
ปจจุบนมี algorithm ทีเป็น public key cryptography มากมายนอกเหนือจาก Diffie-Hellman
                 ั
และ RSA แล้วก็ยงมี ElGamal, DSA, Knapsack, Rabin, Okamoto 92, Guam's Cellular
                                                                       ่ี
Automata, Elliptic Curve Cryptosystems ..อีกหลายอันเลยล่ะครับ อันไหนดีทสุด ??
                                 ี         ิ
..ตอบยากเหมือนกัน แต่ละอันก็มคุณสมบัตต่างๆ กันไป สาหรับ public key cryptography
  ่     ่
ทีเป็นทีนิยมก็ม ี RSA ใช้ใน encryption และ digital signing เพราะ implement ง่าย ElGamal
                                      ี ่ี
จะเหมาะกับ encryption ส่วน DSA ก็ดทการทา Digital Signature (ตามชื่อของมัน DSA =
                                                    ่ ั
Digital Signature Algorithm) และยังเป็นมาตรฐานทีใช้กนในสหรัฐด้วย ส่วน Diffie-Hellman
                    ่
ยังใช้ในการแลกเปลียน secret key เป็นหลัก
ที่ใช้งานกันจริ งๆ ล่ะ ?
 ั ั                                ่                  ้
ปจจุบนมีเยอะเหมือนกันครับ และอย่างทีบอกคือมักจะผสมกันทัง public และ secret key
ผมยกตัวอย่างซัก 2-3 อันละกัน
                                                     ่ ั        ่
        Secure Shell (SSH) .. SSH เป็น protocol ทีแก้ปญหาเรืองความไม่ปลอดภัยในการ
        remote login เข้าใช้งาน service ต่างๆ อย่าง telnet, X11, และ r* command ต่างๆ,
        etc. เนื่องจาก service เหล่านี้เวลา login จะส่ง plaintext password ผ่านเครือข่าย
          ่                ั
        ซึงทาให้ใครๆ ก็ดกจับได้ พอ password ถูกขโมยความเสียหายอื่นๆ ก็ตามมา .. SSH
                                                                      ้      ่
        จึงเสนอทางแก้โดยให้ม ี encryption ระหว่าง client และ server ตังแต่เริมต้น connect
             ้        ่                                                           ี
        ดังนันข้อมูลทีส่งผ่านระหว่าง SSH client และ SSH server ก็จะปลอดภัย วิธการของ
                             ั้
        SSH อนุญาตให้ตง security algorithm/protocol ได้หลายตัวเช่น IDEA, Triple-DES,
        IDEA, ArcFour, Blowfish, และ Twofish .. algorithms พวกนี้เป็น secret key
                                    ้
        cryptography หมดเลย ดังนัน Key จะแลกกันโดยใช้ Public Key Cryptography ช่วย
        .. ภายหลัง SSH สามารถทาเป็น tunnel สาหรับให้โปรแกรมอื่นใช้งานได้ดวย           ้
               ่                ี             ้
        และเมือไม่นานนี้เองก็มความพยายามตัง SSH ให้เป็นมาตรฐานในอินเทอร์เน็ต ตอนนี้
        SSH เข้าเป็ น working group ของ Internet Engineering Task Force (IETF)
        แล้วและกาลังร่างมาตรฐาน (Internet Draft) เพื่อประกาศเป็นมาตรฐาน Request For
        Comment (RFC) กันต่อไป
    
   SSL (Secure Socket Layer) ..
                     ่
    SSL เริมมาจากบริษท Netscape        ั
          ่
    ทีทา browser นันแหละครับ               ่
    ลักษณะของ SSL เรียกว่าเป็น
    security                                 protocol
                 ื
    ก็คอเป็นตัวให้บริการความปลอด
    ภัยในการสื่อสารข้อมูล SSL เป็น
    protocol
            ่
    ทีทางานแทรกอยู่ระหว่าง
    application กับ transport layer
    (TCP) ปจจุบนมี service      ั ั
                          ่
    มากมายทีทางานกับ SSL เช่น                                       ตัวอย่าง certificate
    http, ftp, telnet, pop3, smtp
    หรือแม้แต่ VPN การทางานของ SSL จะเริมจาก server ส่ง certificate         ่
    เพื่อยืนยันตัวตนกับผูใช้             ้            ้
                                                    ขันตอนนี้เรียกว่า         authentication        certificate
              ่ ั
    ทีใช้กนเป็ นมาตรฐาน X.509 จะรับรอง (ด้วย digital signature) โดยผูทเี่ ชื่อถือได้เช่น        ้
    US                   Post         Service                            ั ่          ็
                                                        หรือถ้าเป็ นบริษททีนิยมใช้กจะเป็นของ          VeriSign
        ่              ้
    ซึงต้องซือและมีราคาแพงตาม strength ของความปลอดภัย บางเจ้าขาย 500
    certificates ในราคาแสนกว่าเหรียญ แต่ certificate เหล่านี้จะตรวจสอบตัวตนจริงๆ
                   ั                         ่                                      ิ
    ได้ชวร์สุดๆ สาหรับคนทีไม่อยากจ่าย (อย่างผม..) ก็จะใช้วธ ี self signing ในการสร้าง
    ceritifcate คือ เซ็นเองใช้เอง (อย่าง POP3S, SMTPS ของ gear/intania จะเป็ น self
    signed certificate, HTTPS ของ secure.en.kku.ac.th ก็เช่นเดียวกัน) หากผูใช้ยอมรับ                ้
                              ้                   ่
    certificate นันโปรแกรมก็จะเริมตกลงกันว่าจะใช้ protocol อะไรในการเข้าและถอดรหัส
      ้
    ขึนกับว่าโปรแกรมและตัว SSL server รองรับได้ขนาดไหน อย่าง HTTPS ของ IE4
    จะใช้ RC4 stream cipher เป็น secret key cryptography ขนาด 40-bit
               ่            ้       ่
    (ซึงแกะได้ดวยเครืองซูเปอร์คอมพิวเตอร์ความเร็วสูงๆ                                    ได้ในเวลาวินาทีเดียว)
    หรือถ้าเป็น IE5 ก็จะเป็น 1024-bit RSA Public Key Encryption กับ MD5/RSA
    Digital Signature ส่วน Opera 3.6 รองรับ SSLv3.1 จะใช้ 1024-bit RSA Public Key
    Encryption กับ SHA/RSA Digital Signature
   PGP (Pretty-Good Privacy) เป็น public-domain program ใช้ IDEA (International
    Data Encryption Algorithm) เป็น algorithm สาหรับ encryption ใช้ RSA
    สาหรับจัดการ key และใช้ MD5 (Message Digest v.5) สาหรับสร้าง hash
       ี
    วิธการสร้าง key ของ PGP จะใช้ latency ในการพิมพ์ keyboard มาเป็ นตัวหาเลขสุ่ม
                                            ่
    แล้วจึงเอาเลขสุ่มนี้ไปหา key อีกที ส่งทีน่าสนใจของ PGP คือการกระจาย public key
                                                      ่
      ครับ ปกติแล้วการกระจาย public key จะเป็นหน้าทีของ key certification authorities
                             ู้                                                   ้ ื
      แต่สาหรับ PGP จะให้ผใช้คนไหนก็ได้ sign (digital) กากับลงใน public key ของผูอ่น
      การตรวจสอบความน่ าเชื่อถือของ key ก็จะดูจาก digital signature ว่าใครเป็นคน sign
      ตัวอย่าง เช่นฉาก A, B, C นะครับ
          1. A sign public key ของ B
          2. B ส่ง public key ให้ C เพื่อให้ C นาไปเข้ารหัสส่งข้อมูลกลับมาให้
          3. C จะตัดสินใจว่าจะรับ public key ของ B โดยดูว่าใครเป็นคน sign ให้ B
                   ่ ี ็ ื
             ..ในทีน้กคอ A .. หาก C เห็นว่า A ไว้ใจได้ น่าเชื่อถือพอ ก็จะรับ public key
             ของ              b             มาใช้งาน              ถ้าไม่ไว้ใจก็จะปฏิเสธไป
                ้           ้             ิ                            ี
             ทังหมดนี้เกิดขึนอย่างอัตโนมัตนะครับ หลายคนจะเรียกวิธการนี้ว่า Web-of-
             trust
               ี
      อีกวิธนึงคือการตรวจสอบ                       fingerprint       ของ             key
           ี ี              ่ี ี            ั้               ้ั
      วิธน้ใช้ในกรณีทมแค่สองคนแต่ทงสองคนต้องรูจกกันมาก่อน หลักการก็คอ cross ื
                                                           ้         ั
      check กันตรงๆ เลย สมมติ A กับ B อีกครัง ในกรณีท่ี B ได้รบ public key ของ A
                                          ่
      มาจาก server หรือแหล่งอื่นทีไม่ได้มาจาก A โดยตรง, B สามารถตรวจสอบว่า key
        ้
      นันเป็ นของ A จริงหรือไม่ได้ โดยให้ A ส่ง fingerprint ของ key มาเพื่อตรวจสอบกับ
                                      ่ ั                          ่ ั
      fingerprint ของ key ทีได้รบมา หากว่าตรงกันก็แสดงว่า key ทีได้รบมาเป็ นของ A จริง
            ี        ่
      วิธการทีแนะนาใน PGP คือให้โทรศัพท์ถามกันเลยเพราะ fingerprint ทาเป็น biometric
                       ่                             ่ ้
      word ซึงเป็นคาภาษาอังกฤษธรรมดา ทีตองใช้เป็น fingerprint ก็เพื่อจะได้ไม่ต้องส่ง
      key                มาเทียบกันจริงๆ         ซื่งไม่ปลอดภัย   แม้ว่า      fingerprint
      จะถูกดักไปได้ระหว่างการตรวจสอบก็ไม่สามารถเอาไปหาย้อนกลับได้ว่าเป็น public
                                 ้ ั
      key คืออะไร..อ่อ ผูพฒนา PGP คือ ฟิลลิป ซิมเมอร์แมนน์ (Philip Zimmermann) ครับ
      โชคร้ายที่ ดร.ซิมเมอร์แมนน์ พัฒนา PGP ในสหรัฐ เขาเลยถูก US Department of
      Commerce ฟ้อง เพราะกระทาผิดจากการ export software ทีอยูในข่ายของ Strong
                                                                    ่ ่
      Cryptography (ขนาดของ key > 40 bits) ออกไปนอกสหรัฐ
      แต่ในทีสุดศาลสูงสุดของสหรัฐก็ตดสินยกฟ้อง
                 ่                             ั
          ั ั             ่ ั           ่        ่              ้        ้
      ปจจุบนเพื่อเลียงปญหาเรืองกฏหมายทีอาจจะเกิดขึนอีกจึงมีการก่อตัง International
                   ่                 ่ ่ี
      PGP ซึงเป็ น PGP ทีใช้ทงานได้ทุกประเทศทัวโลก       ่
..มาถึงตอนจบ
     ่ ิ                                             ่
คนทีใช้อนเทอร์เน็ตมานานพอจะทราบดีว่าอินเทอร์เน็ตเปลียนไปมากขนาดไหน
แล้วทาไมระบบความปลอดภัยถึงมีความสาคัญนัก
แต่ก่อนเราไม่เคยคิดว่าอินเทอร์เน็ตจะมีผลกระทบต่อสังคมมากขนาดนี้
            ั ั       ั                            ่ ๋     ิ                  ้ ่
แม้แต่นกวิจยเองก็ยงตกใจในความ "บูม" ของมัน ยิงเดียวนี้อนเทอร์เน็ตกลายเป็น พืนทีให้ใครๆ
เข้าไปทาธุรกิจได้                                                           ่
                                          ความสาคัญของความปลอดภัยก็เลยยิงมากขึนไปอีก ้
      ้                     ่
ดังนันอย่าได้มองข้ามสิงเหล่านี้ไป
  ่ ่                                       ั ู้ ั                ้
สิงทีน่าจะกลับมาคิดอีกอย่างคือการสร้างนิสยให้รจกระมัดระวังตัวมากขึนเวลาใช้งานอินเทอร์เน็
ตเหมือนทีเคยเล่าให้ฟงในตอน
              ่           ั                            ่
                                   อินเทอร์เน็ตสีเทานันล่ะครับ                  ้ึ
                                                                 มันเป็ นเทาแก่ขนทุกวันๆ
ถ้าไม่ป้องกันตัวเอง                       ่
                                   ไม่เปลียนพฤติกรรมมันก็ลาบากแน่ครับ                  ..
        ่           ่                         ่                     ่
ใครทีเคยไม่สนใจเรืองความปลอดภัย หันมาเริมต้นกันได้แล้วครับ เปลียน telnet เป็น ssh,
   ่                          ั
เพิมการสนับสนุน SSL ให้กบ pop3/smtp/http เพื่อรักษาข้อมูลสาคัญๆ ของบริษท/องค์กร    ั
          ็       ้
เท่านี้กปลอดภัยขึนอีกเยอะแล้วครับ
อย่าลืมว่าเราไม่ทาซักคนเดียวมันก็เป็ นช่องโหว่ของระบบแล้ว..ช่วยๆ กันนะครับ ..Cyberspace
                ่       ่
จะได้เป็ นโลกทีน่าอยูของทุกคน
References
   1. Schneier, B. "Applied Cryptography", Wiley & Sons 1992
   2. PGP International, "Pretty Good Privacy", <URL:http://www.pgpi.com">
   3. Atkin D. et al. "Internet Security Professional Reference", New Riders 1997

								
To top