HSM palaikymas AWS KMS


Skaitmeninio saugumo pasaulyje labai svarbu apsaugoti neskelbtinus duomenis patikimu šifravimu. AWS raktų valdymo paslauga (KMS) atlieka lemiamą vaidmenį šioje erdvėje. Tai labai saugi, visiškai valdoma kriptografinių raktų kūrimo ir valdymo paslauga. Daugelis gali nesuprasti, kad pats AWS KMS veikia kaip aparatinės įrangos saugos modulis (HSM), siūlantis tokį patį saugumo lygį, kokio tikitės iš specialių aparatinės įrangos sprendimų.

HSM yra fizinis įrenginys, sukurtas saugiai generuoti, saugoti ir tvarkyti šifravimo raktus, o AWS KMS teikia šią funkciją debesies būdu. Be raktų valdymo, AWS KMS su HSM palaikymu taip pat gali būti naudojamas kriptografinėms operacijoms pasirašyti. Tai yra patikimas, aparatine įranga paremtas būdas apsaugoti blokų grandinės sąveiką, skaitmeninius parašus ir kt. Šiame straipsnyje bus aptarta, kaip AWS KMS veikia kaip HSM, kokie privalumai yra naudojant jį pasirašant kriptovaliutų operacijas ir kaip jis dera su platesne saugumo strategija.

„Hyperledger Web3j“ HSM palaikymas buvo pristatytas prieš dvejus metus, suteikiant vartotojams saugų kriptografinių raktų valdymo metodą. Norėdami gauti daugiau informacijos, galite peržiūrėti oficialius dokumentus.

Tačiau, nepaisant šios integracijos, daugelis vartotojų susidūrė su iššūkiais priimdami ir diegdami HSM sąsajas, ypač naudojant AWS KMS modulį. Siekiant išspręsti šiuos sunkumus, buvo pridėtas paruoštas naudoti diegimas, skirtas specialiai AWS KMS HSM palaikymui. Tai supaprastina integravimo procesą, todėl naudotojai gali lengviau panaudoti AWS KMS saugiam sandorių pasirašymui be sudėtingų rankinių konfigūracijų.

Klasė, HSMAwsKMSRequestProcessoryra įgyvendinimas HSRequestProcessor sąsaja, kuri yra atsakinga už sąveikos su HSM palengvinimą. Šioje naujai įdiegtoje klasėje yra visas esminis kodas, reikalingas bendrauti su AWS KMS, leidžiantis gauti duomenis, pasirašytus tinkamu kriptografiniu parašu. Tai supaprastina AWS KMS kaip HSM naudojimo procesą, nes tvarko parašų generavimo sudėtingumą ir užtikrina saugų operacijų pasirašymą be papildomų plėtros išlaidų.

Čia yra fragmentas su svarbiausiais veiksmais skambinti HSM 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);
    }

PASTABA!

Norint tai tinkamai naudoti, AWS KMS sukurtos rakto specifikacijos tipas turi būti ECC_SECG_P256K1. Tai būdinga kriptovaliutų erdvei, ypač EVM. Naudojant bet kurį kitą raktą, sukūrus duomenų parašą bus rodoma neatitikimo klaida.

Pavyzdys

Čia yra trumpas pavyzdys, kaip iškviesti callHSM metodą iš biblioteka:

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 integruota HSM funkcija siūlo galingą sprendimą saugiai valdyti ir pasirašyti kriptografines operacijas. Nepaisant pradinių iššūkių, su kuriais susiduria vartotojai, integruodami AWS KMS su „Hyperledger Web3j“, HSMAwsKMSRequestProcessor klasė palengvino pritaikymą ir įgyvendinimą. Šis paruoštas naudoti sprendimas supaprastina sąveiką su AWS KMS, todėl vartotojai gali saugiai pasirašyti duomenis ir operacijas su minimalia konfigūracija. Naudodamos šį įrankį, organizacijos gali pagerinti savo saugumą ir pasinaudoti AWS debesies HSM galimybių patogumu.





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 -