安全的基础----学习java安全之前的准备

Secure Remote Password protocol (SRP) 安全远程密码协议,用于在不安全的环境中进行密钥交换,同时支持零知识进行身份认证。零知识认证指的是客户端向服务器证明自己知道密码,但是不需要向服务器发送密码来验证自己的身份。在完成密钥交换和身份认证过程中,密码永远不会离开客户端,即使有攻击者窃听到交互的信息,也不能反向推导出机密信息。 阅读详情
安全的基础知识
在高度保证企业应用程序安全的过程中我们不免会考虑到如下的安全需求,然后我们针对这些安全需求提出各种安全技术:
1、    完整性验证(Integrity Verification)。也就是以防止我们需要的内容不被篡改,仍然不吃其真实性。
2、    机密性保持(Confidentiality Preservation)。通俗的说就是防止内容被别人读懂。
3、    认证和访问授权(Authenticity Permission)。通俗的说就是对来访者提供的信息进行分析和判断,从而确定来访者身份。然后根据身份决定该来访者具有什么权限。
4、    不可抵赖的证据(Nonrepudiation Evidence)。据个很简单的例子,如果在网上进行相应的支付操作。如果我已经给他们钱了,但他们仍然说我没给他们怎么办?好了,这里你只要明白我们后面的介绍的技术会解决这个问题的。
5、    审计证据(Auditing Evidence)。对一些安全性十分重要的数据操作进行纪录和观察。

针对上面提到的需求列表对各个技术进行比较粗略地介绍。详细内容请从luopc@edu-edu.com.cn 获取。

加密技术


加密技术是其它安全服务技术的基础,他们的穿插使用相当广泛。所以在学习软件安全技术之前了解各种加密技术是相当重要的。
加密技术的分类
1、消息摘要

 消息摘要主要用于保持数据的完整性,我们经常听到的校验和就是消息摘要的一个特例。它的算法是一个单项函数。也就是直接将输入的数据进行消息摘要提取,但绝不能从消息摘要生成原数据。消息摘要的算法分为如下几类(最常用的是MD5和SHA-1):
u    MD2:是一个速度很慢但相当安全的算法,它产生128位的摘要值。
u    MD4:速度很快,但安全性下降。同样产生128位的摘要值。
u    MD5:是MD4的一个更安全的版本,同时速度更快。也产生128位的摘要值。
u    SHA:安全哈希算法,产生一个160位的摘要值。
u    SHA-1:在克服SHA的一些缺陷基础上形成的哈希算法。
u    SHA-256、SHA-383 和 SHA-512 提供更长的指纹,大小分别是 256 位、383 位和 512 位。
u    MAC:消息认证码,使用秘密密钥和消息摘要算法来创建消息摘要。我们可能经常会疑问,我们有了消息摘要为什么还要认证码呢?听我给你举个例子,前面的提到的消息摘要,只要有明文和算法,谁都可以生成同样的消息摘要,但有时为了特殊的目的我们需要只有特定的人才能生成这个摘要。好了,那怎么办?通过在生成消息摘要的过程中加入相应的密钥,从而使生成的消息摘要在没有密钥的情况下难以生成。

2、对称密钥(私钥加密)

  对称密钥应该是相当强壮的信息加密算法。这和我们生活中的钥匙极为相像。例如你家的门锁可以有好几把钥匙,并且这些钥匙都相同。在现实生活中,你可以将做好的钥匙收递手交给你的亲人,但在网络中就变了,你要通过网络来传递这把钥匙。所以对钥匙的保护又需要相应的加密技术。好了,通过这个通俗的例子,你应该知道对称密钥干什么?它的弱点在哪里?等问题的答案了吧。下面是一些最普通的对称密钥算法:
u    DES:DES(数据加密标准)是由 IBM 于上世纪 70 年代发明的,美国政府将其采纳为标准,使用56位的密钥。
u    3-DES(TripleDES):该算法被用来解决使用 DES 技术的 56 位时密钥日益减弱的强度,其方法是:使用两个密钥对明文运行 DES 算法三次,从而得到 112 位有效密钥强度。TripleDES 有时称为 DESede(表示加密、解密和加密这三个阶段)。
u    RC2和RC4:可以使用2048位的密钥并且提供了一个十分安全的算法。他们都来自于领先的加密安全性公司 RSA Security。
u    RC5:使用了一种可配置的密钥大小。也来自领先的加密安全性公司 RSA Security。
u    AES:AES(高级加密标准)取代 DES 成为美国标准。它是由 Joan Daemen 和 Vincent Rijmen 发明的,也被称为 Rinjdael 算法。它是 128 位分组密码,密钥长度为 128 位、192 位或 256 位。
u    Blowfish:这种算法是由 Bruce Schneier 开发的,它是一种具有从 32 位到 448 位(都是 8 的整数倍)可变密钥长度的分组密码,被设计用于在软件中有效实现微处理器。
u    PBE。PBE(基于密码的加密)可以与多种消息摘要和私钥算法结合使用。
3、非对称密钥(公共密钥)

我们在介绍对称密钥的时候举了一个例子,提到了密钥传输的安全问题。并且在网络中的传输双方并不是我们现实中的“亲人”关系。那么公钥正好解决了这个问题。我这里举个通俗的例子,例如你有个信箱(物理信箱),开着一个缝隙(公钥),大家都能往里塞东西,但是一旦赛进取,那可不是大家都能取到的,只有拥有信箱钥匙(私钥)才能得到。哈哈!就这样。公钥就这样,不要担心它多难理解。当然当我们反过来理解的时候就有些和信箱不同的地方。也就是用私钥加密的东西只有对应的公钥才能进行解密,这种算法经常被应用在数字签名上。其实在现实中你可以将公钥技术和私钥技术结合起来完成信息保密,因为公钥的计算速度相当慢,比私钥慢大约100-1000倍。下面是一些非对称密钥算法列表:
u    RSA:这个算法是最流行的公钥密码算法,使用长度可以变化的密钥。
u    Diffie-Hellman:技术上将这种算法称为密钥协定算法。它不能用于加密,但可以用来允许双方通过在公用通道上共享信息来派生出秘钥。然后这个密钥可以用于私钥加密。
需要注意的是私钥和密钥是成对的,并且不能用一个生成另外一个,特别是不能用公钥生成私钥,否则就麻烦了。

认证和不可抵赖


我们经常在论坛中中见到管理员、斑竹等身份标识,并且我们更明白拥有不同的身份它们的权限也同样有差别。但我们很想拥有管理员的权限,我们的突破口应该在哪里呢?当然是获得一个管理员的账号,这样就可以被系统的认证系统识别。通俗的说就是要让系统的认证识别器确认你是管理员身份就可以了。呵呵,没那么容易,因为各个系统都具有严密的认证体系,不象一些小朋友做的认证逻辑处在sql语句逻辑上那么简单。
认证的实现方法多种多样,真的,我以前做网站的时候总是想当然地进行用户认证。但其基础技术有如下列表:
u    基于口令的身份认证
u    基于令牌的物理标识和认证
u    基于生物测定学的认证
u    基于证书的认证
下面就分别将这些认证做一介绍:
基于口令的身份认证

太熟悉了,不是吗?这里只很想告诉口令暴露的过程以及保护的过程。我们通常见到的口令认证方式是在传输过程中口令完全暴露,并且在服务器端的口令存储上也完全是明文的形式,造成的后果是口令完全被暴露,很容易被监听。那么如何保护这些过程中的口令呢?暂时的思路是:建立在安全传输层的基础上,内部口令不以明文形式出现。好了,不多说了,需要了解更详细的内容请发邮件到:luopc@edu-edu.com.cn。
基于令牌的物理标识和认证

功能我们不用说,当然是非常强大,但代价昂贵。你见过这样的认证吗?呵呵,很少的话,就了解一下就行了,要更多了解劝你先研究一下ATM机和ATM卡或者给我发邮件:luopc@edu-edu.com.cn。
基于生物测定学的认证

想想就知道了,你的指纹、眼睛视网膜等可真是独一无二啊。呵呵,其复杂性也是很大的。我都部知道^^,当然你可以知道,别忘了告诉我luopc@edu-edu.com.cn。
基于证书的认证

近年来相当流行的认证技术应该是基于证书的认证。证书的概念和我们现实中的毕业证书、学位证书等没有多大差别。上面可以记载一些事实信息(特别是某一实体),那当然差别主要体现在数字技术的特殊需要上。其实证书就是一个数据块,主要包括公开密钥、主体相关的信息、证书有效的日期、证书发行者的信息和证书发行者生成的签名。
不是“亲人”那我们就得搞清楚对方是什么?不然的话,我们怎么能把“她”的东西拿来用呢?或者怎么能把咱们的东西给“她”呢?“她”得拿出个什么凭据吧?呵呵,那当然。这无可非议,可能现在你更急切的就是想知道这个证书的签发和应用过程吧?好了。我们继续。
我们前面已经谈过将公钥技术反过来可以应用于数字签名。但这种前面谁都可以签的,数字签名仅仅能解决消息来源真是你拥有公钥的主人,但并不能说明该主人就是一个多么“可爱”的家伙。哎!完了,没法确定她是否“可爱”了。但我倒有个主意,我们去找一个特别了解此人的人(当然要权威了)问问看此人是否信得过。哈哈,就是这样,我们经常说的CA机构就是干这事情的。爽!那么整个过程如何呢?
其实整个过程很简单,我就认为是二次数字签名就是了。第一次首先需要证书的实体将自己的信息和公钥提交给CA,CA确认该组织的可信赖之后,就用自己的密钥对该实体的信息和公钥进行签名。最后被签名的信息会就叫证书。站在用户的角度,用户首先接到一个证书,当然会根据CA(可信)提供的公钥进行解密,如果能解密,当然就可以获得可信赖的信息和实体公钥。然后由实体公钥再进行前面我们介绍的数字签名解密步骤。呵呵,就这样,由介绍完了。

安全套接字层


安全套接字层(SSL)和取代它的传输层安全性(TLS)是用于在客户机和服务器之间构建安全的通信通道的协议。它也用来为客户机认证服务器,以及(不太常用的)为服务器认证客户机。该协议在浏览器应用程序中比较常见,浏览器窗口底部的锁表明 SSL/TLS 有效。
TLS 1.0 和 SSL 3.1 一样。
SSL/TLS 使用本教程中已经讨论过的三种密码术构件的混合体,但这一切都是对用户透明的。以下是该协议的简化版本:
·    当使用 SSL/TLS(通常使用 
https://  URL)向站点进行请求时,从服务器向客户机发送一个证书。客户机使用已安装的公共 CA 证书通过这个证书验证服务器的身份,然后检查 IP 名称(机器名)与客户机连接的机器是否匹配。
·    客户机生成一些可以用来生成对话的私钥(称为会话密钥)的随机信息,然后用服务器的公钥对它加密并将它发送到服务器。服务器用自己的私钥解密消息,然后用该随机信息派生出和客户机一样的私有会话密钥。通常在这个阶段使用 RSA 公钥算法。
·    然后,客户机和服务器使用私有会话密钥和私钥算法(通常是 RC4)进行通信。使用另一个密钥的消息认证码来确保消息的完整性。        

 本文完毕,有什么建议,请给我来信 luopc@edu-edu.com.cn 
Java入门到精通,基础学习知识点总结 目录 前言 Java基础学习 第一个阶段:环境和工具准备 第二个阶段:Java 基础入门 1)基本数据类型 2)操作符 3)流程控制语句 4)包 5)main 方法详解 6)数组 7)注释 8)字符串 第三个阶段:Java 核心技术 1)面向对象 2)常用工具类 3)集合框架 4)反射机制 5)异常处理 6)注解 7)IO 流 8)序列化 9)泛型 10)单元测试 11)编码方式 12)并发编程 13)Java 8 新特性 14)源码阅读 按照以上的基 阅读详情

相关推荐

SRP-6a:安全远程密码协议(SRP)算法的实现

SRP 6a相互认证算法。 什么是SRP: : 这是和描述的步骤 客户端从密码生成一个和一个。 客户端向服务器发送用户名和A。 服务器生成b和B。B是从b和v生成的(验证程序是从DB生成的) 客户端和服务器都从A和B生成U。 客户端生成客户端机密并将签名发送到服务器(M1)。 服务器生成服务器密钥,并生成自己的M1。 然后与客户的M1比较 服务器生成M2并发送给客户端 客户生成自己的M2并进行比较。 现在,建立了相互身份验证(没有发送密码或秘密)。 SRP登录页面: 用户名:madavadiyana,密码:TEv7puHvIx1234(您可以netwok流量Chrome的开发者工具观看) 常规登录页面:http: (与上述凭据相同) 待办事项:代码文档,单元测试,但是有2个端到端集成测试。 以下是建立相互认证的示例代码。 final String user

软件安全技术

零日漏洞是指未被公开披露的软件漏洞利用零日漏洞开发攻击工具进行的攻击称为零日攻击软件安全体系的建立是以漏洞为核心展开的,对漏洞的掌控能力是衡量一个国家信息安全水平的重要因素软件漏洞通常被认为是软件生命周期中与安全相关的设计错误、编码缺陷及运行故障等。软件错误:软件开发过程中出现的不符合期望或不可接受的人为差错。软件缺陷:人为差错或其他客观原因,导致软件隐含能导致其在运行过程中出现不希望或不可接受的偏差软件故障:软件出现可感知的功能不正常,死机,数据丢失或非正常中断等现象。

m0_53793974的博客 3529

bsrp:SRP-6a协议的PythonJavascript实现

bsrp bsrp是版本6a的安全远程密码(SRP)协议的Python(后端)和Javascript(前端)实现。 SRP是一种密码验证的密钥交换(PAKE),它具有几个出色的身份验证功能。 1Password,iCloud,AWS Cognito等将其用于登录身份验证。 为什么选择SRP? 1Password的同伴提供了以下使用SRP的理由: 无需通过网络发送密码即可进行身份验证。 进行身份验证时,不会有任何人知道您的任何机密的风险-即使他们拦截了您的通信。 验证客户端和服务器的身份,以确保客户端未与冒名顶替者服务器通信。 不仅使用二进制“是”或“否”进行身份验证。您实际上最终得到了一个加密密钥。 该库提供了使用python / javascript技术堆栈实现SRP的无缝解决方案。跳转至文档。跳转至文档。 B第一个SRP流程 SRP-6a协议的此实现仅需要两个API调用: B

学习网络安全有哪些误区?学习之前要做哪些准备?如何系统的学习黑客技术/网络安全?

如果你想学习网络安全,首先你必须了解什么是网络安全!什么是黑客!

2301_77193447的博客 719

secure-channel-srp6a-applet:用于SRP-6a的经过密码验证的安全通道的Java卡小程序,可保护元素智能卡

SRP-6a Java卡小程序 此Java Card小程序是Wu [1]对安全远程密码(SRP-6a)密码认证的安全通道协议的实现。 结合使用现成的应用程序(例如使用我们的的Android应用程序)的实现,您可以建立一个使用PIN或密码进行相互身份验证的安全通信通道。 此实现依赖于标准Java Card 2.2 API功能。 尽管Java Card 2.2 API的安全元素通常配备有必要的硬件,以计算SRP中使用的模运算,但是标准Java Card 2.2 API的局限性阻止了对必需密码原语的直接访问。 因此,这给以可接受的性能实施SRP带来了挑战。 但是,通过利用该平台提供的RSA加密API,我们表明可以在密码协处理器的支持下计算乘幂和乘法。 这以及对该协议的少量修改,使得可以在Java卡小程序中以合理的计算时间实现SRP-6a服务器端。 我们在MoMM2014论文[2]中对此进行了介绍

srptools:实施安全远程密码(SRP)身份验证的工具

srptools 描述 实现安全远程密码 (SRP) 身份验证的工具 SRP 是一种安全的基于密码的身份验证和密钥交换协议 - 一种密码身份验证的密钥协商协议 (PAKE)。 这个包包含 Python 2 和 3 的协议实现。 您可以将其导入您的应用程序并使用其 API,或者您可以使用srptools命令行实用程序 (CLI): 命令行使用 命令行实用程序需要安装click包。 基本场景: > srptools get_user_data_triplet > srptools server get_private_and_public > srptools client get_private_and_public > srptools client get_session_data > srptools server get_session_data 可用帮助: > srp

如何用3个月零基础入门网络安全?_网络安全零基础怎么学习

我们知道计算机最早是在西方发明出来的,很多名词或者代码都是英文的,甚至现有的一些教程最初也是英文原版翻译过来的,而且一个漏洞被发现到翻译成中文一般需要一个星期的时间,在这个时间差上漏洞可能都修补了。”答案是否定的,黑客用的电脑,不需要什么高的配置,只要稳定就行.因为黑客所使用的一些程序,低端CPU也可以很好的运行,而且不占什么内存.还有一个,黑客是在DOS命令下对进行的,所以电脑能使用到最佳状态!观看学习近十年所有0day挖掘的帖,然后搭建环境,去复现漏洞,去思考学习笔者的挖洞思维,培养自己的渗透思维。

2401_84466224的博客 1694

SRP-6:SRP-6 协议实现概念的一个小简介

SRP-6 SRP-6 协议实现概念的一个小证明。 它是一种协议,可以在不向服务器发送明文密码的情况下通过服务器对用户进行身份验证。 有关更多信息,请查看上的作者论文。 我将 phpseclib 的用于服务器算术实现,以及 Clipperz.io 的用于客户端加密。 警告 这只是概念实现的证明。 请勿在生产环境中使用。

初学网络安全,要做好哪些准备

硬盘:最低500G的硬盘,推荐500G固态硬盘+1T机械硬盘(双硬盘插槽)。内存:最低8G,有条件尽量上16 G,因为可能要运行多个虚拟机。CPU:最低i5,推荐i7,但最好10代及以上。如果只在一个地方使用,可以买台式机,否则买笔记本更方便。

m0_59236602的博客 824

Rasa Core开发指南

文章目录1. Rasa Core简介1.1 Rasa Core消息处理流程1.2 安装Rasa Core2. Dialogue模型训练2.1 Story样本数据2.2 Domain2.2.0 intents2.2.1 actions2.2.2 templates2.2.3 entities2.2.4 slots3 .训练和使用对话模型3.1 训练对话模型3.2 使用对话模型4. 搭建CustomA...

老蒋也疯狂 1万+

基于文件通信的QMT量化交易信号桥接方案设计与实现

在量化交易系统开发中,进程间通信(IPC)是连接不同计算模块、实现策略逻辑与交易执行解耦的关键技术。其核心原理在于允许运行于独立环境或进程的程序安全、可靠地交换数据。文件系统通信作为一种经典的IPC方法,因其实现简单、跨平台兼容性好且数据可持久化,在非高频场景下具有重要技术价值。它尤其适用于需要将外部复杂计算环境(如配备丰富数据科学库的Python环境)与专用交易终端(如迅投QMT)集成的应用场景。通过约定文件路径与数据格式,外部程序可将包含交易指令的JSON信号文件写入特定目录,而交易终端通过轮询或监听机

weixin_28678151的博客 419

【网安入门】准备转行网络安全之前,你需要知道这些?

下面给大家总结了一套适用于网安零基础的学习路线,应届生和转行人员都适用,学完保底6k!就算你底子差,如果能趁着网安良好的发展势头不断学习,日后跳槽大厂、拿到百万年薪也不是不可能!网络安全产业就像一个江湖,各色人等聚集。

chengxuyuanyy的博客 887

基于Java+SpringBoot+Vue的中小企业设备管理系统的设计与开发(源码+lw+部署文档+讲解等)

💗博主介绍:✌新人博主,工作经验两年+、专注于Java、小程序技术领域和毕业项目实战✌💗🌟文末获取源码+数据库🌟

2301_76502068的博客 1385
上一篇: Java安全基础
下一篇: 25级阶梯,每次走一步或两步,问最多有多少种走法
start_java
博客等级 码龄22年 5粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值