草庐IT

云计算安全综述

秦康元 2023-03-28 原文

​1、绪  论

云计算是分布式计算技术的一种,其最基本的概念是透过网络将庞大的计算处理程序自动拆分成无数个较小的子程序,再交由多部服务器所组成的庞大系统经搜寻、计算分析之后将处理结果回传给用户。云计算的架构如下所示:

随着云计算逐渐成为主流,云安全也获得了越来越多的关注,本文主要介绍云计算面临的威胁主要包含数据丢失、数据泄漏等安全风险,以及应对这些风险的主要措施。

2、云计算面临的主要安全问题

2.1滥用和恶意使用云服务

攻击者使用合法的云服务来从事非法活动。例如,他们可能使用云服务在GitHub之类的网站上托管伪装的恶意软件,发起DDoS攻击,分发网络钓鱼电子邮件、挖掘数字货币、执行自动点击欺诈或实施暴力攻击以窃取凭据。

2.2数据泄露

数据泄露是最严重的云安全威胁,一些云计算供应商在同一实体服务器上存储不同客户的数据,因此,客户A可能运行在一个“虚拟机”上,客户B运行在另一个上,但是所有客户实际上运行在同一个实体服务器上。因此,当黑客获取了客户A的访问权时,也可能获得客户B的数据。

用户的数据也容易泄露给同样服务商的其他客户手中,但是又没有有效的方法跟踪有关数据泄露路径和身份盗窃记录,增加事后追踪的难度。

云计算依托的基础就是海量的数据,只有在大型数据中心才能发挥它的作用,如果海量数据泄露,就会造成很大的损失。

2.3共享技术漏洞

很多用户在同一时间共享相同的技术,一般会有一个中介连接来宾操作系统和物理接口。所有的用户位于该管理程序的顶层,因此若系统管理程序的安全性受到伤害,整个云计算将会受到影响[1]。

2.4不安全的应用程序接口

每个云都有自己的API,需要在使用这云服务之前安装API。而这些API容易受到DDOS等不同类型的攻击。

2.5账户、服务和通信劫持

随着网络钓鱼攻击变得更有针对性,攻击者获得高特权账户访问权的风险非常大,除此之外,攻击者还可以通过入侵云服务等各种手段来劫持账户、服务和通信。一旦攻击者成功劫持,就可能造成严重破坏,包括盗窃或破坏重要数据,终止服务交付或财务欺骗。

2.6恶意内部人员

内部人员可以是现任或者是前任员工,承包商或可信赖的业务合作伙伴,以及无需突破公司安全防御即可访问其他系统的任何人,他们滥用数据,可以很容易将信息泄露给其他竞争业务方。

3、云计算安全防范

除了上文提到的安全风险外,还有许多未知风险。而这些风险的防御研究也成为云计算领域重要的研究方向之一。

Xian Ou介绍了一种云访问安全代理技术(CASB)来解决用户使用云计算服务时的安全问题,CASB主要做四件事情:发现公司正在使用什么云应用程序;保护数据;防御威胁;确保合规。针对不同用户的业务系统和不同的云计算平台,针对性的实施安全策略,检测和防止未经授权的行为,来保证云计算服务的安全[2]。

P.Ramesh Naidu等人介绍了一种传输的加密框架——高可用性和完整性层(HAIL),并回顾了正在进行的单云、多云安全识别的检查,研究发现,对使用多云供应商进行安全保障的审查比使用单一云供应商进行安全保障的审查得到的考虑要少,也就意味着推进多云的利用,因此这能减少影响分布式计算客户端的安全威胁[3]。

Hossein Abroshan等人提出了一种使用对称和非对称加密算法来提高云计算安全性。他们认为复杂的密码算法在云计算中没有什么帮助,因此使用改进的Blowfish算法与基于椭圆曲线的算法相结合,Blowfish用于加密数据,椭圆曲线算法用于加密密钥,除此之外,还采用了数字签名技术来保证数据的完整性[4],实验结果表面,他们的方法在吞吐量、执行时间和内存消耗参数都得到了改进。

Beak Joosang等人考虑了可撤销的基于属性的加密方案的一个新的安全要求:完整性,提出了具有数据完整性保护的可撤销属性加密RABE-DI方案,并且在定义的安全模型下证明了这个方案的保密性和完整性,并给出了结果和性能评估,结果表明该方案是有效的[5]。针对外包加密数据的共享,基于属性的代理重加密ABPRE方案是一种代表性的方案,但是此方法不支持实现可验证性和公平性的机制,Beak Joosang还提出了一种新的可验证的、公平的基于属性的代理重加密VF-ABPRE方案来支持可验证性和公平性。可验证性让共享用户能够验证服务器返回的重新加密的密文是否正确,公平性能够让云服务器确认诚实进行了重新加密操作来避免恶意指控[6]。实验结果表面,新的方案是有效的。

Jian Shen等人利用代理重加密算法和无关随机访问存储器提出了一种隐私保护的不可跟踪的云计算数据共享方案,组成员和代理通过密钥交换阶段获取密钥,必要的时候可以抵制多方串通,通过代理重加密阶段获得的密文可实现组成员的访问控制和数据存储来实现数据的安全共享。除此之外,他们通过二叉树中的单项循环链接表和混淆操作实现了数据的不可追溯性和隐藏的数据访问模式。根据其设计的结构和指针元组,可识别恶意用户,防止数据篡改[7]。根据实验结果表面。他们的方案是有效的。

Shahzadi Shumaila[8]等人通过使用保护的方法和途径来减少安全的风险来确保数据得到最大程度的保护。他们采用自适应神经网络控制模糊系统解决云计算中不安全、有风险的任务。针对这些数据,采用Sugeno控制方法解决随机性带来的不确定性,ANFIS根据当前场景识别输入参数,对数据进行模糊化处理,并将其集成到知识库中。他们从云构建的角度评估云安全问题推导出云安全问题的一个明确的细节和关键点,这些都应该被任何拟议的安全策略所确认,实验结果也表明,基于ANFIS的参数非常适合识别云层条件下的奇异物,Sugeno隶属函数的性能也得到了较好的结果,保证了数据的计算效率和精度。

A.Savita等人提出了一种安全机制来保持数据的机密性,该方法结合了乘法同态加密算法和数据的垂直碎片。他们利用现有的工作测试了基于加密延迟、通信延迟和查询处理延迟的方案,实验结果表明他们的方法优于现有的方法[9]。

Rashi Saxenal[10]等人也针对云计算面临的一些安全威胁提出了建议,他们认为初始注册、信用卡监视和网络流量监视可以帮助缓解非法使用云计算这个问题;针对不安全的互联网连接,可以在指定的严格条件下,允许监视访问控制和身份验证;通过连锁管理,实现安全违规通知系统和报告系统来防范入侵者;通过加密和解密机制,以及监控文件备份和强密码来防止数据丢失;通过理解安全策略,在客户和供应商之间实现一些想法,实施确认机制,并提供确保系统完整性的方法来解决账户、服务和流量劫持问题;在处理DoSA问题时,可以使用入侵检测系统(IDS);可以通过强身份验证和访问控制来识别多租户性质这种危险的行为;关于日志和数据以及检测和报警系统的明确信息可以帮助避免进行风险评估;通过过滤技术停止SQL注入攻击等多种方案。

4、总  结

低廉的计算成本和灵活的配置能力使得云计算得到广泛关注,但是云计算中的虚拟化、资源共享等技术也带来了许多安全问题,这也引起了人们的注意。虽然到目前为止,云计算的许多安全保护问题取得了较好的研究成果,但是仍然存在很多有待解决的问题,因此我们还需要不断提高保护技术并提出更多新的安全有效的方案。

参考文献

[1]H. Jelodar and J. Aramideh, "Common techniques and tools for the analysis of open source software in order to detect code clones: A study," International Journal of Electronics Information Engineering, vol. 1, no. 2, pp. 64-69, 2014.

[2]Ou Xian. Research on data access security agent technology in cloud computing security[J]. Journal of Physics: Conference Series,2020,1693(1).

[3]Ramesh Naidu P.,Guruprasad N.,Dankan Gowda V. A High-Availability and Integrity Layer for Cloud Storage, Cloud Computing Security: From Single to Multi-Clouds[J]. Journal of Physics: Conference Series,2021,1921(1).

[4]Hossein Abroshan. A Hybrid Encryption Solution to Improve Cloud Computing Security using Symmetric and Asymmetric Cryptography Algorithms[J]. International Journal of Advanced Computer Science and Applications (IJACSA),2021,12(6).

[5]Ge, Chunpeng & Susilo, Willy & Baek, Joonsang & Liu, Zhe & Xia, Jinyue & Fang, Liming. (2021). Revocable Attribute-Based Encryption With Data Integrity in Clouds. IEEE Transactions on Dependable and Secure Computing. PP. 1-1. 10.1109/TDSC.2021.3065999.

[6]Ge, Chunpeng & Susilo, Willy & Baek, Joonsang & Liu, Zhe & Xia, Jinyue & Fang, Liming. (2021). A Verifiable and Fair Attribute-Based Proxy Re-Encryption Scheme for Data Sharing in Clouds. IEEE Transactions on Dependable and Secure Computing. PP. 1-1. 10.1109/TDSC.2021.3076580.

[7]Shen, Jian et al. “A Privacy-Preserving and Untraceable Group Data Sharing Scheme in Cloud Computing.” IEEE Transactions on Dependable and Secure Computing 19 (2022): 2198-2210.

[8]Shahzadi Shumaila,Khaliq Bushra,Rizwan Muhammad,Ahmad Fahad. Security of Cloud Computing Using Adaptive Neural Fuzzy Inference System[J]. Security and Communication Networks,2020,2020.

[9]Savita, A. and Vasanth. “Security Framework for Cloud Computing using Fragmentation and Homomorphic Encryption.” (2019).

[10]Saxena Rashi,Gayathri E.. A study on vulnerable risks in security of cloud computing and proposal of its remedies[J]. Journal of Physics: Conference Series,2021,2040(1).

有关云计算安全综述的更多相关文章

  1. ruby - 如何使用 Ruby aws/s3 Gem 生成安全 URL 以从 s3 下载文件 - 2

    我正在编写一个小脚本来定位aws存储桶中的特定文件,并创建一个临时验证的url以发送给同事。(理想情况下,这将创建类似于在控制台上右键单击存储桶中的文件并复制链接地址的结果)。我研究过回形针,它似乎不符合这个标准,但我可能只是不知道它的全部功能。我尝试了以下方法:defauthenticated_url(file_name,bucket)AWS::S3::S3Object.url_for(file_name,bucket,:secure=>true,:expires=>20*60)end产生这种类型的结果:...-1.amazonaws.com/file_path/file.zip.A

  2. ruby-on-rails - 使用一系列等级计算字母等级 - 2

    这里是Ruby新手。完成一些练习后碰壁了。练习:计算一系列成绩的字母等级创建一个方法get_grade来接受测试分数数组。数组中的每个分数应介于0和100之间,其中100是最大分数。计算平均分并将字母等级作为字符串返回,即“A”、“B”、“C”、“D”、“E”或“F”。我一直返回错误:avg.rb:1:syntaxerror,unexpectedtLBRACK,expecting')'defget_grade([100,90,80])^avg.rb:1:syntaxerror,unexpected')',expecting$end这是我目前所拥有的。我想坚持使用下面的方法或.join,

  3. ruby - 如何安全地删除文件? - 2

    在Ruby中是否有Gem或安全删除文件的方法?我想避免系统上可能不存在的外部程序。“安全删除”指的是覆盖文件内容。 最佳答案 如果您使用的是*nix,一个很好的方法是使用exec/open3/open4调用shred:`shred-fxuz#{filename}`http://www.gnu.org/s/coreutils/manual/html_node/shred-invocation.html检查这个类似的帖子:Writingafileshredderinpythonorruby?

  4. 计算机毕业设计ssm+vue基本微信小程序的小学生兴趣延时班预约小程序 - 2

    项目介绍随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱小学生兴趣延时班预约小程序的设计与开发被用户普遍使用,为方便用户能够可以随时进行小学生兴趣延时班预约小程序的设计与开发的数据信息管理,特开发了小程序的设计与开发的管理系统。小学生兴趣延时班预约小程序的设计与开发的开发利用现有的成熟技术参考,以源代码为模板,分析功能调整与小学生兴趣延时班预约小程序的设计与开发的实际需求相结合,讨论了小学生兴趣延时班预约小程序的设计与开发的使用。开发环境开发说明:前端使用微信微信小程序开发工具:后端使用ssm:VU

  5. ruby - 用 YAML.load 解析 json 安全吗? - 2

    我正在使用ruby2.1.0我有一个json文件。例如:test.json{"item":[{"apple":1},{"banana":2}]}用YAML.load加载这个文件安全吗?YAML.load(File.read('test.json'))我正在尝试加载一个json或yaml格式的文件。 最佳答案 YAML可以加载JSONYAML.load('{"something":"test","other":4}')=>{"something"=>"test","other"=>4}JSON将无法加载YAML。JSON.load("

  6. ruby - 如何计算 Liquid 中的变量 +1 - 2

    我对如何计算通过{%assignvar=0%}赋值的变量加一完全感到困惑。这应该是最简单的任务。到目前为止,这是我尝试过的:{%assignamount=0%}{%forvariantinproduct.variants%}{%assignamount=amount+1%}{%endfor%}Amount:{{amount}}结果总是0。也许我忽略了一些明显的东西。也许有更好的方法。我想要存档的只是获取运行的迭代次数。 最佳答案 因为{{incrementamount}}将输出您的变量值并且不会影响{%assign%}定义的变量,我

  7. ruby - 使用 Ruby,计算 n x m 数组的每一列中有多少个 true 的简单方法是什么? - 2

    给定一个nxmbool数组:[[true,true,false],[false,true,true],[false,true,true]]有什么简单的方法可以返回“该列中有多少个true?”结果应该是[1,3,2] 最佳答案 使用转置得到一个数组,其中每个子数组代表一列,然后将每一列映射到其中的true数:arr.transpose.map{|subarr|subarr.count(true)}这是一个带有inject的版本,应该在1.8.6上运行,没有任何依赖:arr.transpose.map{|subarr|subarr.in

  8. arrays - 计算数组中的匹配元素 - 2

    给定两个大小相等的数组,如何找到不考虑位置的匹配元素的数量?例如:[0,0,5]和[0,5,5]将返回2的匹配项,因为有一个0和一个5共同;[1,0,0,3]和[0,0,1,4]将返回3的匹配项,因为0有两场,1有一场;[1,2,2,3]和[1,2,3,4]将返回3的匹配项。我尝试了很多想法,但它们都变得相当粗糙和令人费解。我猜想有一些不错的Ruby习惯用法,或者可能是一个正则表达式,可以很好地回答这个解决方案。 最佳答案 您可以使用count完成它:a.count{|e|index=b.index(e)andb.delete_at

  9. ruby-on-rails - 安全地显示使用回形针 gem 上传的图像 - 2

    默认情况下:回形针gem将所有附件存储在公共(public)目录中。出于安全原因,我不想将附件存储在公共(public)目录中,所以我将它们保存在应用程序根目录的uploads目录中:classPost我没有指定url选项,因为我不希望每个图像附件都有一个url。如果指定了url:那么拥有该url的任何人都可以访问该图像。这是不安全的。在user#show页面中:我想实际显示图像。如果我使用所有回形针默认设置,那么我可以这样做,因为图像将在公共(public)目录中并且图像将具有一个url:Someimage:看来,如果我将图像附件保存在公共(public)目录之外并且不指定url(同

  10. ruby - 使写入文件线程安全 - 2

    我在一个ruby​​文件中有一个函数可以像这样写入一个文件File.open("myfile",'a'){|f|f.puts("#{sometext}")}这个函数在不同的线程中被调用,使得像上面这样的文件写入不是线程安全的。有谁知道如何以最简单的方式使这个文件写入线程安全?更多信息:如果重要的话,我正在使用rspec框架。 最佳答案 您可以通过File#flock给锁File.open("myfile",'a'){|f|f.flock(File::LOCK_EX)f.puts("#{sometext}")}

随机推荐