IPv6 is the next generation Internet Protocol designed to replace the present version of IP, or IPv4, in order to sustain the current impressive growth rate of the Internet. Using public addresses consisting of four octets each, the present Internet Protocol (IPv4) can only sustain 4,294,967,296 addresses. When the IPv4 was developed, this was thought to be a very large number, as only a few small number of devices were actually interconnected. As people around the world become increasingly connected to the Internet, and as new applications for connectivity emerge, these four billion addresses are expected to become quite scarce.
วันอาทิตย์ที่ 7 กุมภาพันธ์ พ.ศ. 2553
วันจันทร์ที่ 11 มกราคม พ.ศ. 2553
Introduction to IPSec
Introduction to IPSec
Internet Protocol security (IPSec) คือ ชุดโปรโตคอลเพิ่มเติมของโปรโตคอล IP เพื่อให้การติดต่อสื่อสารมีความปลอดภัยมากขึ้น โดยสิ่งที่เพิ่มเติมที่ทำให้มีความปลอดภัยนั่นคือ มีการทำ authentication และการ encryption ในข้อมูล IP packet ที่รับส่งกัน
ชุดโปรโตคอล IPSec นี้รวมถึงโปรโตคอลที่ใช้ในการทำ authentication ระหว่างกันเพื่อสร้าง session ที่ใช้ในการติดต่อสื่อสารและ โปรโตคอลที่ใช้เจรจา key ที่ใช้เข้ารหัสข้อมูลระหว่างการติอต่อสื่อสารของ session เราสามารถใช้ IPSec ป้องกันข้อมูลในการติดต่อสื่อสารได้ทั้งระหว่าง host กับ host (computer user or server) ระหว่าง security gateway กับ security gateway (router or firewall) หรือระหว่าง security gateway และ host โดย IPSec สามารถนำไปประยุกต์ใช้งานได้หลากหลายมาก เนื่องจากมันทำงานใน layer ที่ต่ำ (internet layer ใน TCP/IP model) ทำให้ Application ต่างๆ ไม่ต้องทำสิ่งใดเพิ่มเติมเพื่อให้ทำงานร่วมกับ IPSec ได้ ไม่เหมือนกับโปรโตคอลด้านความปลอดภัยตัวอื่น เช่น TLS/SSL ที่จะต้องออกแบบ Application ให้ทำงานร่วมกันกับมันได้
IPSec ประกอบด้วยโปรโตคอล ที่ทำหน้าที่หลักต่างๆกันดังนี้
· Internet Key Exchange (IKE) เป็นโปรโตคอลที่ใช้สำหรับการจัดตั้ง Security Association (SA) ที่ใช้เป็นช่องทางการสื่อสารระหว่างกัน และเป็นโปรโตคอลที่ใช้เจรจาว่าจะใช้โปรโตคอลใดและ algorithm ใด ทีจะใช้สร้าง key สำหรับ encrypt ข้อมูลและทำ authentication ระหว่างกัน
· Authentication Header (AH) เป็นโปรโตคอลที่ทำหน้าที่รักษาความถูกต้องสมบูรณ์ (integrity) ของข้อมูล เพื่อเป็นการยืนยันว่าข้อมูลที่ได้รับนั้นไม่ได้ถูกแก้ไขระหว่างทาง โดยการใช้ Hash Message Authentication Code (HMAC) ที่สร้างจาก algorithm เช่น MD5 หรือ SHA เป็นต้น
· Encapsulation Security Payload (ESP) เป็นโปรโตคอลที่ทำหน้าที่ในการรักษาความลับ(Confidentiality) ข้อมูลโดยการเข้ารหัส โดยใช้ algorithm เช่น DES, 3DES หรือ AES เป็นต้น
IPSec ทำงานอยู่ใน 2 mode ดังนี้
1. Transport mode ใน mode นี้ IPSec จะทำการ encrypt หรือ authenticate เฉพาะในส่วนข้อมูล (payload) ของ IP packet ที่จะส่ง แต่ไม่ทำในส่วนของ Header(หรือ IP Header) ของ IP packet
2. Tunnel mode ใน mode นี้จะทำการ encrypt หรือ authenticate ทั้ง IP packet (payload และ header) และสร้าง IP Header ขึ้นมาใหม่
ตัวอย่าง การตั้งค่า Router Cisco เพื่อใช้งาน IPSec
การตั้งค่า Router เพื่อใช้งาน IPSec มีขั้นตอนหลักๆ ดังนี้
· ตั้งค่า ISAKMP
· ตั้งค่า IPSec
ตั้งค่า ISAKMP
ทำความเข้าใจกันก่อนว่า IKE (ISAKMP/Oakley) คือ โปรโตคอลลูกผสมที่นำบางส่วนของโปรโตคอล Oakley และ ISAKMP แต่ใน Cisco IOS software โปรโตคอล IKE และ ISAKMP จะใช้สื่อความหมายถึงสิ่งเดียวกัน ดังนั้นการตั้งค่า ISAKMP ก็คือการตั้งค่า IKE โดยโปรโตคอล IKE นี้จะทำงานในช่วงการจัดตั้ง SA สำหรับ IPSec และมันต้องมี policy ที่ใช้ในการเจรจาเพื่อสร้าง SA ระหว่าง router กันด้วย
การตั้งค่า ISAKMP มีด้วยกันอยู 2 วิธีดังนี้
1. ใช้วิธี pre-shared keys ซึ่งตั้งค่าได้ง่ายและสะดวก (ตัวอย่างจะใช้วิธีนี้)
2. ใช้วิธี CA เหมาะกับรองรับการขยายตัวในการใช้งาน
หมายเหตุ โปรโตคอล IKE ทำงานบน UDP 500, IPSec ทำงานบน IP protocol 50 และ 51 โดย port เหล่านี้จะต้องไม่ถูกปิดกั้นระหว่าง router ด้วยกัน
วิธี Pre-Shared Keys
การใช้วิธีนี้จะต้องตั้งค่าตามขั้นตอนดังนี้
· ตั้งค่า ISAKMP Protection Suite(s)
· ตั้งค่า ISAKMP key
ตั้งค่า ISAKMP Protection Suite(s)
คำสั่งนี้เป็นการสร้าง object ของ ISAKMP policy
RouterName(config)#crypto isakmp policy 1
RouterName(config-isakmp)#
คำสั่ง group ใช้เพื่อบอกขนาดจำนวน bit ของ modulus ที่ใช้ในวิธีการคำนวณใน Diffie-Hellman(เป็นวิธีการการจัดตั้ง(establishment )การ shared key ผ่านบนช่องทางที่ไม่ปลอดภัย) โดย group 1 หมายถึงมีขนาด 768 บิต group 2 หมายถึง มีขนาด 1024 บิต โดย default Cisco IOS จะเป็น group 1
RouterName(config-isakmp)#group 2
คำสั่ง hash ใช้เพื่อบอกว่าจะใช้ hash algorithm แบบใด โดย default ของ Cisco IOS จะเป็นแบบ SHA ที่มีความปลอดภัยมากกว่า MD5
RouterName(config-isakmp)#hash md5
คำสั่ง lifetime ใช้เพื่อบอกว่า SA จะมีเวลาอยู่เท่าใด ก่อนที่จะมีการเจรจาสร้าง SA ใหม่ โดย default จะมีค่าอยู่ที่ 86400 วินาทีหรือ 1 วัน
RouterName(config-isakmp)#lifetime 500
คำสั่ง authentication ใช้เพื่อบอกว่าจะใช้ key อะไรในการยืนยันตัวตนของ router ทั้งฝั่ง
RouterName(config-isakmp)#authentication pre-share
ตั้งค่า ISAKMP key
คำสั่งที่จะแสดงต่อไปนี้ จะเป็นการบอกว่าค่า key เป็นอะไร และ ip ของ router ฝั่งตรงข้ามเป็นอะไร โดย key ที่ตั้งนี้จะต้องเหมือนกัน
RouterName(config-isakmp)#exit
RouterName(config-isakmp)#crypto isakmp key Slurpee address 192.168.10.38
ตั้งค่า IPSec
มีขั้นตอนย่อยๆดังนี้
· สร้าง extended access list
· สร้าง IPSec transform(s)
· สร้าง crypto map
· นำ crypto map ไปใส่ใน interface เพื่อใช้งาน
สร้าง extended access list
คำสั่งที่ใช้นี้เป็นการสร้าง access list สำหรับบอกว่า traffic ใดบ้างที่จะถูก encryption หรือไม่ถูก encryption โดยคำสั่ง permit เป็นเหมือนการบอกว่า traffic นั้นจะถูก encryption และคำสั่ง deny เป็นเหมือนการบอกว่า traffic นั้นไม่ถูก encryption โดยมีการนำไปใช้อ้างอิงใน crypto map
RouterName(config)#access-list 101 permit ip host 192.168.10.38 host 192.168.10.66
หรือ RouterName(config)#access-list 101 permit ip host 192.168.10.38 0.0.0.255 192.168.10.66 0.0.0.255
สร้าง IPSec transform(s)
คำสั่งนี้เป็นการสร้าง IPSec transform set เพื่อบอกว่าจะใช้วิธีการใดในการ encrypt ข้อมูล โดยมีการนำไปใช้อ้างอิงใน crypto map
RouterName(config)crypto ipsec transform-set MamaBear ah-md5-hmac esp-des
RouterName(cfg-crypto-trans)exit
สร้าง Crypto Map
ใน Crypto map จะมีการตั้งค่าต่างๆ ประกอบด้วย การตั้งค่าเพื่อบอกว่า peer ที่จะคุยด้วยเป็น IP อะไรโดยใช้คำสั่ง set peer การตั้งค่า session key ว่าจะมีอายุใช้งานเท่าใดก่อนมีการสร้างขึ้นใหม่ โดยมีการกำหนดได้สองแบบคือกำหนดด้วยเวลาและกำหนดด้วยขนาดข้อมูล traffic ที่รับส่งกัน การตั้งค่าผูกโยงกับ IPSec transform set ที่ได้มีการสร้างขึ้นมาก่อนหน้านี้ด้วยคำสั่ง set transform และการตั้งค่าอ้างอิงกับ access list ที่ได้สร้างขึ้นมาไว้ ด้วยคำสั่ง match address
RouterName(config)crypto map armadillo 10 ipsec-isakmp
RouterName(config-crypto-map)#set peer 192.168.10.38
RouterName(config-crypto-map)#set session-key lifetime seconds 4000
RouterName(config-crypto-map)#set transform-set MamaBear
RouterName(config-crypto-map)#match address 101
นำ crypto map ไปใส่ใน interface เพื่อใช้งาน
โดยใช้คำสั่งนี้
RouterName(config)#interface serial 0/0
RouterName(config-if)crypto map armadillo
ตัวอย่างคำสั่งที่ใช้ตรวจสอบ IPsec เช่น
Show crypto isakmp sa ใช้ดูตาราง ISAKMP(IKE) SA ถึงการมีอยู่ระหว่าง SA ของ router ทั้งสอง
Show crypto isakmp policy ใช้ดู policy ของ ISAKMP ที่ได้ตั้งค่าต่างไว้
Show crypto ipsec sa ใช้ดูค่าของ traffic ที่ถูก encrypt ฯลฯ
Thanks : kunggiggs
วันเสาร์ที่ 31 ตุลาคม พ.ศ. 2552
Introduction To Kerberos
What is Kerberos?
Kerberos is a network authentication protocol. It is designed to provide strong authentication for client/server applications by using secret-key cryptography. A free implementation of this protocol is available from the Massachusetts Institute of Technology. Kerberos is available in many commercial products as well.
The Internet is an insecure place. Many of the protocols used in the Internet do not provide any security. Tools to "sniff" passwords off of the network are in common use by malicious hackers. Thus, applications which send an unencrypted password over the network are extremely vulnerable. Worse yet, other client/server applications rely on the client program to be "honest" about the identity of the user who is using it. Other applications rely on the client to restrict its activities to those which it is allowed to do, with no other enforcement by the server.
Some sites attempt to use firewalls to solve their network security problems. Unfortunately, firewalls assume that "the bad guys" are on the outside, which is often a very bad assumption. Most of the really damaging incidents of computer crime are carried out by insiders. Firewalls also have a significant disadvantage in that they restrict how your users can use the Internet. (After all, firewalls are simply a less extreme example of the dictum that there is nothing more secure then a computer which is not connected to the network --- and powered off!) In many places, these restrictions are simply unrealistic and unacceptable.
Kerberos was created by MIT as a solution to these network security problems. The Kerberos protocol uses strong cryptography so that a client can prove its identity to a server (and vice versa) across an insecure network connection. After a client and server has used Kerberos to prove their identity, they can also encrypt all of their communications to assure privacy and data integrity as they go about their business.
Kerberos is freely available from MIT, under copyright permissions very similar those used for the BSD operating system and the X Window System. MIT provides Kerberos in source form so that anyone who wishes to use it may look over the code for themselves and assure themselves that the code is trustworthy. In addition, for those who prefer to rely on a professionally supported product, Kerberos is available as a product from many different vendors.
In summary, Kerberos is a solution to your network security problems. It provides the tools of authentication and strong cryptography over the network to help you secure your information systems across your entire enterprise. We hope you find Kerberos as useful as it has been to us. At MIT, Kerberos has been invaluable to our Information/Technology architecture.
Thanks: web.mit.edu/Kerberos
วันพุธที่ 16 กันยายน พ.ศ. 2552
SIP Protocol
IMS เป็นแนวคิดเกี่ยวกับสถาปัตยกรรมของการให้บริการ IP Multimedia แก่ผู้ใช้ ซึ่งเป็นส่วนหนึ่งในการพัฒนาเครือข่ายมือถือของ GSM โดยเริ่มมาจาก 3GPP R5 นำเสนอวิธีส่ง Internet Services ผ่าน GPRS ต่อมาได้มีการปรับปรุงโดย 3GPP, 3GPP2, และ TISPAN เพื่อให้ครอบคลุมถึง Wireless LAN, CDMA2000, และ Fix Line โดยนำโปรโตคอลของ IETF มาใช้ เช่น SIP
SIP จะมีลักษณะทั่วไปคือ
- ขนาดเล็ก เพราะกำหนดวิธีติดต่อไว้เพียง 6 วิธีเพื่อลดความซับซ้อน
- มีความเป็นอิสระ สามารถใช้งานกับ UDP, TCP, ATM และอื่น ๆ ได้
- เป็นข้อความที่มนุษย์สามารถอ่านได้
การออกแบบโปรโตคอล
SIP client จะใช้ TCP หรือ UDP พอร์ต 5060 เชื่อมต่อกับ SIP server และ SIP อื่น ๆ ซึ่ง SIP จะใช้สำหรับตั้งค่าและยกเลิก Voice หรือ Video call แต่ก็สามารถนำไปใช้กับงานกับระบบอื่นที่ต้องการเปิด Session รวมถึง Event Subscription และ Notification ได้ การสื่อสารโดยใช้ภาพและเสียงสามารถทำได้โดยแบ่งโปรโตคอล Session ออกจากกัน เช่น RTP (Real-time Transport Protocol)
RTP ใช้กำหนดรูปแบบ packet ในการส่งภาพและเสียงผ่านอินเตอร์เน็ต ถูกพัฒนาโดย Audio-Video Transport Working Group ของ IETF และได้ตีพิมพ์ครั้งแรกในปี 1996 (พ.ศ.2539) โดย RTP จะไม่มีพอร์ต TCP หรือ UDP มาตรฐานในการสื่อสาร แต่จะใช้พอร์ต UDP ที่เป็นเลขคู่ในการสื่อสารและพอร์ต UDP เลขคี่ถัดไปเป็น RTP Control Protocol (RTCP) เลขพอร์ตมักจะอยู่ระหว่าง 16384-32767 RTP สามารถรับส่งข้อมูลอะไรก็ได้แบบ real-time เช่น ภาพและเสียง โดยใช้โปรโตคอล SIP ในการตั้งค่าและยกเลิก
SIP จะเป็นโปรโตคอลที่ใช้ส่งสัญญาณและตั้งค่าในระบบ IP สามารถใช้งานร่วมกับระบบโทรศัพท์ PSTN (Public Switched Telephone Network) ได้ ซึ่งมาตรฐาน SIP ไม่ได้ระบุไว้ SIP ทำได้เพียงสางสัญญาณและตั้งค่า อย่างไรก็ตาม SIP สามารถใช้งานในระบบเครือข่ายได้ เช่น Proxy Server และ User Agent ซึ่งจะเหมือนกับการทำงานของโทรศัพท์ คือ หมุนเบอร์, ทำให้โทรศัพท์ปลายทางส่งเสียง, ฟังเสียงตอบรับหรือสัญญาณไม่ว่าง
SIP ทำให้ระบบโทรศัพท์มีความสามารถในขั้นตอนโทรออกมากขึ้น ดูได้จาก Signalling System 7 (SS7) โดย SS7 จะเป็นโปรโตคอลที่รวมศูนย์, ใช้กับระบบรวมศูนย์ที่ซับซ้อน, และใช้งานกับเครื่องลูกข่ายที่ไม่เก่ง (โทรศัพท์บ้าน) SIP เป็นโปรโตคอลแบบ Peer-to-Peer ซึ่งใช้กับเครือข่ายที่ไม่ซับซ้อนและเครื่องลูกค้ามีความสามารถสูง
แม้ VoIP จะมีโปรโตคอลส่งสัญญาณเยอะอยุ่แล้ว แต่ SIP ก็ช่วยสร้างเครื่องหลักในการสื่อสารแบบ IP ได้มากกว่าระบบโทรคมนาคม SIP จะเป็นมาตรฐานของ IETF ขณะที่ H.323 เป็นโปรโตคอลของ ITU ซึ่งทั้งสององค์กรก็ให้เกียรติกัน
SIP สามารถทำงานร่วมกับโปรโตคอลอื่นได้โดยจะสร้างสัญญาณให้ Session ของการติดต่อสื่อสาร SIP จะทำงานเป็นพาหะของ Session Description Protocol (SDP) ใช้อธิบายรายละเอียดของเนื้อหาที่จะส่ง เช่น หมายเลขพอร์ตที่ใช้, Codec ที่ต้องการ
SIP จะคล้ายกับ HTTP เช่น การรับส่งข้อมูลใช้ภาษาที่มนุษย์อ่านได้, รหัสบอกสถานะจะคล้าย ๆ กัน บางคนกล่าวว่า SIP เป็นโปรโตคอลแบบ stateless ซึ่งสามารถตรวจสอบความผิดพลาดและเพิ่มเติมความสามารถได้มากกว่าโปรโตคอลแบบ stateful ซึ่งโปรโตคอลแบบ stateless จะส่งคำสั่งได้อย่างอิสระ โดยไม่ต้องสนใจว่าคำสั่งก่อนหน้าคือคำสั่งอะไร ในขณะที่โปรโตคอลแบบ stateful จะต้องมีการบันทึกสถานะการแลกเปลี่ยนข้อมูลไว้ตลอดเวลา
ส่วนประกอบของเครือข่าย SIP
Hardware ที่ใช้จะเหมือนกับโทรศัพท์บ้าน แต่ใช้ SIP และ RTP ในการสื่อสาร บางระบบจะใช้ Electronic Numbering (ENUM) หรือ DUDi ในการแปลงหมายเลขโทรศัพท์ให้เป็น SIP Address แล้วเรียก SIP อื่นในระบบเครือข่าย
ตัวอย่างโปรแกรมในปัจจุบันที่ใช้ SIP สื่อสาร เช่น Microsoft Windows Messenger, iChat AV, AIM ของ Apple ซึ่ง SIP จะอาศัย Proxy และอุปกรณ์เครือข่ายเพื่อทำงานแบบ peer-to-peer เหมือนระบบทั่วไป
SIP Request
RFC 3261 (SIP) มี 6 แบบ ได้แก่
- INVITE ใช้เมื่อ client ต้องการสร้าง session เพื่อติดต่อ
- ACK ใช้เมื่อ client ได้รับการตอบกลับจาก INVITE ภายในเวลาที่กำหนด
- BYE ใช้เมื่อต้องการสิ้นสุดการเชื่อมต่อ ซึ่งผู้ส่งและผู้รับสามารถส่งได้เหมือนกัน
- CANCEL ใช้เพื่อยุติการค้นหา แต่ไม่สามารถใช้ยกเลิกสายที่รับแล้วได้
- OPTIONS ใช้ตรวจสอบคุณสมบัติของ Server
- REGISTER ใช้ระบุ Address ของข้อมูล To ใน SIP Server
RFC 3262 เพิ่มความน่าเชื่อถือในการตอบกลับของ SIP
- PRACK
RFC 3265 เพิ่มเติม
- SUBSCRIBE แจ้ง Event ของ Notification จากผู้แจ้ง
- NOTIFY แจ้งเหตุการณ์ใหม่
SIP Response
1xx ข้อมูลการตอบกลับ
- 100 กำลังพยายาม
- 180 กำลังเรียก (ring)
- 181 กำลัง forward
- 182 กำลังเข้าคิว
- 183 ความคืบหน้าของ session
2xx ได้รับการตอบกลับ
- 200 OK
- 202 ตกลง
3xx Redirect
- 300 มีหลายตัวเลือก
- 301 ย้ายเป็นการถาวร
- 302 ย้ายเป็นการชั่วคราว
- 305 ใช้ Proxy
- 380 บริการเสริม
4xx การตอบกลับล้มเหลว
- 400 คำสั่ง Request ไม่ถูกต้อง
- 401 ไม่ได้รับสิทธิ ใช้กับ registrar เท่านั้น ส่วน Proxy ใช้ 407
- 402 ต้องจ่ายเงิน (สงวนไว้ใช้ในอนาคต)
- 403 ซ่อน
- 404 ไม่พบ ไม่มีผู้ใช้ชื่อนี้
- 405 ไม่อนุญาตให้ใช้วิธีนี้
- 406 ไม่สามารถรับได้
- 407 ไม่ได้รับสิทธิจาก Proxy
- 408 หมดเวลา ไม่สามารถค้นหาผู้ใช้ได้ในเวลาที่กำหนด
- 410 ไม่สามารถติดต่อผู้ใช้ได้ ณ เวลานี้
- 413 คำสั่ง Request ยาวเกินไป
- 414 Request-URI ยาวเกินไป
- 416 ไม่สนับสนุน URI แบบนี้
- 420 Server ไม่เข้าใจโปรโคตอ SIP ที่ส่งมา
- 421 ต้องการข้อมูลเพิ่มเติม
- 423 ช่วงเวลาน้อยเกินไป
- 479 ไม่สามารถใช้ URI นี้ได้
- 480 ปิดบริการชั่วคราว
- 481 ติดต่อไม่ได้
- 482 เกิดการวน loop
- 483 เชื่อมต่อมากเกินไป
- 484 Address ไม่ถูกต้อง
- 485 สับสน
- 486 สายไม่ว่าง
- 487 ยุติการร้องขอ
- 488 ไม่ได้รับ
- 489 เหตุการณ์ไม่ถูกต้อง
- 491 ยุติการร้องขอ
- 493 ไม่ถูกกฎ ไม่สามารถถอดรหัส S/MIME ได้
- 494 ต้องการความปลอดภัย
5xx server มีปัญหา
- 500 server มีปัญหาภายใน
- 501 ยังไม่เปิดใช้วิธีนี้
- 502 Gateway ไม่ถูกต้อง
- 503 ไม่สามารถให้บริการได้
- 504 หมดเวลาติดต่อ Server
- 505 Server ไม่สนับสนุนโปรโคตอล SIP รุ่นนี้
- 513 ข้อความยาวเกินไป
6xx ความล้มเหลว
- 600 ยุ่งตลอดเวลา
- 603 ไม่รับ
- 604 ไม่อยู่ตลอดเวลา
- 606 ไม่ยอมรับ
อื่น ๆ เช่น
- INFO ส่งข้อมูลโดยไม่แก้ไข Session State
- REFER ใช้กับ call transfer
- MESSAGE ข้อความที่ต้องการส่ง
- UPDATE ส่งข้อมูลเพื่อแก้ไข Session State แต่ไม่เปลี่ยนสถานะการทำงาน
Thanks : kazuki