使用星號進行安全呼叫 (SRTP) 時,為什麼 SIP 設備需要客戶端憑證?

使用星號進行安全呼叫 (SRTP) 時,為什麼 SIP 設備需要客戶端憑證?

我剛剛按照本教程為 Asterisk 添加了安全性:

https://wiki.asterisk.org/wiki/display/AST/Secure+Calling+Tutorial#SecureCallingTutorial-Keys

請注意,預設情況下,asterisk 不會與 srtp 一起安裝。為了能夠遵循教學課程,您必須安裝 asterisk 以及 libsrtp 和 pjsip。以下是我安裝 asterisk 以支援 srtp 的方法:

# (1) make sure everything is up to date
apt-get update
apt-get upgrade

# (2) Install dependencies that will be needed in order to install asterisk pjproject etc...
apt-get install aptitude -y
aptitude install build-essential -y
aptitude install git -y
aptitude install libssl-dev -y
aptitude install zlib1g-dev -y
aptitude install openssl  -y
aptitude install libxml2-dev -y
aptitude install libncurses5-dev -y
aptitude install uuid-dev -y
aptitude install sqlite3 -y
aptitude install libsqlite3-dev -y
aptitude install pkg-config -y
aptitude install libjansson-dev -y

# (3) make sure everything is up to date again
apt-get update
apt-get upgrade

# (4) Install libsrtp  (library used to encrypt rtp)
cd /root    
wget https://github.com/cisco/libsrtp/archive/v1.6.0.tar.gz
tar -xzf v1.6.0.tar.gz
cd libsrtp-1.6.0

./configure CFLAGS=-fPIC --prefix=/usr
make
make runtest
make install
cd ..

# (5) install pjproject 

git clone https://github.com/asterisk/pjproject pjproject
cd pjproject
 ./configure --prefix=/usr --enable-shared --disable-sound --disable-resample --disable-video --disable-opencore-amr --with-external-srtp
make dep
make

make install
cd ..


# (6) Install Asterisk  WITH SRTP AND PJPROJECT

wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-13-current.tar.gz
tar xvf asterisk-13-current.tar.gz
cd  asterisk-13.19.2
./configure --with-pjproject --with-ssl --with-srtp

make
make install
make samples
make config

無論如何,這不是問題的一部分。

因此,我按照教程進行操作,並且能夠撥打加密電話。

當我重複這些步驟以連接所有手機時我不明白為什麼我必須為每個 sip 設備產生證書。伺服器已經有一個證書,為什麼手機還需要另一個證書?換句話說,我不明白為什麼我必須執行教程中的步驟:

“我們為 SIP 設備產生客戶端證書”

./ast_tls_cert -m client -c /etc/asterisk/keys/ca.crt -k /etc/asterisk/keys/ca.key -C phone1.mycompany.com -O "My Super Company" -d /etc/asterisk/keys -o malcolm

因此,出於好奇,我決定跳過其中一部手機的這一步。我沒有為電話 X 產生客戶端證書,而且由於某種原因,電話 X 仍然設法連接到星號並撥打電話。 Phone X 在撥打電話時也會在螢幕上加鎖,這表示通話已加密。 Asterisk 顯示通話正在透過 SRTP 進行。我無法區分具有客戶端證書的手機和手機 X 之間的區別。

答案1

我之前曾將 SRTP 與 Asterisk 一起使用,不需要客戶端證書,但正如所指出的,這允許您根據證書的頒發者控制存取並保證 SIP 請求的來源。

這使您可以驗證電話是否是由您設定的,而不僅僅是某個隨機找到您的 SIP 伺服器的人。就像使用 TLS 時提供憑證的伺服器一樣,您可以確認伺服器不僅僅是某種隨機的中間人攻擊,因為產生有效的重複憑證很困難。如果你是唯一能為你的SIP設備頒發證書的人,那麼只有擁有你的證書的設備才是真正的設備,其他的都是騙局。

從這裡開始,沿著相互驗證的線索前進:https://en.wikipedia.org/wiki/Client_certificate還有這個:https://en.wikipedia.org/wiki/AAA_(computer_security)

SRTP 只是一種加密機制,可讓您在開放網路上使用 Wireshark 之類的工具時防止其他人監聽對話。想想你當地的咖啡店開放的無線網路。然而,僅僅 SRTP 本身並不足以保證安全性。僅僅因為通訊是加密的,並不意味著來源或目的地是有效的

相關內容