Security
Basic
- Crypto:密码(学)
- Cipher:密码(工具)
- Secret:密钥(密码)、密文
- SecretKey:秘钥
- PublicKey:公钥
- PrivateKey:私钥
- Encrypt/Encryption:加密
- Decrypt/Decryption:解密
- Sign/Signature:签名
- Verify/Verification:校验
- Authenticate/Authentication:认证
- Authorize/Authorization:鉴权
Secure
安全有哪些方向
数据安全、服务安全(API和WEB)、机器安全、网络安全、信息安全
安全有哪些技术
古代有哪些安全相关的技术
- 签字
- 画押
- 印章
- 私印(私(印)章,适用于书画)
- 官印(公(印)章,适用于公文)
- 银票
- 地契
近代有哪些安全相关的技术
- 数字证书
- 电子签名
- 电子印章
- 电子发票
- 电子合同
- 电子证件(身份证,驾驶证)
- 数字人名币
ps:电子邮件(email)也是电子的,电子邮件(email)是邮件(mail)的一种
Secret
密钥 加密的钥匙,分为 非对称密钥
和 对称密钥
- 非对称密钥:包含
秘钥
(需要秘密保存的钥匙,不能泄露),加密和解密都是同一把钥匙 - 对称密钥:包含
公钥
(需要公开的钥匙)和私钥
(需要私藏的钥匙),其中一把加密,必须用另一把钥匙解密
ps:
公钥
和私钥
都具备加密和解密的功能,但是不能自己加密又自己解密,如果其中一把钥匙既能加密又能自己解密,那就相当于秘钥
了
Auth
认证
的作用:验证用户的身份鉴权
的作用:检验用户的权限
Usage
SecureRandom
MessageDigest
Cipher
KeyGenerator
KeyStore
Algorithm(算法)
Codec(编码算法)
Url
Base64
Digest(摘要算法)
- CRC32:32位,8字(十六进制字符)
- MD5:128位,32字(十六进制字符)
- SHA1:160位,40字(十六进制字符)
- SHA256:256位,64字(十六进制字符)
- SHA512:512位,128字(十六进制字符)
CRC32
MD5
SHA1
Crypto(加密算法)
1 | Q:base64和md5是加密算法吗 |
对称加密
DES(已经不安全了)、AES
非对称加密
RSA
Authentication(认证)
常见的认证方案
- HTTP基本认证(HTTP Basic Authentication)
- HTTP摘要认证(HTTP Digest Authentication)
- HTTP相互认证(HTTP Mutual Authentication)
- 客户端SSL认证(Client SSL Authentication)
- 表单认证(Form-Based Authentication)
ps:表单认证需要与Cookie和Token配合使用
常见的认证方式
- 账号密码
- 邮箱链接
- 手机号验证码
- 指纹
- 掌纹
- 眼纹
- 脸纹
- 签名
认证成功后返回的是 token(令牌)
, token关联或者包含了用户的 身份
和 权限
信息
Application
Private
注册:Register、Sign Up
登录:Login、Sign In
登出:Logout、Sign Out
Register
账号的常见形式
- 自动选号
- 手动选号
- 邮箱号
- 手机号
- 身份证号
Login
登录的常见方式
- 账号密码登录
- 邮箱链接登录
- 手机号验证码登录
- 第三方登录
- 扫码登录
- 动态密码登录
- 动态令牌登录
Cookie
Session
Token
Logout
Public
OpenAPI
Account
Signature
开放接口认证时用的不是Token(令牌)机制,而是Signature(签名)机制
Service
SSO
SSO的实现方案
- 基于共享Cookie:多个应用需要共享父级域名
- 基于CAS认证中心:多个应用不需要共享父级域名
IAM
IAM:身份和访问管理
- 单点登录 (SSO)
- 多因素身份验证 (MFA)
Authorization(鉴权)
常见的权限模型
- ACL:Access Control List,基于控制列表的权限验证
- RBAC:Role-Based Access Control,基于角色的权限验证
- ABAC:Attribute-Based Access Control,基于属性的权限验证
Application
Linux
Linux的文件权限是基于ACL权限模型实现的
基于控制列表的认证
Database
Database的操作权限是基于RBAC权限模型实现的
基于用户角色的认证
Service
OAuth2
OAuth2是一个行业标准的授权协议,包含一系列流程和标准
OAuth2和CAS对比
- OAuth2和CAS的流程基本一致
- OAuth2未授权时返回的是授权页面,CAS未登录时返回的是登录页面
- OAuth2回跳时返回的是code用来获取accessToken,CAS回跳时返回的是ticket用来获取用户信息
ps:OAuth2是用来授权的,不是用来认证的,因为OAuth2中只包含资源信息不包含用户信息
Data(数据安全)
数据脱敏、数据加密
Password
Service(服务安全)
常见的服务安全问题
- 身份认证 login token logout
- 权限控制
- 密码加密
- 数据脱敏
- sql注入
- 跨站脚本攻击 xss
- 跨站请求伪造 csrf
- 同源策略 sop
- 跨域共享 cors
- 身份盗用 二次验证
- 反爬虫
- 流量攻击
API(接口安全)
流量攻击:DDos攻击(分布式拒绝服务攻击)、Sync攻击(洪泛攻击)、Ack攻击(洪泛攻击)
中间人工具:通过抓包工具破解和篡改数据进行攻击(需注意https也是可以抓包的)
接口安全的主要内容
- 接口认证:防止系统被非法访问
- 接口签名:防止请求参数被篡改和伪造恶意请求
- 接口加密:防止接口参数被破解和伪造恶意请求
ps:当有人篡改请求时,即
只篡改请求参数
但不篡改摘要信息
时,后端生成的摘要信息和客户端生成的摘要信息会因为参数不同
而不一致
ps:当有人伪造请求时,即既伪造请求参数
且又伪造摘要信息
时,后端生成的摘要信息和伪造者生成的摘要信息会因为密钥不同
而不一致
接口安全的主要机制
- token:防非法访问
- nouce:防重放攻击
- timestamp:防流量攻击
- sign:防中间人攻击(防篡改param、nouce、timestamp)
- key:签名时用的密钥
Authentication
Signature
Crypto
Captcha
图形验证码:防爬虫
手机验证码:防他人
Crawler
Web(Web安全)
攻击方式:sql注入、跨站脚本攻击(xss)、跨站请求伪造(csrf)
安全策略:同源策略(sop)
资源共享:跨域资源共享(cors)
sql注入:Sql Injection
跨站脚本攻击(xss):Cross Site Scripting
跨站请求伪造(csrf): Cross-site Request Forgery
同源策略(sop):Same Origin Policy
跨域资源共享(cors):Cross-Origin Resource Sharing
Https
Tools
Certificate
数字证书(Certificate)的主要作用
- 加密(Encrypt):防泄密(保密性)
- 签名(Sign)和校验(Verify):防抵赖(不可否认性)、防伪造(真实性)、防篡改(完整性)
ps:签名是私钥加密,公钥解密,所以不能抵赖,不能伪造,不能篡改
数字证书(Certificate)的主要内容
- 证书主体(Subject):持有者的身份信息
- 证书公钥(PublicKey):解密证书摘要
- 证书摘要(Digest):证书内容的摘要信息
- 证书签名(Signature):证书摘要的签名信息(使用私钥签名和公钥解签可以检验证书的真实性)
- 证书链(Chain):检查证书链可以检验证书是否可信
- 版本
- 序列号
- 过期时间
- 颁发机构
- 签名算法
Tools
KeyTool
Openssl
ssh-keygen
Android
Hijack
Pay(支付安全)
UKey:U盾
支付的主要方式
- 密码支付(大额支付时短信验证)
- 指纹支付
- 刷脸支付
Machine(机器安全)
动态密码 动态口令(令牌) 堡垒机(跳板机)
Network(网络安全)
Information(信息安全)
信息安全
流量监控、电脑截屏、截图水印
代码安全
代码混淆
Android、Python(magic number)、JavaScript
密钥安全
数据库密码、各种密钥