CryptoKey: Šifrujte, dešifrujte, podepisujte a ověřujte!

Automaticky přeloženo z Deepl

Řešení 4D byla vždy bezpečná a stabilní. Společnost 4D totiž investuje velké prostředky do vývoje a aktualizace bezpečnostních funkcí. Společnost 4D v tomto zaměření pokračuje i ve verzi 4D v18 R4, která přináší novou funkci pro další vylepšení sady bezpečnostních nástrojů. K dispozici je nyní nová třída poskytující sadu metod pro provádění běžných kryptografických operací: Třída CryptoKey.

HDI Podepsat a ověřit

Kryptografické funkce

Kryptografické funkce lze použít k implementaci bezpečnostních funkcí, jako je soukromí a ověřování. Třída CryptoKey poskytuje následující kryptografické funkce:

  • sign() a verify(): vytváření a ověřování digitálních podpisů.
  • encrypt() a decrypt(): šifrování a dešifrování dat

Kromě těchto operací umožňuje třída CryptoKey také generovat nové klíče RSA nebo ECDSA nebo načíst existující pár klíčů z definice PEM.

Podepisování a ověřování

Funkce sign( ) a verify() umožňují podepisovat a ověřovat podpisy zpráv. Díky tomu můžete poskytnout důkaz pravosti digitálních zpráv nebo elektronických dokumentů.

Digitální podpisy poskytují:

  • Ověření pravosti zprávy: důkaz, že zprávu vytvořil a podepsal známý odesílatel.
  • Integrita zprávy: důkaz, že zpráva nebyla po podepsání změněna.
  • nepopiratelnost: podepisující osoba nemůže popřít podpis dokumentu, jakmile byl podpis vytvořen.

Zpráva je podepsána soukromým klíčem a podpis je ověřen odpovídajícím veřejným klíčem:

Příklad:

Zde je ukázka kódu, která ukazuje, jak lze podepsat a ověřit podpis zprávy díky metodám nové třídy 4D CryptoKey:

Bobova strana

// Create the message
$message:="hello world"
Folder(fk desktop folder).file("message.txt").setText($message)

// Create a key
$type:=New object("type";"RSA")
$key:=4D.CryptoKey.new($type)

// Get the public key and save it
Folder(fk desktop folder).file("public.pem").setText($key.getPublicKey())

// Get signature as base64 and save it
Folder(fk desktop folder).file("signature").setText($key.sign($message;$type))


/*Bob sent the message, the public key and the signature to Alice*/

Alicina strana

// Get message, public key & signature
$message:=Folder(fk desktop folder).file("message.txt").getText()
$publicKey:=Folder(fk desktop folder).file("public.pem").getText()
$signature:=Folder(fk desktop folder).file("signature").getText()

// Create a key
$type:=New object("type";"PEM";"pem";$publicKey)
$key:=4D.CryptoKey.new($type)

// Verify signature
If ($key.verify($message;$signature;$type).success)

// The signature is valid

End if 

ENCRYPT a DECRYPT

Šifrování a dešifrování se provádí pomocí dvojic klíčů. Proces šifrování transformuje původní informace do nerozpoznatelné podoby, zatímco proces dešifrování převádí zašifrovaná data do podoby, kterou může přečíst a pochopit člověk nebo počítač.

Účinné zabezpečení vyžaduje:

  • soukromé klíče zůstávají soukromé
  • Veřejné klíče mohou být otevřeně distribuovány, aniž by byla ohrožena bezpečnost.

blank

Příklad

Řekněme, že chci zašifrovat „hello world“. Zde je návod, jak to udělat:

$encrypted:=$key.encrypt("hello world")

A pro dešifrování:

$status:=$key.decrypt($encrypted)

Pro podrobnější informace se neváhejte podívat do dokumentace!

V některém z příštích příspěvků na blogu vám ukážeme, jak daleko můžete s touto třídou zajít a jaké možnosti nabízí pro vytváření sofistikovaných aplikací. Mezitím se neváhejte podělit o své zkušenosti s šifrováním na fóru 4D!

David Azancot
• 4D for iOS Product Owner • David Azancot se připojil k týmu 4D Product jako Product Owner v roce 2017. Má na starosti psaní uživatelských příběhů a jejich převod do funkčních specifikací. Jeho role také zahrnuje zajištění toho, aby implementace funkcí vyhovovaly potřebám zákazníků. David graduoval jako MBA v marketingu, internetu a mobilitě na Institutu Leonarda Da Vinciho a svou kariéru zahájil v roce 2011 u začínající mobilní společnosti, kterou později získala Madvertise (skupina mobilního marketingu). S nadšením pro mobilní rozhraní byl přirozenou volbou pro vývoj interaktivních mobilních reklamních formátů pro skupinu v roce 2015. Zároveň David od roku 2012 vyvíjí vlastní aplikace pro iOS a Android.