iT邦幫忙

2024 iThome 鐵人賽

DAY 22
0

公鑰和私鑰介紹:以 P-384 為例

在現代密碼學中,公鑰和私鑰是非對稱加密的核心概念。這種加密方法廣泛應用於安全通訊、數位簽名和身份驗證等領域。本文將介紹公鑰和私鑰的基本概念,並以 P-384 橢圓曲線加密為例,說明其在安全數據交換中的應用。

公鑰和私鑰的基本概念

  • 私鑰:由用戶保密持有,用於 解密 接收到的訊息或生成數位簽名。
  • 公鑰:可以公開分享,用於 加密 發送給私鑰持有者的訊息或驗證數位簽名。

私鑰結構

在 P-384 橢圓曲線加密中,私鑰包含三個關鍵元素:

  • x:公鑰點在橢圓曲線上的 x 座標
  • y:公鑰點在橢圓曲線上的 y 座標
  • d:用於解密和簽名的秘密值

公鑰結構

公鑰只包含兩個元素:

  • x:公鑰點在橢圓曲線上的 x 座標
  • y:公鑰點在橢圓曲線上的 y 座標

為什麼公鑰不包含 'd'?

  • d 是私密資訊,用於生成數位簽名和解密訊息
  • 公鑰只需要 xy 來進行加密和驗證簽名
  • 保護 d 的私密性對於維護加密系統的安全至關重要
print("Private key: \n", key.jwk)

JWK(keyType: JSONWebKey.JWK.KeyType.ellipticCurve, publicKeyUse: nil, keyOperations: nil, algorithm: nil, key: nil, keyID: nil, x509URL: nil, x509CertificateChain: nil, x509CertificateSHA1Thumbprint: nil, x509CertificateSHA256Thumbprint: nil, curve: Optional(JSONWebKey.JWK.CryptographicCurve.p384), e: nil, p: nil, q: nil, n: nil, dp: nil, dq: nil, qi: nil, x: Optional(48 bytes), y: Optional(48 bytes), d: Optional(48 bytes))

let key = P384.KeyAgreement.PrivateKey()
print("Public key: \n", key.publicKey.jwk)

JWK(keyType: JSONWebKey.JWK.KeyType.ellipticCurve, publicKeyUse: nil, keyOperations: nil, algorithm: nil, key: nil, keyID: nil, x509URL: nil, x509CertificateChain: nil, x509CertificateSHA1Thumbprint: nil, x509CertificateSHA256Thumbprint: nil, curve: Optional(JSONWebKey.JWK.CryptographicCurve.p384), e: nil, p: nil, q: nil, n: nil, dp: nil, dq: nil, qi: nil, x: Optional(48 bytes), y: Optional(48 bytes), d: nil)


上一篇
Day21 - 什麼是 JWK
下一篇
Day23 - 實作 JWK
系列文
Xiang教你進階Swift從有到精30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言