6kittylog

Vectors 본문

+/CRYPTO

Vectors

육키티 2025. 2. 11. 20:52

Vectors 

how lattices appear in crypto 떠들어보신다고 함(운동 갔다가 카공 하려니까 기운 빠져서 날카로움) 

linear algebra에 대해 짚고 넘어가야 하는데(선형대수학이라 함) 

 

벡터 V는 필드 F에서 이진수 연산으로 구성된 set(집합)이다. 

v∈V 그리고 a(스칼라) ∈ F일 때, 두 벡터 간의 덧셈은 다른 벡터를 생성한다: v+w=z 

v,w,z ∈V 그리고 vector*scalar 곱셈은 벡터를 생성한다: a*v=w와 a∈ F

 

두 평면 벡터가 있을 때, v∈V는 숫자들의 쌍으로 표현 가능하다(좌표 말하는듯) v=(a,b) (a,b는 R에 속함) 

이때 덧셈과 곱셈은 다음과 같이 표현이 가능하다. 

v+w=(a,b)+(c,d)=(a+c,b+d) 

c*v=c(a,b)=(ac, bc) 

그리고 inner product(요소 말하는 건가내적, 두 벡터를 가지고 scalar를 뱉는) 다음과 같이 표현 가능 

v*w=a (v,w ∈V, a∈ F) 

근데 요렇게도 가능함 -> vw=(a,b)(c,d)=ac+bd 

 

Q. 3차원에서도 생각해보라 함 

v=(2,6,3), w=(1,0,0), u=(7,7,2)일 때, 3(2v-w)2u 계산하기 

풀어서 써보면.. 2u(6v-3w) 다 풀진 않았네 암튼암튼 괄호 안 먼저 계산 

6v-3w=(12,36,18)+(-3,0,0)=(9,36,18) 

(14,14,4)(9,36,18)=(126,504,72)

안되는데..

+ 라업 내용

내적이 되니까 vw=(a,b)(c,d)=ac+bd 이 식 가져와서 126+504+72=702 

그리고 참고한 라업은 python으로 풀었더라고.. 나도 파이썬으로 풀어야겟드아.. 

def scalar(a,v):
    #곱셈 경우만 생각 
    for i in range(len(v)):
        v[i]=a*v[i]
    return v

def twovecmul(v,w):
    for i in range(len(v)):
        v[i]=v[i]*w[i]
    return v

def twovecadd(v,w):
    for i in range(len(v)):
        v[i]=v[i]+w[i]
    return v

def innerproduct(v):
    ans=0
    for i in v:
        ans=ans+i
    return ans 

'''
3*(2v-w)*2u를 av 꼴로 나타내면...
6u(2v-w)
'''
v=[2,6,3]
w=[1,0,0]
u=[7,7,2]

print(innerproduct(twovecmul(scalar(6,u),twovecadd(scalar(2,v),scalar(-1,w)))))

'+ > CRYPTO' 카테고리의 다른 글

Textbook-DSA2  (0) 2025.04.23
safeprime  (0) 2025.04.22
d  (0) 2025.01.11
Parameter Injection  (0) 2025.01.10
diffie-hellman  (0) 2025.01.10