วันอาทิตย์ที่ 28 เมษายน พ.ศ. 2556

Hash



ในกระบวนการรักษาความปลอดภัยคอมพิวเตอร์ นอกเหนือจากการดูแลระบบให้ควบคุมสิ่งที่ผู้ใช้หรือผู้บุกรุกให้ไม่สามารถทำงานใดๆ นอกเหนือจากที่กำหนดไว้ กระบวนการเข้ารหัส (Cryptography) นับเป็นสิ่งสำคัญที่ช่วยให้กระบวนการควบคุมนั้นเป็นไปได้จริง กระบวนการเข้ารหัสทุกวันนี้มักสร้างจากตัวประกอบสามตัวหลักได้แก่ ฟังก์ชั่นแฮช, การเข้ารหัสแบบกุญแจสมมาตร (symmetric key), และการเข้ารหัสแบบกุญแจอสมมาตร (asymmetric key) ในตอนแรกจะพูดถึงฟังก์ชั่นแฮชก่อน
ฟังก์ชั่นแฮชนั้นโดยทั่วไปมันคือฟังก์ชั่นที่คืนค่าที่ "ความยาวคงที่" จากข้อมูลที่ความยาวเท่าใดก็ได้ อย่างเช่นที่เราเรียนในวิชาอัลกอริทึมอาจจะใช้ n mod C เพื่อหาค่าแฮชของข้อมูลใดๆ สมมติให้ n ใหญ่ได้ไม่จำกัดและเราต้องไม่ลืมว่าข้อมูลในคอมพิวเตอร์นั้นไม่ว่าจะเป็นข้อมูลใดๆ สุดท้ายแล้วเราสามารถมองข้อมูลเหล่านั้นเป็นตัวเลขจำนวนหนึ่ง (ที่อาจจะมีหลักนับพันล้านหลัก) ผลสุดท้ายค่าแฮชของข้อมูลจะใหญ่ไม่เกินค่า C
แม้เราอาจจะสร้างฟังก์ชั่นแฮชได้ไม่ยากนัก แต่ฟังก์ชั่นแฮชแต่ละฟังก์ชั่นนั้นมีความดีแย่ต่างกันไป จุดสำคัญที่สุดของฟังก์ชั่นแฮช คือ การชนกันของค่าแฮช (collision) ที่ข้อมูลสองชุดกลับมีค่าแฮชตรงกัน เช่น หากเราใช้ฟังก์ชั่นง่ายๆ อย่าง hash(n) = n mod 5 ทุกค่า n ที่ลงท้ายด้วย 5 ก็จะได้ค่าแฮชเป็น 0 เท่ากันทั้งหมด การใช้งานค่าแฮชที่นักเรียนสายคอมพิวเตอร์ทุกคนต้องเรียนกันคือใช้สร้างตารางแฮช

Checksum: เพื่อความถูกต้องของข้อมูล

ฟังก์ชั่นแฮชมีประโยชน์การใช้งานแรกๆ คือการตรวจสอบความถูกต้องของข้อมูล จากความผิดพลาดต่างๆ เช่น ความไม่น่าเชื่อถือของฮาร์ดแวร์, ความผิดพลาดของมนุษย์, หรือจากความเสียจากความผิดพลาดของเครือข่าย ค่าเหล่านี้เรามักเรียกในการใช้งานว่าค่า checksum
ภายในระบบแรมในคอมพิวเตอร์ทั่วไป จะมีการตรวจค่าความถูกต้องข้อมูลในแรมที่เรียกว่า parity bit ได้จากการบวกค่าของทุกหลักในทุกไบต์เข้าด้วยกัน parity = (bit(0) + bit(1) + bit(2) + bit(3) + bit(4) + bit(5) + bit(6) + bit(7)) mod 2 หากข้อมูลมีความผิดพลาด เช่นแรมเสียหาย เมื่ออ่านค่ากลับขึ้นมาค่าที่ได้จะมีโอกาสไม่ตรงกับค่าใน parity bit อยู่ 50% และหากเจอกรณีเช่นนั้นคอมพิวเตอร์ก็จะหยุดทำงาน แรมรุ่นใหม่ๆ อาจจะไม่ใช้เทคนิคนี้แล้วเนื่องจากต้นทุน, พลังงาน, และความเชื่อถือของแรมรุ่นใหม่ๆ ก็สูงขึ้นมากแต่แผงแรมในคอมพิวเตอร์รุ่นเก่าจะมีชิปแรมอยู่ 9 ตัวด้วยเหตุผลนี้
ภายในบัตรประชาชนไทย มีจำนวน 13 หลัก แต่ในความจริงแล้วมีความหมายเพียง 12 หลักเท่านั้นโดยหลักที่ 13 เป็นค่า checksum เราสามารถใส่เลข 12 หลักของบัตรประชาชนใดๆ แล้วหาค่าหลักที่ 13 ได้
def checksum(ssn):
    return (11 - (sum([int(s)*(len(S)-i+1) for (s,i) in zip(S,range(len(S)))]) % 11)) % 10
กระบวนการนี้ทำให้โอกาสที่ผิดพลาดจากการกรอกหมายเลขด้วยมือลดลงไปอย่างมาก โดยค่าที่ได้นั้นเป็น 0-9 การกรอกผิดจะผ่านการตรวจสอบได้ต่อเมื่อกรอกผิดแล้วได้ค่า checksum ตรงกันพอดี
ค่า checksum ที่มีค่าที่เป็นไปได้เพียงหนึ่งหลักหรือกระทั่งหนึ่งบิตอาจจะดูสามารถชนกับค่าอื่นๆ นี่นำมาคำนวณได้โดยง่าย เราอาจจะพบว่าในการกรอกเลขบัตรประชาชนนับล้านๆ ครั้ง อาจจะมีครั้งที่ผิดในหลักพันครั้ง แม้ค่า checksum จะช่วยลดความผิดพลาดนี้แต่ก็ยังคงเหลือความผิดพลาดโดยบังเอิญได้
ฟังก์ชั่น checksum ช่วงหลังจึงมีการพัฒนาให้สามารถคำนวณค่าและได้ผลลัพธ์ที่กำหนดได้ว่าต้องการผลลัพธ์ (ที่ความยาวจำกัด) เป็นความยาวเท่าใด ที่นิยมใช้กันมากในช่วงหนึ่งคือ CRC-32 ที่จริงแล้ว CRC เป็นเพียงการกำหนดกระบวนการคำนวณไว้กว้างๆ เท่านั้น แต่ความยาวของค่าที่ได้มักกำหนดเป็น 32 บิต จึงเรียกว่า CRC-32
CRC-32 สามารถคำนวณค่า checksum เพื่อยืนยันความถูกต้องของข้อความได้เป็นอย่างดี ด้วยความยาวถึง 32 บิตทำให้มีความเป็นไปได้ 4 พันล้านรูปแบบ มันถูกใช้ตรวจสอบความถูกต้องของข้อมูลอย่างกว้างขวาง ทั้งในระบบแลนที่มีการแนบค่า CRC-32 ไปท้ายแพ็กเก็ตเพื่อให้ฝั่งรับสามารถตรวจสอบได้ว่าข้อมูลทั้งหมดที่ได้รับมาถูกต้องหรือไม่ การส่งไฟล์ขนาดใหญ่ที่อาจจะมีข้อผิดพลาดก็สามารถป้องกันได้ด้วยการส่งค่า CRC-32 ไปให้ผู้รับก่อน เมื่อผู้รับได้รับแล้วจึงรันคำสั่ง crc32 (ลินุกซ์ส่วนมากยังติดตั้งคำสั่งนี้เป็นมาตรฐาน สามารถเล่นดูได้) เพื่อคำนวณค่าของไฟล์ที่ดาวน์โหลดมา หากถูกต้องตรงกันก็แสดงว่าค่าที่ได้รับมานั้นถูกต้อง
อย่างไรก็ดีฟังก์ชั่นในกลุ่ม checksum นั้นถูกออกแบบมาเพื่อให้ตรวจพบความผิดพลาดของข้อมูล "โดยไม่ตั้งใจ" และหากมีนักวิเคราะห์ทางคณิตศาสตร์มาหาทางคำนวณย้อนกลับ เพื่อหาข้อมูลที่จะคำนวณได้ค่า checksum ที่ตรงกันแล้วก็เป็นไปได้โดยง่าย ในโปรโตรคอล SSHv1 นั้นออกแบบโดยไม่ตระหนักถึงข้อจำกัดนี้ หลังจากที่ SSHv1 ออกมาในปี 1995 ก็ได้รับความนิยมอย่างสูง คอมพิวเตอร์และอุปกรณ์เครือข่ายจำนวนมากพากันใช้ SSHv1 ในการล็อกอินจากระยะไกลแทนโปรโตคอลเดิมๆ เช่น telnet โดยหวังว่ามันจะให้ความปลอดภัยที่ดีกว่า เพียงสามปีหลังจากออกโปรโตคอลก็เริ่มมีรายงานว่ามีคนสามารถแทรกคำสั่งใดๆ ลงไปในการเชื่อมต่อที่แอดมินกำลังเชื่อมต่ออยู่กับเครื่องเซิร์ฟเวอร์ และสามารถเข้าควบคุมเครื่องแทนได้ในที่สุด (VU#13877)
หลังจากนั้นไม่นาน ซอฟต์แวร์ SSH จากหลายบริษัทก็พยายามเพิ่มโค้ดตรวจสอบการโจมตีด้วยการปลอมแพ็กเก็ตของ SSH แต่ในปี 2001 ก็มีผู้พบว่าโค้ดดังกล่าวมีบั๊กจนทำให้แฮกเกอร์สามารถบุกเครื่องเซิร์ฟเวอร์ได้โดยไม่ต้องดักฟังการเชื่อมต่อแม้แต่น้อย (VU#945216) นับเป็นจุดอวสานของ SSHv1 ที่ผู้ผลิตส่วนมากมักเลิกซัพพอร์ตโปรโตคอลไป และปิดไว้เป็นค่าตั้งต้น แต่บังคับให้ใช้ SSHv2 ที่แข็งแรงกว่าแทน อย่างไรก็ดี เรื่องนี้ทำให้เรามี The Matrix Reloaded ดูกัน (มองจอดีๆ)

Cryptographic Hash

ในค่า checksum นั้นเราอาจจะนิยามได้ว่ามันเป็นฟังก์ชั่นที่ให้ค่าที่ "ถ้าข้อมูลไม่ตรงกันแล้ว จะได้ค่าที่บังเอิญตรงกันได้ยาก" แต่ปัญหาคือแฮกเกอร์นั้นเป็นผู้จงใจอย่างยิ่งที่จะปลอมแปลงข้อมูล
แม้ข้อมูลจะไม่เข้ารหัส แต่หลายกรณีความถูกต้องก็เป็นเรื่องสำคัญเป็นอย่างมาก เราอาจจะดาวน์โหลดไฟล์ซีดีของลินุกซ์สักตัวจากเซิร์ฟเวอร์ใดๆ ก็ได้ในโลก โดยเลือกเซิร์ฟเวอร์ที่ใกล้เรามากที่สุด เพื่อให้ได้ความเร็วสูงสุด แต่เราจะเชื่อได้อย่างไรว่าเจ้าของเซิร์ฟเวอร์นั้นไม่แอบแก้ไข ใส่มัลแวร์ ฯลฯ ลงไปในซีดีก่อนที่จะเปิดให้เราดาวน์โหลด ขณะที่ผู้ผลิตลินุกซ์มักมีทุนไม่มากนัก และจำนวนมากอยู่ด้วยเงินบริจาค ทางออกในเรื่องนี้คือการประกาศค่าแฮชของทุกไฟล์ที่ให้ดาวน์โหลดผ่านทางเว็บกลาง หลังจากนั้นแม้ใครจะดาวน์โหลดผ่านช่องทางใดๆ ก็สามารถทำได้ เมื่อตรวจสอบแล้วว่าค่าแฮชตรงก็สามารถใช้งานได้อย่างสบายใจ
16b0aa028e5a3d6374667e875044b762cb11eae7 *ubuntu-12.10-desktop-amd64+mac.iso
8618058554ffd11e317356ec25885bcb8c1d0b36 *ubuntu-12.10-desktop-amd64.iso
3e8a359ec2665c6ac9e48e8712655bf1d9bcf27f *ubuntu-12.10-desktop-armhf+omap4.img
799b761f1bbea635d7306a5632cbd54c8c27a10b *ubuntu-12.10-desktop-i386.iso
823b66c44fb620479ba43dacfc73d54cc8af65f6 *ubuntu-12.10-server-amd64+mac.iso
e2a48af008ff3c4db6a8235151a1e90ea600fceb *ubuntu-12.10-server-amd64.iso
ddc70bd3dacbc006eb8dc8cdc05fab008c5b07b9 *ubuntu-12.10-server-armhf+omap4.img
e0e48be7ae21003cf0b25591d71d8cdbee7063e7 *ubuntu-12.10-server-i386.iso
5fa95a26aa416204b9229d07c0d389ea921036d5 *ubuntu-12.10-wubi-amd64.tar.xz
b594ae9d40d0644293990b873dfccf50f80c942b *ubuntu-12.10-wubi-i386.tar.xz
c4879ae4e706613bf2682bfd80ef8d429e107a4f *wubi.exe
ตัวอย่างข้างต้นเป็นค่า SHA1 ของไฟล์ Ubuntu 12.10 ใครที่มีไฟล์และติดตั้งไปแล้วอาจจะลองรันคำสั่ง sha1sum เพื่อตรวจสอบซ้ำ (ถ้าไม่ตรงก็ขอให้โชคดี)
คุณสมบัติความทนทานของฟังก์ชั่นแฮชในกลุ่มที่ทนทานต่อแฮกเกอร์ที่เรียกกันว่า cryptographic hash นี้ มีคุณสมบัติด้วยกัน 3 ประการ
  1. ถ้ามีค่า hash(n) อยู่แล้ว แฮกเกอร์ต้องไม่สามารถหาค่า n ได้ภายในเวลาที่สมเหตุผล
  2. ถ้ามีค่า n และ ้hash(n) อยู่แล้ว แฮกเกอร์ต้องไม่สามารถหาค่า m ที่ทำให้ค่า hash(m) == hash(n) ได้ภายในเวลาที่สมเหตุผล
  3. แฮกเกอร์ไม่สามารถหาค่า n และ m ใดๆ ที่ทำให้ hash(n) == hash(m) ภายในเวลาที่สมเหตุสมผล
ในกรณีของไฟล์ที่เปิดให้ดาวน์โหลด หากผู้ที่ดาวน์โหลดรู้อยู่ก่อนแล้วว่าค่าแฮชนั้นคือค่าอะไรก็สามารถตรวจสอบได้ว่าค่าของไฟล์ที่ดาวน์โหลดมานั้นตรงกันหรือไม่ หากแฮกเกอร์ต้องการปลอมไฟล์เพื่อให้ดาวน์โหลดไปใช้งาน จะต้องพยายามสร้างไฟล์ใหม่ขึ้นมาหลายๆ รูปแบบ ในกรณีของ SHA1 นั้นค่าแฮชที่ได้มีความยาว 160 บิต แฮกเกอร์อาจจะต้องสร้างไฟล์มากขึ้น 2160 (ประมาณ 1.46 x 1048) แบบเพื่อให้ได้สักไฟล์หนึ่งที่มีค่าแฮชตรงกัน หากเป็นเช่นนี้แสดงว่าแฮกเกอร์ไม่สามารถทำได้ในเวลาที่สมเหตุสมผลผล
ก่อนหน้านี้ฟังก์ชั่นที่ได้รับความนิยมเป็นอย่างมากคือ MD5 เพราะมันทำงานได้เร็ว และมีประวัติความทนทานค่อนข้างดีมาก แต่ในช่วงสิบปีให้หลังมานี้ ความรู้ด้านการถอดรหัส (cryptanalysis) ของ MD5 ก็เริ่มถูกเผยแพร่มากขึ้นจนสามารถปลอมแปลงกันได้แม้จะใช้ต้นทุนและเวลาที่สูง แต่ในมัลแวร์ Flame ก็ใช้ช่องโหว่นี้ปลอมแปลงใบรับรองของทางไมโครซอฟท์ จนกระทั่งมัลแวร์สามารถผ่านการตรวจสอบของวินโดวส์ไปได้ โดยตัว MD5 นั้นให้ค่าแฮชขนาด 128 บิต แม้จะต้องใช้เวลานับสิบปี (ซึ่งต่ำกว่าที่ออกแบบไว้เดิม) หากใช้คอมพิวเตอร์เครื่องเดียวในการสร้างใบรับรองในรูปแบบต่างๆ เพื่อให้ค่าแฮชตรงกันและสามารถปลอมแปลงได้ แต่หากแฮกเกอร์มีทุนมากพอก็สามารถซื้อคอมพิวเตอร์จำนวนมาก หรือเช่าเครื่อจาก Amazon EC2 นับพันๆ เครื่องเพื่อช่วยกันคำนวณภายในเวลาไม่กี่เดือน
ฟังก์ชั่นแฮชในระดับที่ทนทานต่อการโจมตี ต้องการการทดสอบจากวงกว้างว่ามันทนทานได้จริง การที่ทีมวิจัยหนึ่งๆ ออกแบบฟังก์ชั่นแฮชที่ดูจะทนทานแต่ไม่ได้ถูกทดสอบมากพอ อาจจะทำให้พบช่องโหว่สำคัญได้ภายหลัง ทาง NIST (National Institute of Standards and Technology - NIST, เป็นหน่วยงานกำหนดมาตรฐานภายใต้กระทรวงพานิชของสหรัฐฯ) ก็จัดแข่งขันมาตรฐาน SHA (Secure Hash Algorithm) เคยเป็นหน่วยงานที่ออกฟังก์ชั่นแฮชมาตรฐานสำหรับหน่วยงานต่างๆ ของสหรัฐ โดยตอนแรกออกมาเป็นฟังก์ชั่น SHA และถูกเจาะ (พบวิธีการสร้างค่าที่ให้ค่าแฮชตรงกัน) ในเวลาไม่นาน จนต้องแก้ไขเป็น SHA1 (ตัวแรกเลยได้ชื่อว่า SHA0) ที่ได้รับการยอมรับอย่างกว้างขวาง และใช้ในใบรับรองการเข้ารหัสเว็บส่วนใหญ่ทุกวันนี้
SHA1 เองก็เริ่มมีแนวโน้มว่าอาจจะไม่แข็งแกร่งนัก ทาง NIST แนะนำให้หน่วยงานรัฐทั้งหมดย้ายไปใช้ SHA2 หลังจากปี 2010 และเพื่อสร้างมาตรฐานที่ทนทานในระยะยาวก็จัดแข่ง SHA3 จากทีมวิจัยหลายทีม และเพิ่งได้ผู้ชนะเมื่อปลายปีที่แล้ว
นอกจากการใช้แฮชเพื่อตรวจสอบความถูกต้องของข้อมูลแล้ว หน้าที่สำคัญของแฮชคือการ "ปิดบัง" ว่าข้อมูลนั้นที่จริงแล้วเป็นอะไร กรณีที่ใช้กันมาก เช่น การปิดบังรหัสผ่าน, หรือการปิดบังข้อมูลความลับ
ในระบบ 2-factor authentication ของกูเกิลนั้นเมื่อเปิดโปรแกรมครั้งแรกโปรแกรมจะขอให้ผ่านบาร์โค้ดบนหน้าจอ บาร์โค้ดนั้นคือ "ความลับ" ที่เรากับกูเกิลรู้ร่วมกัน แต่ในกรณีของรหัสผ่าน เราต้องส่งความลับให้กูเกิลทุกครั้งที่ต้องการเข้าใช้บริการ แต่หากเราใช้ฟังก์ชั่นแฮช เมื่อเราแชร์ความลับนี้ร่วมกับกูเกิลแล้ว กระบวนการคือใช้ค่า "เวลา" ไปเชื่อมกับความลับ เช่น หากกูเกิลกำหนดความลับระหว่างเรากับเว็บเป็น "14048a9a" ทุกๆ นาที ฟังก์ชั่นภายในจะแฮชค่าจากนาฬิกา กลายเป็นค่าแฮช HASH("14048a9a"+"Apr 25 05:03:03 ICT 2013") เมื่อเราส่งค่าแฮชนี้ไปยังกูเกิล กูเกิลที่รู้ความลับภายในเช่นเดียวกันจะสามารถใช้นาฬิกาในเครื่องตัวเองคำนวณเวลาออกมาได้แบบเดียวกัน กระบวนการจึงพิสูจน์ตัวตนได้โดยไม่ต้องส่งความลับถึงกันแม้แต่น้อย
กระบวนการนี้มีการใช้งานมานานในโลกองค์กร บริษัทขนาดใหญ่จำนวนมากมี "พวงกุญแจ" พิเศษที่มีตัวเลขแสดงและเปลี่ยนไปทุกนาที หลักการก็ยังคงเดิมคือภายในพวงกุญแจเหล่านี้มีค่าความลับที่ไม่ต้องการเปิดเผยอยู่ภายในและแชร์ร่วมกันกับเซิร์ฟเวอร์ และใช้ค่าเวลาปัจจุบันในการคำนวณตัวเลข

Password Hash

รหัสผ่านนั้นเป็นข้อมูลที่ต้องถูกปิดบังแม้แต่ผู้ดูแลระบบเองรวมถึงหลายครั้งข้อมูลถูกแบ็กอัพเก็บเอาไว้ ผู้ใช้อาจจะใช้รหัสผ่านเดียวกันในหลายบริการ (ซึ่งเป็นนิสัยที่อันตรายต่อความปลอดภัย แต่ผู้ใช้จำนวนมากก็ทำเช่นนี้) ในกรณีสุดวิสัย ฐานข้อมูลรหัสผ่านอาจจะรั่วไหลไปยังแฮกเกอร์ที่เราพบกันได้บ่อยครั้ง การแฮชรหัสผ่านก่อนที่จะเก็บจึงช่วยแก้ปัญหานี้ ข้อมูลที่เก็บอยู่บนเซิร์ฟเวอร์จะเป็นเพียงค่าแฮชที่ไม่ (ควร) มีใครรู้ว่าค่าตั้งต้นของมันเป็นอะไร เช่น บางครั้งแฮกเกอร์ก็เป็นผู้ดูแลระบบหรือผู้ดำเนินการแบ็กอัพเสียเอง หากคนเหล่านี้สามารถรู้ได้ว่ารหัสผ่านคืออะไร พวกเขาอาจจะออกไปล็อกอินบริการผ่านช่องทางปกติ แล้วใช้รหัสผ่านของลูกค้าเพื่อเข้าสู่ระบบได้โดยง่าย
เว็บเฟรมเวิร์คสมัยใหม่จะเก็บรหัสผ่านผู้ใช้เป็นค่าที่แฮชแล้วทั้งหมด เป็นเหตุผลให้เมื่อผู้ใช้ลืมรหัสผ่าน เว็บจะไม่สามารถส่งรหัสผ่านเดิมกลับไปยังผู้ใช้ได้เลย (เพราะไม่มีใครรู้รหัสแล้ว) กระบวนการเดียวที่ทำได้คือการส่งลิงก์ที่เป็นลิงก์สร้างขึ้นเฉพาะ (มักต่อท้ายด้วยสตริงสุ่มยาวๆ ให้เดาไม่ได้) แล้วให้ผู้ใช้กดเข้ามาเปลี่ยนรหัสผ่านได้เท่านั้น
แม้ว่าฟังก์ชั่นแฮชจะทนทานต่อการย้อนกลับหาค่าตั้งต้น แต่พลังของคอมพิวเตอร์ทุกวันนี้กลับสูงมากจนกระทั่งเป็นไปได้ที่จะเก็บค่าความเป็นไปได้ทุกกรณีของแฮช เมื่อเราเห็นค่าแฮชสักค่าหนึ่ง เราอาจจะค้นหามันได้ทั่วไปว่าที่จริงแล้วมันเป็นค่าอะไร เช่น ค่า bf072e9119077b4e76437a93986787ef ยิ่งหากผู้ใช้ใช้รหัสผ่านที่ใช้กันบ่อย โอกาสที่จะพบค่าแฮชที่ตรงกันทำให้รู้รหัสผ่านเริ่มต้นก็มากขึ้น
กระบวนการหลีกเลี่ยงค่าแฮชของค่าที่พบบ่อย ทำให้มีข้อเสนอการเติมค่าเข้าไปอีกชุดหนึ่งก่อนแฮชเพื่อให้ค่าเปลี่ยนไป โดยค่านี้อาจจะเก็บเป็นความลับระหว่างผู้ที่เข้าถึงฐานข้อมูลของรหัสผ่าน โดยเติมค่าที่สุ่มมาอีกชุดหนึ่งต่อท้ายข้อมูลที่จะแฮช ทำให้ค่าแฮชที่ได้ไม่ตรงกับค่าแฮชทั่วไปที่ใช้งานกัน เช่น หากต้องการเก็บค่าแฮช SHA1 ของรหัสผ่าน "1234" แทนที่จะแฮชค่า "1234" โดยตรงซึ่งจะให้ค่าแฮช "1be168ff837f043bde17c0314341c84271047b31" ก็ให้สร้างอักษรสุ่ม เช่น "A1d944" เข้ามาต่อท้ายทำให้ค่าเปลี่ยนไปเป็น "14048a9ac614bd653defca9e63db28d1377c0df4" เมื่อต้องการเทียบค่าอีกครั้ง ไม่ว่าผู้ใช้จะใส่ค่าอะไรเป็นรหัสผ่านก็ให้นำสตริง "A1d944" เข้าไปต่อท้ายทุกครั้ง เรียกกระบวนการนี้ว่า Salt
นอกจากการปิดบังรหัสผ่านแล้ว ยังมีกรณีที่ต้องการปิดบัง เช่น มาตรฐานการเก็บหมายเลขบัตรเครดิตนั้น ไม่ควรเก็บหมายเลขบัตรเครดิตไว้โดยตรงในฐานข้อมูล แต่ให้เก็บค่าแฮช (ที่อาจจะไม่ต้อง Salt) เพื่อใช้ยืนยันว่าผู้ใส่หมายเลขบัตรเครดิตนั้นเป็นลูกค้าที่ใช้บริการร้านค้าอยู่หรือไม่ และใช้หมายเลขที่ลูกค้าเพิ่งใส่มาในการยืนยันไปยังธนาคารเพื่อตัดเงิน การทำเช่นนี้ในกรณีที่ร้านค้าถูกแฮกก็ยังไม่ทำให้หมายเลขบัตรเครดิตของลูกค้าถูกเปิดเผย
แต่ปัญหาของฟังก์ชั่นแฮชยังคงมีประเด็นใหม่ๆ ฮาร์ดแวร์ปัจจุบันได้รับการปรับปรุงอย่างรวดเร็ว ชิปจำนวนมากถูกเพิ่มชุดคำสั่งพิเศษเพื่อเร่งความเร็วในการคำนวณแฮช ทำให้การคำนวณค่าแฮชทำได้เร็วขึ้นเรื่อยๆ ปัญหาความปลอดภัยเกิดขึ้นเมื่อการคำนวณค่าแฮชทำได้อย่างรวดเร็ว ทุกวันนี้การตั้งรหัสผ่านของคนเรามักจำกัดอยู่ที่ไม่เกิน 8 ตัวอักษร ซึ่งหากใช้ตัวอักษรเล็กภาษาอังกฤษทั้งหมดก็จะมีความเป็นไปได้เพียงสองแสนล้านกรณีเท่านั้น ฮาร์ดแวร์ความเร็วสูงและการใช้บริการกลุ่มเมฆทำให้การคำนวณค่าแฮชใหม่ทั้งหมดสำหรับความเป็นไปได้เพียงเท่านี้สามารถทำได้ในเวลาอันสั้น หรือแม้แต่การจำคำสุ่มในภาษาอังกฤษสี่คำ ก็ยังมีความเป็นไปได้เพียง 4.5 ล้านล้านกรณี ในกรณี
เราไม่สามารถเพิ่มความยาวรหัสผ่านไปเรื่อยๆ เพื่อให้มีความเป็นไปได้สูงพอที่แฮกเกอร์จะไม่สามารถไล่คำนวณรหัสผ่านใหม่ทั้งหมดได้ กระบวนการที่พอช่วยได้คือการสร้างฟังก์ชั่นแฮชรูปแบบใหม่ที่ "ช้า" ฟังก์ชั่นทั่วไปอาจจะคำนวณสำเร็จภายในเวลาระดับไมโครวินาที แต่ฟังก์ชั่นแฮชสำหรับรหัสผ่านจะใช้เวลามากกว่านั้นนับพันหรือนับหมื่นเท่า หากใช้สำหรับคำนวณรหัสผ่านผู้ใช้ที่ป้อนรหัสก็มักไม่ส่งผลทำให้การให้บริการช้าลงนัก แต่หากแฮกเกอร์จะไล่รหัสผ่านที่เป็นไปได้ทุกกรณี การช้าลงนับพันเท่าจะทำให้แฮกเกอร์คำนวณทุกค่าที่เป็นไปได้ได้ยากขึ้นมาก (หากออกแบบแข็งแรงพอ น่าจะไม่สามารถทำได้ในช่วงชีวิต) ฟังก์ชั่นเหล่านี้ได้แก่ bcrypt ที่ช้าโดยกระบวนวิธีภายในเองแม้จะช้าแต่แฮกเกอร์ในยุคหลังก็สามารถสร้างฮาร์ดแวร์ผ่านชิป FPGA เพื่อเร่งความเร็วได้ดีขึ้นเรื่อยๆ,มาตรฐานการแฮชที่ช้าที่เป็นมาตรฐานคือ PBKDF2 (แบบเดียวกับที่ 1Password ใช้) โดยกระบวนการแล้วมันคือการคำนวณค่าแฮชด้วยฟังก์ชั่นที่ระบุ โดยสามารถระบุได้เป็นทั้ง SHA1 และ MD5 แล้วคำนวณซ้ำๆ ไปตามจำนวนรอบที่กำหนด โดยแนะนำไม่ต่ำกว่า 1000 รอบ ข้อเสนอใหม่เช่น scrypt สร้างฟังก์ชั่นที่ช้าและต้องการหน่วยความจำสูง ทำให้สร้างฮาร์ดแวร์มาเร่งความเร็วได้ลำบาก (เพราะหน่วยความจำในชิปจะกินพื้นที่สูงมาก)

ส่งท้าย

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


ที่มา http://www.blognone.com/node/43630

วันเสาร์ที่ 27 เมษายน พ.ศ. 2556

โทคาแมคโรงไฟฟ้าพลังนิวเคลียร์ฟิวชั่นแห่งอนาคต








โทคาแมค (Tokamak) เป็นเครื่องมือที่ใช้ในการทดลองปฏิกิริยานิวเคลียร์ฟิวชั่นโดยใช้สนามแม่เหล็กเป็นตัวควบคุมพลาสมา มันมาจากคำเต็มที่ว่าในภาษารัสเซียว่า TOroidalnaya KAmera ee MAgnitnaya Katushka ดูจากภายนอกโทคาแมคมีรูปลักษณะเหมือนขนมโดนัทเหมือนที่แสดงในรูป

โทคาแมคถูกคิดค้นโดยนักวิทยาสาสตร์ชาวรัสเซียและได้เกิดขึ้นครั้งแรกในประมาณปี ค.ศ. 1950 โทคาแมคสามารถควบคุมพลาสมาโดยใช้สนามแม่เหล็ก 2 แบบ คือ สนามแม่เหล็กในแนววงใหญ่ที่เรียกว่า (Toroidal magnetic field) และสนามแม่เหล็กในแนววงเล็กที่เรียกว่า (Poloidal magnetic field) สนามแม่เหล็กในแนววงใหญ่เกิดจากกระแสไฟฟ้าที่ไหลผ่านขดลวดรูปวงแหวน ส่วนสนามแม่เหล็กในแนววงเล็กเกิดจากการไหลของพลาสมาในโทคาแมค โดยทั่วไปสนามแม่เหล็กในแนววงใหญ่จะสูงกว่าสนามแม่เหล็กในแนววงเล็กประมาณ 10 เท่า









ในปัจจุบันโทคาแมคอยู่ในหลายประเทศเช่น ประเทศสหรัฐอเมริกา ประเทศอังกฤษ ประเทศฝรั่งเศส ประเทศรัสเซีย ประเทศจีน ประเทศญี่ปุ่น และ ประเทศเกาหลีใต้ เป็นต้น

ความก้าวหน้าของการพัฒนาปฏิกิริยานิวเคลียร์ฟิวชั่นโดยใช้โทคาแมคเป็นไปอย่างต่อเนื่อง ในปี คศ 1997 ณ ห้องทดลอง ใกล้เมืองอ็อกฟอร์ด ประเทศอังกฤษ มีการทดลองปฏิกิริยานิวเคลียร์ฟิวชั่นโดยใช้โทคาแมค พบว่า พลังงานตอบแทนที่ได้จากปฏิกิริยานิวเคลียร์ฟิวชั่นโดยใช้ดิวเทอร์เรียมและตริเตรียมมีปริมาณสูงถึง 60% ของพลังงานที่ใช้ ซึ่งเป็นค่าที่น่าพอใจมาก

ส่งผลให้มีการพัฒนาอย่างต่อเนื่อง โครงการสร้างโทคาแมคขนาดใหญ่ได้เกิดขึ้นแล้ว โดยมีวัตถุประสงค์เพื่อสร้างต้นแบบของโรงผลิตพลังงานไฟฟ้าโดยใช้ปฏิกิริยานิวเคลียร์ฟิวชั่น โครงการนี้มีชื่อว่า International Thermonuclear Experimental Reactor (ITER) ซึ่งเป็นความร่วมมือกันในระดับนานาชาติ โดยมีสมาชิกหลักคือ ประเทศสหรัฐอเมริกา สหภาพยุโรป ประเทศรัสเซีย ประเทศจีน ประเทศญี่ปุ่น และ ประเทศเกาหลีใต้

โทคาแมคในโครงการนี้มีขนาดใหญ่มากต้องใช้งบประมาณถึง 1 หมื่นล้านเหรียญสหรัฐ ปัจจุบันอยู่ในระยะที่ตัดสินใจด้านสถานที่โดยมีสถานที่ 2 แห่งคือ เมืองโรคคะโชทางตอนเหนือของประเทศญี่ปุ่นและคาดาราช ในประเทศฝรั่งเศส โครงการทดลองอันนี้จะเป็นคำตอบที่สำคัญของการนำเอาปฏิกิริยานิวเคลียร์ฟิวชั่นมาใช้ผลิตพลังงานในอนาคต

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

แต่อย่างไรก็ดีการช่วยกันประหยัดพลังงานก็เป็นสิ่งจำเป็นและเป็นสิ่งที่ทุกคนควรจะปฏิบัติ ช่วยกันคนละไม้ละมือ ทำเท่าที่พอจะทำได้ แล้ววันนี้คุณทำบ้างหรือยัง?



ที่มา
http://vcharkarn.com/varticle/285
http://www.iter.org/construction/layout

วันอาทิตย์ที่ 21 เมษายน พ.ศ. 2556

Cloud Service



คือ การใช้ทรัพยากรคอมพิวเตอร์ทั้งระบบ ไอที, ฮาร์ดแวร์ และซอฟต์แวร์บนเครือข่ายอินเตอร์เน็ต และระบบสารสนเทศแบบเสมือนจริง Virtualization มาแบ่งปันความสามารถ ในระดับประมวลผลผ่านเครือข่าย   อินเตอร์เน็ต โดยผู้ใช้ ไม่จำเป็นต้องมี เครื่องคอมพิวเตอร์ประสิทธิภาพสูง หรือติดตั้งซอฟต์แวร์ตลอดจนซอฟต์แวร์แอพพลิเคชั่นจำนวนมาก ๆ เพื่อการทำงานที่ซับซ้อนแต่สามารถใช้บริการประมวลผล และแอพพลิเคชั่นต่าง ๆ จากผู้ให้บริการ และ ชำระค่าบริการตามอัตราการใช้งานที่เกิดขึ้นจริง (Pay Per Use)
ที่มาของระบบประมวลผลกลุ่มเมฆคือ แนวคิดการแบ่งงานกันทำ โดยผู้ใช้สามารถใช้เวลาไปกับธุรกิจหลักได้เต็มที่ และ สามารถถ่ายโอนงานทั้งหมด (outsource) ไปยังผู้ให้บริการ Cloud Computing ผ่านเครือข่ายอินเตอร์เน็ต ซึ่งจะก่อให้เกิดการประหยัดต่อขนาด (Economies of scale)
ของไอที ทั้งด้านประสิทธิภาพในการประมวลผลและขนาดของพื้นที่จัดเก็บข้อมูล
ลักษณะสำคัญของระบบประมวลผลกลุ่มเมฆ
  1. ลดค่าใช้จ่ายด้านการลงทุนในระบบไอที
  2. เพิ่มความสามารถในการแบ่งปันทรัพยากรแบบ Multi-Tenancy เพื่อเพิ่มประสิทธิภาพ
  3. ความสามารถในการปรับเปลี่ยนขนาด (Scalability) ตามความต้องการการใช้งาน
  4. ความเชื่อถือได้ (Reliability)ผ่านศูนย์บริการ Internet Data Center ที่เชื่อถือได้
  5. มีความปลอดภัย (Security) สำหรับข้อมูลและทรัพยากรของระบบ
  6. มีประสิทธิภาพ (Performance) และมีความเสถียรสำหรับการให้บริการ
  7. อุปกรณ์และสถานที่ตั้งไม่ขึ้นต่อกัน โดยผู้ใช้สามารถเข้าถึงระบบจากสถานที่ใดก็ตามในโลก และสามารถใช้ร่วมกับอุปกรณ์ได้หลายรูปแบบ เช่น คอมพิวเตอร์ PC, โทรศัพท์มือถือ
รูปแบบการให้บริการแบบ As a Service บน Cloud Computing
Infrastructure as a Service คือการให้บริการ infrastructureแบบเสมือนจริง  เช่น virtual server , virtual network , virtual storage เป็นต้น  ตัวอย่างผู้ให้บริการ คือ Amazon ( EC2) ,Rack Space  , PowerAll ( Aspen cloud  )  เป็นต้น
Platform as a Service คือการให้บริการ API หรือ platform ต่างๆ เพื่อให้นักพัฒนาโปรแกรม ใช้ในการพัฒนา application บนระบบ Cloud Computing  รวมไปถึง tool ต่างๆที่จะนำมาใช้ในการ  Distribute application  บนระบบ cloud  computing ได้   อย่างตัวอย่างผู้ให้บริการ คือ Salesforce , Oracle  เป็นต้น
Software as a Service คือการให้บริการ Application สำเร็จรูปที่มีความพร้อมของ Standard function เพื่อให้ผู้ใช้งานสามารถาเลือกมาใช้งานได้ทันทีตัวอย่างผู้ให้บริการ คือ Dropbox, Saleforce, GoogleDoc เป็นต้น  


ที่มา http://cloud.trueidc.co.th/?page_id=256

วันศุกร์ที่ 12 เมษายน พ.ศ. 2556

แคลเซียม



 แคลเซียมเม็ดดังกล่าวทำมาจากอะไร แล้วใครอยู่ในข่ายที่ต้องกินบ้าง 

          เห็นสุภาพสตรีหลายคนที่อายุมากแล้ว หันมากินแคลเซียมเม็ดกัน ก็เลยทำให้เกิดข้อสงสัยว่า เพื่อให้หายข้องใจ ผู้เขียนจึงมาพูดคุยกับ นพ.กฤษดา ศิรามพุช ผอ.สถาบันเวชศาสตร์อายุรวัฒน์นานาชาติ

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

          มีงานวิจัยชี้ว่า แคลเซียมจากอาหารสดจะช่วยลดการเกิดนิ่วในไตได้ แต่ถ้าเป็นแคลเซียมเสริมกินมากไปควรระวังการจับตัวเป็นนิ่วในไตได้ 

เคล็ดลับสำคัญในการกินแคลเซียมมีดังนี้ 
           1.อย่ากินร่วมกับผักที่มีผลึกออกซาลิกมาก เพราะจะทำให้เกิดนิ่ว เช่น ใบชะพลู ขึ้นฉ่าย ยอดมะม่วงอ่อน 

           2.ถ้าเป็นแคลเซียมเม็ดขอให้แบ่งกินเป็น 2 มื้อ จะดูดซึมได้ดีกว่ากินพร้อมกัน ในคราวเดียว ยกเว้นถ้าวันใดกินอาหารอุดมแคลเซียม อยู่แล้วก็กินแคลเซียมเม็ดเพียงมื้อเดียวก็พอ 

ผู้ที่ควรกินแคลเซียม คือ 

           1.ผู้ที่กินอาหารสดไม่พอ โดยเฉพาะกุ้งแห้ง ปลาเล็กปลาน้อย 

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

           3.ผู้ที่เข้าวัยทอง เพราะมีโอกาสกระดูกพรุนสูงมาก โดยเฉพาะกระดูกบริเวณสันหลัง บั้นเอว ข้อตะโพกและข้อมือ 

           4.ผู้เสี่ยงกระดูกพรุน เช่น คนที่ผอมบางกระดูกเล็ก คนสูบบุหรี่ มีประวัติครอบครัวเป็นกระดูกพรุน 

ส่วนคนที่ไม่ควรกิน คือ 

           1.คนที่มีปัญหาเรื่องขับแคลเซียมออกไปไม่ได้ เช่น คนที่เป็นโรคไต 

           2.คนที่มีปัญหาเรื่องโรคหัวใจ เพราะแคลเซียมที่เกินอาจไปเกาะเป็นตะกรันหลอดเลือดหัวใจทำให้แข็งแต่เปราะและตีบตันง่าย 

           3.คนที่มีปัญหาเรื่องแคลเซียมสะสมตามตัว เช่น มีกระดูกงอกหรือเป็นนิ่วทางเดินปัสสาวะ 

สำหรับการกินแคลเซียมต่อวัน แบ่งตามวัยเป็น 3 ช่วง ดังนี้ 
           1.วัยเด็ก วันละ 200-500 มิลลิกรัม 

           2.วัยผู้ใหญ่ วันละ 1,000 มิลลิกรัม 

           3.วัยทองกับสตรีมีครรภ์ วันละ 1,200 มิลลิกรัม 

          ถ้ากะประมาณก็กินราว 1,000 มิลลิกรัมต่อวัน ไม่ต้องกังวลว่าจะขาดจนเกินไป เพราะลำพังเรากินอาหารถ้าได้ปริมาณที่เหมาะสมดังที่บอก ก็จะเพียงพอมากแล้ว หรือถ้าท่านกินแคลเซียมเม็ดอยู่แล้วกลัวว่าจะได้เกินไป ก็ขอให้กินแคลเซียมเม็ดเพิ่มอีกเพียงเม็ดหรือครึ่งเม็ดก็พอ 

          สำหรับอาหารที่มีแคลเซียมเยอะ หากคนที่ไม่มีเงินพอซื้อแคลเซียมเม็ดกิน เช่น แกงคั่วหอยขม ปลาร้าสับ กุ้งจ่อม อึ่งแห้ง เขียดย่าง หมกปลาแก้ว แจ่วปลาร้า และกุ้งชุบแป้งทอด โดยพบว่า ปลาร้าสับ กุ้งจ่อม หมกเคย กุ้งฝอยชุบแป้งทอด จะมีปริมาณแคลเซียมระหว่าง 393.6-915.3 มก. ต่อ 100 กรัม เรียกว่ากินแค่ 1 ขีดก็ได้แคลเซียมพอ ๆ กับกินแคลเซียมเสริม 1 เม็ดเลยทีเดียว 
วัตถุดิบอาหารแคลเซียม ที่เลือกกินง่ายแบบไทย ๆ นอกจากที่เราเคยรู้มีดังนี้ 

           1.งาดำ รับประทานให้ได้ราว 2 ช้อนโต๊ะต่อวันจะได้แคลเซียมเกือบเท่ากับแคลเซียมเสริมทั้งเม็ดเช่นกัน 

           2.พริก กระถิน ใบยอ กะเพราโหระพา กระเจี๊ยบ ผักกาดเขียว ผักกวางตุ้ง ปวยเล้ง คะน้า เหล่านี้เป็นแหล่งแคลเซียมที่ดีแต่มักถูกมองข้ามเพราะคิดว่าเป็นผัก ให้กินวันละอย่างน้อย 3 ทัพพีร่วมกับอาหารแคลเซียมชนิดอื่น โดยเฉพาะพริกนั้น การกินพริกป่นวันละ 1-2 ช้อนชาได้แคลเซียมถึง 1 ใน 3 ของที่ต้องการต่อวัน 

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

           5.นอกจากนั้นยังมีมากในโยเกิร์ต และชีส ไม่ต้องกลัวอ้วนเพราะส่วนใหญ่เป็นโปรตีน แต่ถ้าเนยจะเป็นไขมัน 

          อย่างไรก็ตาม การกินแคลเซียมอย่างเดียวอาจทำให้ท้องผูกได้ เคล็ดลับ คือ ต้องกินร่วมกับแมกนีเซียม ซึ่งได้จากผักและผลไม้ จะเห็นว่าเดี๋ยวนี้แคลเซียมเม็ดมักเติมแมกนีเซียมไปด้วย


ที่มา http://health.kapook.com/view5162.html

วันอาทิตย์ที่ 7 เมษายน พ.ศ. 2556

ตราสารหนี้/พันธบัตร/หุ้นกู้





ตราสารหนี้  เป็นเครื่องมือทางการเงิน ระหว่าง "ผู้ออกตราสารหนี้" และ "ผู้ถือตราสารหนี้" โดยแต่ละฝ่ายมีลักษณะ และ หน้าที่ดังนี้



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

ผู้ถือตราสารหนี้  เป็นผู้เงินส่วนเกินความต้องการ ต้องการลงทุน จะมีสถานะเป็นเจ้าหนี้  ได้รับผลตอบแทนจากตราสารหนี้เป็นดอกเบี้ยตามที่ผู้ออกตราสารกำหนดไว้


แล้วพันธบัตร/หุ้นกู้ ละ? 
เป็นชื่อของตราสารหนี้แบ่งตามผู้ที่ออกตราสารหนี้ถ้าเป็นรัฐบาล ก็จะใช้คำว่า "พันธบัตร"
ถ้าเป็นบริษัทเอกชน ก็จะใช้คำว่า "หุ้นกู้" ในภาษาอังกฤษจะเรียกรวมๆว่า bond และแบ่งเป็น government bond, corporate bond


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

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

โดยอัตราดอกเบี้ยทั้งหมดจะขึ้นอยู่กับสภาวะเศรษฐกิจ และ อัตราดอกเบี้ย ณ ขณะนั้นๆด้วย

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

2.ลงทุนในกองทุนตราสารหนี้
เหมือนกับการลงทุนในกองทุนทั่วไป โดยผู้ลงทุนต้องดูว่ากองทุนที่จะลงทุนมีนโยบายอย่างไร บางกองฯ เน้นลองพันธบัตร บางกองเน้นลงหุ้นกู้ เลือกให้เหมาะกับความต้องการของตนเอง
ตัวอย่างกองทุนตราสารหนี้ธนาคารต่างๆ (ผลตอบแทนประมาณ 2-3%)
กสิกร ได้แก่ k-treasury, k-money
กรุงเทพ ได้แก่ ธนทวี
ไทยพาณิชย์ ได้แก่ scbsff, scbtmf 
ซึ่งกองทุนพวกนี้เป็นกองทุนเปิดไม่กำหนดอายุ ผู้ลงทุนสามารถซื้อขายได้ทุกวัน โดยหากขายจะได้รับเงินในวันทำการถัดไป ผลตอบแทนเป็นไปตามภาวะตลาดในขณะนั้นๆ

นอกจากนี้ยังมีกองทุนตราสารหนี้ที่เปิดขายทุกอาทิตย์ และกำหนดอัตราผลตอบแทน(ดอกเบี้ย)ที่ได้รับแบบที่แน่นอน ซึ่งติดตามได้ผ่านเว็บของกองทุน


ที่มา http://www.thaifundnews.com/2013/04/blog-post.html