Virtual Network Computing

Virtual Network Computing (בראשי תיבות VNC) הוא פרוטוקול תקשורת המאפשר שליטה מרחוק על מערכת מחשב. הוא משדר את הלחיצות על המקלדת וההקלקות על העכבר ממחשב אחד לאחר, ומציג את המסך של המחשב המרוחק, כל זאת דרך רשת תקשורת, כגון האינטרנט.
VNC אינו תלוי בפלטפורמה מסוימת: לקוח VNC בכל מערכת הפעלה יכול להתחבר לשרת VNC בכל מערכת הפעלה אחרת. ישנם לקוחות ושרתים עבור כמעט כל מערכות ההפעלה, ואף עבור שפת התכנות Java. מספר לקוחות יכולים להתחבר לאותו שרת VNC בו זמנית. שימושים נפוצים עבור טכנולוגיה זו כוללים תמיכה טכנית מרחוק, וגישה לקבצים מהמחשבים שבמקום העבודה דרך המחשב הביתי.
VNC פותח במקור על ידי AT&T. קוד המקור המקורי של VNC הוא קוד פתוח ברישיון GPL, כמו גם רבות מתוכנות ה VNC הקיימות כיום.

היסטוריה

VNC נוצר במעבדת המחקר של אוליבטי ואורקל, בבעלותן של שתי החברות. ב-1999, AT&T קיבלה לידיה את המעבדה, וב 2002 סגרה את מחלקת המחקר בה.
מקור השם נובע ממחשב רשת-ATM מסוג לקוח רזה ("Thin Client") שנקרא "Videotile", והיה בעצם מסך LCD עם אמצעי קלט של עט וחיבור ATM מהיר אל הרשת. VNC היה בעצם גירסת תוכנה-בלבד של המחשב הנ"ל.

עקרון פעולה

ל-VNC יש שני חלקים, לקוח ושרת. השרת הוא תוכנה על המחשב שמשתף את המסך שלו, והלקוח הוא תוכנה שמסתכלת, ומנהלת אינטראקציה, עם השרת.
VNC הוא פרוטוקול פשוט מאוד, המבוסס על הנחה גרפית פרימיטיבית: "שים ריבוע של מידע פיקסלים במיקום X,Y נתון". כלומר, השרת שולח ריבועים קטנים של ה-framebuffer אל הלקוח. בצורתה הפשוטה, פעולה זו צורכת רוחב פס רב, ולכן ננקטים אמצעים שונים כדי להקטין צריכת רוחב פס זו. לדוגמה, ישנם קידודים שונים - שיטות לקבוע את הדרך היעילה ביותר להעביר ריבועים אלו. פרוטוקול ה-VNC מאפשר ללקוח ולשרת להסכים ביניהם איזה קידוד יהיה בשימוש במהלך ההתקשרות. הקידוד הפשוט ביותר, הנתמך בכל הלקוחות ובכל השרתים, הוא קידוד raw, אשר בו כל מידע הפיקסלים נשלח בסדר שמאל-לימין של סריקת שורות, ולאחר האתחול הראשוני של התצוגה, מעביר רק ריבועים שמשתנים. בגלל זה, שיטה זו פועלת טוב מאוד רק אם חלקים קטנים מהמסך משתנים מתמונה (frame) לתמונה הבאה (כמו למשל סמן עכבר שזז לאורך המסך, או טקסט שנכתב במעבד תמלילים), אך דרישות רוחב הפס יהפכו לגבוהות מאוד אם מספר רב של פיקסלים משתנה (דוגמה קיצונית לכך תהיה סרט וידאו במסך מלא).
בברירת מחדל, VNC משתמש בפורטים 5900 עד 5906, כאשר כל אחד מהם מציג את מסך ה-X התואם (פורטים 6000 עד 6006, למסכים 0: עד 6:). לקוח Java זמין בהרבה יישומים כגון RealVNC בפורטים 5800 עד 5806, באותו הדפוס. פורטים אלה ניתנים לשינוי.

אבטחה ב VNC

בברירת מחדל, VNC אינו פרוטוקול מאובטח. אף על  שסיסמאות אינן נשלחות כטקסט רגיל ("plain-text") (כמו ב-telnet לדוגמה), התקפות brute force יכולות להצליח אם גם מפתח ההצפנה וגם הסיסמה המוצפנת התגלו על ידי "רחרוח" (sniffing) ברשת. מסיבה זאת, עדיף שסיסמאות תהיינה בעלות 8 תווים, לפחות.
למרות זאת, את VNC ניתן לתעל (tunnelling) דרך חיבור SSH או VPN, מה שיוסיף שכבת אבטחה נוספת עם הצפנה חזקה. אך פתרון זה אינו תמיד ישים. לדוגמה, תיעול דרך SSH יכול להיות קשה במחשבים המריצים את מערכת ההפעלה Windows.
UltraVNC תומכת בשימוש בתוסף הצפנה המבוסס קוד פתוח אשר מצפין את כל שיחת ה-VNC, כולל הזדהות הסיסמה והעברת המידע. הוא גם מאפשר שההזדהות תתבצע בהסתמכות על NTLM ועל חשבונות משתמש של Active directory.
RealVNC מאפשרת הצפנה בעוצמה חזקה כחלק מהחבילה המסחרית שלה.
Workspot שחררה טלאים להצפנת AES עבור VNC.
אף על פי שחלק מהאנשים מאמינים ש-VNC מאפשרת לפרוץ בקלות לתוך מערכת, בדרך כלל המשתמש יצטרך לאפשר באופן מפורש גישה מרחוק לפורטים הנמצאים בשימוש על ידי VNC כדי שאפשר יהיה לפרוץ אליו. במילים אחרות, מערכת המריצה VNC ברשת, תהיה נגישה בתוך הרשת אלא אם כן המשתמש מציין אחרת (למשל בהגדרות הנתבים של החברה). כל זאת, כמובן, בהנחה שבברירת מחדל קונפיגורצית הרשת היא "לפתוח מה שצריך" ולא "לסגור רק את מה שנראה מסוכן".