암호프로그램 하시는분?

park712의 이미지

-P1eeEjcB1vP2BkKF_rGFQ00

위의 내용이 다음 id가 암호로 되어 있다고 가정하면요
이런것은 어떻게 프로그램하면 일반 텍스트로 만들수 있지요?

만약 ..위의것이 id가 park712 이렇다는 단서가
있다면 복호화 로직을 구현하려면 어떻게 하면되죠?
요즘 네트워크 하고 보안 공부하는데 정말 공부할게 많네요

암호화 프로그램 잘 아시는분 댓글 부탁합니다.
복호화이죠

-P1eeEjcB1vP2BkKF_rGFQ00 = park712

두개의 값이 일치한다면 어떤 알고리즘으로 복호화 로직을
찾는지요?
설마 다음 같은곳에서 좌측 키 데이터 값을 이용해 서버측에
추가 테이블을 두고 XOR 나 쉬프트로 처리하는 것은 아니겠죠

참고로 절대 다음 해킹같은거 하려고 하는거 아닙니다.
그냥 사람들이 접속을 많이해서 공부하려고 하는 것입니다.

deisys의 이미지

park712 wrote:
-P1eeEjcB1vP2BkKF_rGFQ00

위의 내용이 다음 id가 암호로 되어 있다고 가정하면요
이런것은 어떻게 프로그램하면 일반 텍스트로 만들수 있지요?

만약 ..위의것이 id가 park712 이렇다는 단서가
있다면 복호화 로직을 구현하려면 어떻게 하면되죠?
요즘 네트워크 하고 보안 공부하는데 정말 공부할게 많네요

암호화 프로그램 잘 아시는분 댓글 부탁합니다.
복호화이죠

-P1eeEjcB1vP2BkKF_rGFQ00 = park712

두개의 값이 일치한다면 어떤 알고리즘으로 복호화 로직을
찾는지요?
설마 다음 같은곳에서 좌측 키 데이터 값을 이용해 서버측에
추가 테이블을 두고 XOR 나 쉬프트로 처리하는 것은 아니겠죠

참고로 절대 다음 해킹같은거 하려고 하는거 아닙니다.
그냥 사람들이 접속을 많이해서 공부하려고 하는 것입니다.

어디서 찾으셨는지는 모르겠군요. 그, 'P1eeEjcB1vP2BkKF_rGFQ00' 라는 스트링을요. 보통 '딱!' 정해진 decryption이 없는 encryption logic을 씁니다. 그 암호화된 스트링을 역계산해서 park712가 되는지 보는게 아니라 사용자가 입력한 암호를 암호화해서 기존에 가지고 있는 암호화된 스트링과 같은지를 보는거지요. 그래서 서버측 관리자도 암호화된 텍스트만 보일 뿐 암호가 뭔지는 모릅니다.

물론 아주 불가능하지는 않을겁니다만, cost/time 과의 trade-off를 생각해보면 난감하니까요.

hyperhidrosis의 이미지

md5 라는 단방향 해쉬 함수가 있습니다.
이러한 단방향 해쉬 함수는 역함수가 존재하지 않기 때문에
암호화된 데이타를 복호화 해서 원래의 데이타를 추출하는것이 불가능 합니다.

다만 알고리즘을 알고 있을 경우는 원래의 데이타를 암호화 시켜봐서
암호화된 데이타와 비교를 하는 방법이 유일한 해결책 입니다.
이를 brute-force 라고 하고,
a
b
....
z
aa
ab
ac
....
zz

와 같이 하나씩 하나씩 비교하는 방법뿐 입니다.

알고리즘이 알려져 있으면 보통 5-6 자 까지는 원래의 데이타를
알아낼 수 있습니다.
하지만 이상이 되면 우주가 끝날때까지 해도 안되는 경우가 대부분 입니다.

쌀밥의 이미지

접근하시는 방법이 예전에 어떤 책에서 읽은 해킹 방법중에 있었던것 같습니다.

예를 들어,

자신의 암호가 "aaaa" 이고
/etc/passwd 안에 aaaa가 암호화된 문자열 "zxcvbasdf"이 생성되었다고 가정할 경우

동일한 "zxcvbasdf" 라는 문자열이 /etc/passwd 안에서 (다른 사용자의 암호화 문자열 중에서)발견된다면
해당 사용자의 암호는 "aaaa"라는 것을 역으로 짐작할 수 있지요.
(실제로는 앞의 2byte에 임의의 값이 들어가 있기 때문에 이렇게 되기는 어렵습니다)

이 방법을 조금 확장해서 생각해보면

자신이 사용한 암호화키와 암호화된 문자열을 알아낸뒤
암호화 알고리즘을 짐작해내고
다른 사용자의 암호를 추적하는 방법을 생각해볼 수도 있을것 같습니다.

그런데 암호화 알고리즘이라는 것은

어떤 알고리즘으로 암호화 했는지를 모두가 알아도
풀 수 없다는 특징을 보장해야합니다.

예를 들어, 어떤 시스템이 DES 알고리즘으로 암호화 한다는 것이 알려졌다 하더라도
DES의 복호화 알고리즘이 없거나, 수학적으로 매우 오랜 연산을 요구하게 하는 것입니다.

접근 하시는 시도는
암호화 알고리즘이 어떤 것인가를 알아내는 용도로는 쓸 수 있겠습니다

하지만 그 다음 넘어야할 고개는 넘기 어려울듯 합니다.
즉, 복호화 알고리즘을 알아낸뒤, 다른 사용자의 암호 혹은 아이디도 맞춰내겠다는 시도는 성공하기 어려울듯 합니다.

일하는 사람들의 희망 민주노동당 : http://www.kdlp.org
반공 교육의 성과로, 민주주의의 반대가 공산주의(또는 사회주의)라고 생각하는 사람이 많다.

kernuts의 이미지

세대공감 올드앤뉴에서처럼
암호가 몇자인지 알면 그나마 좀 나을텐데요...

어쨌든 사전파일을 잘 선택하면 password를 찾을 확률이 높아집니다.
우리나라에서만 쓰는 한국형 암호 있잖아요...
dnflwlq
와 같이요...

프로그램을 돌려놓고 잊어버리고 있다가 일주일정도 지난 뒤 보면 하나쯤 찾아낼 수도 있을겁니다.

The knowledge belongs to the World like Shakespear's and Asprin.

hyperhidrosis의 이미지

Quote:

자신이 사용한 암호화키와 암호화된 문자열을 알아낸뒤
암호화 알고리즘을 짐작해내고
다른 사용자의 암호를 추적하는 방법을 생각해볼 수도 있을것 같습니다.

이거는 독심술의 영역이고... 수학적으로는 불가능 합니다.

예를 들자면 어떠한 순열이
1 2 3 4 5 6
이 있다고 할때 다음에 나타나는 숫자는 뭘까요? 라고 질문을 할경우
99.99% 는 7이라고 하겠지만

순열 공식이
int f(int val)
{
return val+(val-1)*(val-2)*(val-3)*(val-4)*(val-5)*(val-6);
}

이면 답은 7이 아니게 됩니다..

즉 표면에 나타난 결과값 만으로는 원래의 알고리즘을 알아내는것은
불가능 합니다.

shs0917의 이미지

일반적인 암호화 값이라면.. 알고리즘은 알려져 있고.. 그 키값을 찾는게 될테고.. 리눅스 계정 암호같이 MD5등의 해쉬 함수라면.. 복호화 알고리즘 자체가 존재하지 않겠죠..-_-;;

컴퓨터가 이해할수 있는 코드는 어느 바보나 다 작성할 수 있다. 좋은 프로그래머는 사람이 이해할 수 있는 코드를 짠다 - 마틴파울러

seoleda의 이미지

shs0917 wrote:
일반적인 암호화 값이라면.. 알고리즘은 알려져 있고.. 그 키값을 찾는게 될테고.. 리눅스 계정 암호같이 MD5등의 해쉬 함수라면.. 복호화 알고리즘 자체가 존재하지 않겠죠..-_-;;

존재하지 않다기 보다는 알려져 있지 않은것이겠죠. 범인이 아닌사람은 해독방법을 알고 있을지도 모릅니다. 다만, 대부분의 많은 사람들이 알지 못하는 것이죠.
shs0917의 이미지

아.. 발견하지 못했다가 정확하겠네요..^^;; 지적 감사드립니다.

컴퓨터가 이해할수 있는 코드는 어느 바보나 다 작성할 수 있다. 좋은 프로그래머는 사람이 이해할 수 있는 코드를 짠다 - 마틴파울러

hyperhidrosis의 이미지

seoleda wrote:
shs0917 wrote:
일반적인 암호화 값이라면.. 알고리즘은 알려져 있고.. 그 키값을 찾는게 될테고.. 리눅스 계정 암호같이 MD5등의 해쉬 함수라면.. 복호화 알고리즘 자체가 존재하지 않겠죠..-_-;;

존재하지 않다기 보다는 알려져 있지 않은것이겠죠. 범인이 아닌사람은 해독방법을 알고 있을지도 모릅니다. 다만, 대부분의 많은 사람들이 알지 못하는 것이죠.

맞는 말인것 같은데요?

"md5 와 같이 해쉬함수이면 복호화 알고리즘이 존재하지 않습니다."

는 맞는 말인데요?

익명 사용자의 이미지

흐음.. 헷갈립니다..-_-;; 봐왔던 글들은 '없다'라고 하고 있었는데.. 발견 못한게 더 맞을거 같기도 하고..
뭐.. 상식선에서는.. 단방향 함수의 역은 없다이긴 한데.. :cry:

cronex의 이미지

Anonymous wrote:
흐음.. 헷갈립니다..-_-;; 봐왔던 글들은 '없다'라고 하고 있었는데.. 발견 못한게 더 맞을거 같기도 하고..
뭐.. 상식선에서는.. 단방향 함수의 역은 없다이긴 한데.. :cry:
없다기 보다는 찾기 어렵다죠.

------------------------------------------------------------
이 멍청이~! 나한테 이길 수 있다고 생각했었냐~?
광란의 귀공자 데코스 와이즈멜 님이라구~!

seoleda의 이미지

hyperhidrosis wrote:
seoleda wrote:
shs0917 wrote:
일반적인 암호화 값이라면.. 알고리즘은 알려져 있고.. 그 키값을 찾는게 될테고.. 리눅스 계정 암호같이 MD5등의 해쉬 함수라면.. 복호화 알고리즘 자체가 존재하지 않겠죠..-_-;;

존재하지 않다기 보다는 알려져 있지 않은것이겠죠. 범인이 아닌사람은 해독방법을 알고 있을지도 모릅니다. 다만, 대부분의 많은 사람들이 알지 못하는 것이죠.

맞는 말인것 같은데요?

"md5 와 같이 해쉬함수이면 복호화 알고리즘이 존재하지 않습니다."

는 맞는 말인데요?

알려진 복호화 알고리즘은 존재하지 않지만, 누군가는 알고 있을 수도 있으며 미래에 발견할 가능성도 있습니다.

one way hash function의 정의를 살펴보면, "복호화 방법을 알아내기가 어렵다" 혹은 "복호화 알고리즘을 찾는게 거의 불가능하다" 이런식으로 조심스럽게 설명합니다. 결정적으로 없다고 설명하는 것은 못봤습니다.

"MD5는 역함수가 존재하지 않는다"는 맞는 얘기지만, domain을 제한하면, 찾는게 불가능 한것은 아닙니다.
예를들어, y=x^2을 one way hash function으로 본다면, 1이라는 결과를 보고, -1, 1을 유추할 수 있듯이, 암호화된 문자열에서 가능한 모든 원시 문자열을 찾아내고, 그중에서 의미가 있는 문자열을 추려낼 수 있을 것입니다.

MD5역시 치환과 전치를 반복하는 구조 이므로는 원시 문자열을 찾을 수 있을지도 모릅니다. 다만, 누구도 그런 시간과 돈을 들여서 찾으려고 시도를 하지 않지요. (찾아다가 본인이 죽거나 우주가 멸망할지도 모릅니다.)

실제로, MD5에서 동일한 hash값을 가지는 문자열을 찾아내는 방법이 알려져 있습니다. 다만, 이 방법이 현실적인 시간 내에 찾아내는 것이 아니지만, 정말 천재가 있다면 혹시 그 사람은 알고 있을지도 모르며, 혹은 미래에 알려질 수도 있겠죠.

결론은 암호라는 것이 범인들이 사용하기에는 안전하나, 미래에도 안전하리라는 보장은 없으며, 천재나 막대한 자본을 가진 사람들에게도 안전하다고 볼 수 없습니다.

hyperhidrosis의 이미지

seoleda wrote:
hyperhidrosis wrote:
seoleda wrote:
shs0917 wrote:
일반적인 암호화 값이라면.. 알고리즘은 알려져 있고.. 그 키값을 찾는게 될테고.. 리눅스 계정 암호같이 MD5등의 해쉬 함수라면.. 복호화 알고리즘 자체가 존재하지 않겠죠..-_-;;

존재하지 않다기 보다는 알려져 있지 않은것이겠죠. 범인이 아닌사람은 해독방법을 알고 있을지도 모릅니다. 다만, 대부분의 많은 사람들이 알지 못하는 것이죠.

맞는 말인것 같은데요?

"md5 와 같이 해쉬함수이면 복호화 알고리즘이 존재하지 않습니다."

는 맞는 말인데요?

알려진 복호화 알고리즘은 존재하지 않지만, 누군가는 알고 있을 수도 있으며 미래에 발견할 가능성도 있습니다.

one way hash function의 정의를 살펴보면, "복호화 방법을 알아내기가 어렵다" 혹은 "복호화 알고리즘을 찾는게 거의 불가능하다" 이런식으로 조심스럽게 설명합니다. 결정적으로 없다고 설명하는 것은 못봤습니다.

"MD5는 역함수가 존재하지 않는다"는 맞는 얘기지만, domain을 제한하면, 찾는게 불가능 한것은 아닙니다.
예를들어, y=x^2을 one way hash function으로 본다면, 1이라는 결과를 보고, -1, 1을 유추할 수 있듯이, 암호화된 문자열에서 가능한 모든 원시 문자열을 찾아내고, 그중에서 의미가 있는 문자열을 추려낼 수 있을 것입니다.

MD5역시 치환과 전치를 반복하는 구조 이므로는 원시 문자열을 찾을 수 있을지도 모릅니다. 다만, 누구도 그런 시간과 돈을 들여서 찾으려고 시도를 하지 않지요. (찾아다가 본인이 죽거나 우주가 멸망할지도 모릅니다.)

실제로, MD5에서 동일한 hash값을 가지는 문자열을 찾아내는 방법이 알려져 있습니다. 다만, 이 방법이 현실적인 시간 내에 찾아내는 것이 아니지만, 정말 천재가 있다면 혹지 그 사람은 알고 있을지도 모르며, 혹은 미래에 알려질 수도 있겠죠.

결론은 암호라는 것이 범인들이 사용하기에는 안전하나, 미래에도 안전하리라는 보장은 없으며, 천재나 막대한 자본을 가진 사람들에게도 안전하다고 볼 수 없습니다.

해쉬함수의 특징중의 하나는 입력 크기에 상관없이 결과값의 크기가 동일하다는 특징을 가집니다.

md5 의 경우는 원래 데이타와 상관없이 16바이트 크기의 데이타가 결과값으로 나오고요..

따라서, md5 결과값을 가지고 "10자 이하의 타이핑 가능한 문자열" 을 찾고자 할 경우 원래의 값을 찾는것은 슈퍼 컴퓨터정도면
brute-force 방법으로 얼마정도의 시간으로 찾을 수 있습니다...

하지만 이것은 어디까지나 원본 데이타의 범위를 제한할 경우에
가능한 일이고, 이걸 가지고 역함수가 존재한다고 할수는 없습니다.

( 예를들자면 소설책 한권에 대한 md5 체크섬을 가지고 원본 소설을 복호화 해내는것은 불가능 합니다. 다만 최근의 연구등으로 동일한 체크섬을 가지는 [다른 소설을 만들어 내는것]이 가능해 지고 있을 뿐입니다. 이것때문에 md5 가 더이상 안전한 해쉬함수가 아니라고 말하는 것이지요.. )

seoleda의 이미지

저는 역함수가 존재한다고 하지 않았습니다. 역함수의 존재여부와 상관 없이 해독 할 수 있는 가능성도 있다고 했습니다.

hyperhidrosis wrote:
( 예를들자면 소설책 한권에 대한 md5 체크섬을 가지고 원본 소설을 복호화 해내는것은 불가능 합니다. 다만 최근의 연구등으로 동일한 체크섬을 가지는 [다른 소설을 만들어 내는것]이 가능해 지고 있을 뿐입니다. 이것때문에 md5 가 더이상 안전한 해쉬함수가 아니라고 말하는 것이지요.. )

어느 누군가는 체크섬을 보고 [가능한 모든 소설]을 만들 수도 있지 않을까요? 단정적으로 가능한 모든 소설을 찾는 알고리즘이 존재하지 않는다고 주장한 사람은 없었던것 같습니다.

그리고, park712님의 의문중에,

park712 wrote:
설마 다음 같은곳에서 좌측 키 데이터 값을 이용해 서버측에 추가 테이블을 두고 XOR 나 쉬프트로 처리하는 것은 아니겠죠

대부분의 암호화 로직이 따지고 보면 치환과 전치로 구성되어 있습니다. 쉽게 얘기해서 XOR이나 shift 연산이 아주 복잡하게 얽혀 있다고 볼 수 있습니다.

hyperhidrosis의 이미지

Quote:
어느 누군가는 체크섬을 보고 [가능한 모든 소설]을 만들 수도 있지 않을까요? 단정적으로 가능한 모든 소설을 찾는 알고리즘이 존재하지 않는다고 주장한 사람은 없었던것 같습니다.

네 언젠가는 NP 문제도 다 풀수 있고, PI 는 순환한다는것도 사실도 밝혀지고,
소수의 규칙도 밝혀지고, 엔트로피를 역전시키는 방법도 발견될 껍니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.