首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在Android 9.0派中获得ECDH密钥对?

在Android 9.0(Pie)及更高版本中,要获得ECDH(Elliptic Curve Diffie-Hellman)密钥对,你可以使用Android KeyStore系统来安全地存储和管理密钥。以下是获取ECDH密钥对的步骤:

基础概念

ECDH是一种基于椭圆曲线密码学的密钥交换协议。它允许两个通信方在不安全的通道上协商出一个共享的秘密密钥,而无需实际传输密钥本身。

相关优势

  • 安全性:ECDH提供了与RSA相同级别的安全性,但使用较小的密钥大小。
  • 性能:椭圆曲线算法比传统的RSA算法更快,特别是在移动设备上。
  • 灵活性:可以选择不同的椭圆曲线参数来平衡安全性和性能。

类型

ECDH密钥对通常包括一个私钥和一个公钥。私钥用于生成共享密钥,公钥用于与其他方交换。

应用场景

ECDH常用于TLS/SSL握手、VPN连接、加密通信等场景。

获取ECDH密钥对的步骤

  1. 添加权限: 在AndroidManifest.xml文件中添加以下权限:
  2. 添加权限: 在AndroidManifest.xml文件中添加以下权限:
  3. 生成密钥对: 使用KeyPairGenerator类生成ECDH密钥对,并将其存储在KeyStore中。
  4. 生成密钥对: 使用KeyPairGenerator类生成ECDH密钥对,并将其存储在KeyStore中。
  5. 从KeyStore中获取密钥对
  6. 从KeyStore中获取密钥对

可能遇到的问题及解决方法

  1. 权限问题
    • 确保在AndroidManifest.xml中添加了必要的权限。
    • 在运行时请求权限(如果需要)。
  • KeyStore初始化问题
    • 确保KeyStore已正确初始化。
    • 检查是否有异常抛出,并根据异常信息进行调试。
  • 密钥生成失败
    • 确保使用的算法和参数在当前设备上受支持。
    • 检查是否有足够的权限来生成密钥。

参考链接

通过以上步骤,你可以在Android 9.0及更高版本中安全地生成和管理ECDH密钥对。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

基于 TLS 1.3的微信安全通信协议 mmtls 介绍(上)

一、背景 随着近些年网络安全事情的频繁发生,使得用户网络通信安全的意识越来越强。国内外的网络服务提供商都逐渐提供全站的安全通信服务,国内的淘宝、百度先后宣布已经完成了全站部署 https。...说明:在下文中,会出现多个对称密钥和多个非对称密钥,在本文中我会给有些密钥取一个专有的名字,以方便理解避免混淆,:pre_master_key,pre_shared_key,cli_pub_key,...在 mmtls 我们采用的数字签名算法为 ECDSA。 双方密钥协商时,再分别运行签名算法自己发出的公钥 ECDH_pub_key 进行签名。...1. 0-RTT ECDH 密钥协商 0-RTT 握手想要达到的目标是在握手的过程,捎带业务数据到端,这里难点是如何在客户端发起协商请求的时候就生成一个可信的对称密钥加密业务数据。...首先 PSK 是如何获得的呢?

18.5K02

为什么我强烈建议你使用ECC 证书

TLS 在实施加密过程,需要用到非对称密钥交换和对称内容加密两大算法。 对称内容加密强度非常高,加解密速度也很快,只是无法安全地生成和保管密钥。...非对称密钥交换能在不安全的数据通道,产生只有通信双方才知道的对称加密密钥。...在 RSA 密钥交换,浏览器使用证书提供的 RSA 公钥加密相关信息,如果服务端能解密,意味着服务端拥有证书对应的私钥,同时也能算出对称加密所需密钥密钥交换和服务端认证合并在一起。...在 ECDHE 密钥交换,服务端使用证书私钥相关信息进行签名,如果浏览器能用证书公钥验证签名,就说明服务端确实拥有对应私钥,从而完成了服务端认证。密钥交换和服务端认证是完全分开的。...例如在 Windows XP ,使用 ECC 证书的网站只有 Firefox 能访问(Firefox 的 TLS 自己实现,不依赖操作系统);Android 平台中,也需要 Android 4+ 才支持

11.3K20
  • 基于TLS1.3的微信安全通信协议mmtls介绍

    说明:在下文中,会出现多个对称密钥和多个非对称密钥,在本文中我会给有些密钥取一个专有的名字,以方便理解避免混淆,:pre_master_key,pre_shared_key,cli_pub_key,...通信双方Alice和Bob使用ECDH密钥交换协议进行密钥协商,ECDH密钥交换协议拥有两个算法: 密钥生成算法ECDH_Generate_Key,输出一个公钥和私钥(ECDH_pub_key, ECDH_pri_key...1. 0-RTT ECDH密钥协商   0-RTT 握手想要达到的目标是在握手的过程,捎带业务数据到端,这里难点是如何在客户端发起协商请求的时候就生成一个可信的对称密钥加密业务数据。...这里说明一下:ECDH协商,如果公私钥都是临时生成的,一般称为ECDHE,因此1-RTT的ECDH协商方式被称为1-RTT ECDHE握手,0-RTT 中有一个静态内置的公钥,因此称为0-RTT ECDH...首先PSK是如何获得的呢?PSK是在一次成功的ECDH(E)握手中下发的(在上面的图7、图8没有画出下发PSK的部分),如果客户端没有PSK,那么显然是只能进行ECDH(E)握手了。

    5.8K111

    分析与总结常见勒索软件的加密算法

    CTB_Locker勒索软件的加密过程可以粗略地理解为3层加密,第一层是运用内置在样本的公钥通过ECDH算法加密随机生成的 ECDH密钥: ?...ECDH密钥相关信息,通过ECDH算法获得随机生成的AES 密钥;进而,通过该随机生成的 AES密钥解密用户文件即可。...粗略地,TeslaCrypt勒索软件同样采用三层加密方法,第一层,使用样本内置ECDH公钥加密随机生成的 ECDH 密钥。第二层,使用随机生成的ECDH密钥加密随机生成的AES密钥: ?...2.8.3TeslaCrypt解密流程 与CTB_Locker勒索软件相同,正常情况下是无法获取TeslaCrypt勒索软件的主密钥,所以其解密过程只包括两步,分别是通过 ECDH算法获得AES密钥,进而使用该...使用三层加密算法,ECDH+ECDH+AES等,2.2章节所述的勒索软件等。 5.

    3.3K70

    Key attestation的几个关键点!

    Key attestation就是密钥认证,之前介绍过: Key attestation-Google的密钥认证 下图是Google Android密钥认证的架构图。...● 密钥将被部署到设备上,每10K设备用一个密钥。 ● 谷歌将创建密钥它们进行验证。 这个过程是与Widevine密钥分配过程非常类似(将可能使用相同的交付方法)。...密钥撤回:密钥撤销将通过CRL和OSCP被取消 ● 安全密钥注入只能在工厂完成,所以设备被吊销的密钥将永久不受信任。 ● 密钥被注入到设备批次,因此撤销至少影响整个批处理。...Hardware-backed keystore will be MANDATORY in a future release. ● All algorithms (RSA, AES, ECDSA, ECDH...with lockscreens) ● With brute force protection in hardware ● Hardware attestation support FIDO and Android

    6.1K70

    ECDH椭圆双曲线(比DH快10倍的密钥交换)算法简介和封装

    前面有几篇blog就提到我有计划支持使用ECDH密钥交换。近期也是抽空把以前的DH密钥交换跨平台适配从atgateway抽离出来,而后接入了ECDH流程。...背景 DH和ECDH算法的具体原理这里不做具体介绍了,可以点击链接看。DH和ECDH的主要的作用就是在通信双方发送一些公有参数,保留私有参数,而后通过一系列计算双方都能够得到一个一致的结果。...实际应用,有些加密算法的密钥碰撞计算难度反而比破解DH和ECDH要容易(比如atgateway支持的XXTEA算法,这个算法很简单所以也非常高效)。...openssl自不用说了,mbedtls主要是为了如果需要用到Android或者iOS上的话,用mbedtls比较容易一些。接入的过程主要有三个问题。...std::vector svr_secret; // 保存服务器计算的密钥 // step 1 - 服务器: 计算密钥,输出DH参数和公钥 CASE_EXPECT_EQ

    5.3K30

    KuPay:保障数字钱包安全的神秘力量-底层加密算法

    其次在加密协议安全方面,kuPay使用ECDH+AES 端端加密方案。...第一是使用了ECDH密钥协商协议作为匿名密钥交换协议,ECDH是基于ECC(Elliptic Curve Cryptosystems,椭圆曲线密码体制)的DH( Diffie-Hellman)密钥交换算法...交换双方可以在不共享任何秘密的情况下协商出一个密钥。 通过ECDH,双方可以在不共享任何秘密的前提下协商出一个共享秘密,因此,ECDH广泛用于协议之中,通过ECDH得到对称加密密钥。...AES加密数据块分组长度必须为128比特,密钥长度可以是128比特、192比特、256比特的任意一个(如果数据块及密钥长度不足时,会补齐),且AES加密有很多轮的重复和变换。...目前,AES高级加密标准密标准已然成为对称密钥加密中最流行的算法之一。 采用ECDH+AES端端加密的综合方案,可谓是将数字钱包的技术底层安全设计做到了极致。

    1.1K30

    TLS协议分析 (五) handshake协议 证书与密钥交换

    (这在TLS1.2和TLS1.1是不一样的,TLS1.1要求所有的算法都相同。)注意这也意味着DH_DSS,DH_RSA,ECDH_ECDSA,和ECDH_RSA 密钥交换不限制签署证书的算法。...固定DH证书可能使用”signature_algorithms”扩展列表的 hash/签名算法 的某一个签署。...,服务器才发送 server Key Exchange, 主要是前向安全的几种密钥协商算法,列表如下: DHE_DSS DHE_RSA DH_anon ECDHE_ECDSA ECDHE_RSA ECDH_anon...下面几种密钥交换方法,发送ServerKeyExchange消息是非法的: RSA DH_DSS DH_RSA ECDH_ECDSA ECDH_RSA 需要注意的是,ECDH和ECDSA公钥的数据结构是一样的...signed_params 需要认证的(即非anonymous的)密钥交换,服务器的密钥交换参数的数字签名。

    1.6K20

    基础知识补充1:密钥交换协商机制

    DH可以让双方在完全缺乏对方(私有)信息的前提条件下通过不安全的信道达成一个共享的密钥。此密钥用于后续信息交换进行对称加密。...哪他们要如何交换信息,才能不让Eve知道这个密钥呢? 方案要求:q是一个很大的素数(1024bit),而且(q-1)/2也是个素数。 存在问题: 安全方面:不能防护中间人攻击。...ECDH优势:ECDH依赖的是——求解“椭圆曲线离散对数问题”的困难。ECDH的数学原理比DH更复杂。 应用场景:比特币钱包公钥的生成使用了椭圆曲线算法。...(7)BobAlice发送的点aG计算其在椭圆曲线上b倍的点。Bob在椭圆曲线上计算b(aG)=abG,它就是Alice和Bob的共享密钥。...方案要求: 存在问题: 安全方面:1.ECDH 跟 DH 一样,也是【无认证】的。同样需要跟其它签名算法(比如 RSA、DSA、ECDSA)配合;2. DH 和 ECDH,其密钥是持久的(静态的)。

    5.2K30

    科普 TLS 1.3 — 新特性

    标准完成后,OpenSSL 组织将推出 OpenSSL 1.1.1 版本, TLS1.3 协议标准提供支持。 ?...消息发送给服务端; 第四步,服务器处理 ClientKeyExchange 消息,获取客户端 ECDH 临时公钥;服务器生成会话所需要的共享密钥;发送密钥协商完成消息给客户端; 第五步,双方使用生成的共享密钥对消息加密传输...在 TLS 1.3 ,客户端首先不仅发送 ClientHello 支持的密码列表,而且还猜测服务器将选择哪种密钥协商算法,并发送密钥共享,这可以节省很大一部分的开销,从而提高了速度。...客户端发送 ClientHello 消息,该消息主要包括客户端支持的协议版本、DH 密钥交换参数列表 KeyShare; 服务端回复 ServerHello,包含选定的加密套件;发送证书给客户端;使用证书对应的私钥握手消息签名...KeyShare 消息后,使用证书公钥进行签名验证,获取服务器端的 ECDH 临时公钥,生成会话所需要的共享密钥; 双方使用生成的共享密钥对消息加密传输,保证消息安全。

    3.1K60

    Wireguard:简约之美

    WG 使用的 ECDH 则是 DH 算法的变种,使用了椭圆曲线来增强性能和安全性: 通过 DH 算法,网络的两端可以在不安全的网络协商出来用来加密要传输的数据的密钥。...出的临时密钥 key1 对称加密对方的公钥 encrypted_timestamp:用端公钥和自己的私钥 ECDH 出 key2,key2 混淆进 key1,来加密当前的时间戳 mac1:端公钥加上整个报文内容后的哈希...当接收方校验一切 OK 后,它可以生成自己的临时密钥。此时,接收方因为有了端的临时公钥,已经可以计算出此次协商后加密数据要用的密钥。...:端公钥加上整个报文内容后的哈希 这样两端都有对方临时生成的公钥,加上自己临时生成的私钥,就可以 ECDH + HKDF(一种把 DH 结果转成对称加密密钥的方法)得到这次握手的两个方向的对称加密的密钥...注意,这里这个报文属于哪个 peer,也是从 key_index 获得 内核:根据原始报文的目标地址查路由表将报文送出 太干了,来点湿的?

    4.3K64

    即时通讯安全篇(十一):IM聊天系统安全手段之传输内容端到端加密技术

    2、系列文章本文是IM通讯安全知识系列文章的第11篇,此系列总目录如下:《即时通讯安全篇(一):正确地理解和使用Android端加密算法》《即时通讯安全篇(二):探讨组合加密算法在IM的应用》《即时通讯安全篇...(三):常用加解密算法与通讯安全讲解》《即时通讯安全篇(四):实例分析Android密钥硬编码的风险》《即时通讯安全篇(五):对称加密技术在Android平台上的应用实践》《即时通讯安全篇(六):非对称加密技术的原理与应用实践...MAC算法的安全性依赖于Hash函数,故也称带密钥的Hash函数。消息认证码是基于密钥和消息摘要“hash”所获得的一个值,可用于数据源发认证和完整性校验。...在此我们引入 ECDH 算法替换 DH 算法。ECDH 密钥协商算法是 ECC 算法和 DH 密钥交换原理结合使用。ECC 是建立在基于椭圆曲线的离散对数问题上的密码体制。...由前面介绍的 DH 算法得知:两密钥可以通过 DH 协议生成一个安全的协商密钥,如果更换其中一个密钥,新的协商密钥也会变化。根据这个方法:我们可以设计出一个安全更新盐的方法。

    1.9K30

    Noise 框架:构建安全协议的蓝图

    DH 算法的一个高效安全的变种是 ECDH: ? 如果我们要开发自己的安全协议,DH/ECDH 是几乎无法避免的。...协商出来密钥之后,我们需要考虑使用什么样的对称加密算法和哈希算法,如何验证双方的身份,如何保证前向安全性(现在使用的密钥泄露不会导致过去使用的密钥泄露),如何在收发两个方向上 rekey(密钥使用一段时间后重新生成新的密钥...握手的过程,Noise 会生成一个 HandshakeState,它用来记录当前收到的端传来的固定公钥和临时公钥,以及通过 ECDH 算法算出来的临时数据。...当整个握手结束后,双方都有对等的信息,可以生成一致的密钥。于是发起者和应答者对于它们各自的接收端和发送端生成密钥。...尤其是 rust 下的 snow,实现精巧,很容易和其它模块底层的 tokio/async-std,以及上层的 yamux 结合使用。

    3.2K41

    Rabbitmq加密套件详解

    为此需求,OpenSSL专门定义了一套比较难懂的定义方法,Nginx的密码学套件的配置方法也只是OpenSSL定义的定义形式的透传。...密码套件分为三大部分:密钥交换算法,数据加密算法,消息验证算法(MAC,message authentication code)。 密钥交换算法用于握手过程建立信道,一般采用非对称加密算法。...可选的主要的密钥交换算法包括: RSA, DH, ECDH, ECDHE。可选的主要的证书算法包括:RSA, DSA, ECDSA。两者可以独立选择,并不冲突。...可以强制服务器的TLS指示其首选项(根据密码套件顺序),以避免恶意客户端故意弱密码套件进行协商进而对其进行攻击。...存在多种工具,这些工具可以在启用TLS的服务器端点上执行各种测试,例如,测试它是否易于受到已知攻击(POODLE,BEAST等)的攻击。

    1.7K20

    Nodejs进阶:使用DiffieHellman密钥交换算法

    本文作者:IMWeb 陈映平 原文出处:IMWeb社区 未经同意,禁止转载 简介 Diffie-Hellman(简称DH)是密钥交换算法之一,它的作用是保证通信双方在非安全的信道安全地交换密钥...目前DH最重要的应用场景之一,就是在HTTPS的握手阶段,客户端、服务端利用DH算法交换对称密钥。 下面会先简单介绍DH的数理基础,然后举例说明如何在nodejs中使用DH相关的API。...5; // 素数a // 创建客户端的DH实例 var client = crypto.createDiffieHellman(primeLength, generator); // 产生公、私钥,...采用跟客户端相同的素数a、p var server = crypto.createDiffieHellman(client.getPrime(), client.getGenerator()); // 产生公、私钥,...迪菲-赫尔曼密钥交换 Secure messages in NodeJSusing ECDH Keyless SSL: The Nitty Gritty Technical Details

    1K70

    适配Boringssl和OpenSSL 3.0

    Boringssl boringssl 是Goolge早期 openssl 的fork和魔改。...于是我在使用 boringssl 接入 atframe_utils 的 crypto_dh 是不得不移除DH算法,仅保留 ECDH 。...简单地说,新版本的 openssl 提供了一组高级接口的 OSSL 库,多种不同的算法进行了流程上的统一封装。我们就可以使用这一组新的高级接口来操作 DH 密钥交换算法。...在重新适配接入 openssl 的 DH 密钥交换算法过程,我还发现了一个坑,那就是 EVP_PKEY_set_bn_param() 无效,返回正确但是实际上并没有起任何作用,并不像 ECDH 可以直接用高级接口...其中 boringssl 需要打patch,而且和版本相关性比较大,我写进了构建系统,并且增加了 iOS、Android、iPhoneSimulator的交叉编译检测。

    2.1K30
    领券