问题标签 [dtls]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1054 浏览

google-chrome - 在 Chrome 中解密 WebRTC 中的 SCTP-DTLS 流量

我正在尝试检查通过我本地计算机上的 chrome 中 webrtc 数据通道的 sctp 连接发送的数据包。我发现关于解密 DTLS-Traffic(例如通过 wireshark)的信息并不多。有没有办法访问为对等连接生成的证书?如果不是,如何通过其他方式解密流量?(例如,一些 mitm 代理,但大多数仅用于 TLS)。

0 投票
1 回答
731 浏览

android - Android 设备中的 DTLS 握手失败

我正在尝试使用openssl/bio.h库在我的 Android 客户端中实现 DTLS。

同样在 iOS 中不会导致任何错误,而在 Android 中..DTLS 握手失败会给出以下错误
ssl3_write_pending:BIO_NOT_SET

我不明白这个错误,有没有人尝试过这个或者遇到过这个问题?通过谷歌没有找到太多帮助

0 投票
1 回答
6489 浏览

java - 如何为身份验证创建 ECDSA 密钥?

我正在尝试根据来自Californium.Scandium的示例 java 文件在 Android 上设置 DTLS 服务器。最初我遇到了问题,因为密钥库和信任库是 jks 格式并且我没有密钥密码。因此,我使用 Portecle 创建了自己的 PKCS12 密钥库和信任库。

之后,代码在密钥库加载期间没有抛出任何错误,但在运行应用程序时我得到了这个:

编辑:我意识到我的密钥是使用 SHA 而不是 ECDSA 创建的。我对密钥库和密钥不是很熟悉,所以我假设我的密钥库现在是有效的,我只需要为系统生成适当的密钥并将它们植入密钥中。如何使用 ECDSA 创建密钥并将它们传输到我的密钥库?

0 投票
2 回答
580 浏览

security - DTLS 是否需要会话超时?

我试图找出最有效的数据使用方式来保护我们的 CoAP API。DTLS 似乎是正确的方法,但看看握手需要多少数据(并对需要发生的频率做出一些不知情的假设)似乎带有 X.509 证书的 DTLS 使 CoAP 的实际数据使用相形见绌本身。

最明显的解决方案是只使用在工厂编程的对称密钥,但我认为我不喜欢强加的安全风险。据我了解,除了在所有设备上手动安装新密钥外,没有办法从服务器端入侵中恢复。

我正在考虑提出的解决方案基本上是两者的混合,使用安全 CA 分发设备,让设备进行标准握手并建立“临时”对称密钥。然后为了节省设备的带宽,我将该密钥(会话?)存储在数据库中,以便设备一次持续数月或数年,但如果我们发现任何密钥已经泄露,仍然可以使密钥过期。

我知道我可以只使用标准会话恢复握手来恢复会话,但我不确定这是必需的,因为 DTLS 是无连接的,我可以假装“连接”总是打开的。如果我可以避免重复握手,这将降低数据消耗并可能降低服务器负载。

我不知道的是:DTLS 是否定义了会话可以保持打开状态的限制?或者是否存在超时,在一段时间不活动后必须删除会话?如果没有,DTLS 的实现是否自己定义了一个?

关于为什么这不起作用,我可能会忽略其他任何事情吗?还是有什么更简单的我没有想到的?

0 投票
1 回答
2384 浏览

openssl - openssl 对 DTLS v1.2 的支持

我在 Ubuntu 14.04 中预装了 openssl 版本

这是 Ubuntu 中可用的最新版本。现在的问题是在我编译它显示的代码时SSL_library_init();调用了它:DTLSv1_2_client_method();

但是如果我改为method = DTLSv1_client_method(); 它只显示与演员表相关的警告

代码片段如下:

我也从 git 下载了 openssl 源代码并安装了,但 openssl 版本没有改变。而且我无法编译。任何人建议任何修复?

0 投票
0 回答
203 浏览

ssl - TLS/DTLS 心跳扩展的超时值

TLS(DTLS)心跳扩展的超时值到底是多少?我的理解是 TLS(DTLS) Heartbeat 扩展是检查服务器和客户端之间的活跃度,比如保持活动状态。这意味着,发送方定期发送心跳请求,接收方应向发送方响应心跳响应。但是,RFC 6520 中没有超时值的定义。如何设置超时值来实现这个功能?

0 投票
1 回答
256 浏览

ssl - DTLS 1.2 主密钥派生

我正在实施DTLS 1.2并使用密码TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256

我正在使用以下步骤创建预主密钥和主密钥

1- 使用 API BCryptOpenAlgorithmProvider开放算法提供程序

2- 使用 API BCryptGenerateKeyPair生成密钥对

3- 比使用 API BCryptExportKey导出公钥

4- 比使用 API BCryptImportKeyPair导入对方公钥

5- 之后使用我的私钥和其他方公钥通过 API BCryptSecretAgreement生成秘密协议句柄

6- 最后使用 API BCryptDeriveKey获取密钥

我是否因为我的主密钥不正确而遗漏了什么。

0 投票
0 回答
179 浏览

nss - NSS DTLS 示例应用程序代码

是否有在某处可用的利用 NSS DTLS/SRTP 功能的示例独立“应用程序”代码?

有使用 NSS Mozilla 版本附带的 SSL3/TLS 功能的 cmd 和测试示例应用程序代码,但没有用于 DTLS 功能 - 尽管 nss/lib/ssl/ 代码中支持 DTLS,但这些是 SSL3/DTLS 内部的在职的。

我已经尝试谷歌搜索了几天,但无济于事。我已经尝试了几个星期来编写代码来访问这些内部代码,这需要大量的黑客攻击才能在 ssl/ 目录中创建内部挂钩,我认为这不是正确的方法,而且进展不顺利。但我根本无法在 dtlscon.c、ssl3con.c 等中找到一个合理的 API 供应用程序使用或遵循的示例应用程序。

有人可以提供一些提示或实际利用 NSS DTLS/SRTP 功能的独立客户端/服务器应用程序代码示例吗?

我在 NSS cmd/tests 下的 C 或 nss/jss/org/Mozilla/jss 下的 JAVA 中进行编码。

谢谢,

0 投票
1 回答
195 浏览

c - 为同一端口上现有 DTLS 连接上的传入 DTLS 连接获取 SSL_ERROR_SYSCALL

在现有的 DTLS 连接上,即 DTLS 握手已经在端口 5000 上成功完成,如果服务器获得传入的 DTLS 连接,即 DTLS 客户端 Hello 数据包,则 SSL_read 正在生成SSL_ERROR_SYSCALL

谁能给我一个关于为什么的线索。

场景是客户端在服务器的 5000 端口上与服务器建立了 DTLS 连接。客户端更改的 IP 地址可能是由于从 Wi-Fi 过渡到 3G 或反之亦然。因此,现在客户端将再次尝试在服务器的同一端口 5000 上与服务器建立 DTLS 连接。

请任何人告诉我

  • Q1。为什么 SSL_read 会生成错误 SSL_ERROR_SYSCALL 以及可以做些什么来继续?

  • Q2。我们是否可以在同一端口上的现有 DTLS 连接上处理另一个传入的 DTLS 连接,而无需清理已经存在的 DTLS 连接?

提前感谢您的帮助,Vineet Srivastava

0 投票
1 回答
6760 浏览

openssl - 当 BIO 是内存 BIO 而不是套接字 BIO 时,BIO_read/BIO_write 和 SSL_read/SSL_write 有什么区别?

当 BIO 是内存 BIO 而不是套接字BIO 时,我对 BIO 例程BIO_read()/BIO_write()SSL_read()/之间的区别感到困惑。SSL_write()

我正在尝试编写libnice用于 ICE 堆栈的 WebRTC 服务器和用于 DTLS 堆栈的 OpenSSL。ICE 堆栈具有到客户端的套接字连接,因此我不能在 OpenSSL 中使用基于套接字的 BIO。相反,我使用的是内存 BIO。

所以我使用的高级程序是,当我在 ICE 套接字上接收到来自客户端的 DTLS 消息时,我使用BIO_write(). 然后,当 DTLS 堆栈有消息要发送给客户端时,我使用 ICE 获取该消息BIO_read()并使用 ICE 套接字将其发送给客户端。

我已经看到了一些基本上执行此过程的源代码示例,但它们也在调用SSL_read()后调用例程BIO_write()。这对我来说毫无意义。为什么SSL_read()在我基本上使用调用将客户端消息写入 DTLS 堆栈之后调用是必要的BIO_write()?如果我在我的代码不起作用SSL_read()后不打电话。BIO_write()但是当我SSL_read()在之后调用时BIO_write(),这确实是在与浏览器客户端交换握手消息。

问题BIO_read():使用内存 BIO,和有什么区别SSL_read()

问题BIO_write():使用内存 BIO,和有什么区别SSL_write()

问题:默认内存BIO是阻塞的还是非阻塞的?我假设它是非阻塞的,因为它是基于内存的 BIO 而不是基于套接字的 BIO。

谢谢,
-安德烈斯