Namtan  
            
           
           
          
              
                July 25, 2022,  3:12am
               
               
          #1 
           
         
        
          
Hash Function 
 
 
ทำเป็น บทความ ประกอบด้วย
 
บทความ อื่น ๆ ที่เกี่ยวข้อง
What is Encryption มี 2 รูปแบบ คือ
Glossary 
บทความ ประกอบด้วย
Encryption คืออะไร 
การทำงานของ Encryption 
ประเภทของ Encryption (อันนี้แยก Content ออกไป) 
 
 
 
 
 
 
 
 
[STEP2] Draft Content : ==> CF ว่าประเด็นที่เราจะเล่าทั้งหมดครบถ้วนตามที่ต้องการไหม
กำหนดหัวข้อหลักว่าจะเขียนเรื่องอะไร 
กำหนดรูปแบบที่จะเขียน เช่น แบบ Glossary หรือ แบบบทความยาว 
อธิบายถึงประเด็นที่จะเขียนเป็น outline ว่ามีอะไรบ้าง 
สรุปประเด็นเรื่อง Graphic ว่ามีรูปแบบอะไรบ้าง 
เพิ่ม Ref 
 
คำถามที่อยากให้ Reviewer ช่วยตอบ 
ต้องการรู้ประเด็นไหนเพิ่มเติมไหม เพราะอะไร 
คิดว่าเรียงลำดับการนำเสนอได้ดีรึยัง ถ้าไม่ดี มีไอเดียอย่างไร 
มีประเด็นไหนควรตัดทิ้งไหม เพราะอะไร 
 
         
         
           
        
            
            
            
         
         
             
             
          
            
       
      
        
          
          
            Namtan  
            
           
           
          
              
                August 24, 2022,  6:23am
               
               
          #2 
           
         
        
          [Glossary] Hash Function
คือ ฟังก์ชันการทำงานแบบทางเดียว (One-way function) ซึ่งสามารถแปลงข้อมูล (Input) ที่มีความยาวเท่าไรก็ได้ (Arbitrary length) ออกมาเป็นข้อมูล (Output) ที่ความยาวคงที่ (Fixed-length) โดยผลลัพธ์ที่ได้จะถูกเรียกว่า " Hash value "
** ฟังก์ชัน คือ ความสัมพันธ์ซึ่งในสองคู่อันดับใด ๆ ของความสัมพันธ์นั้น ถ้ามีสมาชิกตัวหน้าเท่ากันแล้ว 
สมาชิกตัวหลังต้องเหมือนกันด้วย
         
         
        
            
            
            
         
         
             
             
          
       
      
        
          
          
            Namtan  
            
           
           
             
          
              
                August 24, 2022,  6:25am
               
               
          #3 
           
         
        
          คุณสมบัติของ Cryptographic Hash Function  มีดังนี้
Arbitrary-length message to fixed-length digest คือ ขนาดของข้อมูล (Input) ก่อนที่จะนำไปเข้า Hash Function จะมีความยาวเท่าใดก็ได้ แต่ค่าแฮช (Output) ที่ได้ออกมาจะมีขนาดความยาวเท่ากันหมด 
 
Pre-image resistant คือ เป็นการทำงานแบบทางเดียว การย้อนกลับทำได้ยาก จนแทบจะเรียกได้ว่าไม่สามารถย้อนกลับได้ แม้ว่าเราจะมีค่า Output ก็ไม่สามารถหาค่า Input ออกมาได้ 
 
Second pre-image resistant คือ แม้ว่าเราจะมีค่า Input ค่าแฮชอยู่ เราก็ไม่สามารถหาค่า Input อื่น ๆ ที่มีค่าแฮชเดียวกันได้ 
 
Collision resistant คือ การที่ค่าแฮชจะไม่ชนกัน หมายความว่า เป็นเรื่องที่ยากมากในการที่ Input ที่แตกต่างกัน 2 อัน เเม้จะแตกต่างกัเล็กน้อยก็ตาม จะทำให้ได้ค่าแฮชค่าเดียวกัน 
 
 
         
         
        
            
            
            
         
         
             
             
          
       
      
        
          
          
            Namtan  
            
           
           
          
              
                August 24, 2022,  6:34am
               
               
          #4 
           
         
        
          ตัวอย่าง มาตรฐาน Hash Function ที่เป็นที่นิยม เช่น
MD5 ที่ออกแบบโดย Ron Rivest สามารถสร้างค่าแฮช (Hash Value) 128 bit เป็น Hash Algorithm ที่นิยมมากที่สุด แต่ภายหลังมีปัญหาเรื่องการโจมตีแบบ brute-force กับ Cryptanalytic กำหนดเป็นมาตรฐานอินเทอร์เน็ต RFC132 
SHA ได้รับการออกแบบโดย NIST & NSA ในปี 1993 ก่อนจะพบจุดอ่อนหลายประการและได้แก้ไขในปี 1995 เป็น SHA-1 เป็นมาตรฐานในสหรัฐอเมริกาสำหรับใช้กับ DSA Signature Scheme สามารถสร้างค่าแฮช (Hash Value) 160 bit 
SHA-2 สร้างขึ้นเพื่ออุดช่องโหว่ของ SHA-1 มีโครงสร้างและรายละเอียดคล้ายกับ SHA-1 และมีการเพิ่ม วิธีการแฮชขึ้นมาอีก 3 ตัว คือ SHA-256, SHA-384, SHA-512 เป็นมาตรฐานที่ใช้กันอย่างแพร่หลายในปัจจุบัน เช่น Bitcoin ที่ใช้ SHA-256 
 
มาตรฐาน Hash Function ที่มีการใช้งานกันอยู่ในปัจจุบัน อย่าง Message Digest Algorithm (MD5) หรือ Secure Hash Algorithm เช่น SHA-1, SHA-2 จะมีความแตกต่างกันไปขึ้นอยู่กับวิธีการที่ใช้และขนาดความยาวของ Output (Fixed Length Output) ที่ได้จากกระบวนการ Hash
นอกจากตัวอย่างที่ยกมานี้ยังมี มาตรฐานอื่น ๆ อีกมากมายเช่น RIPEMD160 (RIPE Message Digest), SM3 (Shang Mi) 256-bit output, Whirlpool 512-bit output และ SHA-3 เป็นต้น
         
         
        
            
            
            
         
         
             
             
          
       
      
        
          
          
            Namtan  
            
           
           
          
              
                August 24, 2022,  6:35am
               
               
          #5 
           
         
        
          [Glossary] Compression Algorithm
คือ การบีบอัดข้อมูลให้มีขนาดเล็กลง และสามารถทำให้ข้อมูลกับไปมีขนาดเท่าเดิมได้ อย่างเช่น Winzip หรือ WinRAR ที่เราสามารถบีบอัดไฟล์ให้มีขนาดเล็กลงและสามารถแตกไฟล์ (Extract files) ให้กลับมาเป็นเหมือนเดิมได้ ตามต้องการไม่จำกัด
         
         
        
            
            
            
         
         
             
             
          
       
      
        
          
          
            Namtan  
            
           
           
          
              
                August 24, 2022,  6:36am
               
               
          #6 
           
         
        
          [Glossary] Hash vs Compression
Hash Function กับ Compression Algorithm มีความคล้ายคลึงกันในเรื่องของการทำให้ข้อมูลมีขนาดเล็กลง แต่ Compression เป็นการบีบอัดข้อมูลที่ยังสามารถทำให้ข้อมูลกับไปเป็นเหมือนเดิมได้ ตามต้องการไม่จำกัด ในขณะที่ Hash Function เมื่อข้อมูลถูกทำให้มีขนาดเล็กลงแล้วจะไม่สามารถทำให้กลับไปเป็นรูปแบบเดิมได้อีก
         
         
        
            
            
            
         
         
             
             
          
       
      
        
          
          
            Namtan  
            
           
           
          
              
                August 24, 2022,  6:45am
               
               
          #8 
           
         
        
          [Glossary] Hash Vs Encryption
Hash Function แตกต่างกับการเข้ารหัส (Encryption) ตรงที่ Encryption เป็นการทำงานแบบ 2 ทาง คือจะต้องใช้คีย์ทั้งการเข้าและถอดรหัส (Decryption) แต่ Hash Function เป็นการทำงานแบบทางเดียว คือเมื่อทำการ Hash แล้ว จะไม่มี ‘de-hashing’