20

在尝试使用 ASP.NET MVC 设计 S3 应用程序并尝试保持 HIPAA 兼容时,我遇到了一些问题。

我最初的计划是要求 SSL 连接到我的 Web 服务器,加密我服务器上的图像,然后使用我的私钥将它们发送到 s3。

这是我明显的担忧:

  1. 当客户端在浏览器中查看图像时,您不能将未加密的图像存储在任何临时文件缓存中。
  2. 即使我设置了一个 ashx 来一般处理内存中的图像,这不能存储在缓存中吗?

说图像将被加密,因为您将通过 https 连接到我的服务器,但仍然不能保证所有浏览器都不会缓存数据。

甚至不可能考虑带有过期选项的“查询字符串”,因为数据将在存储在 s3 的磁盘上之前被加密,并且将再次在我的内存中的服务器上被解密。

我认为我唯一的选择是编写/购买某种 ActiveX 组件,它不会将图像公开为简单的 html 图像源或将我的应用程序编写为客户端 WinForm 应用程序。

4

5 回答 5

17

从表面上看,云计算似乎不太可能符合 HIPAA。当实例托管在其他人的硬件上并由其他人的系统管理员管理时,肯定不可能满足安全规则吗?

然而,亚马逊已经发布了一份关于这个主题的白皮书:使用 AWS 创建符合 HIPAA 标准的医疗数据应用程序。值得一读,似乎解决了主要问题。它确实以免责声明结尾:

“本白皮书无意构成法律建议。建议您就遵守 HIPAA 和其他可能适用于您和您的业务的法律寻求法律顾问的建议。”

当然,这同样适用于您从 Das Interwebs 上的一些随机家伙那里获得的任何建议。

于 2010-04-19T15:03:45.930 回答
12

与其他一些答案相反,云计算和云数据存储实际上可以符合 HIPAA(请注意,它们是在 2010 年编写的,当时这是一个更加艰难的决定)。

为此,您应该考虑两个主要事项:

  1. 您必须让云提供商签署 HIPAA 商业伙伴协议 (BAA)
  2. 您必须在系统开发中严格遵守安全规则(加密、审计跟踪等)

以下是一些将签署 BAA 的云提供商:

  1. 亚马逊网络服务
  2. 机架空间
  3. Windows Azure截至 2012 年 7 月

(直到最近,亚马逊还不愿意签署 BAA,所以即使他们有一份关于合规性的白皮书,但遵循他们的指导方针并没有削减它——尽管一切都发生了变化)。

对于图像存储,AWS 有S3,Azure 有blob 存储

至于您对在浏览器中提供图像的担忧,我实际上不确定您必须有多严格,但似乎您可以将图像嵌入:

  1. Java 虚拟机 (JVM)
  2. 闪光
  3. 柔性
  4. HTML5

看起来PracticeFusion 开始使用 Flex & Flash 并且正在逐步过渡到 HTML5

于 2013-09-11T15:59:20.170 回答
9

HIPAA 和信用卡 PCI 合规性基本上是不可能实现的,或者微不足道的——这完全取决于你聘请的顾问来告诉你“封闭”网络的含义是什么——在数学上是封闭的(我认为这是最高形式),还是像墙后一样封闭,不与外界相连,但在外面的人行道上用一些基本设备很容易窃听?

当您完成与顾问的沟通时,大量计算机设备是租用的,计算机具有 USB 端口和用户可拍照手机的事实,在任何地方存储加密数据怎么会成为问题?如果您将加密数据存储在 S3 上,则 S3 不会存储除随机垃圾之外的任何内容。您拥有的一些密钥 + 垃圾 = 数据,并且这只发生在您的系统中。

我已经看到“符合 HIPAA 标准”的软件在装有 XP 的 PC 上运行时没有加密。考虑到有多少笔记本电脑被僵尸网络和击键记录器所拥有,整个事情基本上是一种否认的练习。

HIPAA 规则明确规定,数据在用户计算机上时不必加密:“必须保护包含 PHI 的信息系统免受入侵。当信息通过开放网络流动时,必须使用某种形式的加密。如果封闭系统/networks 被利用,现有的访问控制被认为是足够的,加密是可选的。”

于 2010-11-16T03:38:37.067 回答
4

一对夫妇的评论。通过 https 提供的图像并不总是存储在浏览器缓存中。即便如此,您也可以使用headers来控制它。

当您上传图像时,您可以使用您最喜欢的加密技术将其流式传输到内存中并直接传输到数据库中。当用户请求带有加密图像 URL 的页面时,您只需调用控制器,从数据库中获取加密数据,在内存中解密并返回图像。

    [AcceptVerbs(HttpVerbs.Get)]
    public ActionResult ShowImage(string id)
    {
        ImageEntity image = Repository.For<ImageEntity>().Where(a => a.AssetIdd == id).First();

        var decryptedImage = Decrypt(image);

        ImageResult result = new ImageResult(decryptedImage.ImageData, decryptedImage.ContentType);

        return result;
    }

你像这样使用它:

<img src="/Assets/ShowImage/<%=Model.Id%>" alt="" />
于 2010-07-11T20:56:40.917 回答
-1

不可以。由于网络加密要求和网络监控要求之间存在冲突,HIPAA 合规性是不可能的。

于 2010-04-19T15:09:21.047 回答