<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>密碼學 &#8211; 科技島-掌握科技新聞、科技職場最新資訊</title>
	<atom:link href="https://www.technice.com.tw/tag/%e5%af%86%e7%a2%bc%e5%ad%b8/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.technice.com.tw</link>
	<description>專注於科技新聞、科技職場、科技知識相關資訊，包含生成式AI、人工智慧、Web 3.0、區塊鏈、科技職缺百科、生物科技、軟體發展、雲端技術等豐富內容，適合熱衷科技及從事科技專業人事第一手資訊的平台。</description>
	<lastBuildDate>Thu, 22 Jan 2026 08:36:12 +0000</lastBuildDate>
	<language>zh-TW</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.4.2</generator>

<image>
	<url>https://www.technice.com.tw/wp-content/uploads/2022/12/cropped-wordpress_512x512-150x150.png</url>
	<title>密碼學 &#8211; 科技島-掌握科技新聞、科技職場最新資訊</title>
	<link>https://www.technice.com.tw</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>【學長姊帶路】你有聽過密碼學嗎？</title>
		<link>https://www.technice.com.tw/campus/mentor/128478/</link>
					<comments>https://www.technice.com.tw/campus/mentor/128478/#respond</comments>
		
		<dc:creator><![CDATA[周星馳]]></dc:creator>
		<pubDate>Wed, 07 Aug 2024 06:09:17 +0000</pubDate>
				<category><![CDATA[學長姊帶路]]></category>
		<category><![CDATA[投書徵稿]]></category>
		<category><![CDATA[密碼學]]></category>
		<category><![CDATA[密碼學專家]]></category>
		<category><![CDATA[工作甘苦談]]></category>
		<category><![CDATA[面試問題]]></category>
		<guid isPermaLink="false">https://www.technice.com.tw/?p=128478</guid>

					<description><![CDATA[<p>過一個金鑰和一些數學公式，讓原本的資料變得無法辨識，這樣即使資料被駭客取得了，也無法知道原本的內容是什麼，要復原的話就只能使用加密時使用的金鑰配合對應的數學公式解密。 元素：<content><!-- wp:paragraph --></p>
<p>原標《P20 - 你有聽過密碼學嗎？》</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>文/資安解壓縮</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading --></p>
<h2 class="wp-block-heading"><strong>Podcast 連結</strong></h2>
<p><!-- /wp:heading --></p>
<p><!-- wp:list --></p>
<ul><!-- wp:list-item --></p>
<li><a href="https://podcasts.apple.com/us/podcast/%E8%B3%87%E5%AE%89%E8%A7%A3%E5%A3%93%E7%B8%AE/id1513276667#episodeGuid=ckfvndfisznpw0800caru0w6g" rel="noreferrer noopener" target="_blank">Apple Podcast</a></li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><a href="https://open.spotify.com/episode/2Z7gP5fxGwvMClbu4dY5y1" rel="noreferrer noopener" target="_blank">Spotify Podcast</a></li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><a href="https://open.firstory.me/story/ckfvndfisznpw0800caru0w6g" rel="noreferrer noopener" target="_blank">Firstory Podcast</a></li>
<p><!-- /wp:list-item --></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:heading --></p>
<h2 class="wp-block-heading"><strong>本集內容大綱</strong></h2>
<p><!-- /wp:heading --></p>
<p><!-- wp:heading {"level":3} --></p>
<h3 class="wp-block-heading"><strong>前情提要</strong></h3>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p>密碼學所討論的密碼和&nbsp;<a href="https://infosecdecompress.com/posts//EP3%20-%20%E8%A8%AD%E5%AE%9A%E5%AF%86%E7%A2%BC%E5%A5%BD%E8%A4%87%E9%9B%9C%EF%BC%81">EP3 - 設定密碼好複雜！</a>中提到的用來驗證身份的密碼不同。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul><!-- wp:list-item --></p>
<li>驗證身份的密碼：Password，使用者在登入時輸入已證明身份的密碼，安全性主要依賴密碼本身的長度和複雜度</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>密碼學所討論的密碼：Key 金鑰，用來加密和解密用的，長度通常較長，安全性除了依賴密碼的長度外，也大大取決於加密演算法。</li>
<p><!-- /wp:list-item --></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:heading {"level":3} --></p>
<h3 class="wp-block-heading"><strong>密碼學</strong></h3>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p>概念：&nbsp;把一些資訊透過特定方式隱藏，讓這些資訊無法輕易的被外人解讀。<br />歷史：</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul><!-- wp:list-item --></p>
<li>500BC：斯巴達在打仗時不希望作戰計劃暴露給敵人，就在一條很長的紙上寫了一串字母，如果想讀取訊息，就要把紙條纏在一個特定大小的棍子上，才能拼出有意義的句子。 如下圖</li>
<p><!-- /wp:list-item --></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:image --></p>
<figure class="wp-block-image"><img src="https://infosecdecompress.com/media/cryptography_sparta.png" alt=""/><figcaption class="wp-element-caption">Source: <a href="https://commons.wikimedia.org/wiki/File:Skytale.png" target="_blank" rel="noreferrer noopener">Wikipedia by Luringen</a> licensed under CC BY-SA 3.0</figcaption></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:list --></p>
<ul><!-- wp:list-item --></p>
<li>490BC：古希臘人會將機密訊息刺在奴隸頭上，頭髮長出來時機密的訊息就會被蓋住，如果要看訊息再把奴隸的頭髮剃掉。</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>15 世紀：李奧納多•達文西的部分手稿就是利用鏡像文字左右相反的特性書寫，解讀時也就需要透過鏡子才能解讀。下圖為達文西的手稿</li>
<p><!-- /wp:list-item --></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:image {"width":"840px","height":"auto"} --></p>
<figure class="wp-block-image is-resized"><img src="https://infosecdecompress.com/media/cryptography_davinci.jpg" alt="" style="width:840px;height:auto"/><figcaption class="wp-element-caption">Source: <a href="https://commons.wikimedia.org/wiki/File:Da_Vinci_mirror_writing.jpg" target="_blank" rel="noreferrer noopener">Wikipedia</a> by <a href="https://lucnix.be/" target="_blank" rel="noreferrer noopener">Luc Viatour</a> licensed under Public Domain</figcaption></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p>現代：PTT 看到的藏頭詩</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image --></p>
<figure class="wp-block-image"><img src="https://infosecdecompress.com/media/cryptography_stenography.jpg" alt=""/><figcaption class="wp-element-caption">Source: PTT [Re: [求助]求高手藏頭詩 by wei998 (黑)](<a href="https://www.ptt.cc/bbs/Boy-Girl/M.1514541343.A.BE5.html" target="_blank" rel="noreferrer noopener">https://www.ptt.cc/bbs/Boy-Girl/M.1514541343.A.BE5.html</a>)</figcaption></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p>這些依靠物理工具來達成的加密方法，雖然只能算是密碼學的皮毛，只是將資料很簡單的隱藏起來而已，並沒有將資料變得無法辨識，破解上並不需要花費太多力氣。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading {"level":3} --></p>
<h3 class="wp-block-heading"><strong>加密演算法</strong></h3>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p>過一個金鑰和一些數學公式，讓原本的資料變得無法辨識，這樣即使資料被駭客取得了，也無法知道原本的內容是什麼，要復原的話就只能使用加密時使用的金鑰配合對應的數學公式解密。 元素：</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul><!-- wp:list-item --></p>
<li>明文：想保護而還沒加密的資料</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>密文：加密後無法辨識的資料</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>演算法：將資料加密或解密的方法</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>金鑰：與演算法配合，讓密文無法被他人解密的關鍵</li>
<p><!-- /wp:list-item --></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:image --></p>
<figure class="wp-block-image"><img src="https://infosecdecompress.com/media/cryptography_explain.jpg" alt=""/></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:heading {"level":3} --></p>
<h3 class="wp-block-heading"><strong>混淆 Confusion ＆ 擴散 Diffusion</strong></h3>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p>加密演算法主要會希望達到這兩個目的，做到這兩底才能確保密文在公開的情況下，攻擊者也無法知道我們使用的金鑰和明文。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul><!-- wp:list-item --></p>
<li>混淆 Confusion：減少密文和金鑰間的關聯性，讓別人無法直接或間接地從密文中推敲出使用的金鑰、破解密文。</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>擴散 Diffusion：減少明文和密文間的關聯性，也就是說當明文中一個字母被更改，密文也應該要大幅度的改變，而不是也跟著只改變一個字母，才能避免攻擊者透過分析密文的變化進而找出規律推敲出明文。</li>
<p><!-- /wp:list-item --></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:heading {"level":3} --></p>
<h3 class="wp-block-heading"><strong>替換式密碼 Substitution Cipher</strong></h3>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p>加密演算法的兩種基礎加密方式的其中之一。<br />將明文中的每個字母替換成其他東西，讓明文看起來像是無意義的亂碼</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul><!-- wp:list-item --></p>
<li>Ａ換成Ｂ，Ｂ換成Ｃ ⋯ Ｚ換成Ａ（金鑰為 1）<!-- wp:list -->
<ul><!-- wp:list-item --></p>
<li>APPLE → BQQMF</li>
<p><!-- /wp:list-item --></ul>
<p><!-- /wp:list --></li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>Ａ換成Ｃ，Ｂ換成Ｄ ⋯ Ｚ換成Ｂ（金鑰為 2）<!-- wp:list -->
<ul><!-- wp:list-item --></p>
<li>APPLE → CRRNG</li>
<p><!-- /wp:list-item --></ul>
<p><!-- /wp:list --></li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>Ａ換成Ｚ，Ｂ換成Ａ ⋯ Ｚ換成Ｙ（金鑰為 25）<!-- wp:list -->
<ul><!-- wp:list-item --></p>
<li>APPLE → ZOOKD</li>
<p><!-- /wp:list-item --></ul>
<p><!-- /wp:list --></li>
<p><!-- /wp:list-item --></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:paragraph --></p>
<p>豬圈密碼/共季會密碼 Pigpen Cipher</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image --></p>
<figure class="wp-block-image"><img src="https://infosecdecompress.com/media/cryptography_pigpen.jpg" alt=""/></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:image --></p>
<figure class="wp-block-image"><img src="https://infosecdecompress.com/media/cryptography_pigpen_example.jpg" alt=""/></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p>破解方式</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>分析每個字母出現的次數<br />在英文中，雖然有 26 個字母，但不是每個字母都會很平均的出現在句子和文章中，像母音的ＡＥＩＯＵ出現的機率就很高，相對的Ｘ、Ｚ等字母出現機率就很低。<br />出現的機率是最高的是Ｅ(13%)，遠高於平均的 3%。出現機率最低的則是Ｚ(0.074%)。&nbsp;<a href="https://en.wikipedia.org/wiki/Letter_frequency" rel="noreferrer noopener" target="_blank">Wikipedia - Alphabet Frequency</a></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>透過這種特性，只要去統計加密後的密文中各個字母或符號出現的機率，再拿他去比對英文中各個字母出現的機率，就可以推敲出加密前的明文了。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading {"level":3} --></p>
<h3 class="wp-block-heading"><strong>換位式密碼 Transposition Cipher</strong></h3>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p>加密演算法的兩種基礎加密方式的其中之二。<br />這個做法不會更改資料本身，但會依照規律改變資料的排列順序。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul><!-- wp:list-item --></p>
<li>將奇數為字母拿到最前面，偶數為字母拿到後面<!-- wp:list -->
<ul><!-- wp:list-item --></p>
<li>HELLO → HLOEL （順序從 12345 → 13524）</li>
<p><!-- /wp:list-item --></ul>
<p><!-- /wp:list --></li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>用金鑰的字母順序作為每列換位的順序</li>
<p><!-- /wp:list-item --></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:image --></p>
<figure class="wp-block-image"><img src="https://infosecdecompress.com/media/cryptography_transposition.jpg" alt=""/></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:heading {"level":3} --></p>
<h3 class="wp-block-heading"><strong>進階的加密演算法</strong></h3>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p>替換式密碼和換位密碼單獨來看都很基本，實際應用上在安全性也不是很足夠，但兩者都是密碼學上很重要的基礎，很多安全的加密演算法都是由不同種類的替換式密碼和換位密碼組合而成。<br />美國聯邦政府在 1976 年列為資料處理標準的加密演算法 DES（資料加密標準 Data Encryption Standard）就是結合了好幾種替換式密碼和換位密碼所組成的。<br />DES 中使用了一組 56 位元的金鑰將資料進行 16 輪的替換和換位來讓演算法夠安全。<br />DES 已經在 1997 年被破解了，現在取代 DES 的是進階加密標準 AES。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>DES 的筆記會放在<a href="https://infosecdecompress.com/posts/ep20_have_you_heard_of_cryptography#des-%E8%B3%87%E6%96%99%E5%8A%A0%E5%AF%86%E6%A8%99%E6%BA%96-data-encryption-standard-%E5%8E%9F%E7%90%86">本篇文章的最後</a>供大家參考。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading {"level":3} --></p>
<h3 class="wp-block-heading"><strong>加密演算法的安全性</strong></h3>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p>考慮不同的情境</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul><!-- wp:list-item --></p>
<li>攻擊者只知道密文</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>攻擊者知道明文</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>攻擊者猜的到明文</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>攻擊者可以自由選擇明文</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>攻擊者可以自由選擇密文</li>
<p><!-- /wp:list-item --></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:paragraph --></p>
<p>如果攻擊者都已經知道明文了，加密方法安全性還需要考慮嗎？</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>加密演算法跟金鑰通常都不會只使用一次，當我們跟同一個對象在傳遞訊息時往往會重複使用同一組金鑰。 攻擊者知道明文的情況，可能就會發生在攻擊者獲取了對話中某些未加密的片段，如果攻擊者在這種情況下可以破解所使用的加密演算法和金鑰的話，就能破解過去和未來所傳遞的所有訊息。<br />所以最理想的情況是不管攻擊者知道多少訊息，只要不知道金鑰，都不能破解訊息，這樣才會認定這個加密方法是夠安全的。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>抵禦暴力破解法</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:quote --></p>
<blockquote class="wp-block-quote"><p><!-- wp:paragraph --></p>
<p>複習：什麼是<a href="https://infosecdecompress.com/posts/ep3-why-does-password-has-to-be-so-complicated/#%E6%9A%B4%E5%8A%9B%E7%A0%B4%E8%A7%A3%E6%B3%95-brute-force-attack">暴力破解法？</a></p>
<p><!-- /wp:paragraph --></p></blockquote>
<p><!-- /wp:quote --></p>
<p><!-- wp:paragraph --></p>
<p>以破解 DES 為例</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>DES 使用的是 56 位元的金鑰，每一位元可能是 1 或是 0 ，因此金鑰的可能性有 2 的 56 次方，也就是 7 千兆。<br />理論上如果我們使用一台蘋果的 Macbook Pro 來進行破解的話只要花 185 天就可以破解了，同時使用多台電腦或是用一些專門設計來破解用的電腦的話時間就會大幅縮短。 假設的條件和計算式：</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul><!-- wp:list-item --></p>
<li>假設在 500MHz 的情況下，每個時脈週期可以進行一次解密</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>確認一組金鑰所需要的時間：1/(500 x 10^6)秒</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>Macbook Pro 處理器最高可達 4.5GHz</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>要確認 2^56 組密碼鎖需要花的時間：2^56/(4500 x 10^6)秒 = 185 天 (<a href="https://www.wolframalpha.com/input/?i=%282%5E56%29%2F%284500*60*60*24*10%5E6%29" rel="noreferrer noopener" target="_blank">計算</a>)</li>
<p><!-- /wp:list-item --></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:paragraph --></p>
<p>但如果是在相同的情況下要破解取代 DES，使用標準 256 位元金鑰的進階加密標準 AES 的話，需要的時間就會是 8x10^59 年（<a href="https://www.wolframalpha.com/input/?i=%282%5E56%29%2F%284500*60*60*24*365*10%5E6%29" rel="noreferrer noopener" target="_blank">計算</a>），簡單來說就是不可能被暴力破解。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>在 DES 被發明的 1976 年，那時個人電腦還沒普及，每台電腦的效能也很差，因此在當時 DES 是一個安全的選擇，但拿到 44 年後的現在，因為科技的進步，電腦效能已經比以前好太多了，因此在現今科技底下 DES 是不夠安全的。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>相同的道理也適用其他所有的加密演算法上，現在是安全的加密方法也會因為未來科技的進步，而變得能在短時間內被暴力破解法破解。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>加密法是否被正確實踐</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>加密演算法安不安全還有一個很重要的點就是，我們是不是有正確的將他透過程式實現出來。<br />很多時候一個加密演算法本身以及他背後的數學原理是十分安全的，但程式設計師在將這個演算法轉換為軟體中可以運行的程式時會有邏輯上的瑕疵或是漏洞，導致這個加密方法無法被安全的實現。<br />我研究所時的密碼學教授就告訴我們永遠不要自己寫自己的加密演算法，因為自己寫的加密演算法一定都會多少有一點問題或是漏洞。<br />現在主流使用的加密演算法函式庫都是經過許多密碼學博士或是專家的測試和檢驗才確保安全的。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:quote --></p>
<blockquote class="wp-block-quote"><p><!-- wp:paragraph --></p>
<p>密碼學是一個很重要的工具，但密碼學也不是萬靈丹，在資安領域中除了有密碼學來幫我們加密資料以外也需要很多其他的工具的輔助。</p>
<p><!-- /wp:paragraph --></p></blockquote>
<p><!-- /wp:quote --></p>
<p><!-- wp:heading --></p>
<h2 class="wp-block-heading"><strong>加密解密小測驗</strong></h2>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p>題目一：&nbsp;找出下圖透過豬圈密碼所加密的訊息</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image --></p>
<figure class="wp-block-image"><img src="https://infosecdecompress.com/media/cryptography_question_pigpen.jpg" alt=""/></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p>題目二：&nbsp;找出以下透過換位式密碼加密的訊息<br />金鑰：INFOSEC<br />密文：NRPPOCO NEICHCK</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>答案會在本文的最後</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading --></p>
<h2 class="wp-block-heading"><strong>DES 資料加密標準 Data Encryption Standard 原理</strong></h2>
<p><!-- /wp:heading --></p>
<p><!-- wp:image --></p>
<figure class="wp-block-image"><img src="https://infosecdecompress.com/media/cryptography_des.png" alt=""/></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:heading --></p>
<h2 class="wp-block-heading"><strong>加密解密小測驗 - 解答</strong></h2>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p>題目一解答：Security is Important</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>題目二解答：Popcorn Chicken （PS. Popcorn Chicken 是鹽酥雞的英文）</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>※本文由 <a href="https://infosecdecompress.com/" target="_blank" rel="noreferrer noopener">資安解壓縮</a> 授權勿任意轉載，原文<a href="https://infosecdecompress.com/posts/ep20_have_you_heard_of_cryptography" target="_blank" rel="noreferrer noopener">《EP20 - 你有聽過密碼學嗎？》</a></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:shortcode --><br />
[elementor-template id="118812"]<br />
<!-- /wp:shortcode --></content></p>
<p>這篇文章 <a rel="nofollow" href="https://www.technice.com.tw/campus/mentor/128478/">【學長姊帶路】你有聽過密碼學嗎？</a> 最早出現於 <a rel="nofollow" href="https://www.technice.com.tw">科技島-掌握科技新聞、科技職場最新資訊</a>。</p>
]]></description>
		
					<wfw:commentRss>https://www.technice.com.tw/campus/mentor/128478/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【學長姊帶路】密碼學與資訊安全</title>
		<link>https://www.technice.com.tw/campus/mentor/126900/</link>
					<comments>https://www.technice.com.tw/campus/mentor/126900/#respond</comments>
		
		<dc:creator><![CDATA[周星馳]]></dc:creator>
		<pubDate>Thu, 01 Aug 2024 06:15:48 +0000</pubDate>
				<category><![CDATA[學長姊帶路]]></category>
		<category><![CDATA[投書徵稿]]></category>
		<category><![CDATA[密碼學]]></category>
		<category><![CDATA[工作甘苦談]]></category>
		<category><![CDATA[資訊安全]]></category>
		<category><![CDATA[面試問題]]></category>
		<guid isPermaLink="false">https://www.technice.com.tw/?p=126900</guid>

					<description><![CDATA[<p>最近在旁聽台大密碼學與資訊安全的課程，課程規定要看 10 篇指定文獻並撰寫心得，以此當作修課成績的其中一個評分指標，但是因為我是旁聽生，我沒辦法交作業，於是我決定把自己作業的報告寫在 Medium，一方面是統整上課重點，另一方面這週讀的文獻分享出來，因為讀完一篇以後覺得其實內容還蠻實用也不會太艱澀難懂，其實當作故事聽一聽還蠻有趣的，但如果要直接看文獻，用字有些還是蠻艱澀的，所以很多小細節我都會刪除。<content><!-- wp:paragraph --></p>
<p>原標《密碼學與資訊安全 — 學習筆記之一》</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>文/Brady Huang</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image {"id":126911,"sizeSlug":"large","linkDestination":"none"} --><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p>開發者是不是資訊安全的敵人？</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:quote --></p>
<blockquote class="wp-block-quote"><p><!-- wp:paragraph --></p>
<p><strong>最近在旁聽台大密碼學與資訊安全的課程，課程規定要看 10 篇指定文獻並撰寫心得，以此當作修課成績的其中一個評分指標，但是因為我是旁聽生，我沒辦法交作業，於是我決定把自己作業的報告寫在 Medium，一方面是統整上課重點，另一方面這週讀的文獻分享出來，因為讀完一篇以後覺得其實內容還蠻實用也不會太艱澀難懂，其實當作故事聽一聽還蠻有趣的，但如果要直接看文獻，用字有些還是蠻艱澀的，所以很多小細節我都會刪除。</strong></p>
<p><!-- /wp:paragraph --></p></blockquote>
<p><!-- /wp:quote --></p>
<p><!-- wp:heading --></p>
<h2 class="wp-block-heading"><strong>The Developer is the Enemy</strong></h2>
<p><!-- /wp:heading --></p>
<p><!-- wp:quote --></p>
<blockquote class="wp-block-quote"><p><!-- wp:paragraph --></p>
<p><strong>要解決的問題</strong></p>
<p><!-- /wp:paragraph --></p></blockquote>
<p><!-- /wp:quote --></p>
<p><!-- wp:paragraph --></p>
<p>一直以來，資安一直都是軟體開發 (Application Development) 相當重要的一環，之前，我們會對顧客行為做分析，這是因為他們把使用者 (user) 當作是資安問題的始作俑者，但是，我們覺得開發者 (developer) 才是資安問題需要解決的對象。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>軟體使用流程可以分成三個角色，API (Application Programming Interface)開發者、App 開發者和使用者，現在的 App 開發者主要的任務就是把 API 提供的功能組裝起來，但是開發者不一定有資安相關的知識，因此，在使用 API 的同時，卻沒有辦法判別要選擇哪一種 API 會是比較安全的 (像是 AES 的加密模式)，而且有些 API 文件並沒有寫得很清楚，所以我們想，如果把資安這份功能，移到 API 開發者上，是不是就解決了這個問題？</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image --></p>
<figure class="wp-block-image"><img src="https://miro.medium.com/v2/resize:fit:700/1*RFEOlWlAQvDx7L0335X8sg.png" alt="" /></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:quote --></p>
<blockquote class="wp-block-quote"><p><!-- wp:paragraph --></p>
<p><strong>這問題有很重要嗎？</strong></p>
<p><!-- /wp:paragraph --></p></blockquote>
<p><!-- /wp:quote --></p>
<p><!-- wp:paragraph --></p>
<p>安全性的問題是一定要解決的，但是 App 開發者通常不了解資安的問題，這邊舉 4 個例子。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list {"ordered":true} --></p>
<ol><!-- wp:list-item --></p>
<li><strong>要求新的 API 功能但是卻降低了安全性</strong><br />有些開發者會要求取消 same-origin policy*，以用來跨網域存取資源，但卻降低了安全性。</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>選擇易用的套件和語言</strong><br />常常在開發需求下，選擇好懂的或快速使用的套件跟語言，卻忽略安全性這一塊。</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>工作優先</strong><br />在編譯的時候，通常為了把事情做完，而忽略或取消編譯工具提供的安全警告訊息。</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>不做弱點分析</strong><br />花時間開發新功能跟花時間做弱點分析，App 開發者會直接忽略弱點分析這塊。</li>
<p><!-- /wp:list-item --></ol>
<p><!-- /wp:list --></p>
<p><!-- wp:paragraph --></p>
<p>*same-origin policy 是指如果我想要跟後端要取資源，如果我們不是同個網域的話是不能存取的，也就是說，如果我的網域是 <a href="http://www.brady.com/" target="_blank" rel="noreferrer noopener">www.brady.com</a> 是不能存取 <a href="http://www.paul.com/" target="_blank" rel="noreferrer noopener">www.paul.com</a> 的資源，但是 <a href="http://www.brady.com/user" target="_blank" rel="noreferrer noopener">www.brady.com/user</a>s 或是 <a href="http://www.brady.com/posts" target="_blank" rel="noreferrer noopener">www.brady.com/posts</a> 是可以的。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:quote --></p>
<blockquote class="wp-block-quote"><p><!-- wp:paragraph --></p>
<p><strong>提供的兩個稻草人*想法</strong></p>
<p><!-- /wp:paragraph --></p></blockquote>
<p><!-- /wp:quote --></p>
<p><!-- wp:list {"ordered":true} --></p>
<ol><!-- wp:list-item --></p>
<li><strong>資料標記(Data Tagging)</strong><br />通常一個套件的 API 如果要考量到所有的情況，這個 API 可能會太過肥大，而且使用者可能不需要這麼多功能，所有如果我們把資料處理的時候，會附帶一些 tag 來註記這些資料需要的處理，舉例來說，有一些 template engine 會處理後端傳出來的資料，如果這個資料是需要自動轉譯 (autoescape )的，就會帶一個 <strong>escapehtml</strong> 的 tag。</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>不可壓制的警告訊息(Unsuppressible Warnings)</strong><br />有些編譯器的安全警告訊息不應該要被壓制，我們建議可以把他改成 error 或者讓編譯器不會讓他執行來嚴格建立安全性機制。</li>
<p><!-- /wp:list-item --></ol>
<p><!-- /wp:list --></p>
<p><!-- wp:paragraph --></p>
<p>*稻草人(straw-man)解法是指我把問題簡化或轉變成另一個問題，讓回答者更好回答或是反駁，有正面或負面的使用方式，這邊是正面的提出可能可以的解法。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:quote --></p>
<blockquote class="wp-block-quote"><p><!-- wp:paragraph --></p>
<p><strong>結論</strong></p>
<p><!-- /wp:paragraph --></p></blockquote>
<p><!-- /wp:quote --></p>
<p><!-- wp:paragraph --></p>
<p>因為 App 開發者是負責 API 的組裝和呈現，關於資安的問題我們應該從更高層面下手，因為 App 開發者大部分不是資安專家，也就是說如果我們從基礎核心的 API 層面下手去解決資安的問題的話，可以把資安責任從 App 開發者中抽除，這樣不只可以降低 App 開發者的資安教育成本，也可以讓他們更專一的解決自己工作上需要處理的事情。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:quote --></p>
<blockquote class="wp-block-quote"><p><!-- wp:paragraph --></p>
<p><strong>心得</strong></p>
<p><!-- /wp:paragraph --></p></blockquote>
<p><!-- /wp:quote --></p>
<p><!-- wp:paragraph --></p>
<p>這篇文章不得不說到我的感觸，因為我本身是功能傾向的開發者，有時候資安的問題是一個長期的效應，沒有辦法馬上給予開發者短期回饋，而我也不是資安專家，對於每一個功能需求背後的安全性並沒有直覺的了解，因此很容易忽略了資安的重要性。其中有一個質疑的點就是有些 API 開發者其實是 App 開發者來做的，也就是說如果 API 開發者自己也沒有資安觀念的話，其實做出來的 API 也是沒什麼安全性，但是文章中有提到他只會對很核心很通用的 API 進行增強，我認為如果由資安專家做個套件讓 API 開發者可以直接插入的話，就可以省下 API 開發者的負擔。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><em>G. Wurster and P. C. van Oorschot, “</em><strong><em>The developer is the enemy,</em></strong><em>” in workshop on New security paradigms, 2008. &amp; M. Green and M. Smith</em></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading --></p>
<h2 class="wp-block-heading"><strong>Developers Are Not The Enemy! The need for usable security APIs</strong></h2>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p>這篇的立場跟 <strong><em>The Developer is the Enemy </em></strong>的立場是一樣的，都是希望把資安的責任分層往 API 端放，只是上一篇是希望大家以<strong>資安實踐面</strong>心態上去想，把責任放在 API 端會比較好，畢竟開發者有可能就是破壞資安的人！而這篇的想法是以<strong>資安心態</strong>來說，其實開發者不想把損害系統，但是有時候因為粗心和缺乏相關知識而犯了跟使用者一樣的錯誤，是另外一篇文獻 <strong>Users are not the enemy </strong>的延續。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:quote --></p>
<blockquote class="wp-block-quote"><p><!-- wp:paragraph --></p>
<p><strong>要解決的問題</strong></p>
<p><!-- /wp:paragraph --></p></blockquote>
<p><!-- /wp:quote --></p>
<p><!-- wp:paragraph --></p>
<p>想要解決因為 App 開發者的資安知識缺乏而造成的系統漏洞，根據文獻發現，開發者在遇到一個資安問題的時候，其實跟使用者一樣不知所措或不明就裡，造成了資安問題的產生。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:quote --></p>
<blockquote class="wp-block-quote"><p><!-- wp:paragraph --></p>
<p><strong>這問題有很重要嗎？</strong></p>
<p><!-- /wp:paragraph --></p></blockquote>
<p><!-- /wp:quote --></p>
<p><!-- wp:paragraph --></p>
<p>有很多發布的應用程式雖然有使用加密套件，但是並沒有正確使用，造成系統 DoS (Denial of Service)或資安漏洞，非正確使用的例子像是</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list {"ordered":true} --></p>
<ol><!-- wp:list-item --></p>
<li>沒使用 TLS 認證<br />正常的情況會使用 TLS (Transport Layer Security) 協定來確保網站和後端服務的網路連線安全，TLS 是藉由認證來確保對方程式安全，然而大部分的應用程式並沒有通過認證，或是自己產生 TLS 驗證。</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>使用不安全的加密模式<br />有些加密模式是已經知道不安全了，但是因為缺乏相關知識，造成資訊外洩。</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>使用不安全的隨機數字產生器<br />通常要產生安全協定的時候，都會需要產生隨機號碼產生器，然而不是經過資訊安全-隨機產生碼是可能會有問題的。</li>
<p><!-- /wp:list-item --></ol>
<p><!-- /wp:list --></p>
<p><!-- wp:quote --></p>
<blockquote class="wp-block-quote"><p><!-- wp:paragraph --></p>
<p><strong>提供加密 (crypto) API 的 10 個想法</strong></p>
<p><!-- /wp:paragraph --></p></blockquote>
<p><!-- /wp:quote --></p>
<p><!-- wp:list {"ordered":true} --></p>
<ol><!-- wp:list-item --></p>
<li><strong>直接整合加密 API 到標準 API，讓使用者不需要直接面對資安問題</strong></li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>盡量滿足有安全需求和沒需要安全需求的兩種 API</strong></li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>就算沒有資安背景也可以理解 API 的功用</strong></li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>不要讓開發者覺得 API 參數跟之前矛盾</strong></li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>就算沒有文件也可以很好理解</strong></li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>如果錯誤使用 API 會有明顯的錯誤警告</strong></li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>如果有預設值應該是安全的而且不能模稜兩可</strong></li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>測試環境如果要發佈時應該要警告</strong></li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>開發者的維護成本低</strong></li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>要給開發者建議錯誤發生如何解決問題</strong></li>
<p><!-- /wp:list-item --></ol>
<p><!-- /wp:list --></p>
<p><!-- wp:quote --></p>
<blockquote class="wp-block-quote"><p><!-- wp:paragraph --></p>
<p><strong>結論</strong></p>
<p><!-- /wp:paragraph --></p></blockquote>
<p><!-- /wp:quote --></p>
<p><!-- wp:paragraph --></p>
<p>此篇文獻跟上一篇站在相同立場，並提出更多明確的 10 個方法希望資安領域的人應該要如果去解決和時間現在軟體領域遇到的問題。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:quote --></p>
<blockquote class="wp-block-quote"><p><!-- wp:paragraph --></p>
<p><strong>心得</strong></p>
<p><!-- /wp:paragraph --></p></blockquote>
<p><!-- /wp:quote --></p>
<p><!-- wp:paragraph --></p>
<p>我覺得這篇比上一片容易看多了，用字比較淺顯易懂，他的想法也合理，把資安問題往更高層面去解決，然而怎麼去驗證或統一全部的 API 讓他們擁有資安相關的防範還是需要蠻多心力的。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><em>Green and M. Smith, “</em><strong><em>Developers are Not the Enemy! The Need for Usable Security APIs,</em></strong><em>” IEEE Secur. Priv., vol. 14, no. 5, pp. 40–46, 2016.</em></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>※本文由 <a href="https://brady800526.medium.com/" target="_blank" rel="noreferrer noopener">Brady Huang</a> 授權勿任意轉載，原文<a href="https://brady800526.medium.com/%E5%AF%86%E7%A2%BC%E5%AD%B8%E8%88%87%E8%B3%87%E8%A8%8A%E5%AE%89%E5%85%A8-%E5%AD%B8%E7%BF%92%E7%AD%86%E8%A8%98-1-6da9095f8117" target="_blank" rel="noreferrer noopener">《密碼學與資訊安全 — 學習筆記之一》</a></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>___________</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>你也有經驗想分享嗎？快來<a href="https://www.technice.com.tw/new-submissions/">投稿賺稿費</a>吧！</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:shortcode --></p>
<p>[elementor-template id="118812"]</p>
<p><!-- /wp:shortcode --></content></p>
<p>這篇文章 <a rel="nofollow" href="https://www.technice.com.tw/campus/mentor/126900/">【學長姊帶路】密碼學與資訊安全</a> 最早出現於 <a rel="nofollow" href="https://www.technice.com.tw">科技島-掌握科技新聞、科技職場最新資訊</a>。</p>
]]></description>
		
					<wfw:commentRss>https://www.technice.com.tw/campus/mentor/126900/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
