• barbican的核心——密钥插件系统


    barbican的核心是加解密以及密钥的存储。基本思想是初始化时生成一个根密钥,安全的存储在硬件HSM中,无法读出,智能进行加解密操作。所有的应用密钥在存储在数据库中之前,都是经过根密钥加密的,因此不怕数据库被拖库。使用密钥时,从数据库读出密文,用根密钥解密后获取明文,再使用。
     
    密钥存储、生成、加解密这部分,barbican充分利用的openstack的插件思想,进行抽象化设计,可以支持不同的软件、硬件密钥管理方案,如PKCS11硬件、KMIP硬件等。
     
    插件的基类,定义了对称、非对称密钥的产生、存储接口
    plugin.interface.secret_store.SecretStoreBase
     
     
    基于此基类的三个插件:
    plugin.store_crypto.StoreCryptoAdapterPlugin
    plugin.dogtag.DogtagKRAPlugin
    plugin.mip_secret_store.KMIPSecretStore
     
    其中,DogtagKRAPlugin 和 KMIPSecretStore插件自带密钥的产生、存储功能
    而类似HSM的设备只有密钥产生、加密解密的功能,不带存储功能,只能由plugin.store_crypto.StoreCryptoAdapterPlugin插件作为一个桥接层,提供存储和密钥产生的功能。
    其中密钥存储功能由StoreCryptoAdapterPlugin插件提供,加密、解密、产生密钥功能又由一系列的crypto插件提供:
    基类:
    plugin.crypto.base.CryptoPluginBase
    插件:
    plugin.crypto.simple_crypto.SimpleCryptoPlugin
    plugin.crypto.p11_crypto.P11CryptoPlugin 
     
     
    =======================================
    p11_crypto插件
    底层由pkcs11.py实现pkcs11接口,直接和硬件HSM或加密卡打交道,pkcs11.py通过cffi机制来实现python中调用HSM厂商提供的c语言lib库。
    barbican初始化时,需要通过barbican_manager命令行工具,在HSM硬件中生成两个对称密钥:
    MKEK:系统唯一根密钥,用来加密其它KEK(目前实现是每个项目一个KEK,用来加密用户密钥)
    MKHK:与MKEK连用,用来计算经过MKEK加密后的HMAC值 
  • 相关阅读:
    第五周学习总结-20175228
    第二周Java学习总结
    namke 命令行编译
    libssh2 的集成与应用
    vc6 编译问题
    vs2010 编译curl-7.42.1
    linux redis 安装
    解决error C2011: 'fd_set' : 'struct' type redefinition的方法
    ajax 的简单应用
    servlet 启动加载配置文件及初始化
  • 原文地址:https://www.cnblogs.com/tian-jiang-ming/p/8718642.html
Copyright © 2020-2023  润新知