보안 알고리즘을 만들어 보았는데요

sky1027의 이미지

제가 만든 알고리즘이 보안성이 좋은지 좋지 않은지 판단할 수 있는 방법이 있을까요?
다른 자료를 참고해보니 암복호화가 되는지와 속도만 해놓았는데요 사실 이러한 방법이 보안성이 더 좋은지에 대해서
증명할 수 있는 부분이 없으니 판단이 서지 않더군요..
보안성이 더 좋아졌는지 판단할 수 있는 방법이 없을까요?

jick의 이미지

(뭐 저도 잘 모릅니다만..)

암호화 알고리즘을 말씀하시는 거라면, 이런 알고리즘을 만들 때 실수할 수 있는 여지가 너무나 많고, 알고리즘이 production에 들어간 다음에 실수를 알아차리면 이미 늦기 때문에, "절대로 자기가 알고리즘을 직접 만들지 않고 전문가들이 만들어 검증된 것을 사용한다"가 대원칙이라고 알고 있습니다만...

익명 사용자의 이미지

암호화 알고리즘의 성능을 비교하는 데에는 여러 가지 지표가 있긴 하지만, 윗분 말씀에 +1입니다. 또한 아무리 알고리즘을 잘 만들었다고 하더라도 해당 알고리즘을 잘못 적용하면 안 한 것만 못하게 되는 일도 있습니다.

읽을거리: https://namu.wiki/w/%EC%BD%94%EB%93%9C%EC%86%8C%ED%94%84%ED%8A%B8%20%EB%A7%9D%EC%8B%A0%20%EC%82%AC%EA%B1%B4

ozon1000의 이미지

보안쪽은 관심만 있지 잘 모르지만서도...

자기자신이 만들어 놓은 보안 알고리즘을 테스트 하고 싶어 하시는거 같은데...
테스트 방법이 없을까요?? 물론 전문가들이 만들어 놓은것을 즉 검증된 알고리즘을 사용한다라는 의견은 100% 동의입니다만 사용하지 않고 테스트 할 수 있는 tool은 없을까요? 저도 궁금하네요.

익명 사용자의 이미지

"제가 수학문제를 하나 냈는데 이게 어려운 문제인지 판단할 수 있는 방법이 있을까요?"와 비슷한 정도의 질문이네요.

익히 아시겠지만 수학 세부 분야들을 그냥 나열해보라고만 해도 수도 없이 많은데, 어떤 분야 문제인지 밝히지도 않고 일반적인 답을 바라는 건 무리가 있지요. 게다가 "어려운 문제"의 기준은 또 뭐겠습니까.
그 수학문제가 뭔지 구체적으로 알려주시기라도 하면 언제고 심심하신 분이 와서 한번 검토해 보고 갈 수도 있겠는데요.

암호화 알고리즘도 마찬가지입니다. 하다못해 공개키인지 비밀키인지, 블록 단위 암호화인지 스트림 암호화인지 정도는 밝혀 줘야 최소한 이론적인 답이라도 해 드릴 수 있는 겁니다.
아예 암·복호화 알고리즘을 구체적으로 설명해 주시는 것이 제일 좋고요. 보장은 못 해 드려도, 이 분야 잘 아시는 분 중 몇몇 분들이 오셔서 도움 좀 드릴 수 있을 겁니다.

어쨌거나, 아무 정보도 없는 지금 상황에서 알려 드릴 수 있는 방법이 하나 있긴 하네요. "해당 암호화 알고리즘을 깨트리게 되면, 꽤 중요하고 어려운 수학 난제 하나가 해결된다"는 걸 증명하는 방법이 있습니다.
이 방법이 적용되는 대표적인 암호화 알고리즘이 RSA죠. RSA의 공개키만 가지고 비밀키를 복원해 낼 수 있는 효율적인 알고리즘이 발견되면, 그 알고리즘을 이용해서 매우 큰 합성수의 소인수분해가 가능해집니다.

익명 사용자의 이미지

보안성이 좋다 안좋다 라는건 결국 그 당시에 연구자들이 발표한 공격 방법들에 달려 있습니다.
또는 수학적으로 어떤 암호화를 깨뜨릴 알고리즘을 찾는 것이죠.

가령 차분 공격을 예로 들면, 공개적으로 이 공격 방법이 발표되기 전까지
차분 공격에 현재 취약하다고 알려진 그 이전의 암호화 알고리즘의 보안성에 대해서
누가 얘기할 수 있었을까요? 그 당시에는 안전하다고 알려져 있던 것들입니다.

RSA 를 예로 들면, Rivest Shamir Adleman 3명의 일화는 잘 알려져 있습니다.
역할을 분담해서 누군가 적당한 암호 알고리즘을 생각해오고, 그럼 다른 나머지 사람은
그걸 깨뜨리기 위해 검증한다. 이러한 방법으로 수십개의 알고리즘을 버려가면서
안전하다고 판단하고 발표한 것이 RSA 입니다.

당연히 이것 역시 지금이야 안전하다고 알려져 있지만 추후에는 어떻게 될지 모릅니다.
뭐 이미 쇼어 알고리즘으로 BQP 에 속하는게 알려졌고 양자컴퓨터가 발전하면 쓸 수 없는 알고리즘입니다만.

즉 암호 알고리즘을 만드셨다면 그걸 검증하는 것은 어찌보면 만드는 것과는
비교도 안될 정도의 깊이 있는 암호학 지식이 필요합니다. 지금까지의 과정을
전부 되짚고 다 알고 이해하고 있어야 가능한 거죠. 그게 아니면 야매 검증밖에 안될테고.
그래서 사실 암호 알고리즘은 만드는게 문제가 아니라 만든 것이 얼마나 안전한지
증명하는 것이 실질적으로 암호학이라고 할 수 있습니다.

만드신 것에 대해서 아무런 언급도 없으니 뭐라 얘기도 못하겠지만
일단 암호학에 대한 깊은 지식이 없다면 초등적인 수준의 검증밖에 할 수 없다는 건 확실합니다.
제대로 검증하려면 "최소한" 석박사 이상으로는 공부해야 됩니다.

danojib의 이미지

오.. 저번 학기에 Cryptography 를 들었는데 RSA 에 관한 일화는 처음 듣는 내용이네요 ㅎㅎ..
말씀하신것 처럼 RSA 는 assumption 에 기반하고 있는줄로 알고 있습니다. 언제 깨질지 모르는거죠.
또한 교수님께 들은 내용으로는 이론상으로는 안전한 알고리즘이 많지만 실제로 사용하지 못하는 이유는 efficiency 의 문제가 크다 라고 하시더라구요..

익명 사용자의 이미지

현실에서는 어차피 현재까지 알려진 선에서 안전하다고 판단될 수 있는 알고리즘은
많이 나올 수 있고(연구하는 사람만 전세계에 수천명이니) 그럼 다음은 말씀하신대로 속도의 문제이지요.
글쓴 분은 속도는 일단 생각 안하셨지만, 사실 아마추어가 만든 알고리즘이면
속도보다는 당장은 보안성을 먼저 생각해야 하는건 어쩔 수 없는 일이긴 합니다만.

아시겠지만 AES 만 해도 현재 사용되는 레인달 외에 최종 후보로 올라온 알고리즘들이
(이름만 들어도 뭐의 후속작(?) 인지 알 수 있는) RC6, Twofish 등 4개나 있었지만
레인달이 선택된건 다른 알고리즘이 보안적인 결함이 있어서가 아니라
알고리즘을 최적화하여 생성할 수 있는 lookup table 로 인한 빠른 속도 때문이었죠.
(흔히 openssl 에서 Te0 Te1 ... Td0 .. 등으로 나오는 테이블)

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.