当前位置: 首页 > 知识库问答 >
问题:

加密网络应用程序的安全方法

湛同
2023-03-14

好的,我想知道我目前加密网络连接的方法(将在下面几行中解释)是安全有效的。

此外,我还试图记住,我希望使用尽可能少的字节(传输),因为这可能用于Android。

我目前的方法是使用两种加密方法:RSA(keysize=512)和AES(keysize=128)

我所做的是:

  1. 服务器生成RSA公钥和私钥
  2. 当客户端连接时,服务器向客户端发送公钥RSA
  3. 客户端生成AES密钥,并使用服务器提供的公共RSA密钥加密AES密钥
  4. 客户端发送加密的AES密钥,服务器使用专用RSA密钥解密加密的AES密钥

现在,如果我是正确的,就不可能从客户端嗅探任何数据包,因为您不可能解密AES密钥(没有私钥)。

这是安全的方法吗?还是有什么后门?

这不是我唯一的问题;

因为我的应用程序是在Java中构建的,所以总是可以对其进行逆向工程。由于客户端生成AES密钥并将其保存在内存中,是否有可能获得AES密钥?

最后一个问题:使用以下代码生成密钥对需要大约300毫秒:

我想听听你们的意见和/或改进。

private RSAKeySet(RSAPublicKey publicKey, PrivateKey privateKey) {
    this.publicKey = publicKey;
    this.privateKey = privateKey;

    byte[] mod = publicKey.getModulus().toByteArray();
    byte[] exp = publicKey.getPublicExponent().toByteArray();

    localPublicKeySpec = ByteBuffer.allocate(mod.length + exp.length + 8);
    localPublicKeySpec.putInt(mod.length);
    localPublicKeySpec.put(mod);
    localPublicKeySpec.putInt(exp.length);
    localPublicKeySpec.put(exp);
    localPublicKeySpec.flip();
}

public static final RSAKeySet generateKeys(int keySize) throws GeneralSecurityException {
    RSAKeySet set;
    long start = System.currentTimeMillis();
    KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");

    kpg.initialize(keySize);
    KeyPair kp = kpg.genKeyPair();
    set = new RSAKeySet((RSAPublicKey) kp.getPublic(), kp.getPrivate());

    System.err.println("RSA keys generated (" + (System.currentTimeMillis() - start) + "ms)");
    return set;
}

我用的是Netty,300ms实惠吗?

提前感谢。

共有1个答案

宗政德宇
2023-03-14

不,这是不安全的-您的方案在第1步被破坏,因为您无法保证您收到的公钥是由服务器生成的,或者是由中间人拦截流量、窃听或在将数据发送到真正的服务器之前修改数据生成的。

第二个问题是512位RSA密钥太小,不安全。一台现代台式电脑可以在不到一个月的时间内计算出这样一个键,而使用多台机器可能会减少到几天/小时。当你每次都生成一个新的密钥时,如果有人只需要窃听连接,他们仍然可以很容易地记录流量,然后脱机计算密钥。

关于在内存中访问AES密钥,是的,这是完全可能的,但是任何能够访问客户端进程内存的人在加密之前也可以访问明文数据。无论使用哪种特定的加密方法,这都将是一个问题,尽管确保密钥在使用期后不会在内存中持续存在将限制此类攻击的时间。然而,在类似Java中,即使您在使用后将密钥数据归零,气相色谱也可以移动数据并在内存中保留密钥的多个副本,这在某种程度上更难实现。

总之,我强烈建议你不要尝试发明自己的加密方案,而是使用现有的、成熟的、经过验证的方案,如SSL。我的专业知识不Java,但我非常确定建立SSL会话的方法存在于API中。

 类似资料:
  • 常见的安全误区 黑客、网络安全只存在于虚拟世界 如果我说以后黑客不但可以控制你的汽车开窗、刹车,甚至还能远程“强奸”,你信吗? 许多初创公司,有基于互联网的Sex应用。杜蕾斯公司也有一款Sex over Internet产品叫做Fundawear。如果这个产品出了安全问题或者协议缺陷,被黑客劫持了连接,实现中间人攻击,会出现什么样的后果? 360公司最近发现了时下最火的电动汽车Tesla Mode

  • Here are the articles in this section:跨站脚本跨站请求伪造

  • 网络安全目前包括WAF策略。 WAF策略 WAF策略用于为Web应用提供集中式保护,使其免受常见攻击和漏洞的侵害。

  • 攻击方式 主动攻击 包括篡改数据流或伪造数据流,这种攻击试图改变系统资源或影响系统运行。 被动攻击 对信息的保密性进行攻击,即通过窃听网络上传输的信息并加以分析从而获得有价值的情报,但它并不修改信息的内容。它的目标是获得正在传送的信息,其特点是偷听或监视信息的传递。被动攻击只对信息进行监听,不对其进行修改。被动攻击包括信息内容泄露和业务流分析2大类 病毒类型 文件型 感染可执行文件,包括EXE和C

  • 攻击者无时无刻不在准备对你的 Web 应用程序进行攻击,因此提高你的 Web 应用程序的安全性是非常有必要的。幸运的是,来自The Open Web Application Security Project (OWASP) 的有心人已经整理了一份包含了已知安全问题和防御方式的全面的清单。这份清单对于具有安全意识的开发者来说是必读的。由 Padraic Brady 整理的 Survive The D