- 세상의 모든 계산기 수학, 과학, 공학 이야기
논스, Nonce, Number used Once 암호의 개념 및 역할
논스(Nonce, "Number used once")는 암호학 및 보안에서 중요한 역할을 하는 개념입니다. 논스는 단 한 번만 사용되는 무작위 값이나 숫자로, 여러 가지 보안 목적에 사용됩니다. 다음은 논스의 주요 특징과 역할에 대한 자세한 설명입니다:
1. 기본 개념
- 정의: 논스는 "Number used once"의 약어로, 특정 암호화 프로토콜이나 시스템에서 단 한 번만 사용되는 값을 의미합니다.
- 목적: 논스의 주된 목적은 재사용을 방지하고, 암호화 및 해시 함수의 보안성을 강화하는 것입니다.
2. 용도 및 중요성
-
재사용 방지: 동일한 논스를 두 번 사용하는 경우, 암호화된 데이터나 해시 값이 동일하게 생성될 수 있습니다. 이는 보안 취약점을 초래할 수 있기 때문에 논스는 한 번만 사용되도록 설계됩니다.
-
예측 불가능성: 논스는 무작위로 생성되거나 예측할 수 없는 방식으로 결정됩니다. 이렇게 하면 공격자가 논스를 예측하거나 조작하는 것을 어렵게 만듭니다.
-
해시 함수의 무작위성 증가: 해시 함수를 사용할 때 논스를 추가하면 결과 해시값의 무작위성이 증가하여, 해시 값으로부터 원래의 데이터(예: 비밀번호, 메시지 등)를 추측하는 것이 더 어렵습니다.
3. 암호화에서의 역할
-
인증: 논스는 메시지 인증 코드(MAC)와 같은 인증 방식에서 사용됩니다. 송신자가 메시지와 논스를 조합하여 해시를 생성하면, 수신자는 동일한 논스와 메시지를 사용하여 해시를 다시 생성하고, 이를 통해 메시지가 변경되지 않았음을 확인할 수 있습니다.
-
공격 방지: 논스는 다양한 공격, 예를 들어 재전송 공격(Replay Attack)에서 보호하는 데 사용됩니다. 재전송 공격은 공격자가 이전의 유효한 메시지를 재전송하여 불법적인 행동을 유도하는 공격입니다. 논스를 사용하면 각 메시지가 유일하므로 이러한 공격을 방지할 수 있습니다.
4. 블록체인과 암호화폐에서의 사용
-
채굴: 비트코인과 같은 암호화폐에서는 블록체인 채굴 과정에서 논스가 중요한 역할을 합니다. 채굴자는 새로운 블록을 추가하기 위해 블록 헤더와 함께 논스를 조합하여 특정 조건을 만족하는 해시값을 찾는 작업을 수행합니다. 이 과정은 해시값이 특정 숫자 이하가 되도록 논스를 조정하는 과정입니다.
-
트랜잭션 보안: 암호화폐에서 논스는 트랜잭션의 순서와 유일성을 보장하는 데 사용됩니다. 이를 통해 동일한 트랜잭션이 중복되지 않고, 일관성 있게 처리될 수 있습니다.
5. 일반적인 예시
-
웹사이트 로그인: 로그인 시스템에서 논스는 로그인 요청에 추가되어 비밀번호와 함께 해시값을 생성합니다. 이 해시값은 서버에 의해 검증되며, 이를 통해 비밀번호와 인증 정보를 안전하게 전송할 수 있습니다.
-
보안 프로토콜: 다양한 보안 프로토콜, 예를 들어 HTTPS와 같은 암호화 프로토콜에서도 논스가 사용됩니다. 이를 통해 암호화된 세션이 재사용되지 않도록 보장합니다.
결론적으로, 논스는 보안 및 암호화에서 중요한 역할을 하며, 데이터의 무결성과 인증을 유지하고 다양한 공격을 방지하는 데 필수적인 요소입니다.
댓글 2
-
-
-
[수능 모평] 해시함수 이용분야 : 암호기술, 온라인 경매
https://m.blog.naver.com/magician_e/220785092249
[16~18] 다음 글을 읽고 물음에 답하시오.
온라인을 통한 통신, 금융, 상거래 등은 우리에게 편리함을 주지만 보안상의 문제도 안고 있는데, 이런 문제를 해결하기 위하여 암호 기술이 동원된다. 예를 들어 전자 화폐의 일종인 비트코인은 해시 함수를 이용하여 화폐 거래의 안전성을 유지 한다. 해시 함수란 입력 데이터 x에 대응하는 하나의 결과값을 일정한 길이의 문자열로 표시하는 수학적 함수이다. 그리고 입력 데이터 x에 대하여 해시 함수 H를 적용한 수식을 H(x)=k 라 할 때, k를 해시값이라 한다. 이때 해시값은 입력 데이터의 내용에 미세한 변화만 있어도 크게 달라진다. 현재 여러 해시 함수가 이용되고 있는데, 해시 값을 표시하는 문자열의 길이는 각 해시 함수마다 다를 수 있지만 특정 해시 함수에서의 그 길이는 고정되어 있다.
이러한 특성을 갖고 있기 때문에 해시 함수는 데이터의 내용이 변경되었는지 여부를 확인하는 데 이용된다. 가령, 상호 간에 동일한 해시 함수를 사용한다고 할 때, 전자 문서와 그 문서의 해시 값을 함께 전송하면 상대방은 수신한 전자 문서에 동일한 해시 함수를 적용하여 결과 값을 얻은 뒤 전송받은 해시값과 비교함으로써 문서가 변경되었는지 확인할 수 있다.
그런데 해시 함수가 ㉠일방향성과 ㉡충돌회피성을 만족시키면 암호 기술로도 활용된다. 일방향성이란 주어진 해시값에 대응하는 입력 데이터의 복원이 불가능하다는 것을 말한다. 특정 해시 값 k가 주어졌을 때 H(x)=k를 만족시키는 x를 계산하는 것이 매우 어렵다는 것이다. 그리고 충돌회피성이란 특정 해시값을 갖는 서로 다른 데이터를 찾아내는 것이 현실적으로 불가능하다는 것을 의미한다. 서로 다른 데이터 x, y에 대해서 H(x)와 H(y)가 각각 도출한 값이 동일하면 이것을 충돌 이라 하고, 이때의 x와 y를 충돌쌍이라 한다. 충돌회피성은 이러한 충돌쌍을 찾는 것이 현재 사용할 수 있는 모든 컴퓨터의 계산 능력을 동원하더라도 그것을 완료하기가 사실상 불가능 하다는 것이다.
[가][해시 함수는 온라인 경매에도 이용될 수 있다. 예를 들어 ○○ 온라인 경매 사이트에서 일방향성과 충돌회피성을 만족시키는 해시 함수 G가 모든 경매 참여자와 운영자 에게 공개되어 있다고 하자. 이때 각 입찰 참여자는 자신의 입찰가를 감추기 위해 논스의 해시 값과, 입찰가에 논스를 더한 것의 해시 값을 함께 게시판에 게시한다. 해시 값 게시 기한이 지난 후 각 참여자는 본인의 입찰가와 논스를 운영자에게 전송하고 운영자는 최고 입찰가를 제출 한 사람을 낙찰자로 선정한다. 이로써 온라인 경매 진행 시 발생할 수 있는 다양한 보안상의 문제를 해결할 수 있다.]
* 논스 : 입찰가를 추측할 수 없게 하기 위해 입찰가에 더해지는 임의의 숫자.
16. 윗글의 ‘해시 함수’에 대한 이해로 적절하지 않은 것은?
① 전자 화폐를 사용한 거래의 안전성을 위해 해시 함수가 이용될 수 있다.
② 특정한 해시 함수는 하나의 입력 데이터로부터 두 개의 서로 다른 해시 값을 도출하지 않는다.
③ 입력 데이터 x를 서로 다른 해시 함수 H와 G에 적용한 H(x)와 G(x)가 도출한 해시 값은 언제나 동일하다.
④ 입력 데이터 x, y에 대해 특정한 해시 함수 H를 적용한 H(x)와 H(y)가 도출한 해시 값의 문자열의 길이는 언제나 동일하다.
⑤ 발신자가 자신과 특정 해시 함수를 공유하는 수신자에게 어떤 전자 문서와 그 문서의 해시 값을 전송하면 수신자는 그 문서의 변경 여부를 확인할 수 있다.
17. 윗글의 ㉠과 ㉡에 대하여 추론한 내용으로 가장 적절한 것은?
① ㉠을 지닌 특정 해시 함수를 전자 문서 x, y에 각각 적용하여 도출한 해시 값으로부터 x, y를 복원할 수 없다.
② 입력 데이터 x, y에 특정 해시 함수를 적용하여 도출한 문자열의 길이가 같은 것은 해시 함수의 ㉠ 때문이다.
③ ㉡을 지닌 특정 해시 함수를 전자 문서 x, y에 각각 적용하여 도출한 해시 값의 문자열의 길이는 서로 다르다.
④ 입력 데이터 x, y에 특정 해시 함수를 적용하여 도출한 해시 값이 같은 것은 해시 함수의 ㉡ 때문이다.
⑤ 입력 데이터 x, y에 대해 ㉠과 ㉡을 지닌 서로 다른 해시 함수를 적용하였을 때 도출한 결과 값이 같으면 이를 충돌이라고 한다.
18. [가]에 따라 <보기>의 사례를 이해한 내용으로 가장 적절한 것은? [3점]
<보기>
온라인 미술품 경매 사이트에 회화 작품 △△이 출품되어 A와 B만이 경매에 참여하였다. A, B의 입찰가와 해시 값은 다음과 같다. 단, 입찰 참여자는 논스를 임의로 선택한다.
입찰 참여자
입찰가
논스의 해시 값
‘입찰가+논스’의 해시 값
A
a
r
m
B
b
s
n
① A는 a, r, m 모두를 게시 기한 내에 운영자에게 전송해야 한다.
② 운영자는 해시 값을 게시하는 기한이 마감되기 전에 최고가 입찰자를 알 수 없다.
③ m과 n이 같으면 r과 s가 다르더라도 A와 B의 입찰가가 같다는 것을 의미한다.
④ A와 B 가운데 누가 높은 가격으로 입찰하였는지는 r과 s를 비교하여 정할 수 있다.
⑤ B가 게시판의 m과 r을 통해 A의 입찰가 a를 알아낼 수도 있으므로 게시판은 비공개로 운영되어야 한다.
16. ③ 17. ① 18. ②
[16~18] 기술, ‘해시 함수의 특성과 이용’
지문해설 : 이 글은 온라인상에서 생길 수 있는 보안 문제를 해결하기 위한 기술의 하나인 해시 함수를 소개하고, 그 이용에 대해 설명하는 글이다. 해시 함수는 입력된 데이터 x에 대응하는 하나의 결과 값을 일정한 길이의 문자열로 표시하는 수학적 함수이다. 입력 데이터에 해시 함수를 적용시켜 나온 값을 해시 값이라고 하는데, 해시 값은 입력 데이터가 조금만 달라져도 크게 달라질 수 있기 때문에 데이터의 내용이 변경되었는지를 확인하는 데 유용하다. 그리고 해시 함수 중 ‘일방향성’과 ‘충돌회피성’을 만족하는 경우는 암호 기술로 활용될 수 있다. 일방향성은 주어진 해시 값을 통해 원래의 입력 데이터를 복원하는 것이 불가능한 성질을 말한다. 충돌회피성은 서로 다른 입력 데이터가 같은 해시 값을 가지는 경우(해시 충돌)가 생길 수 있지만, 충돌쌍을 찾아내기는 사실상 불가능하다는 것을 나타낸다. 이러한 암호학적 해시 함수는 입찰 참여자가 입찰가를 노출하지 않을 수 있고, 다양한 보안상의 문제를 해결할 수 있다는 점 때문에 온라인 경매에도 이용이 된다.
[주제] 온라인에서의 보안 문제를 해결할 수 있는 해시 함수의 특성과 이용의 실제
16. 세부 정보의 파악
정답해설 : 1문단에서 해시 함수는 입력 데이터 x에 대해 하나의 결과 값을 일정한 길이의 문자열로 표시하는 수학적 함수라고 하였다. 이 정의에 따르면 입력 데이터가 같고, 함수가 같다면 동일한 해시 값을 얻을 수 있다. 그러나 함수가 달라지면 해시 값도 달라지기 때문에 해시 값이 언제나 동일하다는 것은 적절하지 않다. 정답 ③
[오답피하기] ① 1문단에서 전자화폐의 일종인 비트코인이 해시 함수를 이용하여 거래의 안정성을 유지한다고 하였다. ② 1문단에서 해시 함수는 입력 데이터에 대응하는 하나의 결과 값을 표시한다고 하였으므로, 두 개의 서로 다른 해시 값을 도출하지 않는다. ④ 1문단에서 문자열의 길이는 각 해시 함수마다 다를 수 있지만, 특정 해시 함수에서는 고정되어 있다고 하였으므로, 특정 해시 함수 H를 적용하면 문자열의 길이는 언제나 동일하다. ⑤ 2문단에서 발신자와 수신자 상호간에 동일한 해시 함수를 사용할 때, 발신자가 전자 문서와 그 문서의 해시 값을 함께 전송하면 수신자는 동일 한 해시 함수를 적용하여 얻은 해시 값과 비교하여 문서의 변경 여부를 확인할 수 있다고 하였다.
17. 세부 내용 추론
정답해설 : ㉠은 주어진 해시 값에 대응하는 입력 데이터의 복원이 불가능하다는 것이다. 그러므로 일방향성을 가진 해시 함수를 적용한 해시 값을 가지고는 원래의 입력 데이터인 x, y를 복원할 수 없다. 정답 ①
[오답피하기] ② 1문단에서 특정 해시 함수에서의 해시 값을 표시하는 문자열의 길이는 고정되어 있다고 하였으므로, ㉠이 없다 하더라도 x, y의 해시 값 문자열 길이는 같다. ③입력 데이터 x, y에 같은 해시 함수를 적용하였으므로 ㉡과 상관없이 두 해시 값의 문자열 길이는 같다. ④ ㉡은 특정 해시 값을 갖는 서로 다른 데이터를 찾아내는 것이 현실적으로 불가능하다는 것이다. 그러므로 입력 데이터 x, y의 해시 값이 같아지는 현상이 발생할 수는 있어도 그것이 ㉡ 때문에 같은 해시 값을 가지는 것은 아니다. ⑤ 충돌은 입력 데이터 x, y에 같은 해시 함수를 적용했을 때 같은 해시 값이 도출되는 것이므로, 서로 다른 해시 함수를 적용했을 때 일어나는 것이 아니며, ㉠의 성질과는 상관이 없는 것이다.18. 구체적 상황에 적용하기
정답해설 : [가]에서 입찰 참여자들은 게시판에 자신의 입찰가를 감추기 위해 논스의 해시 값과 입찰가에 논스를 더한 것의 해시 값을 게시한다고 하였다. 이때 해시 함수 G가 일방향성을 만족한다고 하였기 때문에, 입찰 참여자들이나 운영자는 게시판에 게시된 해시 값을 바탕으로 입찰가를 알아내는 것은 불가능하다. 운영자는 마감이 된 후 입찰 참여자가 보내 준 입찰가와 논스를 통해 최고 입찰가를 알 수 있게 되므로 마감되기 전에는 최고가 입찰자를 알 수 없다. 정답 ②
[오답피하기] ① A는 논스의 해시 값인 r과 입찰가에 논스 값을 더한 해시 값인 m을 운영자에게 전송해야 하지만, 입찰가 a는 게시 기한이 지난 후에 전송하면 된다. ③ 해시 값 m과 n이 같다는 것은 입찰가와 논스의 합이 같다는 것을 의미한다. 그런데 r과 s가 다르다면 이는 A와 B의 논스가 다르다는 것을 의미하기 때문에, 두 사람의 입찰가가 같을 수는 없다. ④ 논스의 해시 값 r과 s는 입찰가를 추측할 수 없게 하기 위해 입찰가에 더해지는 임의의 숫자이고, 해시 값을 통해 원래의 값을 찾을 수 없기 때문에 r과 s만으로는 입찰가를 비교할 수 없다. ⑤ B가 게시판에서 m과 r을 확인한다 하더라도 그것을 역추적하여 입찰가를 알아낼 수는 없기 때문에 게시판이 비공개로 운영될 필요는 없다.
-
블라인드 경매 시스템 설계하기
https://velog.io/@min49590/%EB%B8%94%EB%9D%BC%EC%9D%B8%EB%93%9C-%EA%B2%BD%EB%A7%A4-%EC%8B%9C%EC%8A%A4%ED%85%9C-%EC%84%A4%EA%B3%84%ED%95%98%EA%B8%B0