密碼學

密碼學 #


  • ChatGPT 的說明

【密碼學】(Cryptography)是一門研究「如何確保訊息能夠安全地進行傳遞」的學科。它涉及到使用不同的數學技術和演算法來加密、解密我們想要保護的訊息,從而確保訊息在傳輸和存儲過程中,不被未經授權的人訪問或修改。在密碼學上,我們會利用密鑰(或稱為金鑰、Key)將原始訊息(通常稱為明文、Plain text、或 Plaintext)進行加密(Encryption)。加密後的原始資料會被稱為密文(Cipher text、或 Ciphertext)。金鑰是加密和解密的過程中至關重要的元素,它確保了加解密演算法的安全性,並且只有授權的用戶才能夠解開密文。在密碼學中,加密演算法可以分為古典加密法與現代加密法,兩者通常是以密文的生成和破譯是否需要經由電腦計算作為區分標準。而現代加密又可以分為對稱式加密(Symmetric Encryption)和非對稱式加密(Asymmetric Encryption)。在對稱式加密中,加密的過程與解密的過程會使用相同的一把鑰匙;但在非對稱式加密中,則使用公鑰和私鑰 2 把不同的鑰匙分別進行加密和解密。

除了對稱式加密和非對稱式加密外,現代密碼學還涉及其他重要概念,例如雜湊函數(Hash function)、訊息驗證碼(Message Authentication Code)、和數位簽章(Digital Signature)…等。雜湊函數是可以一種將任意大小的位元資料,轉換成固定位元長度的特殊函數。雜湊函數具、固定輸出長度、快速計算、唯一性、和不可逆性 …等不同的特點;訊息驗證碼是一種用於驗證數據的完整性(Integrity)和真實性(Authenticity)的密碼學技術。它通常使用雜湊函數、密鑰、以及相關訊息來對訊息生成一個固定長度的驗證碼。這個驗證碼與加密過後的訊息一起傳送給接收方。接收方首先會解密所有的得到的資訊,再使用相同雜湊函數、密鑰、以及相關訊息來重新計算驗證碼,然後與接收到的驗證碼進行比較,以確認數據的完整性和真實性;數位簽章則用來驗證資料的完整性(Integrity)和不可否認性(Non-repudiation),通常與非對稱式加密演算法相互結合,可用於確認資料的真實發送者,以及確認該訊息是否在傳遞的過程中有被修改。


  • 古典加密法

古典加密法是一種利用簡單的數學原理和手動操作來對訊息進行加解密的方法,通常不需要依賴於電腦、計算機、或其他的電子設備。古典加密法在現代密碼學發展之前被廣泛使用,其基本原理是「透過對原始訊息進行某種轉換或替換。」使得未經授權的人無法輕易理解訊息的內容。最著名的古典加密方法之一是凱撒密碼,也稱為移位密碼。凱撒密碼是一種替換密碼,它透過將字母按照一個固定的偏移量向前或向後移動來加密訊息。另一個常見的加解密方式是替換密碼,其中字母表中的每個字母都被映射到另一個字母或符號(例如培根密碼、維吉尼亞密碼表…等),它會將單個字母映射到兩個(或多個)不同字母的組合上。解密需要知道替換規則,然後反向應用規則來恢復原始訊息。雖然古典加密法在歷史上被廣泛使用,但隨著現代電腦和密碼學的發展,古典加密法不再被認為是安全的加密方式,取而代之的是更複雜和安全的現代加密演算法,例如 RSA 和 AES …等。