بررسی کامل احراز هویت در Softphone ها و تلفن های IP، سرور Asterisk و بررسی جریان برقراری تماس
مقدمه
پروتکل SIP (Session Initiation Protocol) یکی از مهمترین پروتکلها در سیستمهای VoIP است که برای برقراری، مدیریت و پایان دادن به جلسات ارتباطی مانند تماس صوتی و تصویری استفاده میشود. در سیستمهای تلفنی مبتنی بر SIP مانند Asterisk، FreeSWITCH و Cisco CUCM، مفاهیمی مانند احراز هویت کاربران، ثبت دستگاهها، مسیریابی تماس و انتقال رسانه نقش کلیدی دارند.
در این مقاله معماری و فرآیندهای اصلی SIP شامل موارد زیر بهصورت جامع بررسی میشوند:
- تفاوت Login / Auth User / Display Name
- مکانیزم SIP Digest Authentication
- نحوه پیادهسازی احراز هویت در Asterisk (chan_sip و PJSIP)
- اجزای اصلی معماری SIP شامل Proxy، Registrar و B2BUA
- تفاوت REGISTER و SIP Trunk
- تحلیل کامل جریان یک تماس SIP در سطح Packet

- پارامترهای User، Auth ID و Display Name در Softphone
بسیاری از Softphoneها هنگام تنظیم حساب SIP سه فیلد مختلف ارائه میدهند که هرکدام کاربرد متفاوتی دارند.
User (Username / Extension)
این مقدار هویت SIP کاربر در تماس است و در هدرهای SIP استفاده میشود.
مثال:
From: "Ali" sip:1001@pbx.local
در اینجا:
User = 1001
این مقدار معمولاً همان شماره داخلی (Extension) است.
Auth ID (Authentication Username)
این مقدار برای احراز هویت SIP Digest استفاده میشود.
در پیام Authorization قرار میگیرد:
Authorization: Digest username="auth1001"
بنابراین ممکن است:
User = 1001 Auth ID = auth1001
استفاده از Auth ID متفاوت باعث افزایش امنیت میشود زیرا دانستن شماره داخلی برای ورود کافی نیست.
Display Name
این پارامتر فقط نام نمایشی در تماس است و در احراز هویت نقشی ندارد.
مثال:
From: "Ali Rezaei" <sip:1001@pbx.local>
در اینجا:
Display Name = Ali Rezaei
- مکانیزم SIP Digest Authentication
احراز هویت در SIP معمولاً با Digest Authentication انجام میشود که بر اساس الگوریتمهای Hash مانند MD5 کار میکند. هدف این روش جلوگیری از ارسال مستقیم رمز عبور در شبکه است.
مرحله 1: ارسال REGISTER بدون احراز هویت
کلاینت ابتدا درخواست REGISTER ارسال میکند:
REGISTER sip:pbx.local SIP/2.0 From: <sip:1001@pbx.local> To: <sip:1001@pbx.local> Contact: <sip:1001@192.168.1.10>
مرحله 2: پاسخ Challenge از سرور
سرور برای احراز هویت پاسخ میدهد:
401 Unauthorized WWW-Authenticate: Digest realm="pbx.local", nonce="abc123", algorithm=MD5
پارامترهای مهم:
- realm محدوده احراز هویت
- nonce عدد تصادفی برای جلوگیری از replay attack
- algorithm الگوریتم هش
مرحله 3: محاسبه Digest در کلاینت
کلاینت چند مقدار Hash محاسبه میکند.
HA1
HA1 = MD5(username : realm : password)
HA2
HA2 = MD5(method : uri)
Response
response = MD5(HA1 : nonce : HA2)
مرحله 4: ارسال REGISTER با Authorization
کلاینت درخواست REGISTER جدید ارسال میکند:
REGISTER sip:pbx.local SIP/2.0 Authorization: Digest username="1001", realm="pbx.local", nonce="abc123", uri="sip:pbx.local", response="8f3a9a..."
مرحله 5: بررسی در سرور
سرور همان محاسبه را انجام داده و مقدار response را مقایسه میکند. در صورت تطابق:
200 OK
کاربر ثبت میشود.
- احراز هویت در REGISTER و INVITE
احراز هویت در SIP فقط در REGISTER انجام نمیشود و ممکن است هنگام برقراری تماس نیز تکرار شود.
احراز هویت REGISTER
هدف:
- ثبت موقعیت دستگاه
- ذخیره IP کاربر
احراز هویت INVITE
هدف:
- جلوگیری از Call Fraud
- کنترل دسترسی تماس
- جلوگیری از سوءاستفاده از Trunk
در این حالت سرور پاسخ میدهد:
407 Proxy Authentication Required
یا
401 Unauthorized
- اجزای اصلی معماری SIP
در معماری SIP چند نوع سرور مختلف وجود دارد که هرکدام وظیفه خاصی دارند.
SIP Registrar
Registrar مسئول ثبت کاربران است.
وظایف:
- دریافت REGISTER
- ذخیره location کاربران
مثال:
1001 → 192.168.1.10 1002 → 192.168.1.20
SIP Proxy
Proxy وظیفه مسیریابی پیامهای SIP را برعهده دارد.
وقتی تماس برقرار میشود:
1001 → Proxy → 1002
Proxy پیامها را عبور میدهد اما تماس را مدیریت کامل نمیکند.
B2BUA (Back-to-Back User Agent)
در B2BUA سرور تماس را به دو بخش تقسیم میکند.
User A → Server → User B
در واقع دو تماس جدا وجود دارد.
مزایا:
- ضبط تماس
- IVR
- تغییر codec
- صف تماس
- مدیریت تماس
نمونه سیستمها:
- Asterisk
- FreeSWITCH
- Cisco CUCM
- تفاوت chan_sip و PJSIP در Asterisk
Asterisk دو پیادهسازی مختلف برای SIP دارد.
chan_sip (قدیمی)
در chan_sip همه تنظیمات در یک بخش تعریف میشوند.
نمونه:
[1001] type=friend host=dynamic username=1001 secret=1234
در این مدل:
username = identity username = auth
PJSIP (معماری مدرن)
در PJSIP اجزای مختلف از هم جدا شدهاند.
Endpoint
تعریف رفتار تماس
Auth
تعریف credential
AOR
تعریف محل ثبت دستگاه
نمونه تنظیم:
[1001] type=endpoint aors=1001 auth=1001-auth [1001-auth] type=auth auth_type=userpass username=auth1001 password=secret [1001] type=aor max_contacts=1
این معماری انعطاف بسیار بیشتری ایجاد میکند.
- چرا در برخی سیستمها REGISTER وجود ندارد (SIP Trunk)
در ارتباط بین Softphone و PBX معمولاً REGISTER لازم است زیرا IP کلاینت متغیر است.
اما در ارتباط بین دو سرور VoIP معمولاً REGISTER وجود ندارد.
مثال:
PBX A ↔ PBX B
اگر IP دو طرف مشخص باشد تماس مستقیم ارسال میشود:
INVITE sip:2001@5.6.7.8
انواع SIP Trunk
IP Authentication
احراز هویت بر اساس IP انجام میشود.
Allow calls from 5.6.7.8
REGISTER لازم نیست.
REGISTER-based Trunk
در برخی providerها لازم است:
REGISTER sip:provider.com
زیرا provider باید تشخیص دهد تماس متعلق به کدام مشتری است.
- جریان کامل یک تماس SIP (Packet Level)
فرض کنید:
User 1001 → User 1002
مرحله 1: ارسال INVITE
INVITE sip:1002@pbx.local
در بدنه پیام SDP وجود دارد که مشخصات رسانه را تعریف میکند.
مثال:
m=audio 4000 RTP/AVP 0
یعنی:
Port = 4000 Codec = PCMU
مرحله 2: پاسخ 100 Trying
SIP/2.0 100 Trying
سرور اعلام میکند درخواست در حال پردازش است.
مرحله 3: پاسخ 180 Ringing
SIP/2.0 180 Ringing
گوشی مقصد در حال زنگ خوردن است.
مرحله 4: پاسخ 200 OK
وقتی تماس پاسخ داده میشود:
SIP/2.0 200 OK
این پیام شامل SDP مقصد است.
مثال:
IP: 192.168.1.20 Port: 5000 Codec: PCMU
مرحله 5: ارسال ACK
Caller باید ACK بفرستد.
ACK sip:1002@pbx.local
با این پیام تماس برقرار میشود.
- شروع انتقال صدا (RTP)
پس از ACK، انتقال صدا از طریق RTP انجام میشود.
مسیر:
192.168.1.10:4000 → 192.168.1.20:5000 192.168.1.20:5000 → 192.168.1.10:4000
هر بسته RTP شامل:
RTP Header Audio Payload
پارامترهای مهم:
Sequence Number Timestamp SSRC
این مقادیر برای ترتیب و همگامسازی صدا استفاده میشوند.
- پایان تماس
وقتی یکی از طرفین تماس را قطع کند:
BYE
پاسخ:
200 OK
سپس جریان RTP متوقف میشود.
جمعبندی
پروتکل SIP از مجموعهای از مکانیزمهای دقیق برای مدیریت ارتباطات VoIP استفاده میکند. در این معماری:
- REGISTER برای ثبت موقعیت کاربران استفاده میشود.
- Digest Authentication امنیت احراز هویت را فراهم میکند.
- Proxy، Registrar و B2BUA نقشهای متفاوتی در شبکه دارند.
- Softphoneها از پارامترهای User، Auth ID و Display Name برای تفکیک هویت و احراز هویت استفاده میکنند.
- تماسها با پیامهای INVITE، 100 Trying، 180 Ringing، 200 OK و ACK برقرار میشوند.
- پس از برقراری تماس، صدا از طریق RTP منتقل میشود.
درک این مفاهیم برای طراحی، عیبیابی و تحلیل شبکههای VoIP بهویژه هنگام استفاده از ابزارهایی مانند Wireshark بسیار حیاتی است.





نظری ندارم! اولین نفر باشید.