Data Integrity এবং Authenticity হল সাইবার নিরাপত্তার গুরুত্বপূর্ণ দিক, যা ডেটার সঠিকতা, অখণ্ডতা এবং আসলত্ব নিশ্চিত করার জন্য ব্যবহৃত হয়। Java Cryptography API ব্যবহার করে আপনি সহজেই ডেটা ইন্টেগ্রিটি চেক এবং অথেন্টিকেশন ভেরিফিকেশন করতে পারেন।
1. Data Integrity (ডেটা অখণ্ডতা)
ডেটা অখণ্ডতা নিশ্চিত করে যে ডেটাতে কোনো পরিবর্তন বা ক্ষতি হয়নি। যখন ডেটা পাঠানো হয়, এটি নিশ্চিত করার জন্য যে ডেটা পরিবর্তিত হয়নি, সাধারণত hashing ব্যবহার করা হয়। Hashing একটি একতরফা প্রক্রিয়া, যেখানে ইনপুট ডেটা থেকে একটি নির্দিষ্ট আউটপুট (হ্যাশ) তৈরি করা হয়। যদি ইনপুট ডেটা পরিবর্তিত হয়, তবে তার হ্যাশও পরিবর্তিত হবে।
2. Authenticity (অথেন্টিকেশন)
অথেন্টিকেশন নিশ্চিত করে যে ডেটা আসল উৎস থেকে এসেছে। এটি নিশ্চিত করতে Digital Signatures বা HMAC (Hash-based Message Authentication Code) ব্যবহৃত হয়, যা ডেটার অখণ্ডতা এবং উৎস যাচাই করতে সাহায্য করে।
এখন, চলুন Java Cryptography API ব্যবহার করে Data Integrity Checking এবং Authenticity Verification এর উদাহরণ দেখি।
Data Integrity Checking উদাহরণ (SHA-256 হ্যাশিং ব্যবহার করে)
Hashing পদ্ধতি ব্যবহার করে ডেটা অখণ্ডতা যাচাই করা হয়। SHA-256 একটি জনপ্রিয় হ্যাশ ফাংশন যা ২৫৬-বিট হ্যাশ তৈরি করে এবং এটি ডেটার অখণ্ডতা নিশ্চিত করতে ব্যবহৃত হয়।
SHA-256 Hashing উদাহরণ
import java.security.MessageDigest;
public class IntegrityCheckingExample {
public static void main(String[] args) throws Exception {
// Original message
String message = "This is a test message for integrity checking.";
// Create a MessageDigest instance for SHA-256
MessageDigest digest = MessageDigest.getInstance("SHA-256");
// Generate the hash (digest) of the message
byte[] hashBytes = digest.digest(message.getBytes());
// Convert the hash bytes to a hexadecimal string
StringBuilder hexString = new StringBuilder();
for (byte b : hashBytes) {
hexString.append(String.format("%02x", b));
}
// Print the generated hash (message digest)
System.out.println("SHA-256 Hash: " + hexString.toString());
}
}
Output:
SHA-256 Hash: 94ee059335e587e501cc4d69ab504788b3fc7fd132b0bb29c88a9fbd4f4c5b7e
এখানে:
- SHA-256 হ্যাশ ফাংশন ব্যবহার করে বার্তার হ্যাশ তৈরি করা হয়েছে।
- MessageDigest ক্লাসের মাধ্যমে বার্তা থেকে হ্যাশ (message digest) তৈরি করা হয়েছে, যা ডেটার অখণ্ডতা নিশ্চিত করতে ব্যবহৃত হবে।
Authenticity Verification উদাহরণ (Digital Signature ব্যবহার করে)
ডেটার আসলত্ব যাচাই করতে Digital Signature ব্যবহার করা হয়। একটি ডিজিটাল সিগনেচার হল একটি ক্রিপটোগ্রাফিক সিগনেচার যা প্রাইভেট কী ব্যবহার করে সাইন করা হয় এবং পাবলিক কী দ্বারা যাচাই করা যায়।
Digital Signature উদাহরণ (RSA)
import java.security.*;
import java.util.Base64;
public class AuthenticityVerificationExample {
public static void main(String[] args) throws Exception {
// Generate RSA key pair (public and private keys)
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
keyPairGenerator.initialize(2048);
KeyPair keyPair = keyPairGenerator.generateKeyPair();
PrivateKey privateKey = keyPair.getPrivate();
PublicKey publicKey = keyPair.getPublic();
// Original message
String message = "This is a message to be authenticated.";
// Create a signature object for signing
Signature signature = Signature.getInstance("SHA256withRSA");
signature.initSign(privateKey);
signature.update(message.getBytes());
// Sign the message
byte[] signedMessage = signature.sign();
// Print the signature in Base64 encoding
String base64SignedMessage = Base64.getEncoder().encodeToString(signedMessage);
System.out.println("Signed Message (Base64): " + base64SignedMessage);
// Verify the signature
signature.initVerify(publicKey);
signature.update(message.getBytes());
boolean isVerified = signature.verify(Base64.getDecoder().decode(base64SignedMessage));
// Check if the message is authentic
if (isVerified) {
System.out.println("The message is authentic.");
} else {
System.out.println("The message is not authentic.");
}
}
}
Output:
Signed Message (Base64): K7c3b2JLnbyi89ZwKg+r+bbz1vc40V2IHbqqg5IzgtOmI/RcmUBmBQ0ddHswNttgZdT...
The message is authentic.
এখানে:
- RSA এলগোরিদম ব্যবহার করে একটি পাবলিক-প্রাইভেট কী জোড়া তৈরি করা হয়েছে।
- SHA256withRSA অ্যালগরিদম ব্যবহার করে বার্তাটি digital signature সাইন করা হয়েছে।
- পাবলিক কী ব্যবহার করে সেই সাইনেচার যাচাই করা হয়েছে এবং বার্তার আসলত্ব নিশ্চিত করা হয়েছে।
Integrity Checking এবং Authenticity Verification এর মধ্যে পার্থক্য
- Integrity Checking মূলত ডেটার অখণ্ডতা নিশ্চিত করে, অর্থাৎ ডেটাতে কোনো পরিবর্তন হয়নি।
- Authenticity Verification নিশ্চিত করে যে ডেটাটি আসল উৎস থেকে এসেছে, এবং এটি তৃতীয় পক্ষ দ্বারা বদলানো হয়নি।
- Data Integrity নিশ্চিত করতে Java Cryptography API ব্যবহার করে আপনি hashing techniques (যেমন SHA-256) ব্যবহার করতে পারেন, যা ডেটার অখণ্ডতা পরীক্ষা করতে সাহায্য করে।
- Authenticity Verification নিশ্চিত করতে, আপনি Digital Signatures ব্যবহার করতে পারেন, যা ডেটার আসলত্ব নিশ্চিত করতে সহায়তা করে।
- Java Cryptography API আপনার অ্যাপ্লিকেশন বা সিস্টেমে নিরাপদ ডেটা কমিউনিকেশন এবং সুরক্ষিত অথেন্টিকেশন কার্যক্রম বাস্তবায়ন করতে গুরুত্বপূর্ণ ভূমিকা পালন করে।
Read more