HSM palaikymas AWS KMS


Skaitmeninio saugumo pasaulyje būtina apsaugoti neskelbtinus duomenis su patikimu šifravimu. „AWS Key Management Service“ (KMS) vaidina lemiamą vaidmenį šioje erdvėje. Tai yra labai saugi, visiškai valdoma paslauga, skirta sukurti ir valdyti kriptografinius raktus. Daugelis gali nesuvokti, kad pats AWS KMS veikia kaip aparatinės įrangos apsaugos modulis (HSM), siūlantis tokį patį saugumo lygį, kokio tikėtumėtės iš specialių aparatūros sprendimų.

HSM yra fizinis įrenginys, skirtas saugiai generuoti, saugoti ir valdyti šifravimo klavišus, o AWS KMS šią funkciją teikia debesimis. Be pagrindinių valdymo, AWS KMS su HSM palaikymu taip pat gali būti naudojamas pasirašyti kriptografines operacijas. Tai suteikia patikimą, aparatinės įrangos paremtą būdą, kaip apsaugoti „blockchain“ sąveiką, skaitmeninius parašus ir dar daugiau. Šiame straipsnyje bus aprašyta, kaip AWS KMS veikia kaip HSM, jo naudojimo kriptovaliutų pasirašymui pranašumai ir kaip ji tinka platesnei saugumo strategijai.

„Hyperledger Web3J“ HSM palaikymas buvo pristatytas prieš dvejus metus, suteikiant vartotojams saugų kriptografinių raktų valdymo metodą. Norėdami gauti daugiau informacijos, galite kreiptis į oficialią dokumentaciją.

Nepaisant šios integracijos, daugelis vartotojų susidūrė su iššūkiais priimdami ir įgyvendindami HSM sąsajas, ypač naudodamiesi AWS KMS moduliu. Norint išspręsti šiuos sunkumus, buvo pridėtas specialiai AWS KMS HSM palaikymas. Tai supaprastina integracijos procesą, todėl vartotojams lengviau panaudoti AWS KMS saugiam operacijų pasirašymui be rankinių konfigūracijų sudėtingumo.

Klasė, HSMAwsKMSRequestProcessoryra HSMRequestProcessor interfacekuris yra atsakingas už sąveikos su HSM palengvinimu. Šioje naujai įdiegtoje klasėje yra visas esminis kodas, reikalingas bendravimui su AWS KMS, leidžiančia gauti duomenis, pasirašytus su teisingu kriptografiniu parašu. Tai supaprastina AWS KMS kaip HSM naudojimo procesą, tvarkant parašo generavimo painiavą ir užtikrinant saugų operacijų pasirašymą be papildomų plėtros pridėtinių išlaidų.

Čia yra fragmentas, kurio svarbiausi veiksmai callHSM metodas:

@Override
    public Sign.SignatureData callHSM(byte() dataToSign, HSMPass pass) {

        // Create the SignRequest for AWS KMS
        var signRequest =
                SignRequest.builder()
                        .keyId(keyID)
                        .message(SdkBytes.fromByteArray(dataHash))
                        .messageType(MessageType.DIGEST)
                        .signingAlgorithm(SigningAlgorithmSpec.ECDSA_SHA_256)
                        .build();

        // Sign the data using AWS KMS
        var signResult = kmsClient.sign(signRequest);
        var signatureBuffer = signResult.signature().asByteBuffer();

        // Convert the signature to byte array
        var signBytes = new byte(signatureBuffer.remaining());
        signatureBuffer.get(signBytes);

        // Verify signature osn KMS
        var verifyRequest =
                VerifyRequest.builder()
                        .keyId(keyID)
                        .message(SdkBytes.fromByteArray(dataHash))
                        .messageType(MessageType.DIGEST)
                        .signingAlgorithm(SigningAlgorithmSpec.ECDSA_SHA_256)
                        .signature(SdkBytes.fromByteArray(signBytes))
                        .build();

        var verifyRequestResult = kmsClient.verify(verifyRequest);
        if (!verifyRequestResult.signatureValid()) {
            throw new RuntimeException("KMS signature is not valid!");
        }

        var signature = CryptoUtils.fromDerFormat(signBytes);
        return Sign.createSignatureData(signature, pass.getPublicKey(), dataHash);
    }

Atkreipkite dėmesį!

Norint tinkamai naudoti tai, AWS KMS sukurtos raktų specifikacijos rūšis turi būti ECC_SECG_P256K1. Tai būdinga kriptovaliutų erdvei, ypač EVM. Naudojant bet kurį kitą klavišą, sukuriant duomenų parašą bus padaryta neatitikimo klaida.

Pavyzdys

Čia yra trumpas pavyzdys, kaip iškviesti „CallHSM“ metodą iš bibliotekos:

public static void main(String() args) throws Exception {
   KmsClient client = KmsClient.create();

   // extract the KMS key
   byte() derPublicKey = client
           .getPublicKey((var builder) -> {
               builder.keyId(kmsKeyId);
           })
           .publicKey()
           .asByteArray();
   byte() rawPublicKey = SubjectPublicKeyInfo
           .getInstance(derPublicKey)
           .getPublicKeyData()
           .getBytes();

   BigInteger publicKey = new BigInteger(1, Arrays.copyOfRange(rawPublicKey, 1, rawPublicKey.length));
  
   HSMPass pass = new HSMPass(null, publicKey);

   HSMRequestProcessor signer = new HSMAwsKMSRequestProcessor(client, kmsKeyId);
   signer.callHSM(data, pass);
}

Išvada

„AWS KMS“ su įmontuota HSM funkcionalumu siūlo galingą sprendimą saugiai valdyti ir pasirašyti kriptografines operacijas. Nepaisant pradinių iššūkių, su kuriais susiduria vartotojai „HsmawskmsRequestProcessor“ Klasė palengvino ir įgyvendinti. Šis paruoštas naudoti sprendimas supaprastina sąveiką su AWS KMS, leidžiančia vartotojams saugiai pasirašyti duomenis ir operacijas su minimalia konfigūracija. Pasitelkdamos šį įrankį, organizacijos gali pagerinti savo saugumo laikyseną, naudodamos AWS debesų gimtosios HSM galimybių patogumą.



Source link

Draugai: - Marketingo paslaugos - Teisinės konsultacijos - Skaidrių skenavimas - Fotofilmų kūrimas - Karščiausios naujienos - Ultragarsinis tyrimas - Saulius Narbutas - Įvaizdžio kūrimas - Veidoskaita - Nuotekų valymo įrenginiai -  Padelio treniruotės - Pranešimai spaudai -