首页
学习
活动
专区
工具
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 是如何获得的呢?

17.7K02

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

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

11.2K20
  • 基于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.6K111

    蓝牙加密配对漏洞曝光:请速更新操作系统或驱动程序

    该 bug 导致了弱配对,使得远程攻击者有机会获得设备使用的加密密钥,并恢复在“安全”蓝牙连接配对的两个设备之间发送的数据。...计算机应急响应小组(CERT / CC)昨晚发布了一份安全通报,其中包含了针对该漏洞的如下说明: 蓝牙利用基于椭圆曲线 Diffie-Hellman(ECDH)的密钥交换配对机制,实现设备之间的加密通信...ECDH密钥,由私钥和公钥组成。且需交换公钥,以产生共享配对密钥。 此外,设备还必须统一所使用的椭圆曲线参数。...然而之前涉及‘无效曲线攻击’的工作表明,ECDH 参数在用于计算结果和共享密钥之前,并不总会经过验证。...这样可以减少攻击者获取受攻击设备私钥的工作量 —— 如果在计算被分享的密钥前,并未部署验证所有参数的话。 在某些实施方法,椭圆曲线参数并非全部由加密算法实现验证。

    63610

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

    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

    6K70

    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.5K20

    基础知识补充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.1K30

    Wireguard:简约之美

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

    4.1K64

    科普 TLS 1.3 — 新特性

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

    3.1K60

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

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

    1.8K30

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

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

    3.1K41

    Rabbitmq加密套件详解

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

    1.7K20

    HTTPS 和 SSLTLS 协议:密钥交换(密钥协商)算法及其原理

    DH 和 ECDH 进行“临时密钥”的改良——DHE 和 ECDHE   刚才介绍的 DH 和 ECDH,其密钥是持久的(静态的)。也就是说,通讯双方生成各自的密钥之后,就长时间用下去。...为了做到“前向保密”,采用“临时密钥”(洋文是“ephemeral key”)的方式 DH 和 ECDH 进行改良。于是得到两种新的算法——DHE 和 ECDHE。...其实算法还是一样的,只是每个会话都要重新协商一次密钥,且密钥用完就丢弃。   (估计很多同学不太了解“前向保密”这个概念。...◇如何防范偷窥(嗅探)   使用这种算法,在协商密钥的过程交换的是密钥的标识(ID)而【不是】密钥本身。   就算攻击者监视了全过程,也无法知晓密钥啥。...对于单独使用   如果攻击者篡改了协商过程传送的密钥 ID,要么服务端发现 ID 无效(协商失败),要么服务端得到的 ID 与客户端不一致,在后续的通讯步骤也会发现,并导致通讯终止。

    8.8K30
    领券