Ř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.
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.
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!