访问令牌主要用于移动银行业务,以在应用程序和第三方API之间建立连接,因此,必须将它们视为关键的安全参数。
Web应用程序通常要求用户进行身份验证。认证可以包括提交密码,可以是静态的或动态的(一次性密码)、生物特征数据、证书、甚至是回答问题。在所有情况下,机密都由用户和远程服务器共享。执行授权后,客户端应用程序将需要保持授权一段时间,以便它可以执行所需的操作。
由于应用程序显然将不需要用户为每个网络请求提交其机密信息,因此必须有一种机制可以静默地授予应用程序保持与远程服务器连接的权利,并且该机制将作为用户进行身份验证。通常,它包含一个在客户端创建的文件,该文件保存身份验证信息。并且,它将有一个到期日期,在此日期之后,用户将不得不重新进行身份验证。
几乎每个人都听说过浏览器cookie。这些通常是这种被动身份验证机制的基本形式。用户名和密码存储在cookie中。当然,在本地存储用户名和密码通常是一个坏主意,因为即使被加密,使用被盗的cookie也可以实现许多攻击。
通常,有两种不同的更强的被动身份验证机制:身份令牌和访问令牌。两者都由服务器发送到客户端。一般情况下,这不是发送令牌的最终服务器(“资源”服务器)。相反,它是一个中间服务器,例如身份验证服务器(例如OAuth 2.0服务器)。
此外,两个令牌通常都是JWT令牌(JSON Web令牌)。这些是URL安全,紧凑且用于SSO上下文(单点登录)的令牌。JWT令牌声明了一定数量的索赔。这些声明已得到验证,因为它们是由远程端的私钥签名的。因此,每次客户端将它们发送回时,服务器都可以通过检查签名的真实性来验证声明。
身份令牌本身不会授予对资源的访问权限。但是,它们会识别用户,确认用户已通过身份验证,并检索有关其个人资料的信息。
相反,访问令牌不带有识别标记,而是授予对给定资源的访问权限。它们的设计寿命很短,并且可以嵌入其他一些信息,例如IP地址或客户的签名。
显然,窃取访问令牌可以访问身份验证。访问令牌不是一次性密码。知道令牌值(用作加密密钥)将在令牌寿命期内提供对API的访问。例如,充当伪造应用程序的第三方应用程序特洛伊木马可能会窃取令牌并使用它们代表合法客户端执行请求,从而执行欺诈性的财务操作。
大多数身份验证服务提供商和移动银行应用程序集成商选择实施OAuth 2.0授权授予流程,如果没有进一步的保护,则会对应用程序的整体安全性带来一定的风险。
尽管流发生在TLS通道内,但是有一些方法可以拦截所授予的访问令牌的值:
黑客可以对合法的银行应用程序进行反向工程,然后提取其客户ID,重定向URL,客户机密等。然后,他们通过使用对OAuth 2.0服务器看起来完全有效的值重新编译经过修改的应用程序,来重新创建伪造的应用程序。
黑客可以篡改URL重定向,例如,在移动电话上运行服务器并篡改主机文件以拦截授权代码。然后,他们可以使用它来从OAuth 2.0服务器获取访问令牌,并使用它们代替合法应用程序。
当然,移动银行中的访问令牌还涉及其他风险,这些风险不在本文讨论范围之内。
该应用程序应:
处理授权授权流程时,请使用代码交换证明密钥(PKCE);
在处理授权授予流程时,请使用带有安全授权中间人服务的动态证明保护;
不在源代码或其他地方存储OAuth应用凭据;
不对银行应用程序中的访问令牌进行硬编码;
使用OpenID connect之类的协议来处理OAuth身份验证,而不要使用自制系统;
保护JWT令牌;
将令牌存储在安全的cookie或加密的文件中;
使用TLS1.2 +来传输令牌,而不使用GET,而仅使用POST请求。
联系揽阁信息,您可以获取到更多满足全球合规性要求的信息安全产品资料,以及相关的整体解决方案的相关资料。如:
数据库访问控制:揽阁LGPAC系统
通用HSM:Luna HSM、ProtectServer HSM
支付HSM:payShield 10K
您还可以得到揽阁信息所提供的优质服务。
揽阁信息 · 值得您信赖的信息安全顾问!