치환암호 편집하기

이동: 둘러보기, 검색

경고: 로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다. 로그인하거나 계정을 생성하면 편집자가 아이디(ID)으로 기록되고, 다른 장점도 있습니다.

편집을 되돌릴 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 저장해주세요.
최신판 당신의 편집
2번째 줄: 2번째 줄:
  
 
==개요==
 
==개요==
치환암호는 특정 글자를 다른 글자로 치환함으로써 암호를 생성하는 방법이다. 예를 들어 알파벳 A를 임의로 H로 지정하듯이 특정 문자를 다른 문자로 치환하면 된다. 치환 암호에는 단일치환암호와 다중치환암호라는 두 가지 방식이 있다. 단일치환암호는 '단일문자치환암호'라고도 하며, 항상 문자에 대해서는 같은 문자로 치환하는 방식이다. 예를 들어, 앞서 A를 H로 치환했다면 하나의 키를 통해 [[암호화]]된 문서에서 나타나는 모든 H는 평문의 A가 된다. 반면에 '다중문자치환암호'라고도 불리는 다중치환암호는 하나의 문자가 여러 다른 문자로 바뀔 수 있다. 즉 평문의 A가 H가 될 수도, Y가 될 수도 있다는 말이다. 이 말은 일반적으로 다중치환암호가 단일치환암호 방식보다 더욱 알아내기 어렵다고 생각할 수 있다.
+
치환암호는 특정 글자를 다른 글자로 치환함으로써 암호를 생성하는 방법이다. 예를 들어 알파벳 A를 임의로 H로 지정하듯이 특정 문자를 다른 문자로 치환하면 된다. 치환 암호에는 단일치환암호와 다중치환암호라는 두 가지 방식이 있다. 단일치환암호는 '단일문자치환암호'라고도 하며, 항상 문자에 대해서는 같은 문자로 치환하는 방식이다. 예를 들어, 앞서 A를 H로 치환했다면 하나의 키를 통해 암호화된 문서에서 나타나는 모든 H는 평문의 A가 된다. 반면에 '다중문자치환암호'라고도 불리는 다중치환암호는 하나의 문자가 여러 다른 문자로 바뀔 수 있다. 즉 평문의 A가 H가 될 수도, Y가 될 수도 있다는 말이다. 이 말은 일반적으로 다중치환암호가 단일치환암호 방식보다 더욱 알아내기 어렵다고 생각할 수 있다.
  
 
==종류==
 
==종류==
9번째 줄: 9번째 줄:
  
 
====덧셈암호====
 
====덧셈암호====
[[덧셈암호]](Additional Cipher)는 암호학에서 가장 기초가 되는 방법이고, 실제로 시저 암호(Caesar Cipher)라고 많이 알려져 있는 암호 방법이다. 카이사르 암호라고도 불린다. 어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 [[암호화]] 방식이다. 시저라고도 불리는 고대 로마의 정치가이자 군인이었다 율리우스 카이사르는 자신의 장군들과 비밀스런 내용을 주고 받을 때 덧셈암호 방식을 사용했다. 여기에서 '카이사르 암호', '시저 암호'라는 이름이 유래되었다. 덧셈암호의 암호화 함수는 다음과 같다.
+
[[덧셈암호]](Additional Cipher)는 암호학에서 가장 기초가 되는 방법이고, 실제로 시저 암호(Caesar Cipher)라고 많이 알려져 있는 암호 방법이다. 카이사르 암호라고도 불린다. 어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식이다. 시저라고도 불리는 고대 로마의 정치가이자 군인이었다 율리우스 카이사르는 자신의 장군들과 비밀스런 내용을 주고 받을 때 덧셈암호 방식을 사용했다. 여기에서 '카이사르 암호', '시저 암호'라는 이름이 유래되었다. 덧셈암호의 암호화 함수는 다음과 같다.
 
  <math>C=(P+K)\,\bmod\,26</math>
 
  <math>C=(P+K)\,\bmod\,26</math>
 
예를 들어 key가 10이라고 한다면, a의 치환된 문자는 k가 될 것이다. 덧셈암호에 대한 복호화 함수는
 
예를 들어 key가 10이라고 한다면, a의 치환된 문자는 k가 될 것이다. 덧셈암호에 대한 복호화 함수는
17번째 줄: 17번째 줄:
  
 
====곱셈암호====
 
====곱셈암호====
[[곱셈암호]](Multiplicative Cipher)는 킷 값을 곱한 값을 이용해 [[암호화]]를 시키는 암호 방법이다. 곱셈암호는 덧셈암호보다 키 공간이 작기 때문에 전수 조사 공격에 더욱 취약하며 빈도수의 특징 또한 나타나기 때문에 통계적인 공격에도 취약하다.<ref>월혼지주, 〈[http://blog.naver.com/PostView.nhn?blogId=darknata&logNo=70094375354 곱셈 암호(Multiplicative Cipher)]〉, 《네이버 블로그》, 2010-09-24</ref>곱셈암호도 [[복호화]]가 가능해야 하므로, 키의 도메인이 덧셈암호보다 작다. 곱셈암호를 위한 키가 되기 위해서는 곱셈 역원이 존재해야 하기 때문이다. 다시 말해 곱셈 암호의 키 도메인은 <math>Z_{26}*</math>가 된다. 곱셈암호의 암호화 함수는
+
[[곱셈암호]](Multiplicative Cipher)는 킷 값을 곱한 값을 이용해 암호화를 시키는 암호 방법이다. 곱셈암호는 덧셈암호보다 키 공간이 작기 때문에 전수 조사 공격에 더욱 취약하며 빈도수의 특징 또한 나타나기 때문에 통계적인 공격에도 취약하다.<ref>월혼지주, 〈[http://blog.naver.com/PostView.nhn?blogId=darknata&logNo=70094375354 곱셈 암호(Multiplicative Cipher)]〉, 《네이버 블로그》, 2010-09-24</ref>곱셈암호도 복호화가 가능해야 하므로, 키의 도메인이 덧셈암호보다 작다. 곱셈암호를 위한 키가 되기 위해서는 곱셈 역원이 존재해야 하기 때문이다. 다시 말해 곱셈 암호의 키 도메인은 <math>Z_{26}*</math>가 된다. 곱셈암호의 암호화 함수는
  
 
  <math>C=(P \times K)\,\bmod\,26</math>
 
  <math>C=(P \times K)\,\bmod\,26</math>
38번째 줄: 38번째 줄:
 
  <math>P=p1p2p3...\quad C=c1c2c3...</math>
 
  <math>P=p1p2p3...\quad C=c1c2c3...</math>
 
  <math>c_i(P_i+P+{i-1})\,\bmod\,26</math>
 
  <math>c_i(P_i+P+{i-1})\,\bmod\,26</math>
단, 이럴 경우 첫 번째의 문자는 사용할 키가 없게 된다. 그래서 첫 문자는 임의의 키인 k를 이용해 <math>p_{0-1}=k</math>로 사용하도록 한다. [[복호화]] 또한 단순하다. 그 관계는 덧셈암호와 마찬가지로 i-1번째의 <math>p_{i-1}</math>을 뺀다.
+
단, 이럴 경우 첫 번째의 문자는 사용할 키가 없게 된다. 그래서 첫 문자는 임의의 키인 k를 이용해 <math>p_{0-1}=k</math>로 사용하도록 한다. 복호화 또한 단순하다. 그 관계는 덧셈암호와 마찬가지로 i-1번째의 <math>p_{i-1}</math>을 뺀다.
 
  <math>p_i=(c_i-P_{i-1})\,\bmod\,26</math>
 
  <math>p_i=(c_i-P_{i-1})\,\bmod\,26</math>
 
마찬가지로, 첫 번째 문자에 대해서는 키 k를 사용한다. 자동키암호도 덧셈암호와 마찬가지로 무차별 대입 공격에 매우 취약하다. 다만 통계를 이용한 공격에는 덧셈암호에 비해 비교적 강하다. 같은 문자를 다른 문자로 암호화하기 때문에 문자와 문자의 관계를 숨길 수 있다.
 
마찬가지로, 첫 번째 문자에 대해서는 키 k를 사용한다. 자동키암호도 덧셈암호와 마찬가지로 무차별 대입 공격에 매우 취약하다. 다만 통계를 이용한 공격에는 덧셈암호에 비해 비교적 강하다. 같은 문자를 다른 문자로 암호화하기 때문에 문자와 문자의 관계를 숨길 수 있다.
84번째 줄: 84번째 줄:
 
  <math>\begin{bmatrix} K_{11} & K_{12} & \cdots & K_{1m} \\ K_{21} & K_{22} & \cdots & K_{2m} \\ \vdots & \vdots & \ddots & \vdots \\ K_{m1} & K_{m2} & \cdots & K_{mm} \end{bmatrix}</math>
 
  <math>\begin{bmatrix} K_{11} & K_{12} & \cdots & K_{1m} \\ K_{21} & K_{22} & \cdots & K_{2m} \\ \vdots & \vdots & \ddots & \vdots \\ K_{m1} & K_{m2} & \cdots & K_{mm} \end{bmatrix}</math>
  
위의 행렬 k를 이용해서 암호화를 진행한다. [[복호화]]를 하기 위해서 힐암호에 사용되는 키 k는 곱셈 역원을 가져야 할 필요가 있다. 암호화와 복호화의 관계를 나타내면 다음과 같다.
+
위의 행렬 k를 이용해서 암호화를 진행한다. 복호화를 하기 위해서 힐암호에 사용되는 키 k는 곱셈 역원을 가져야 할 필요가 있다. 암호화와 복호화의 관계를 나타내면 다음과 같다.
 
  <math>C=PK</math>
 
  <math>C=PK</math>
 
  <math>P=CK^{-1}</math>
 
  <math>P=CK^{-1}</math>

해시넷에서의 모든 기여는 다른 기여자가 편집, 수정, 삭제할 수 있다는 점을 유의해 주세요. 만약 여기에 동의하지 않는다면, 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다 (자세한 사항은 해시넷:저작권 문서를 보세요). 저작권이 있는 내용을 허가 없이 저장하지 마세요!

취소 | 편집 도움말 (새 창에서 열림)