WebRTC
WebRTC הוא הפרוטוקול המאפשר לשני דפדפנים לדבר זה עם זה ישירות - עמית לעמית, זמן אחזור נמוך, עם אודיו, וידאו או נתונים. זה הפך שיחות וידאו מבוססות דפדפן לכדאיות. זה גם יצר קטגוריה חדשה לגמרי של דליפת פרטיות, מכיוון שכדי למצוא אחד את השני באמצעות NATs, דפדפנים צריכים לחפש את ה-IP הציבוריים שלהם בצורה שתגלה אותם ל-JavaScript.
גוף המאמר המלא מסופק באנגלית להלן.
WebRTC (אינטרנט בזמן אמת תקשורת) היא קבוצה של ממשקי API המובנים בכל דפדפן מודרני המאפשרת לדפי אינטרנט ליצור קשרים ישירים בין עמית לעמית או עם יישומים מקוריים. הוא מפעיל את Google Meet, זום בדפדפן, הצ'אט הקולי של Discord, Twitter Spaces בזמנם ואינספור שירותים קטנים יותר. ללא WebRTC, סרטון דפדפן בזמן אמת עדיין יהיה הצעה של Flash-או-bust.
מה המפרט מכיל
WebRTC מאגד שלושה ממשקי API עיקריים:
- getUserMedia — ניגש למצלמה ו מיקרופון
- RTCPeerConnection — מנהל את חיבור העמיתים בפועל: משא ומתן עם קודקים, הצפנה, מעבר NAT, בקרת גודש
- RTCDataChannel — שולח נתונים בינאריים או טקסטים באופן שרירותי peer-to-peer
החיבור עצמו משתמש ב-ICE (Interactive Connectivity Establishment) למעבר NAT, DTLS להצפנת לחיצת יד ו-SRTP להצפנת מדיה. החיבור כולו מוצפן מקצה לקצה כברירת מחדל; אתה לא יכול לכבות אותו.
איך עמיתים מוצאים זה את זה
החלק הקשה של עמית לעמית הוא ששני עמיתים בדרך כלל נמצאים מאחורי NAT. WebRTC משתמש ב-ICE כדי לגלות נתיבי רשת אפשריים:
- הדפדפן שואל שרת STUN "איך נראים ה-IP והיציאה הציבוריים שלי?" שרת STUN משיב עם כתובת המקור שהוא ראה - שהוא המיפוי החיצוני של ה-NAT.
- הדפדפן אוסף את כל כתובות המועמדים שלו: כתובות IP מקומיות ברשת ה-LAN, ה-IP הציבורי שהתגלה על ידי STUN, אופציונלי ממסר TURN אם לא ניתן לעבור ב-NAT ברשימת חילופי ה-NAT7PLZ3X6. ע JavaScript יכול לבקש מהדפדפן להתחיל לאסוף מועמדים ל-ICE - והדפדפן יחשוף את כתובות ה-IP הציבוריות והמקומיות שיתקבלו לדף. דף שרוצה לעקוב אחריו אתה יכול לקרוא ל-
new RTCPeerConnection().createDataChannel(...), לאסוף את המועמדים, ועכשיו יודע את ה-IP האמיתי שלך ללא קשר לכל ערפול שכבת HTTP.זה התגלה ב-2015 והפך במהרה לסטנדרט פרטיות. WebRTC דליפות הן הסיבה שאדם ב-VPN עדיין יכול להציג את ה-IP האמיתי שלו לאתר שמבקש בדרך הנכונה.
מה נעשה לגביו
ספקי דפדפן הגיבו על ידי הגבלה הדרגתית של אילו מועמדים עמוד יכול לראות:5ZXPLZ5Dexxxxxf ההתנהגות ב-Chrome/Firefox/Safari המודרנית היא לחשוף רק כתובות IP מקומיות (אלו שברשת ה-LAN - בדרך כלל 192.168.x או 10.x) ללא הרשאה מפורשת.
- mDNS מחליפים את ה-IP המקומי עבור חיבורים - במקום לחשוף את
192.168.x או 10.x, משתמשים באקראי בדפדפן. שם מארח. - אם דף קורא ל-
getUserMedia(למשל, שיחת וידאו אמיתית), הדפדפן יאסוף מועמדים מלאים כולל IP ציבורי - בכל מקרה, בשלב זה הענקת הרשאת מדיה. אתרים שאוסף מועמדים בצורה אגרסיבית עדיין קיימים, ומשתמשים עם דפדפנים ישנים או הגדרות רגועות עדיין פגיעים. מדריך ההדלפות שלנו WebRTC מכסה אימות.למה חשוב לעמית לעמית
עבור שיחות של שני אנשים, WebRTC שולח מדיה ישירות בין עמיתים, כאשר שרת האיתות משמש רק להגדרת חיבור. הסרטון אינו חוצה את שרתי האפליקציה. זה זול באופן דרמטי לתפעול (ללא עלויות רוחב פס עבור מדיה) והשהייה נמוכה יותר באופן דרמטי (ללא הקפצות נוספות). שיחות קבוצתיות זקוקות בדרך כלל ליחידת העברה סלקטיבית (SFU) - שרת המעביר מדיה - אך ההצפנה עדיין מקצה לקצה אם היא מוגדרת כהלכה. זרמים) ו-WebCodecs (גישה גולמית לחומרת המקודד/מפענח). יחד הם פותחים מקרי שימוש חדשים כמו משחקי ענן, שינוי קידוד וידאו עם אחזור נמוך בדפדפן והעברת קבצים עמית לעמית בכמות גדולה עם בקרת גודש טובה יותר מאשר RTCDataChannel.
WebRTC עצמו עובר גם מודרניזציה - הסמנטיקה המקורית של Plan B SDP הולכת ומתבטלת לטובת התוכנית המאוחדת, ומשטח ה-API נעשה נקי יותר עבור מפתחים.
שאלות נפוצות
- האם אוכל להשבית את WebRTC לחלוטין?
- כן, בפיירפוקס: about:config → <code>media.peerconnection.enabled</code> → false. דפדפני Chromium לא חושפים בורר ללא הרחבה (ל-uBlock Origin יש הגדרה; WebRTC Network Limiter מ-Google היא אחרת). השבתה שובר כל אתר שמשתמש ב-WebRTC לצורך שיחות.
- האם VPN מגן מפני דליפות WebRTC?
- תלוי בדפדפן. דפדפנים מודרניים אינם חושפים את ה-IP הציבורי ל-JavaScript ללא הרשאת מדיה, כך שדליפת WebRTC פסיבית דרך VPN היא נדירה בהגדרות ברירת המחדל. אבל אם הדף קורא getUserMedia והמשתמש מקבל, המועמדים שנאספו יכולים לכלול את ה-IP הציבורי של ה-VPN - זה צפוי - או את ה-IP האמיתי אם ערימת ה-IPv6 דולף סביב ה-VPN.
- מהו שרת STUN ומי מפעיל אותם?
- שרתי STUN פשוט משקפים את מקור ה-IP והיציאה שהם רואים - קטנים, חסרי מדינה, חופשיים להפעלה. גוגל מפעילה שרת STUN ציבורי בכתובת stun.l.google.com:19302; טוויליו, מוזילה ואחרים מנהלים את שלהם. אפליקציות רבות משתמשות ב-Google כברירת מחדל. שרתי STUN רואים רק שהתרחשה בקשה; הם לא רואים את התקשורת הזורמת אחרי.
- האם WebRTC מוצפן?
- תמיד, לפי מפרט. לחיצת היד של DTLS גוזרת מפתחות עבור SRTP, שמצפין את המדיה. ערוץ הנתונים מוצפן על ידי DTLS. אתה לא יכול להשבית את ההצפנה. הצפנה מקצה לקצה היא מאפיין נפרד - שיחות קבוצתיות דרך SFU עשויות להיות E2EE רק אם האפליקציה מיישמת זאת במפורש (Zoom, Signal do; הרבה אפליקציות פשוטות יותר לא).
- מדוע וידאו מדפדפן לדפדפן כל כך טוב עכשיו בהשוואה לפני עשור?
- האצת חומרת Codec (AV1, VP9, H.264 ב-GPU), בקרת גודש מותאמת למדיה בזמן אמת (אלגוריתם בקרת הגודש של גוגל), ומעבר NAT טוב יותר המאפשר נתיבים ישירים לעתים קרובות יותר. כולם נמצאים בתוך WebRTC.