【问题标题】:ActionScript 3 - PHP sending data via AMF (or whatever) encryptedActionScript 3 - PHP 通过 AMF(或其他)加密发送数据
【发布时间】:2011-08-31 18:35:25
【问题描述】:

我在两件事上需要帮助:

  1. 关于一种加密算法的建议,我可以使用该算法在服务器上对数据进行编码,将其发送到 AS3 客户端并在那里对其进行解码。根据我的阅读,公钥 - 私钥听起来不错。

  2. 一个可以编码和解码的AS3库,兼容PHP的bcrypt(再次,我读到bcrypt最适合这种数据传输)。

我不是安全专家,希望问题清晰而不笨拙。

编辑:建议 SSL 是一个不错的选择,但目前我正在寻找非 SSL 的。

谢谢。

【问题讨论】:

    标签: php actionscript-3 public-key-encryption


    【解决方案1】:

    您的威胁模型是什么?如果您只是担心人们会在数据在线时嗅探数据,那么请使用 SSL。它对您的应用程序是透明的,通常您只需安装证书并将 URL 从 http:// 更改为 https://

    如果您的主要威胁是有人在应用程序上运行调试器以捕获数据,那么您将遇到更大的问题,并且极不可能阻止某人“窃取”数据。

    【讨论】:

    • 数据不是很敏感,但足够敏感,我不想发送纯文本。我考虑过 SSL,但目前它不是一个选项。但是一个很好的答案。出于好奇,通过 SSL 发送纯文本是“无风险的”——即使互联网上没有任何内容?
    • 除非您受到像 NSA 这样的人的攻击,否则极不可能有人可以在任何时间范围内解密 SSL 流,从而使数据仍然相关/有用。对于大多数人来说,攻击服务器本身要比攻击通信链路容易得多。窃听某处的线路只会为您带来一小部分流量,而窃听服务器本身则可以获得一切。
    • 我明白了。因此,一旦您拥有 SSL,您就不必担心自己的加密,只需发送纯文本数据 - 对吧?
    • 另外,为什么全国足球协会要窃听我?!哈哈。
    • @Francisc:是的。当数据在线时,SSL 层负责与加密/解密有关的所有事情。至于足球,TLA(三个字母的首字母缩写词)太多了
    【解决方案2】:

    @Marc B 指出 SSL 非常安全,但如果您绝对需要自定义加密...

    如果服务器支持 mcrypt(大多数 PHP 实现都支持),那么您可以使用 mcrypt 提供的任何加密方法(包括现代 AES 实现、IDEA、TEA 等 [实际上是一长串]) .但是,必须编写 php 脚本(当然)以预期加密数据。

    查看http://php.net/manual/en/book.mcrypt.php 了解有关 PHP 实现 mcrypt 的信息。

    编辑:print_r(mycrypt_list_algorithms()) 在安装了 php-mcrypt 的几乎库存的 Fedora 盒子上的快速转储显示...

    Array
    (
        [0] => cast-128
        [1] => gost
        [2] => rijndael-128
        [3] => twofish
        [4] => arcfour
        [5] => cast-256
        [6] => loki97
        [7] => rijndael-192
        [8] => saferplus
        [9] => wake
        [10] => blowfish-compat
        [11] => des
        [12] => rijndael-256
        [13] => serpent
        [14] => xtea
        [15] => blowfish
        [16] => enigma
        [17] => rc2
        [18] => tripledes
    )
    

    rijndael 是 AES。有些出于不同的原因比其他的更好,而有些则只是垃圾(如 DES)。

    【讨论】:

    • 谢谢您,Stobbe 先生。你会从你提到的那些中推荐一个加密解密的吗?服务器支持 mcrypt。我没有足够的经验来做出明智的决定。谢谢。
    • 抱歉耽搁了,但如果你真的想这样做,你应该坚持使用 rijndael-256 (aes-256)。需要记住的几件事:任何块模式加密都将用空值填充以适应块大小,因此应该转换实际长度; IV 可以完全安全地传输(并且需要解密),但密钥不是;并且——因为如果有人只是调试你的脚本,你无法控制——没有办法保护私钥(正如@Laurent 指出的那样)。不过,我不会经历所有这些,而只是使用 SSL。这是一种虚假的安全感。
    • 感谢您的建议。我一直在寻找一个使用一个密钥加密和另一个解密的系统。在服务器上解密。
    • @Francisc PHP-OpenSSL 使用公钥机制。我不知道 AS 是否具有以这种方式加密的内置能力,或者您是否必须获得另一个 3rd 方库。我知道有多个 RSA javascript 实现,尽管它们可能是可利用的,可以很容易地移植到 AS)...其中之一 here.
    • @Francisc 此外,在互联网上进行更多的探索让Forge 陶醉。这可能正是您要寻找的。我不知道你是否可以使用它来加密(而不是通过套接字),但我相信如果你需要的话,你可以修改它来做到这一点。
    【解决方案3】:

    如果您不介意有人使用客户端调试器,只需使用 ActionScript 库(例如 as3crypto),它应该具备解码 PHP 发送的任何数据所需的一切。

    公私密钥加密没有任何意义,因为您必须将您的私钥嵌入 SWF 中,从而使其公开。

    【讨论】:

      猜你喜欢
      • 2013-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-21
      • 1970-01-01
      • 2011-10-16
      相关资源
      最近更新 更多