Cyber security (hypothetical) questions.

Page may contain affiliate links. Please see terms for details.

markemark

Über Member
Encryption is pretty unbreakable these days. However there’s a market is stealing encrypted data as with quantum computers it’s only a matter or a few years before it becomes crackable. So stealing detailed plans for critical infrastructure will be an issue if in 5 years when it’s still operational, other nations have access to it.

As for the op I doubt there’s much of a market for code or any intellectual property. Hacking generally is for information eg state secrets, credit card info, personal data etc.
A software engineer could possibly keep encryption keys secret as getting those might unlock the software which contains critical information. But I very much doubt such keys would be kept in the cloud where any Dropbox engineer could potentially read it.
 
Last edited:

Electric_Andy

Heavy Metal Fan
Location
Plymouth
Thanks for all the great answers, think I've got enough to work with, probably go for a physical break in and an external hard drive copied to to the thiefs laptop. not sure when I want the owner to know! perhaps quite late in the book. it is going to a strange/weird book but has to be real stuff needs to be grounded in fact (a bit)
Physical break in, hacker has been watching the coder for weeks and knows that he goes off to make a sandwich at 12ish leaving his laptop unlocked
 
Good afternoon,
As for the op I doubt there’s much of a market for code or any intellectual property. Hacking generally is for information eg state secrets, credit card info, personal data etc.
I sort of see where you are coming from, but you are so wrong.:smile:

It is tempting to look at a web site and say that it took a week to create.

A real desktop application such as Excel Version 1 might have taken a year or two write and the current Version of Excel would probably take twenty man years plus if you were to start from scratch.

I appreciate that the code below is compiler version dependent but it is so much faster than the code the compiler generated from C++ code it was worth this dependency.

C++:
void CIBViewApp::CGDCountxy(void)
{
// Count for for fields
// data saved as <x1><y1>,<x1><y2>,<x1><y3>,<x2><y1>,<x2><y2> etc or

    int *ipuse, *xp, cox,coy,xlen, strskip;
    int xdateoffset, ydateoffset;    // Data and date types
    int idxx, idxy;                        // Index into the results buffer
    char *cp, *cp2, offsetv;
    void *xptr, *yptr;

    // Read this views list
    cp = DataChainStart[theCurrentView->BufferNumber];

    // Next row pointer
    offsetv = (theCurrentView->BufferNumber + 1) * SO_charp;

    // Offset to the index not the value
    cox = CalcingColOffset[0];coy = CalcingColOffset[1];

    // set the pointers for the x data types
    switch (DataColType[theCurrentView->GraphCol[0].DataColNum])
    {
        case COL_TYPE_STRING: _asm{ lea eax, dtstringx
                  mov xptr,eax} break;
        case COL_TYPE_INT:
            _asm{    lea eax, dtintx
                    mov xptr,eax} break;
        case COL_TYPE_CURRENCY:
            _asm{ lea eax, dtcurrencyx
                mov xptr,eax} break;
        case COL_TYPE_FLOAT:
            _asm{ lea eax, dtfloatx
                  mov xptr,eax} break;
        case COL_TYPE_DATE_AUTO:
            // Calc the offset for the date
            switch(theCurrentView->GraphCol[0].DateType)
            {
                case GRAPH_DATE_OP_DOW :           
                    _asm{ lea eax, dtdate1x
                            mov xptr,eax} xdateoffset = SO_double+SO_int;break;
                case GRAPH_DATE_OP_DOM :
                    _asm{ lea eax, dtdate1x
                            mov xptr,eax} xdateoffset  = SO_double+SO_int+SO_char;break;
                case GRAPH_DATE_OP_WEEK :
                    _asm{ lea eax, dtdate1x
                            mov xptr,eax}xdateoffset = SO_double+SO_int+(SO_char*2);break;
                case GRAPH_DATE_OP_MONTH :
                    _asm{ lea eax, dtdate1x
                        mov xptr,eax} xdateoffset = SO_double+SO_int+(SO_char*3);break;
                case GRAPH_DATE_OP_YEAR :
                    _asm{ lea eax, dtdateyearx
                            mov xptr,eax}xdateoffset = SO_double+SO_int + (SO_char * 4);break;
                case GRAPH_DATE_OP_DATE :
                    _asm{    lea eax, dtdateabsx
                            mov xptr,eax} break;
            }
    }

    // set the pointers for the y data types
    switch (DataColType[theCurrentView->GraphCol[1].DataColNum])
    {
        case COL_TYPE_STRING: _asm{ lea eax, dtstringy
                  mov yptr,eax} break;
        case COL_TYPE_INT:
            _asm{    lea eax, dtinty
                    mov yptr,eax} break;
        case COL_TYPE_CURRENCY:
            _asm{ lea eax, dtcurrencyy
                mov yptr,eax} break;
        case COL_TYPE_FLOAT:
            _asm{ lea eax, dtfloaty
                  mov yptr,eax} break;
        case COL_TYPE_DATE_AUTO:
            // Calc the offset for the date
            switch(theCurrentView->GraphCol[1].DateType)
            {
                case GRAPH_DATE_OP_DOW :           
                    _asm{ lea eax, dtdate1y
                            mov yptr,eax} ydateoffset = SO_double+SO_int;break;
                case GRAPH_DATE_OP_DOM :
                    _asm{ lea eax, dtdate1y
                            mov yptr,eax} ydateoffset  = SO_double+SO_int+SO_char;break;
                case GRAPH_DATE_OP_WEEK :
                    _asm{ lea eax, dtdate1y
                        mov yptr,eax} ydateoffset = SO_double+SO_int+(SO_char*2);break;
                case GRAPH_DATE_OP_MONTH :
                    _asm{ lea eax, dtdate1y
                        mov yptr,eax} ydateoffset = SO_double+SO_int+(SO_char*3);break;
                case GRAPH_DATE_OP_YEAR :
                    _asm{ lea eax, dtdateyeary
                        mov yptr,eax} ydateoffset = SO_double+SO_int + (SO_char * 4);break;
                case GRAPH_DATE_OP_DATE :
                    _asm{    lea eax, dtdateabsy
                        mov yptr,eax} break;
            }
            break;
            default:ASSERT(0); break;
    }

    // The length of each x line in the buffer (is the number of Y entries
    xlen = theCurrentView->RangeCount[theCurrentView->GraphCol[1].DataColNum];
    while(cp)
    {  
        // Get the X index
        _asm{    call xptr}

        // Get the Y index
        _asm {    call yptr}

        // Update the counter
        ipuse = CalcingIxTotsBuff + (idxx * xlen) + idxy;    // Find the point in the buffer
        *ipuse = *ipuse + 1;                            // Add the value into the total

        // Next row
        cp = * ((char **) (cp+offsetv));  
    }

    return;

// X functions
dtstringx:
    strskip =  *((short *) (cp + cox));    // Find the number of chars to skip
    xp = (int *) ((cp + strskip));        // Find the entry and save index pointer
    idxx = *xp;                            // Read the index value (not the data value)
    _asm{ ret}

dtintx:
dtcurrencyx:
dtfloatx:
    xp = (int *) (cp + cox);        // Find the column pointer
    idxx = *xp;                        // Read the index value (not the data value)
    _asm{ ret}

dtdate1x:
    cp2 = cp + cox;                        // Find the date entry pointer
    idxx = (*(cp2+xdateoffset)) - 1;    // Goto the desired part of the date entry
    _asm{ ret}

dtdateyearx:
    cp2 = (cp + cox);                // Find the date entry pointer
    idxx = *((int *) (cp2+xdateoffset));    // Goto the year index
    _asm{ ret}

dtdateabsx:
    xp = (int *) (cp + cox);        // Find the column pointer
    idxx = *xp;                        // Read the index value (not the data value)
    _asm{ ret}

// Y Functions
dtstringy:
    strskip =  *((short *) (cp + coy));    // Find the number of chars to skip
    xp = (int *) ((cp + strskip));        // Find the entry and save index pointer
    idxy = *xp;                            // Read the index value (not the data value)
    _asm{ ret}

dtinty:
dtcurrencyy:
dtfloaty:
    xp = (int *) (cp + coy);        // Find the column pointer
    idxy = *xp;                        // Read the index value (not the data value)
    _asm{ ret}

dtdate1y:
    cp2 = cp + coy;                        // Find the date entry pointer
    idxy = (*(cp2+ydateoffset)) - 1;    // Goto the desired part of the date entry
    _asm{ ret}

dtdateyeary:
    cp2 = (cp + coy);                // Find the date entry pointer
    idxy = *((int *) (cp2+ydateoffset));    // Goto the year index
    _asm{ ret}

dtdateabsy:
    xp = (int *) (cp + coy);        // Find the column pointer
    idxy = *xp;                        // Read the index value (not the data value)
    _asm{ ret}
  
}

That you probably don't understand the above is the point :smile:, the stuff below is pretty self explanatory.

HTML:
<head runat="server">
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <link rel="canonical" href="http://www.IAmFat.co.uk/Article_Alcohol.aspx" />
  <title>Alcohol weight gain or weight loss, A Calculator (ExCalc).</title>
  <meta name="description" content="Alcohol And weight gain or weight loss, A Calculator (ExCalc)" />
  <link rel="stylesheet" type="text/css" title="CSS" media="(max-width: 799px)" href="/StyleSheets/Base_Sub800.css" />
  <link rel="stylesheet" type="text/css" title="CSS" media="(min-width: 800px)" href="/StyleSheets/Base_Max.css" />
  <script type="application/ld+json">
        {"@context" : "http://schema.org",
        "@type" : "Article",
        "headline" : "Alcohol weight gain or weight loss, A Calculator (ExCalc)",
        "author" : {"@type" : "Person","name" : "Ian Smith"},
        "datePublished" : "2021-03-16",
        "dateModified" : "2021-03-16"
        }
  </script>
</head>
<body>
  <form id="form2" runat="server">
    <div class="masthead">
    </div>
    <div class="localmenu">
      <uc:Menu runat="server" ID="ucMenu" />
    </div>
    <asp:ScriptManager runat="server"></asp:ScriptManager>
    <h1 class="Standard_Columns_Header">Alcohol, Weight Gain And Weight Loss, A Calculator.
    </h1>
    <div class="container">
      <div class="Standard_Columns Standard_Columns_Row">
        <%--        <h1 class="Standard_Columns_Header">Alcohol, Weight Gain And Weight Loss, A Calculator.
        </h1>--%>
      </div>
      <div class="nofloat"></div>
      <br />
      <div class="Standard_Columns Standard_Columns_Row">
        <div class="Standard_Columns_20">
          <h2 class="Standard_Columns_Sub_Header_Left ">Everything in moderation includes moderation.
          </h2>
          <div class="Standard_Columns_Details">
            <img src="/Images/ExCalc/Beer.jpg" alt="Beer glass" class="Img_Pad_Bottom" style="width: 100%" /><br />
            Alcohol is not just another a food, the body considers it a toxin and prioritises its metabolism over that of food.<br />
          </div>
        </div>
        <div class="Standard_Columns_80">
          <h2 class="Standard_Columns_Sub_Header">Alcohol And Weight Loss Or Weight Gain.
          </h2>

          <div class="Standard_Columns_Details">
            <div class="Standard_Columns_Details_Big">
              I Was Really Surprised By The Effects Of Smallish Amounts Of Alcohol, Is Three Pints Really A Lot?
            </div>
            <asp:Button runat="server" ID="buttOpenCalc" Text="Goto The Calculator" OnClientClick="window.open('/Calculate/StandardForm.aspx','this'); return false;" Style="height: 40px; min-width: 100%;" />
            <noscript style="font-size: large; color: darkred">
              This exercise calculator requires javascript to operate and javascript is either not supported or disabled so the calculator will not work, nor will the button just above this text. <a href="/Calculate/StandardForm.aspx">Goto The Calculator.</a>
              <br />
            </noscript>
            <br />
            <br />
            <div class="Standard_Columns_Split2">
              The calorie content of alcoholic drinks is well known so it must be easy to calculate a food plan taking this into account, mustn't it?
              <br />
              <br />
              Anyway, its all just a modern over-reaction to a minor issue, people have been drinking forever and it never did them any harm.
            <br />

Bye

Ian
 
Last edited:

markemark

Über Member
Good afternoon,

I sort of see where you are coming from, but you are so wrong.:smile:

It is tempting to look at a web site and say that it took a week to create.

A real desktop application such as Excel Version 1 might have taken a year or two write and the current Version of Excel would probably take twenty man years plus if you were to start from scratch.

I appreciate that the code below is compiler version dependent but it is so much faster than the code the compiler generated from C++ code it was worth this dependency.

C++:
void CIBViewApp::CGDCountxy(void)
{
// Count for for fields
// data saved as <x1><y1>,<x1><y2>,<x1><y3>,<x2><y1>,<x2><y2> etc or

    int *ipuse, *xp, cox,coy,xlen, strskip;
    int xdateoffset, ydateoffset;    // Data and date types
    int idxx, idxy;                        // Index into the results buffer
    char *cp, *cp2, offsetv;
    void *xptr, *yptr;

    // Read this views list
    cp = DataChainStart[theCurrentView->BufferNumber];

    // Next row pointer
    offsetv = (theCurrentView->BufferNumber + 1) * SO_charp;

    // Offset to the index not the value
    cox = CalcingColOffset[0];coy = CalcingColOffset[1];

    // set the pointers for the x data types
    switch (DataColType[theCurrentView->GraphCol[0].DataColNum])
    {
        case COL_TYPE_STRING: _asm{ lea eax, dtstringx
                  mov xptr,eax} break;
        case COL_TYPE_INT:
            _asm{    lea eax, dtintx
                    mov xptr,eax} break;
        case COL_TYPE_CURRENCY:
            _asm{ lea eax, dtcurrencyx
                mov xptr,eax} break;
        case COL_TYPE_FLOAT:
            _asm{ lea eax, dtfloatx
                  mov xptr,eax} break;
        case COL_TYPE_DATE_AUTO:
            // Calc the offset for the date
            switch(theCurrentView->GraphCol[0].DateType)
            {
                case GRAPH_DATE_OP_DOW :         
                    _asm{ lea eax, dtdate1x
                            mov xptr,eax} xdateoffset = SO_double+SO_int;break;
                case GRAPH_DATE_OP_DOM :
                    _asm{ lea eax, dtdate1x
                            mov xptr,eax} xdateoffset  = SO_double+SO_int+SO_char;break;
                case GRAPH_DATE_OP_WEEK :
                    _asm{ lea eax, dtdate1x
                            mov xptr,eax}xdateoffset = SO_double+SO_int+(SO_char*2);break;
                case GRAPH_DATE_OP_MONTH :
                    _asm{ lea eax, dtdate1x
                        mov xptr,eax} xdateoffset = SO_double+SO_int+(SO_char*3);break;
                case GRAPH_DATE_OP_YEAR :
                    _asm{ lea eax, dtdateyearx
                            mov xptr,eax}xdateoffset = SO_double+SO_int + (SO_char * 4);break;
                case GRAPH_DATE_OP_DATE :
                    _asm{    lea eax, dtdateabsx
                            mov xptr,eax} break;
            }
    }

    // set the pointers for the y data types
    switch (DataColType[theCurrentView->GraphCol[1].DataColNum])
    {
        case COL_TYPE_STRING: _asm{ lea eax, dtstringy
                  mov yptr,eax} break;
        case COL_TYPE_INT:
            _asm{    lea eax, dtinty
                    mov yptr,eax} break;
        case COL_TYPE_CURRENCY:
            _asm{ lea eax, dtcurrencyy
                mov yptr,eax} break;
        case COL_TYPE_FLOAT:
            _asm{ lea eax, dtfloaty
                  mov yptr,eax} break;
        case COL_TYPE_DATE_AUTO:
            // Calc the offset for the date
            switch(theCurrentView->GraphCol[1].DateType)
            {
                case GRAPH_DATE_OP_DOW :         
                    _asm{ lea eax, dtdate1y
                            mov yptr,eax} ydateoffset = SO_double+SO_int;break;
                case GRAPH_DATE_OP_DOM :
                    _asm{ lea eax, dtdate1y
                            mov yptr,eax} ydateoffset  = SO_double+SO_int+SO_char;break;
                case GRAPH_DATE_OP_WEEK :
                    _asm{ lea eax, dtdate1y
                        mov yptr,eax} ydateoffset = SO_double+SO_int+(SO_char*2);break;
                case GRAPH_DATE_OP_MONTH :
                    _asm{ lea eax, dtdate1y
                        mov yptr,eax} ydateoffset = SO_double+SO_int+(SO_char*3);break;
                case GRAPH_DATE_OP_YEAR :
                    _asm{ lea eax, dtdateyeary
                        mov yptr,eax} ydateoffset = SO_double+SO_int + (SO_char * 4);break;
                case GRAPH_DATE_OP_DATE :
                    _asm{    lea eax, dtdateabsy
                        mov yptr,eax} break;
            }
            break;
            default:ASSERT(0); break;
    }

    // The length of each x line in the buffer (is the number of Y entries
    xlen = theCurrentView->RangeCount[theCurrentView->GraphCol[1].DataColNum];
    while(cp)
    {
        // Get the X index
        _asm{    call xptr}

        // Get the Y index
        _asm {    call yptr}

        // Update the counter
        ipuse = CalcingIxTotsBuff + (idxx * xlen) + idxy;    // Find the point in the buffer
        *ipuse = *ipuse + 1;                            // Add the value into the total

        // Next row
        cp = * ((char **) (cp+offsetv));
    }

    return;

// X functions
dtstringx:
    strskip =  *((short *) (cp + cox));    // Find the number of chars to skip
    xp = (int *) ((cp + strskip));        // Find the entry and save index pointer
    idxx = *xp;                            // Read the index value (not the data value)
    _asm{ ret}

dtintx:
dtcurrencyx:
dtfloatx:
    xp = (int *) (cp + cox);        // Find the column pointer
    idxx = *xp;                        // Read the index value (not the data value)
    _asm{ ret}

dtdate1x:
    cp2 = cp + cox;                        // Find the date entry pointer
    idxx = (*(cp2+xdateoffset)) - 1;    // Goto the desired part of the date entry
    _asm{ ret}

dtdateyearx:
    cp2 = (cp + cox);                // Find the date entry pointer
    idxx = *((int *) (cp2+xdateoffset));    // Goto the year index
    _asm{ ret}

dtdateabsx:
    xp = (int *) (cp + cox);        // Find the column pointer
    idxx = *xp;                        // Read the index value (not the data value)
    _asm{ ret}

// Y Functions
dtstringy:
    strskip =  *((short *) (cp + coy));    // Find the number of chars to skip
    xp = (int *) ((cp + strskip));        // Find the entry and save index pointer
    idxy = *xp;                            // Read the index value (not the data value)
    _asm{ ret}

dtinty:
dtcurrencyy:
dtfloaty:
    xp = (int *) (cp + coy);        // Find the column pointer
    idxy = *xp;                        // Read the index value (not the data value)
    _asm{ ret}

dtdate1y:
    cp2 = cp + coy;                        // Find the date entry pointer
    idxy = (*(cp2+ydateoffset)) - 1;    // Goto the desired part of the date entry
    _asm{ ret}

dtdateyeary:
    cp2 = (cp + coy);                // Find the date entry pointer
    idxy = *((int *) (cp2+ydateoffset));    // Goto the year index
    _asm{ ret}

dtdateabsy:
    xp = (int *) (cp + coy);        // Find the column pointer
    idxy = *xp;                        // Read the index value (not the data value)
    _asm{ ret}

}

That you probably don't understand the above is the point, the stuff below is pretty self explanatory.

HTML:
<head runat="server">
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <link rel="canonical" href="http://www.IAmFat.co.uk/Article_Alcohol.aspx" />
  <title>Alcohol weight gain or weight loss, A Calculator (ExCalc).</title>
  <meta name="description" content="Alcohol And weight gain or weight loss, A Calculator (ExCalc)" />
  <link rel="stylesheet" type="text/css" title="CSS" media="(max-width: 799px)" href="/StyleSheets/Base_Sub800.css" />
  <link rel="stylesheet" type="text/css" title="CSS" media="(min-width: 800px)" href="/StyleSheets/Base_Max.css" />
  <script type="application/ld+json">
        {"@context" : "http://schema.org",
        "@type" : "Article",
        "headline" : "Alcohol weight gain or weight loss, A Calculator (ExCalc)",
        "author" : {"@type" : "Person","name" : "Ian Smith"},
        "datePublished" : "2021-03-16",
        "dateModified" : "2021-03-16"
        }
  </script>
</head>
<body>
  <form id="form2" runat="server">
    <div class="masthead">
    </div>
    <div class="localmenu">
      <uc:Menu runat="server" ID="ucMenu" />
    </div>
    <asp:ScriptManager runat="server"></asp:ScriptManager>
    <h1 class="Standard_Columns_Header">Alcohol, Weight Gain And Weight Loss, A Calculator.
    </h1>
    <div class="container">
      <div class="Standard_Columns Standard_Columns_Row">
        <%--        <h1 class="Standard_Columns_Header">Alcohol, Weight Gain And Weight Loss, A Calculator.
        </h1>--%>
      </div>
      <div class="nofloat"></div>
      <br />
      <div class="Standard_Columns Standard_Columns_Row">
        <div class="Standard_Columns_20">
          <h2 class="Standard_Columns_Sub_Header_Left ">Everything in moderation includes moderation.
          </h2>
          <div class="Standard_Columns_Details">
            <img src="/Images/ExCalc/Beer.jpg" alt="Beer glass" class="Img_Pad_Bottom" style="width: 100%" /><br />
            Alcohol is not just another a food, the body considers it a toxin and prioritises its metabolism over that of food.<br />
          </div>
        </div>
        <div class="Standard_Columns_80">
          <h2 class="Standard_Columns_Sub_Header">Alcohol And Weight Loss Or Weight Gain.
          </h2>

          <div class="Standard_Columns_Details">
            <div class="Standard_Columns_Details_Big">
              I Was Really Surprised By The Effects Of Smallish Amounts Of Alcohol, Is Three Pints Really A Lot?
            </div>
            <asp:Button runat="server" ID="buttOpenCalc" Text="Goto The Calculator" OnClientClick="window.open('/Calculate/StandardForm.aspx','this'); return false;" Style="height: 40px; min-width: 100%;" />
            <noscript style="font-size: large; color: darkred">
              This exercise calculator requires javascript to operate and javascript is either not supported or disabled so the calculator will not work, nor will the button just above this text. <a href="/Calculate/StandardForm.aspx">Goto The Calculator.</a>
              <br />
            </noscript>
            <br />
            <br />
            <div class="Standard_Columns_Split2">
              The calorie content of alcoholic drinks is well known so it must be easy to calculate a food plan taking this into account, mustn't it?
              <br />
              <br />
              Anyway, its all just a modern over-reaction to a minor issue, people have been drinking forever and it never did them any harm.
            <br />

Bye

Ian
And how many counterfeit applications are there out there? How many counterfeit versions of office or Adobe software or operating systems are there? Hackers don’t steal Office source code they create patches to bypass the security to run the original application or steal passwords to open user files which contains information they find valuable.
 

Alex321

Guru
Location
South Wales
Good afternoon,

I sort of see where you are coming from, but you are so wrong.
No he wasn't.

It is tempting to look at a web site and say that it took a week to create.

A real desktop application such as Excel Version 1 might have taken a year or two write and the current Version of Excel would probably take twenty man years plus if you were to start from scratch.
Very true, but so what?

The fact it takes that much effort doesn't mean somebody who can hack into the servers is going to steal the partly written code.

When code is hacked, the hackers are almost always just looking for ways to get regitration details so they can sell they keys. For that, they don't want part-completed code they can then "finish".

I would be very surprised if the total number of times somebody has stolen commercially useful part-written code and then completed it needs any more than thumbs to count.

I appreciate that the code below is compiler version dependent but it is so much faster than the code the compiler generated from C++ code it was worth this dependency.

That you probably don't understand the above is the point :smile:, the stuff below is pretty self explanatory.
Not too sure what you think the relevance of quoting code snippets was.

Sure, it takes efvort to write useable code. It takes almost as much to understand somebody else's code unless they have been much better than average at including comments.

But neither of those facts have any real relevance to the likelihood of part-written code being copied and completed.

Fully complete code, slightly more likely, so that the copier can then modify the access restrictions, and sell the pirated version, having made only relatively trivial changes.
 

Ming the Merciless

There is no mercy
Location
Inside my skull
Encryption is pretty unbreakable these days. However there’s a market is stealing encrypted data as with quantum computers it’s only a matter or a few years before it becomes crackable. So stealing detailed plans for critical infrastructure will be an issue if in 5 years when it’s still operational, other nations have access to it.

That relies on also having the public key information. If you don’t have that, then you are pissing in the wind even with quantum and Shor’s algorithm as there’s nothing to factorize.
 

mpemburn

Well-Known Member
Software development is my living, and I’ve done it both freelance and direct hire.

These days, the typical “backup” is to a version control repository such as GitHub or Bitbucket which are cloud-based, and very secure. Developers will typically work on a “branch” of the production version of the software, and then “commit” their work to that branch. When the work is ready, the developer makes a “pull request” and, after the lead developer reviews the work, it’s either merged into production (or an intermediate step, usually called “staging”) or sent back to the developer for correction.

Concerning the matter of detecting a hack: That’s a pretty thorny one. A well organized software operation will have a suite of tests to make sure that the software does what it’s designed to do, but these could be hacked to give false results. One glaring example of this process failing was the recent Solarwinds hack that caused a bogus version of this security software to be distributed to government and private sector systems.

If you’d like to have a Q&A on this with me, I’d be happy to help.
 
OP
OP
simon the viking
Software development is my living, and I’ve done it both freelance and direct hire.

These days, the typical “backup” is to a version control repository such as GitHub or Bitbucket which are cloud-based, and very secure. Developers will typically work on a “branch” of the production version of the software, and then “commit” their work to that branch. When the work is ready, the developer makes a “pull request” and, after the lead developer reviews the work, it’s either merged into production (or an intermediate step, usually called “staging”) or sent back to the developer for correction.

Concerning the matter of detecting a hack: That’s a pretty thorny one. A well organized software operation will have a suite of tests to make sure that the software does what it’s designed to do, but these could be hacked to give false results. One glaring example of this process failing was the recent Solarwinds hack that caused a bogus version of this security software to be distributed to government and private sector systems.

If you’d like to have a Q&A on this with me, I’d be happy to help.
Thanks I may take you up on the offer of Q&A when i get to relevant sections. sounds your work is exactly what my character does!
 
Top Bottom