2017-09-13 8 views
0

ECDH/ECDSA를 사용하여 전송을 보호하려고합니다. 그리고 나는 조립에 익숙하지 않기 때문에 micro-ECC을 mbed로 포팅했습니다. 모든 어셈블리 최적화가 비활성화되었습니다. 여기에 my project입니다.ECC에서 생성 된 키가 변경되지 않는 것이 맞습니까?

실행중인 코드 인쇄 정보는 다음과 같은 콘솔 :

microECC test 

Start ECC computation 
make key 1 
RNG(): 
5647A0B05F947B4958E6AD073D1B1BC844B973131247106CAA89BBA6747D965 
7828AC7240A3733939EC09EE3327EAB55A366239516FFDE82AABAAAA428A8E9F 
A85C8C162E8AADA7407F2BF7ACDF6DC6EFE2C7111B91623612C979C32776F7D 
182D69A2108F85E37F36B3428A8EA07C05EA8C608983425E6A460458AD465B 
6AC6DC351EC5D4E75FB55FD7749971E16E5CA069A56C20730F1D8525E43FFA 
2A81D1F46817F40B18EEF5606797208B591A9A8D79B30FA76C6942DA1F464239 
518458C17CE01045477D06FA597B0388248BB0C379B03DC93A4B33414CC89B6B 
2702D42E4A606F071FF24B7FBFC60671E69F7E87AC35024332C9D453A7388 
5F3902CB45349175ECF5BD7C307884465B0BB745B979111605E2C33384756 
4E3841E96CAE82C239B6838A1FF80FF92B9F6AF671E57CBD15CAF3EA63C5BF3F 
7642C9234191B9CE4EA408A7767A18D15E900F2C3D03FB6448E7839B257C889F 
79F2306F1491BE021410231B5240D0002FCFF2AF307918102D266E85143DBC40 
56FFD07A264869663FAFA43741B9BD241F8058F23A74221319B948512403982 
663D2C8066DD7D4C6523D7EB568D1072491FCF9149D80AA9340603E9BD8333 
545E49B652AF11BF5B23665670A99AEC176DB6752074AC5C225BB4D97815676F 
74601D7C3707C3530194C955BA764B2C7E06EE17BCC4207E37F7D1D4B3E3F 
354CC32C13C25EF67F8BA1C0453D296229AE6D664460F8C7688889317FA3286 
462F7DF42B6E7F282B1DB175287CF0BE102FCB474FF7952B2381746C571BC4 
677A38B1209B0CE6C504C5DA09E170105A0D0A6C46A8B562959FADAAE73B7 
115B3CC84BDC6F97900289E156913B548ED461D2E70B58A245849A96256BCDA 
4162196C1242AA2D709A9E5735FFC6415C5EB8F24B01AA411985BD2972D9555C 
7D0F65481769C4842D09E1E152114EB912DED22A5A9A607E76B5047061C578E8 
23993CDF1D2879B47FC5C7FF7CC79DF148EE489384652FB5306B8587718A3C4 
781DE9DE227DB88F420C93EB373998F52F34B99375D7D1BA7E00055B4CE5647A 
public1: 
FA624B9E629CD6ACFA0F27B38E937FCA9B85610412E25DAA2044BF0D05DAD5E0A7FB0EFBB152147D 
private1: 
005AA72C06F34B2D2EAAB395EE70CF5DA261AD5969 
time: 293ms 
make key 2 
RNG(): 
403BAB06244092E721807F8D2C4FC4162D5496BD6C9927E619BB3F2A7427F1B3 
5B6B432D5AD7761D64424272D5D380D23CFB62E22D072807AA8BA7972E22130 
2E67B3333FB4BFDB6D2FE1E7A03908E36128251642F642970DEFFCD4F37250C 
19A66B8311FAF0709D0BBA615D3373C7A7C79EA2C5614F966C4126E7CEE94B1 
282385F91A9134162D8B2A2C3EFE4356A17815677DA72D07ABE35BB5C5D8A27 
63B9BA5518BD3216437CC4AF48C7E167227ADC9C23F9BC5B614FF84F30C68D3C 
5D064FB81FC6891B22E548C5521C96A542CECC7A324548E6D1ADB6A54DCD923 
4112C6264EE2C42D41648A88AF1CD003C8E4600616DDE903F344D822346E650 
7CBB54BC73CF9B2D44162A324C1870D27B223074748678145B3DF11384BFF7 
5BCAFC2329E832235586E2CD2A83B84C1AD741275559E1996A489E064E4CA07A 
55DE6EAA23D704697D25289616942CD8275DC73F5926982468C80CC959E41041 
538461A8646F5231146AF60F1EF3B3D211C2DF44DF7B815424C9D627D5D540E 
BADC4714BE1C2D444D1182C2BBF44D2302B3E8454D4BB186F53DB54129825B8 
C2076591AFDB4865990A8D326F547BE732216312BB7C8EE75B6FCB23EAD3F89 
5BB4DF8D69EAE87552E8D995FCF563358929D4E2737FE79141B9A944D48902A 
4E66031E4FA3F93A2B5E684554165C707BB3070E4CC3DFE74E8DFFD58D182D1 
4EECF6668F92B39792A44A1E7319BD7F03D1A45DD8C78C2F5274523F5DE801 
3F8832F8100E39DD5E819EE9593176AE1E6DE7A2538264C2381CFEEF232204F8 
1410F25B788BED3535BB9C4BC1A186515516F715A531356BD2920B353F2EFC 
39D09BB262DCB67722CEFE0F67FC2EB77DF2CE2A126C2BA24DB1289E6445D164 
7E1FAF7C74CCD1602018CCEB46EFD7BEB18B067EE04DE4C2E3CB888B3803 
6E735880798E58F045FBEBD3555C9E905222467A68100C1F21A797F52204CF18 
17A98EE8185DBB8A49A3D7D124CD485D2BB7C2BD2F3E8613471831D915606222 
2F1E08B1547D8B7F31A97CBC3E9E7259C40CCAC781FE6886775AEB978BAF 
RNG(): 
790A66D74370521F2165EE8D73D20D565F9C2FAA790809CE64CD667B6F4907F5 
150965DD17CD22F0C7F8B2DB6E5F85C023C264374B03630F2DA3DC14543C 
72F70D1A4061862C7FED7EF11DE66BBB8CC8BB06FC0DC5A7BE7758F58F5EFBD 
33C6E2D56391DB3844EEC3682541B3D26E3FEF6853E93F422398CF6A3AF72801 
9D6D9F31865D7653E1F0A2356573FFC739B95A325569E2F7AEF7BAB5618A250 
1E68D403114D0296C1168403BFA7043A1FAE49823044915B700D92D698EC 
7EDD3F018C4DDE26F8EA64713305D7ADAD11A014B7BBFB35218CC545928CDE 
2DD8D4BE19461FBA612104E5EF2218615481C0B710084105376D8D85198AF01 
268B632276727582BE897426367AEDE6506AB695B5C1568389F5D2DE04B73A 
6303EA524929A92F5545772418CD8C382F2A90FE75FE08447BA5917C3503B3B3 
7FC65D4C6260CE7E355F69477B573C564A8F7DB44EB9DB8120B3D7169D94362 
502F963F22B3F35321B9CBB27A3B4E2B3FDCAD5E6455033F83817B16A904EB2 
5762D58D2CBEFA815290AAC27504A8D579579FC96520DF3B4AA49ED44760BC93 
18B7DB5255D7DE476E412395677672AE3ED46F3A49B3E40F58A8A4F12E08E306 
3BC5C90D8AED008281937C29CE470662938D561AD1922725E2DE7AAE7F9CC 
2DAD303F129164DF42284DFE4C13C8A0599007B964DC1E0248633F5E6F3FBBCB 
7598E8893510BD2B765225975D8411E81283F9885714772B60ABAABE69E50B86 
59BB14E37668D54399C2796395A286B4D89E174615B25A0309AB0164FC043 
1A0EB6243D515529796A55A94792FBCA3E3B254C102DA43535655E805AD76A98 
5239D4E0603638D75FE7E36A1C730E676BA51FB6E32D1FB5989BD273DF8C760 
789313FC183396BC48A508183B291BFF209DAC5B37B9F0FF3D3DF9C4745C2598 
7C14BDDA2195E24963776BAB16F2204C4DBC94D3461C67BD66CCAB7C4927FDA5 
192E8B55165F72566A7D8BE25D54482564B47BB1D5C31F55CA4D5FA658461C1 
57F6D2D56A575E55627860C869AAD8D3399C9C3A4BBDA80979F6C33E3109784F 
public2: 
85BFA8BDEBB60ACF996FFA810BF6B21D291B71488C0DC505B647D6EDF23C0612A2CC1F8AFD70DADD 
private2: 
005E64D1E4C98466DDD62A410A29264EEE8133A2E3 
time: 430ms 
make share secret 1 
RNG(): 
26EAA6DF22BEA937F2C68B41A084AA438C36773F2D05035E73D657243C6A25 
2EF7A4E83F7FAE9654D8A9887A78D1687B7AA385D867EF91C8B66066FF67C73 
F57D2F073EA8F1B76E25A4D65884D7212857F91CCB724A6DB357323C7B3E7D 
B8444D60F35CD365137F577EEA209712DD606865E612F73AD03DB22E8EE99 
17A93C833D8EA1A91D8025284C3A40653FD5461F4B2CE62976C3964DF70AD70 
67C8E5053E896F91364CF1EB3694D77B3A292B6A4AF6A70232D154DF33F01522 
6949A64617DED047721E86165993D68387211AB11238F6919F6584A712B673C 
7F67C388678B150F49C309405F32205651EB0B70430490BC11B5E00452AEA47E 
689AECE7389658C9781890113379A135222CDA9F20AAE92250AB3A1419CBFE7A 
2E76FFB5650CAB7E16D587645E4EF20A558F3A6D4DBC795B12B6065576801F7B 
25E54E893EDE3C8C567D8B7F67433D0670E906F1AC1CA1B3EDE1D5D1987C19 
12299C62BF15798DBCFE795BE3E074CAA89C53D526436BC08A5A1C836097 
71E47DBE66C3DAA31D7B8AD15F0B3192758BBFCD65DA59AE145588C965814E8B 
5B8ED2F65AEA96105A975FB85A3595D340383F45CBC43756D445F813BE5AA93 
52906B0D1514FD87E4F74EA2391C4A65578E0C73B5E5E11C1CD99482B7F6 
4EB8E2F34ACD3C587086D5663AECFE33503FFF6F14FADB7422155F8510193A76 
142CF4A02356BD163BF1457A7C5F1486672ABB4D4B943B906A496AC65FD9A05C 
CCDD05D6B5E44E01D1E87266D89B7372DC4254F11D5B1A85D5E2D79784D9AB2 
7FFF52BC45E8F7C65D67E4067990EB211D30C78E2D8238A634AB0F5E3CDEB1B6 
2E1F30A11DD0310B5DD6470A69C7E0AB7EAE43D954933CC53607ABD16ED708DC 
r: 0001 
secret1: 
AA343FE06CD9534E38DCB762B5EE3590FDA318BA 
time: 265ms 
make share secret 2 
RNG(): 
87E54CF4A3D8C24266D2D6910373029B367F68170F0FEF1A340B2E2DD291B1 
1272327D718CF6AE323938426974B4A36781C7F1315B93618B2036A3248918F 
331B0A87D4C439117ECD85421D42263B30FC95309C101C3E83FF29783F550A 
69DBF82977DF2BC2755EDF13B84AE422693D13654E3E34968A330386335C2F8 
4F4E0B8DCC9B0B038587D4734CE1AC07E0BDA094A06CBC76E47732A44C01DB1 
5FF58FAB65AE65F39587E0C217F0B5810ED532B1DA260A26F0BAD1B1F7C1117 
300BECF47A04B2D63F00D90E4CA9D0F96DEA8AE56DD9954678E4D4BC6846A887 
1CCA26ED54E83DFD35F60D18156086D6791B0FCE4436A5133D8CD0A36705B6BE 
6D6C7CCD7917C6F21E5E00F16900DA72BBCB3E524E01EC22F28FEA43E60071C 
42FEF6E11FE764D57E360A5E3C9299181D8A7ED15FCD62C14326406C2EB56AF0 
328E6C9F7C2DED7863E09E72DF3589861C6C13D643B54CF22150711616D86FF 
5A7231857061C65A1934BB8944E6A242366F12041C32F585D585BF13D7C39BF 
6E971F861E7C2D567730F1C1735C81134FC44DB7001D70EEBF47BDB23C688 
4E44287746594A462379EA695AEFA5CB19E5B7F9587905971517BFAE69C83010 
646E962E2597F4DA19AA5AC74A7BFA9C5D5804E187C35D750A12F9F65CF8EA4 
34737A6970F02868594C7DE768174BF438C10643A57114A62F574ED4CD32591 
C53462048D52BC63A5B0DEDE39F64E2ECE9F9A4C8D8BA54C36A71018F4D477 
94163D052F6CC2C3A33E7AB30F111C31F89DC2E2B4328C6582733A11168F7D 
198B8B25415FAA6B407727B4D394E1A1B84F0B578EEE2FF4EEE94281BF86FED 
14A83511752434E267DFA09848EF6D87744A4DBE44F110EE46FC046E4FC1F034 
r: 0001 
secret2: 
AA343FE06CD9534E38DCB762B5EE3590FDA318BA 
time: 265ms 

그러나, 결과는 임의의 숫자, 공개/개인 키 및 공유 키를 포함, 같은 유지합니다. 사실 RNG를 확인하기 위해 random_test()를 추가했습니다.

#if defined(RNG_TEST) 
void randtest() 
{ 
    uint8_t buf[16]; 

    pc.printf("randtest():\r\n"); 
    for(int i=0; i<16; i++){ 
     buf[i] = rand(); 
     pc.printf("%02X",buf[i]); 
    } 
} 
#endif 

그리고 난수는 계속 변경됩니다.

답변

0

음질은 열악한 RNG로 인해 발생합니다. rand()는 TRNG가 아닙니다. 결과는 항상 동일합니다. 이제는 두 개의 분리 된 ADC를 RNG로 사용 했으므로 Private/Public Keys, Share 키 및 임의의 숫자에 대한 결과는 매번 변경됩니다.

이제 ECDH를 파이썬과 비교하여 확인했습니다. 성공하면 단순한 ECDH를 실제 IoT 프로젝트에 사용할 수 있습니다.