- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我的理解是 SSL 结合了加密算法(如 AES、DES 等)和 key 交换方法(如 Diffie-Hellman),以在不安全网络(如 Internet)上的两个端点之间提供安全的加密和识别服务.
我的理解是 SASL 是一种 MD5/Kerberos 协议(protocol),几乎可以做同样的事情。
所以我的问题是:选择两者的利弊是什么,哪些场景更可取?基本上,我正在寻找在选择 SSL 或使用 SASL 时要遵循的一些准则。提前致谢!
最佳答案
比较 SSL/TLS 和 SASL 是相当困难的,因为 SSL/TLS 是一种通信协议(protocol),而 SASL 是一个框架,与其他协议(protocol)集成在一起。 (实际上,在某些情况下,您可以同时使用两者。)
此外,您提到了 Kerberos,它确实是一种身份验证协议(protocol)(可以与 SSL/TLS 或 SASL 一起使用,或者两者都独立使用)。您的问题似乎表明是否使用 Kerberos 是您应该首先选择的主要子问题之一。
SASL 本质上是一个间接层,允许在现有应用程序协议(protocol)(例如 LDAP、SMTP、Subversion 等)中实现可插入的身份验证系统和数据安全,尽管这些协议(protocol)需要知道这个扩展(例如 SMTP auth)。它是否以及如何提供安全的身份验证和数据加密在很大程度上取决于什么 underlying mechanism在这个框架内使用。以下是来自 svnserve
documentation 的示例:“内置的 CRAM-MD5 机制不支持加密,但 DIGEST-MD5 支持”。
如果您想将 Kerberos 与 SASL 一起使用,您将需要另一个间接级别:GSS-API (最常与 Kerberos 一起使用,但也可以用于其他机制)。 (请注意,SASL 上下文中的 GSSAPI
似乎意味着 Kerberos,这与它的 GS2
successor 不同。)
SSL/TLS 的一般目标是保护客户端和服务器之间的通信(完整性和 secret 性)。客户端应该始终检查 SSL/TLS 服务器的身份,它也为服务器提供了检查客户端身份的机制。它可以做什么还取决于它的配置方式。 SSL/TLS 最常与 X.509 证书一起使用:这是浏览器可以检查 HTTPS 服务器身份的方式。服务器还可以配置为请求客户端使用证书来标识自己(客户端证书身份验证)。
但是,如果要使用 Kerberos,则可以使用 TLS Kerberos cipher suites .这不太常见,但它们是 implemented in the JSSE .
它的实现通常提供类似于使用普通 TCP 连接所获得的 API:在 Java 中,一旦配置,您或多或少可以使用 SSLSocket
就像使用普通 Socket
一样.这不需要套接字顶部协议(protocol)的特定意识,尽管某些协议(protocol)具有从普通连接 ( Implicit v.s. Explicit SSL/TLS ) 切换到 SSL/TLS 的显式命令。它还可以提供身份验证。在 Java 中,JSSE是默认的 SSL/TLS 实现,它使您可以访问 SSLSocket
(或者 SSLEngine
如果你足够勇敢的话)。
您可能想阅读“When to use Java GSS-API vs. JSSE”,它类似于“SASL vs. SSL/TLS”(尽管它似乎已经有一段时间没有更新了,因为 JSSE 现在确实支持 Kerberos 密码套件,至少自 Oracle Java 6 起)。
我承认我对 SASL 的了解少于对 SSL/TLS 的了解,但是通过 SASL 进行数据加密听起来似乎需要更多的工作。它似乎没有某些 SSL/TLS 功能,例如 Perfect Forward Secrecy offered by EDH cipher suites .有一个example that uses SASL with GSSAPI (Kerberos here) in the JGSS tutorial :您需要显式包装/解开数据,而在使用 SSLSocket
时您不必这样做s。
我认为您主要关心的应该是首先决定要使用哪种身份验证机制:Kerberos、X.509 证书或其他什么。这将对您的整体架构产生更大的影响,并且两者都可以与 SASL 和 SSL/TLS 一起使用(如果您在 SSL/TLS 连接之上使用具有 EXTERNAL
机制的 SASL,则更是如此)。
Subject
and Principal
的概念.这并不直接与协议(protocol)或通信相关联,而是与您在应用程序中对身份验证和授权进行建模的方式相关。 (它为您提供了一组标准的类来这样做。)
关于encryption - 安全与认证 : SSL vs SASL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11347304/
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 8 年前。 Improve this ques
我heard “PKCS#1 v2.0 加密通常称为 OAEP 加密”。 在我的项目中使用它之前,我需要某种“官方”文档来说明这一点。我试图找到它但没有成功。知道在哪里可以找到吗? 谢谢! (顺便说一
已锁定。这个问题及其答案是locked因为这个问题是题外话,但却具有历史意义。目前不接受新的答案或互动。 来自:加密公司 收件人:x$*sj4(就是你) 如果您选择接受的话,您的任务是用最短的击键次数
我正在使用带有 docker/docker compose 和 traefik 的 ubuntu 18.04.1 LTS。使用暂存 Let's Encrypt caserver ( https://a
我目前正在完成一篇关于通过各种密码算法加密数据的论文。 我花了很多时间阅读期刊和论文,但还没有找到任何关于它们的性能复杂性的记录。 有人知道以下算法的 Big-O 复杂度吗? RSA DES 三重 D
我正在为嵌入式系统(微 Controller )编写固件。固件可以通过引导加载程序(也是我编写的)进行更新。 现在需要采取措施防止固件被操纵,因此系统必须仅执行具有某种有效签名的下载固件。 固件文件已
我试图了解加密(“受密码保护”)Office 2007 文档(特别是 Excel 文档)的捆绑方式。我正在试验一个已知的、受密码保护的电子表格。 当我解压 XLSX 文件时,我遇到了三个条目: [6]
K8s对encrypt secret data具有此功能,这需要修改kube-apiserver配置,我如何在GKE中做到这一点? 最佳答案 简短的答案是,你不能。 Kubernetes Engine
我正在使用 ENCRYPT() 函数在 mysql 中存储一个字符串。我想获取匹配该字符串的行,但新的 ENCRYPT() 调用给了我一个不同的值,因此它们永远不会匹配。 这是预期的,因为我没有(也不
在带有 Python 2.7 和 GPG4Win v2.2.0 的 Windows 7 上使用 python-gnupg v0.3.5 test_gnupg.py 导致 2 次失败: Test tha
我尝试兼容 C# 和 Java 的加密/解密。 据我所知,默认模式在 Java 中是“ecb/pkcs5”,在 C# 中是“cbc/pkcs7”。 所以我匹配这些东西。 第一个问题是 PKCS7 和
我使用 SwiftyRSA 使用带有 PKCS1 填充的公钥加密字符串。不幸的是,当我用 Java 解密我的加密字符串时,我发现了 BadPadding: Encryption Error。到目前
比特币是一种匿名的加密数字货币。几个月前我有了加密文件的想法,其中需要比特币的支出证明才能解密文件。当比特币被发送到给定地址时,它会显示在分布在对等网络中的块文件中。区块链的完整性是通过需要大量计算机
我有一个类,我试图用依赖注入(inject)替换 Crypt::encrypt 的外观用法: encrypter= $encrypter; }
我想使用带有 RSA 算法的 OpenSSL 使用私钥加密文件: openssl rsautl -in txt.txt -out txt2.txt -inkey private.pem -encryp
我在 TCL 中使用 DES 来加密一些短语,我想将这些加密的短语存储在一些我需要轻松操作的 ascii 文件中。因此,我希望“加密短语”仅由标准 ascii 字符构成(最好没有空格)。 我正在使用类
我在 TCL 中使用 DES 来加密一些短语,我想将这些加密的短语存储在一些我需要轻松操作的 ascii 文件中。因此,我希望“加密短语”仅由标准 ascii 字符构成(最好没有空格)。 我正在使用类
我对Android平台不同的数据存储加密机制有点困惑。据我了解: 全盘加密影响整个/data 磁盘并且只能是由用户激活/停用。 ( https://source.android.com/securit
我正在使用 Lumberjack 作为日志记录平台(Objective C/Swift)有没有办法将日志加密写入文件? 如果是,那么任何例子都是有用的 另外,之后如何读取加密后的日志 密集型日志记录是
我确定这是一个典型的场景,但我找不到合适的步骤顺序。 我有一个运行 Apache 的 www.example.com 服务器(比如)1.1.1.1。我正在使用 Caddy 在 2.2.2.2 上构建一
我是一名优秀的程序员,十分优秀!