SRTP加密後,無法驗證是否成功加密

Maxwellyann 2016-10-14 03:34:34
各位大神好~
這是SRTP的library, http://srtp.sourceforge.net/srtp.html ,版本為srtp-1.4.4,採用其中的AES加密方式,對RTP Packet進行加密後透過RTSP Server送出,驗證方式是透過VLC Player,RTSP Server是使用開源程式碼live555。
簡單說明一下流程,當有連線建立時,在live555的MultiFramedRTPSink這個類別進行了以下幾個動作:
(1) 生成密鑰,使用AES_BOX={0xc1, 0xee, 0xc3, 0x71, 0x7d, 0xa7,0x61, 0x95, 0xbb, 0x87, 0x85, 0x78,0x79, 0x0a, 0xf7, 0x1c, 0x4e, 0xe9,0xf8, 0x59, 0xe1, 0x97, 0xa4, 0x14,0xa7, 0x8d, 0x5a, 0xbc, 0x74, 0x51}(共30 bytes),經過base64編碼為
we7DcX2nYZW7h4V4eQr3HE7p+Fnhl6QUp41avHRR(共40 bytes)。
(2)使用加密方式,使用crypto_policy_set_aes_cm_128_hmac_sha1_32()及crypto_policy_set_rtcp_default(),同時包含加密及認證。
(3)初始化需要使用的參數,malloc rtp_sender_ctx_t這個結構,呼叫srtp_create()把密鑰資訊傳進去。
(4)完成以上動作後,在live555的sendPacketIfNecessary(),執行srtp_protect(),把RTP Header及RTP Packet傳入進行加密,最後由RTSP Server送出串流提供給VLC Player。

現在的問題是,RTSP的交握訊息Describe(前面省略)
v=0
o=RTSP 1473678528576161 1 IN IP4 0.0.0.0
s=RTSP Server
t=0 0
a=range:npt=0-
a=control:*
m=video 0 RTP/SAVP 99
a=crypto:1 AES_CM_128_HMAC_SHA1_32\r\ninline:we7DcX2nYZW7h4V4eQr3HE7p+Fnhl6QUp41avHRR\r\n
c=IN IP4 0.0.0.0
b=AS:0
a=rtpmap:99 H264/90000
a=fmtp:99 packetization-mode=1;profile-level-id=4D002A;sprop-parameter-sets=Z00AKpWoHgCJ+VA=,aO48gA==
a=control:track1

在RFC3711中提到,m=video 0 RTP/SAVP 99,必須使用SAVP或SAVPF,並要加入a=crypto ... inline:,但如果依照以上方式加入,交握過程做到DESCRIBE command結束VLC就不再回應,而把建立的連線終止了。

想請問,
(1) 是master key/salt使用的AES_BOX內容錯誤嗎?
(2) Describe SDPLine撰寫錯誤?
(3) VLC的master key/salt要如何填寫?(工具→偏好設定→解多工器→RTP→SRTP key/salt)
(4) 或是有其它撥放器可以驗證?(因為用Wireshark是無法解析的)
(5) 或是有其它沒注意到的地方呢?

謝謝賜教!
...全文
735 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
nancy_qian 2020-04-20
  • 打赏
  • 举报
回复
楼主请教下,你后来流程可以跑了吗?我也在看SRTP的东西。

2,543

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
  • 多媒体/流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧