27 lines
42 KiB
HTML
27 lines
42 KiB
HTML
|
<!doctype html><html lang=en dir=auto><head><meta charset=utf-8><meta http-equiv=x-ua-compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name=robots content="index, follow"><title>Cryptography | Morgan's Blog</title><meta name=keywords content><meta name=description content="Cryptography 공개키 암호화 알고리즘. 1. Diffie-Hellman 디피-헬먼 키 교환 방식은 암호화 통신을 위한 키를 교환하는 방식 중 하나이다. 두 통신 주체가 공통의 비밀 키를 사용할 수 있도록 하는 안전한 알고리즘이다. 디피-헬먼 방식은 기초적인 암호 통신 방법으로, 이 알고리즘에 RSA나 ECC같은 암호화 알고리즘을 합쳐서 암호화 통신이 성립된다. 공개키는 암호화할 수 있는 키이고, 개인키는 복호화할 수 있는 키이다.
|
|||
|
디피-헬먼 키 교환은 공개키 암호화 방식에 기반한다. 공개키 암호화 방식이란, 자신의 공개키를 상대방에게 전송하고, 그 상대방은 그 공개키로 데이터를 암호화해서 전송하면, 자신은 자신의 개인키로 복호화 할 수 있어, 통신이 성립되는 방식이다."><meta name=author content="Me"><link rel=canonical href=http://blog.morgan.kr/posts/cryptography/><meta name=google-site-verification content="XYZabc"><meta name=yandex-verification content="XYZabc"><meta name=msvalidate.01 content="XYZabc"><link crossorigin=anonymous href=/assets/css/stylesheet.31527a12923607f33c1cac9636a2fa755f6ade7c55866bdb96e44c6bcaf6cfbb.css integrity="sha256-MVJ6EpI2B/M8HKyWNqL6dV9q3nxVhmvbluRMa8r2z7s=" rel="preload stylesheet" as=style><script defer crossorigin=anonymous src=/assets/js/highlight.f413e19d0714851f6474e7ee9632408e58ac146fbdbe62747134bea2fa3415e0.js integrity="sha256-9BPhnQcUhR9kdOfuljJAjlisFG+9vmJ0cTS+ovo0FeA=" onload=hljs.initHighlightingOnLoad()></script>
|
|||
|
<link rel=icon href=https://blog.morgan.kr/favicon.ico><link rel=icon type=image/png sizes=16x16 href=http://blog.morgan.kr/favicon-16x16.png><link rel=icon type=image/png sizes=32x32 href=http://blog.morgan.kr/favicon-32x32.png><link rel=apple-touch-icon href=https://blog.morgan.kr/favicon.ico><link rel=mask-icon href=https://blog.morgan.kr/favicon.ico><meta name=theme-color content="#2e2e33"><meta name=msapplication-TileColor content="#2e2e33"><noscript><style>#theme-toggle,.top-link{display:none}</style><style>@media(prefers-color-scheme:dark){:root{--theme:rgb(29, 30, 32);--entry:rgb(46, 46, 51);--primary:rgb(218, 218, 219);--secondary:rgb(155, 156, 157);--tertiary:rgb(65, 66, 68);--content:rgb(196, 196, 197);--hljs-bg:rgb(46, 46, 51);--code-bg:rgb(55, 56, 62);--border:rgb(51, 51, 51)}.list{background:var(--theme)}.list:not(.dark)::-webkit-scrollbar-track{background:0 0}.list:not(.dark)::-webkit-scrollbar-thumb{border-color:var(--theme)}}</style></noscript><script type=application/javascript>var doNotTrack=!1;doNotTrack||(function(e,t,n,s,o,i,a){e.GoogleAnalyticsObject=o,e[o]=e[o]||function(){(e[o].q=e[o].q||[]).push(arguments)},e[o].l=1*new Date,i=t.createElement(n),a=t.getElementsByTagName(n)[0],i.async=1,i.src=s,a.parentNode.insertBefore(i,a)}(window,document,"script","https://www.google-analytics.com/analytics.js","ga"),ga("create","UA-123-45","auto"),ga("send","pageview"))</script><meta property="og:title" content="Cryptography"><meta property="og:description" content="Cryptography 공개키 암호화 알고리즘. 1. Diffie-Hellman 디피-헬먼 키 교환 방식은 암호화 통신을 위한 키를 교환하는 방식 중 하나이다. 두 통신 주체가 공통의 비밀 키를 사용할 수 있도록 하는 안전한 알고리즘이다. 디피-헬먼 방식은 기초적인 암호 통신 방법으로, 이 알고리즘에 RSA나 ECC같은 암호화 알고리즘을 합쳐서 암호화 통신이 성립된다. 공개키는 암호화할 수 있는 키이고, 개인키는 복호화할 수 있는 키이다.
|
|||
|
디피-헬먼 키 교환은 공개키 암호화 방식에 기반한다. 공개키 암호화 방식이란, 자신의 공개키를 상대방에게 전송하고, 그 상대방은 그 공개키로 데이터를 암호화해서 전송하면, 자신은 자신의 개인키로 복호화 할 수 있어, 통신이 성립되는 방식이다."><meta property="og:type" content="article"><meta property="og:url" content="http://blog.morgan.kr/posts/cryptography/"><meta property="og:image" content="http://blog.morgan.kr"><meta property="article:section" content="posts"><meta property="article:published_time" content="2021-07-09T10:24:00+00:00"><meta property="article:modified_time" content="2021-07-09T10:24:00+00:00"><meta property="og:site_name" content="Morgan's Blog"><meta name=twitter:card content="summary_large_image"><meta name=twitter:image content="http://blog.morgan.kr"><meta name=twitter:title content="Cryptography"><meta name=twitter:description content="Cryptography 공개키 암호화 알고리즘. 1. Diffie-Hellman 디피-헬먼 키 교환 방식은 암호화 통신을 위한 키를 교환하는 방식 중 하나이다. 두 통신 주체가 공통의 비밀 키를 사용할 수 있도록 하는 안전한 알고리즘이다. 디피-헬먼 방식은 기초적인 암호 통신 방법으로, 이 알고리즘에 RSA나 ECC같은 암호화 알고리즘을 합쳐서 암호화 통신이 성립된다. 공개키는 암호화할 수 있는 키이고, 개인키는 복호화할 수 있는 키이다.
|
|||
|
디피-헬먼 키 교환은 공개키 암호화 방식에 기반한다. 공개키 암호화 방식이란, 자신의 공개키를 상대방에게 전송하고, 그 상대방은 그 공개키로 데이터를 암호화해서 전송하면, 자신은 자신의 개인키로 복호화 할 수 있어, 통신이 성립되는 방식이다."><script type=application/ld+json>{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":2,"name":"Posts","item":"http://blog.morgan.kr/posts/"},{"@type":"ListItem","position":3,"name":"Cryptography","item":"http://blog.morgan.kr/posts/cryptography/"}]}</script><script type=application/ld+json>{"@context":"https://schema.org","@type":"BlogPosting","headline":"Cryptography","name":"Cryptography","description":"Cryptography 공개키 암호화 알고리즘. 1. Diffie-Hellman 디피-헬먼 키 교환 방식은 암호화 통신을 위한 키를 교환하는 방식 중 하나이다. 두 통신 주체가 공통의 비밀 키를 사용할 수 있도록 하는 안전한 알고리즘이다. 디피-헬먼 방식은 기초적인 암호 통신 방법으로, 이 알고리즘에 RSA나 ECC같은 암호화 알고리즘을 합쳐서 암호화 통신이 성립된다. 공개키는 암호화할 수 있는 키이고, 개인키는 복호화할 수 있는 키이다.\n디피-헬먼 키 교환은 공개키 암호화 방식에 기반한다. 공개키 암호화 방식이란, 자신의 공개키를 상대방에게 전송하고, 그 상대방은 그 공개키로 데이터를 암호화해서 전송하면, 자신은 자신의 개인키로 복호화 할 수 있어, 통신이 성립되는 방식이다.","keywords":[],"articleBody":"Cryptography 공개키 암호화 알고리즘. 1. Diffie-Hellman 디피-헬먼 키 교환 방식은 암호화 통신을 위한 키를 교환하는 방식 중 하나이다. 두 통신 주체가 공통의 비밀 키를 사용할 수 있도록 하는 안전한 알고리즘이다. 디피-헬먼 방식은 기초적인 암호 통신 방법으로, 이 알고리즘에 RSA나 ECC같은 암호화 알고리즘을 합쳐서 암호화 통신이 성립된다. 공개키는 암호화할 수 있는 키이고, 개인키는 복호화할 수 있는 키이다.\n디피-헬먼 키 교환은 공개키 암호화 방식에 기반한다. 공개키 암호화 방식이란, 자신의 공개키를 상대방에게 전송하고, 그 상대방은 그 공개키로 데이터를 암호화해서 전송하면, 자신은 자신의 개인키로 복호화 할 수 있어, 통신이 성립되는 방식이다. 이때 상호통신을 위해서는 서로의 개인키를 공개키를 이용하여 공유하고, 각각 공유한 개인키와 공유키를 이용하여 공통된 비밀키를 계산하여 그것으로 통신하거나, 서로 각자의 개인키로 복호화하여 통신할 수 있다. 공통된 비밀키를 사용한다면 대칭 키 알고리즘, 서로 다른 키를 사용한다면 비대칭 키 알고리즘이라 한다.\n디피-헬먼 키 교환 방식은 이산수학의 난해성에 기초한다. 먼저, 상호에 매우 큰 소수 P와 임의의 정수 N을 교환한다. 이는 공개적으로 전송해도 문제가 없다. 이때, 서로 P보다 작은 정수 a, b를 임의로 설정하고, N의 a, N의 b승의 mod P를 서로 전송한다. 이후에, 서로 전송받은 N의 b, a승 mod P를 자신이 가지고 있는 정수 a, b를 이용해 N의 b승의 a승과 N의 a승의 b승 mod P를 계산한다. N의 ab승과 N의 ba승은 지수법칙에 의해 동일하므로 이 값을 서로 공통의 비밀키로 사용할 수 있다.\n위 상황에서 중간의 사람은 N과 P, N의 a, N의 b승의 mod P를 알 수 있다. 키 값을 알기 위해서는 N^ab mod P를 구해야 하는데, 이를 위해서는 a나 b 둘 중 하나는 알아야 한다. 여기서, 이산수학의 난해성에 의해 중간자는 a, b값을 알 수 없고, 이에 기밀성이 유지된다.\n하지만, DH알고리즘은 가장 중요한 취약점이 있다. MITM공격에는 아주 무력하고, 기
|
|||
|
MathJax.Hub.Config({
|
|||
|
tex2jax: {
|
|||
|
inlineMath: [['$','$'], ['\\(','\\)']],
|
|||
|
displayMath: [['$$','$$']],
|
|||
|
},
|
|||
|
"HTML-CSS": {
|
|||
|
scale: 80
|
|||
|
},
|
|||
|
});
|
|||
|
</script><script src="//cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script><header class=header><nav class=nav><div class=logo><div class=logo-switches><button id=theme-toggle accesskey=t title="(Alt + T)"><svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24" fill="none" stroke="currentcolor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 12.79A9 9 0 1111.21 3 7 7 0 0021 12.79z"/></svg><svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24" fill="none" stroke="currentcolor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="5"/><line x1="12" y1="1" x2="12" y2="3"/><line x1="12" y1="21" x2="12" y2="23"/><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"/><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"/><line x1="1" y1="12" x2="3" y2="12"/><line x1="21" y1="12" x2="23" y2="12"/><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"/><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"/></svg></button></div></div><ul id=menu><li><a href=http://blog.morgan.kr/categories/ title=Categories><span>Categories</span></a></li><li><a href=http://blog.morgan.kr/tags/ title=Tags><span>Tags</span></a></li><li><a href=http://blog.morgan.kr/posts/ title=Posts><span>Posts</span></a></li></ul></nav></header><main class=main><article class=post-single><header class=post-header><div class=breadcrumbs><a href=http://blog.morgan.kr>Home</a> » <a href=http://blog.morgan.kr/posts/>Posts</a></div><h1 class=post-title>Cryptography</h1><div class=post-meta><span title='2021-07-09 10:24:00 +0000 UTC'>July 9, 9000</span> · 1490 words · Me</div></header><div class=post-content><h2 id=cryptography><strong>Cryptography</strong><a hidden class=anchor aria-hidden=true href=#cryptography>#</a></h2><h3 id=공개키-암호화-알고리즘><strong>공개키 암호화 알고리즘.</strong><a hidden class=anchor aria-hidden=true href=#공개키-암호화-알고리즘>#</a></h3><h4 id=1--diffie-hellman>1. Diffie-Hellman<a hidden class=anchor aria-hidden=true href=#1--diffie-hellman>#</a></h4><p>디피-헬먼 키 교환 방식은 암호화 통신을 위한 키를 교환하는 방식 중 하나이다. 두 통신 주체가 공통의 비밀 키를 사용할 수 있도록 하는 안전한 알고리즘이다. 디피-헬먼 방식은 기초적인 암호 통신 방법으로, 이 알고리즘에 RSA나 ECC같은 암호화 알고리즘을 합쳐서 암호화 통신이 성립된다. 공개키는 암호화할 수 있는 키이고, 개인키는 복호화할 수 있는 키이다.</p><p>디피-헬먼 키 교환은 공개키 암호화 방식에 기반한다. 공개키 암호화 방식이란, 자신의 공개키를 상대방에게 전송하고, 그 상대방은 그 공개키로 데이터를 암호화해서 전송하면, 자신은 자신의 개인키로 복호화 할 수 있어, 통신이 성립되는 방식이다. 이때 상호통신을 위해서는 서로의 개인키를 공개키를 이용하여 공유하고, 각각 공유한 개인키와 공유키를 이용하여 공통된 비밀키를 계산하여 그것으로 통신하거나, 서로 각자의 개인키로 복호화하여 통신할 수 있다. 공통된 비밀키를 사용한다면 대칭 키 알고리즘, 서로 다른 키를 사용한다면 비대칭 키 알고리즘이라 한다.</p><p>디피-헬먼 키 교환 방식은 이산수학의 난해성에 기초한다. 먼저, 상호에 매우 큰 소수 P와 임의의 정수 N을 교환한다. 이는 공개적으로 전송해도 문제가 없다. 이때, 서로 P보다 작은 정수 a, b를 임의로 설정하고, N의 a, N의 b승의 mod P를 서로 전송한다. 이후에, 서로 전송받은 N의 b, a승 mod P를 자신이 가지고 있는 정수 a, b를 이용해 N의 b승의 a승과 N의 a승의 b승 mod P를 계산한다. N의 ab승과 N의 ba승은 지수법칙에 의해 동일하므로 이 값을 서로 공통의 비밀키로 사용할 수 있다.</p><p>위 상황에서 중간<ECA491><EAB084>
|
|||
|
</code></pre></li><li><pre><code>Whitening
|
|||
|
</code></pre></li><li><pre><code>Round I
|
|||
|
</code></pre></li><li><pre><code>Round II
|
|||
|
</code></pre></li><li><pre><code>M-Layer
|
|||
|
</code></pre></li><li><pre><code>Round III
|
|||
|
</code></pre></li><li><pre><code>Round IV
|
|||
|
</code></pre></li><li><pre><code>Whitening
|
|||
|
</code></pre></li></ol><p>위 과정을 통해서 암호화하는 알고리즘을 4-Round 알고리즘이라 하며, 표준 Prince알고리즘은 총 12-Round를 사용한다. 이처럼 연산의 용이성을 위해 라운드를 줄인 Prince를 Round-Reduced Prince라고 한다. 4-Round PRINCE-64/128 나 6-Round PRINCE-64/128는 고정키 대입 공격등 Side-Channel공격에 면역이 없기 때문에 IoT나 소형 기기에서는 적당히 타협하여 12-Round PRINCE-64/128를 사용하거나 한다고 한다.</p><h3 id=해시-알고리즘><strong>해시 알고리즘.</strong><a hidden class=anchor aria-hidden=true href=#해시-알고리즘>#</a></h3><h4 id=1--md5>1. MD5<a hidden class=anchor aria-hidden=true href=#1--md5>#</a></h4><p>본문</p><h4 id=2--sha>2. SHA<a hidden class=anchor aria-hidden=true href=#2--sha>#</a></h4><p>본문</p><h4 id=3--hmac->3. HMAC (?)<a hidden class=anchor aria-hidden=true href=#3--hmac->#</a></h4><p>본문</p></div><footer class=post-footer><ul class=post-tags></ul><nav class=paginav><a class=prev href=http://blog.morgan.kr/posts/bandoceyi-weonri-jongryu-soja-yeogsa-saneob-mosfetbuteo-ram-flash-geurigo-intel-4004ggaji/><span class=title>« Prev</span><br><span>반도체의 원리, 종류, 소자, 역사, 산업. (MOSFET부터 RAM, FLASH, 그리고 Intel 4004까지.</span></a>
|
|||
|
<a class=next href=http://blog.morgan.kr/posts/pyphy-mulrienjin-1pyeon-gibon-aidieo/><span class=title>Next »</span><br><span>파이썬으로 구현한 뉴턴의 방정식과 적분방정식</span></a></nav><br></footer></article></main><footer class=footer><span>© 2023 <a href=http://blog.morgan.kr>Morgan's Blog</a></span>
|
|||
|
<span>Powered by
|
|||
|
<a href=https://gohugo.io/ rel="noopener noreferrer" target=_blank>Hugo</a> &
|
|||
|
<a href=https://github.com/adityatelange/hugo-PaperMod/ rel=noopener target=_blank>PaperMod</a></span></footer><a href=#top aria-label="go to top" title="Go to Top (Alt + G)" class=top-link id=top-link accesskey=g><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentcolor"><path d="M12 6H0l6-6z"/></svg></a><script>let menu=document.getElementById("menu");menu&&(menu.scrollLeft=localStorage.getItem("menu-scroll-position"),menu.onscroll=function(){localStorage.setItem("menu-scroll-position",menu.scrollLeft)}),document.querySelectorAll('a[href^="#"]').forEach(e=>{e.addEventListener("click",function(e){e.preventDefault();var t=this.getAttribute("href").substr(1);window.matchMedia("(prefers-reduced-motion: reduce)").matches?document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView():document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView({behavior:"smooth"}),t==="top"?history.replaceState(null,null," "):history.pushState(null,null,`#${t}`)})})</script><script>var mybutton=document.getElementById("top-link");window.onscroll=function(){document.body.scrollTop>800||document.documentElement.scrollTop>800?(mybutton.style.visibility="visible",mybutton.style.opacity="1"):(mybutton.style.visibility="hidden",mybutton.style.opacity="0")}</script><script>document.getElementById("theme-toggle").addEventListener("click",()=>{document.body.className.includes("dark")?(document.body.classList.remove("dark"),localStorage.setItem("pref-theme","light")):(document.body.classList.add("dark"),localStorage.setItem("pref-theme","dark"))})</script></body></html>
|